从Relay Diffusion到Cogview 3:浅谈Noise Scheduling和扩散模型

原文来自知乎:叫我Alonzo就好了

前言

近日,清华和智谱AI联手发布了Cogview 3,标题为《Finer and Faster Text-to-Image Generation via Relay Diffusion》,从字面意思上来看,我们可以快速地锁定一些关键字眼:“Finer”、“Faster”、“Relay Diffusion”。其中,了解Relay Diffusion的朋友应该知道,Relay Diffusion跟diffusion models的noise scheduling原理密不可分。那么,Cogview 3究竟是怎样通过Relay Diffusion在文生图的质量和速度上进行改进的呢? 本文就跟大家一起来探讨一下Cogview 3背后的技术原理。

Relay Diffusion

高斯噪声,是diffusion models中一个极具辨识度的重要特征,其贯穿于diffusion models的forwarding、sampling的全过程。对此,高斯噪声的noise scheduling策略,深刻影响着训练过程中对干净数据的污染程度,以及采样过程中diffusion models迭代去噪的路径。 比较经典的noise scheduling策略包括DDPM中的linear scheduling或者是cosine scheduling,对于固定分辨率的image generation来说,大部分工作都沿用这两种noise scheduling策略。

Relay Diffusion,字面意思上可以翻译为“中继扩散模型”,从字面意思上我们不难揣测,Relay Diffusion的设计中可能包含某种“接力”的机制来进行图像生成。而正是因为这样的“接力”机制,Relay Diffusion的研究动机才着眼于了diffusion models的加噪机制和图像分辨率上

研究动机:高斯噪声、SNR与图像分辨率

Relay Diffusion的研究动机是从高斯噪声与图像分辨率的关系出发的。实验过程中作者们观察出一个结论:对于更高分辨率的图像进行加噪,其加噪后的结果在低频处有更高的信噪比(Signal-to-Noise Ratio,SNR)。
在这里插入图片描述
具体来说即上图中呈现的结果,我们可以从多个角度来分析这个结论。

图像中的低频信息:从数字图像分析的角度来看,我们知道,一张图像不同频段信息的分布,其低频往往包含了主要的纹理信息 ,而高频主要为图像的边缘信息 ,换言之,图像的低频信息与图像的“语义”有着紧密的联系

对于这一点并不难理解,我们可以想象两张图像,一张分辨率很模糊(高频信息缺失),另一张则是纯粹的二值边缘图(低频信息缺失),现在让人来观察两张图像,看看是否能够识别出图像的内容。通过前者人是可以识别出图像可能包含的内容的(可以想象为近视眼的人不戴眼镜看东西,也能猜测出图像代表了什么)。 对于神经网络类似,其中比较经典的例子有MAE,虽然重构的结果比较模糊,但大体的语义信息是包含了的。

Relay Diffusion中“对于更高分辨率的图像进行加噪,其加噪后的结果在低频处有更高的SNR”结论又意味着什么呢? 加噪对应于diffusion models的训练过程,对于更高分辨率图像的训练,低频处更高的SNR,意味着加噪后的图像包含着更多的“低频信号信息”,即对于高分辨率的图像,加入同种噪声,其污染程度相较于低分辨率的更轻。
基于这一点理论基础,我们可以来看看对diffusion models的采样会造成什么影响。要知道diffusion models的采样是从完全的随机高斯噪声出发,意味着diffusion models采样的最初阶段,要具备处理带噪程度高数据的能力,而前文说到,训练过程中加入同种噪声对于高分辨率的图像污染程度更轻,这就造成了高分辨率图像下diffusion models训练与采样过程的不一致。
这样的问题在其他工作中也有提及,在《Late-Constraint Diffusion Guidance for Controllable Image Synthesis》一文中,针对diffusion models采样early stage中样本带噪程度大的问题,作者提出了timestep resampling的策略。简言之,就是希望在训练过程中将均匀分布采样的timestep,通过一个凸函数映射到更大的一个值,从而对干净数据进行更加aggressive的污染,在一定程度内diffusion models采样early stage就会更加稳定。当然,映射的程度过大了也会导致加噪后的数据样本蕴含的信息较小,模型难以学到有效的信息,因此对性能也会有一定损害。
在这里插入图片描述
在这里插入图片描述
《On the Importance of Noise Scheduling for Diffusion Models》中提过类似于Relay Diffusion的问题,上图则从可视化的角度进一步验证了前文中提到的Relay Diffusion的研究动机,可以看到,对于同一张图像,分辨率越高的图像受到同种高斯噪声的污染程度越轻,对于1024×1024分辨率的图像例子,其污染几乎已经很难用肉眼分辨,这也正是因为低频信息SNR较高导致的。

对于上述问题,Relay Diffusion的解决方案也很直观,称为block noise。简言之,就是将低分辨率的高斯噪声通过一个s×s的卷积核将分辨率映射为原来的s倍,从而适配高分辨率图像的训练。 具体来说,如果我们要训练256×256分辨率下的diffusion models,那么s=4,即将64×64的低分辨率噪声映射成256×256的。前文图中的实验也表明,通过block noise加噪之后的图像直观上的污染程度与低分辨率图像是相近的,同时,其低频段上的问题也得到了很好解决。

“从一步到两步”的Relay Diffusion

Noise scheduling的问题解决了,但低分辨率和高分辨率的图像怎样配合,两种分辨率下noise scheduling的策略怎么搭配的问题尚未回答。这也是Relay Diffusion中“relay”一词正要解决的问题。

前文说到,relay的字面意思是“中继”的意思,这里就要说到Relay Diffusion中包含“中继”这层意思的“接力”机制了。Relay Diffusion采用的是经典的 “生成 + SR” 范式完成“接力”,即先生成低分辨率的图像,再将图像通过SR上采样为高分辨率图像。在这里插入图片描述
对于SR stage,自然也就能用上前文说到的block noise。这里作者还采用了blurring来进一步对图像恢复进行降质处理。具体来说,假设要通过64×64的噪声生成一张256×256的图像,Relay Diffusion通过4×4图像块内的 “blurring + block noise” 的组合来对图像进行降质/恢复处理。这里用到的blurring diffusion来自于《Generative Modelling With Inverse Heat Dissipation》一文,该文提出不再使用高斯噪声来对图像进行降质,而是通过blurring的方式进行,类似于物理上的“逆向散热”的方式。
在这里插入图片描述
另外,值得一提的是Relay Diffusion中采用的 “生成 + SR” 范式本质上是一种coarse-to-fine范式。原理上并不难理解,对于生成模型来说,生成64×64和256×256的图像是完全不同的概念,后者的难度(要生成的像素数量)是前者的16倍,对于神经网络来说,这样的难度不容小觑。而对于SR网络来说,上采样4倍仅属于正常的任务范畴,这样一来,通过二者任务特性的结合,便完成了高分辨率图像生成的难度降维。
另一方面是 “生成 + SR” 的范式仍有机会对generation stage中生成不好的artifacts进行进一步地修复和细节填补,本质上就是前文说到的由粗到精(coarse-to-fine)的思路。
这种范式已经被多个任务证明有效,早期的图像修复网络采用 “低分辨率inpainting + SR” 的方式进行,原理其实也与生成相近,再到Muse的 “生成 + SR” 范式,包括SDXL也采用了类似的 “生成 + refine” 的范式等,这里就不再继续展开。
在这里插入图片描述

Cogview 3

在对于Relay Diffusion的前置知识有了一定了解了,我们可以一起来看看Cogview 3是怎样通过Relay Diffusion来实现“Finer and Fast Text-to-Image Generation”的。

Cogview 3基于的是StabilityAI的SDXL,SDXL已经能够生成1024×1024的高分辨率图像了,而Cogview 3更是将生成图像的分辨率进一步推到了2048×2048上,效果非常惊艳。

在这里插入图片描述

Finer Text Prompts:Re-captioning

Text prompt对于现在的text-to-image generation研究来说越来越重要了,起初是在DALL-E 3的带领下,通过re-captioning的方式进一步丰富原有text prompt中的文本信息,从而能让模型在生成图像时能处理更加复杂的text prompt。

DALL-E 3中采用的方式是训练一个re-captioner来对原有caption进行扩充,其本质上是对原caption的rephrase或扩写,另一方面也能起到一定的数据清洗作用。

在这里插入图片描述
而Cogview 3中则采用了更精细化的策略,充分利用了GPT-4V的多模态能力,以Visual QA的方式进行,大概的思路是准备好一个question set,随后从question set中取出问题对GPT-4V进行提问,最后让GPT-4V对前述所有信息做一个摘要,得到多个角度refine之后的caption。

在这里插入图片描述
Text prompt确实是值得考虑的点,re-captioning的做法也已经成为了现有大多数text-to-image generation的标配做法。其实在其他任务上也有使用,例如LaCLIP一文中就通过训练一个大语言模型来重写文本描述,来对CLIP的训练范式增强。同时,这个工作还利用GPT的上下文能力自行生成“原caption-改写caption”对,设计比较有意思,感兴趣的朋友可以读一下,这里不再展开。
在这里插入图片描述

Finer Generation:隐空间的Relay Diffusion

另一方面,Cogview 3通过Relay Diffusion来进一步将SDXL可生成的分辨率提高。但是值得注意的是,Relay Diffusion的原设计是作用于像素空间的,而Cogview 3基于的SDXL是在压缩模型VQGAN的隐空间下进行,原blurring diffusion不再适用。 在Cogview 3中,作者采用了一个简单的线性变换通过对VQGAN隐空间下的表征线性映射来模拟类似的“blurring”效果。具体公式如下。
在这里插入图片描述
其余在压缩模型的使用、diffusion models的模型结构等其他方面均与SDXL保持一致,可以简单看下整体的网路架构图。

在这里插入图片描述
最后便是Cogview 3对于“Faster”的诠释,Cogview 3也沿用了diffusion distillation的经典套路——progressive distillation。本质上是通过将teacher model的每一步采样对student model的每两步采样做蒸馏,从而能让diffusion models通过更少的采样步数就能生成相同质量的图片。Cogview 3中,generation stage和SR stage的最终采样步数仅分别需要8步和2步即可完成。更多关于diffusion distillation的分析可以参考我的往期知乎回答

结语

Noise scheduling对于diffusion models来说,是其最具辨识度的机制之一。 Relay Diffusion的提出对这一机制存在的问题提出了精密的分析,并在 “生成 + SR” 的经典范式上得到了很好的应用。Cogview 3的推出,标志着Relay Diffusion的应用进一步延拓至latent diffusion models上,实现了Relay Diffusion的技术与主流模型架构相融合。第一次读完Relay Diffusion的时候,就好像刚上完了一节数字图像分析公开课,竟品出一些传统图像处理的美感,故作此文以分享心得体会。


最后,欢迎大家关注我的个人GitHub账号,我总结了一些课题的顶会paper list,有需要的小伙伴可以参考,paper list会持续更新最新发布的顶会文章。你们的一键三连、GitHub Star就是对我最大的支持!

Video Generation Paper List
在这里插入图片描述

Text-to-Image Generation Paper List
在这里插入图片描述

Image Inpainting Paper List
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我Alonzo就好了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值