超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。

本文主要是介绍超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

清华大学唐杰教授团队最近在生成超高清图像方面的新工作:Inf-DiT,通过提出一种单向块注意力机制,能够在推理过程中自适应调整内存开销并处理全局依赖关系。基于此模块,该模型采用了 DiT 结构进行上采样,并开发了一种能够上采样各种形状和分辨率的无限超分辨率模型。与常用的 UNet 结构相比,Inf-DiT 在生成 4096×4096 图像时可以节省超过 5 倍的内存。该模型在机器和人类评估中均实现了生成超高清图像的SOTA。

选取基于SDXL的超高分辨率上采样Inf-Dit, Dall-e 3和真实图像示例.

相关链接

项目网址:https://github.com/THUDM/Inf-DiT

论文地址:https://arxiv.org/abs/2405.04312

论文阅读

Inf-Dit:对任意分辨率图像进行上采样的内存高效扩散变压器

摘要

近年来,扩散模型在图像生成方面表现出色。然而,由于生成超高分辨率图像(例如 4096 × 4096)时内存的二次方增加,生成的图像的分辨率通常限制为 1024 × 1024。

在这项工作中,我们提出了一种单向块注意机制,可以在推理过程中自适应地调整内存开销并处理全局依赖关系。在此模块的基础上,我们采用 DiT 结构进行上采样,并开发了一个能够对各种形状和分辨率的图像进行上采样的无限超分辨率模型。

综合实验表明,我们的模型在机器和人工评估中都能在生成超高分辨率图像方面实现 SOTA 性能。与常用的 UNet 结构相比,我们的模型在生成 4096 × 4096 图像时可以节省 5 倍以上的内存。

方法

(左)Inf-DiT的总体架构。(右)Inf-DiT的内部结构 块。为了简单起见,我们没有描述最初存在于DiT中的Layernorm。

左图:单向块注意力机制。在我们的实现中,每个块直接依赖于每一层中的三个块:左上角、左侧和顶部的块。右图:Inf-DiT 的推理过程。Inf-DiT 每次根据内存大小生成 n × n 个块。在此过程中,只有后续块所依赖的块的 KV 缓存存储在内存中。

效果

2048×2048分辨率下不同方法的详细定性比较。

4096×4096分辨率下不同方法的详细定性比较。

人的评价结果。参与者对不同的图片进行排序 我们将4到1的分数依次分配给模型,最后计算出 所有结果的平均值。Inf-Dit在所有三个类别中都获得了最高分。

生成迭代上采样的样本。上图:Inf-Dit可以上样 图像本身生成几次,并生成不同频率的细节以相应的分辨率。下图:在128x128点未能产生pupul后在分辨率方面,后续的上采样阶段很难纠正这个错误。

结论

在这项工作中,我们观察到生成超高分辨率图像的主要障碍是模型隐藏状态占用的大量内存。 基于此,我们提出了单向块注意机制(UniBA),它可以通过在块之间执行批量生成来降低空间复杂度。借助UniBA,我们训练了Inf-DiT,这是一种4倍内存效率的图像上采样器,它在生成和超分辨率任务中均实现了最先进的性能。

这篇关于超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071348

相关文章

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.