字节和旷视提出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推理时间。
与以往的高分辨率图像生成方法相比,我们可以在更短的推理时间内生成细节更丰富的图像。我们希望我们的工作可以为未来关于扩散模型可扩展性的工作带来启发。