字节和旷视提出HiDiffusion,无需训练,只需要一行代码就可以提高 SD 生成图像的清晰度和生成速度。代码已开源。

本文主要是介绍字节和旷视提出HiDiffusion,无需训练,只需要一行代码就可以提高 SD 生成图像的清晰度和生成速度。代码已开源。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字节和旷视提出HiDiffusion,无需训练,只需要一行代码就可以提高 SD 生成图像的清晰度和生成速度。代码已开源。

  • 支持将图像生成的分辨率提高至4096×4096,同时将图像生成速度提升1.5至6倍。

  • 支持所有 SD 模型同时也支持 SD 模型的下游模型,比如ControlNet,Inpainting,Playground等。

为什么选择 HiDiffusion

  • HiDiffusion是一种免训练方法,可提高预训练扩散模型的分辨率和速度。

  • 设计为即插即用实施。只需添加一行代码即可将其集成到扩散管道中!

支持的模型

  • Stable Diffusion XL

  • Stable Diffusion XL Turbo

  • Stable Diffusion v2

  • Stable Diffusion v1

支持的任务

  • Text-to-image

  • ControlNet

  • Inpainting

更快更好的图像细节

相关链接

Github:https://github.com/megvii-research/HiDiffusion

论文:https://arxiv.org/pdf/2311.17528

论文阅读

HiDiffusion:解锁更高的分辨率预训练扩散模型中的创造力和效率

摘要

扩散模型已成为高分辨率图像合成的主流方法。但是直接从预处理的扩散模型中生成高解决图像将遇到不合理的对象重复,并指数增加生成时间。

在本文中,我们发现对象重复是由U-NET深块的特征重复引起的。同时,我们将延长的生成时间指定为U-NET的顶部块中的自我发挥冗余。为了解决这些问题,我们提出了一个名为Hidiffusion的无调高分辨率框架。

具体而言,Hidiffusion包含分辨率感知的U-NET(RAU-NET),该分辨率可以动态调整特征映射大小以解决对象重复并参与修改后的移位窗口多头自我注意(MSW-MSA),该窗口使用优化的窗口注意力来减少计算。我们可以将Hidiffusion集成到各种预处理的扩散模型中,以将图像生成分辨率扩展到4096×4096,以1.5-6×以前方法的推理速度。 广泛的实验表明,我们的方法可以解决对象重复和重度计算问题,从而在高分辨率图像合成任务上实现最先进的性能。

方法

U-Net架构。

实现了U-Net作为稳定扩散神经主干,它包含几个Down Blocks, Up Blocks和一个Mid 块,如下图a所示。Mid Block在我们的方法中保持不变。因此,为了简单起见,我们省略了它。每个向下块和向上块可以分别写成:

vanilla 稳定扩散的U-Net架构和我们提出的HiDiffusion RAU-Net架构在1024×1024分辨率和SD 1.5上的比较。

冻结所有块中的参数。主要区别在于蓝色块(不同) 在特征图的维度中)和橙色块(我们提出的RAD和RAU)模块被合并到Block 1中)。

实验

我们将我们的方法纳入sd1.5,sd2.1,SDXL Turbo和SDXL来评估我们方法的有效性。sd1.5及 SD 2.1能够生成512×512分辨率的图像。

我们整合HiDiffusion将它们缩放到1024×1024和2048×2048。我们使用HiDiffusion将SDXL Turbo的生成分辨率缩放到1024×1024。

上图为各种扩散模型、分辨率和比率方面选择HiDiffusion示例。HiDiffusion使预训练的扩散模型能够产生更高的分辨率超过训练图像大小的图像,无需进一步的训练或微调可以有效加速推理。

基于sd1.5的不同推理步骤的特征图可视化。 图像分辨率为1024×1024,采用50步DDIM。

基于sd1.5的RAU-Net和MSW-MSA的影响。分辨率为1024×1024。

基于sd1.5的1024×1024分辨率SDEdit任务。

基于sd1.5的ControlNet任务1024×1024分辨率。

基于sd1.5的不同扩散加速方法的定性比较。分辨率是1024×1024。基线为RAU-Net的sd1.5。

结论

在本文中,我们提出了一个名为HiDiffusion的免调优框架,用于更高分辨率的图像生成。HiDiffusion包括分辨率感知U-Net (RAUNet),使更高分辨率的生成成为可能,以及改进的移位窗口多头部自注意(MSW-MSA),使更高分辨率的生成更有效。

根据经验HiDiffusion可以纳入sd1.5,sd2.1、SDXL和SDXL Turbo,并对它们进行缩放生成1024×1024,2048×2048甚至4096×4096分辨率图像,同时显著降低HiDiffusion推理时间。

与以往的高分辨率图像生成方法相比,我们可以在更短的推理时间内生成细节更丰富的图像。我们希望我们的工作可以为未来关于扩散模型可扩展性的工作带来启发。

这篇关于字节和旷视提出HiDiffusion,无需训练,只需要一行代码就可以提高 SD 生成图像的清晰度和生成速度。代码已开源。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave