超高清图像生成新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

相关文章

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

SQLServer中生成雪花ID(Snowflake ID)的实现方法

《SQLServer中生成雪花ID(SnowflakeID)的实现方法》:本文主要介绍在SQLServer中生成雪花ID(SnowflakeID)的实现方法,文中通过示例代码介绍的非常详细,... 目录前言认识雪花ID雪花ID的核心特点雪花ID的结构(64位)雪花ID的优势雪花ID的局限性雪花ID的应用场景