扩散模型(diffusion model)可以生成高质量的合成图像,尤其当基于某种条件引导(guidence)时,可以用多样性换保真性。针对基于文本条件的图像合成扩散模型,比较两种不同的指导策略:CLIP指导和无分类器指导。发现后者在照片写实度和标题相似性方面更受评估人员的青睐,并且通常会产生逼真的样本。使用无分类指导的 35 亿参数基于文本条件的扩散模型产生的样本比DALL-E的更受评估人员的青睐,即使DALL-E会使用昂贵的 CLIP 重排。此外,GLIDE(Guided Language to Image Diffusion for Generation and Editing)模型还可以微调进行图像修复,从而实现强大的文本驱动的图像编辑。本文在过滤后的数据集上训练了一个较小的模型,地址:https://github.com/openai/glide-text2im。
首先简单介绍扩散模型:
扩散模型通常包括两个过程,从信号逐步到噪声的正向过程/扩散过程(forward/diffusion process)和从噪声逐步到信号的逆向过程(reverse process)
逆向过程:
从一张随机高斯噪声图片开始:
经过一个马尔可夫过程最终得到去噪结果:
这个过程可以理解为基于上一步的生成结果预测高斯分布的均值和方差,然后在这个高斯分布中随机采样下一步的结果。
正向过程:
基于预先设定的参数逐步向图片中加入高斯噪声
其中:
DDPM的训练过程,采用一个U-net结构的Autoencoder来对t时刻的噪声进行预测:
,网络训练的目标函数定义为:
以加噪图片作为输入,目标是预测所添加的噪声,此训练目标希望预测的噪声和真实的噪声一致。
均值表示为:
方差采用常数项。
Guided Diffusion:
在利用扩散模型生成图片的过程中加入类别条件的引导,即在每一步逆向过程中用一个分类网络对生成结果进行分类,然后基于分类分数和目标类别之间的交叉熵损失计算梯度,用梯度引导下一步的采样,不需要重新训练扩散模型,在逆向时加入引导就能实现相应的生成效果。
带条件的逆向过程定义为:
基于类别条件的逆向过程,可以由无条件的逆向过程结合生成结果的分类损失来度量,是常量,表示单独训练的分类模型。给每一步的逆向过程的高斯分布的均值加上scale,方差和分类梯度项的乘积
这样,不需要重新训练扩散模型,只需要额外训练一个分类器,就能够有效地在添加类别引导。但是每一步都要过分类模型并求梯度会引入比较多的额外计算时间。
Guided Diffusion的过程和基于优化的图像生成算法(即固定网络,直接对图片本身进行优化)有很大的相似之处。这就意味着之前很多基于优化的图像生成算法都可以迁移到扩散模型上。
Language Guided Diffusion
利用CLIP模型的文本编码器和图像编码器,在某一时刻计算逆向过程生成图像的image embedding和给定描述的language embedding,经过L2归一化之后计算余弦相似度,基于该相似度损失来计算梯度,文本引导函数定义为:
但是CLIP中的图像编码器在训练时没见过噪声图像,因此需要用噪声图像finetune一下图像编码器。
Image Content Guided Diffusion
图片引导意思希望生成图片与一张参考图相类似,不妨将参考图片记为
根据当前扩散过程参数获得对应的加噪图片,通过对比加噪图片与逆向生成图片在CLIP空间中的相似度损失得到引导函数
进一步可以加入更强的引导,即在空间结构上的相似性,对比image encoder空间特征图的L2范数
Image Style Guided Diffusion
类似地,可以通过计算加噪图片特征Gram矩阵与逆向生成图片特征Gram矩阵之间的L2范数来引导生成图片的风格靠近参考图片
如果将上述引导函数以一定的比例相加,即可得到多模态的引导函数。
Classfier-Free Diffusion Guidance
上述的各种引导函数,基本都是额外的网络前向 + 梯度计算的形式,这种形式虽然有着成本低,见效快的优点。也存在着一些问题:(1)额外的计算量比较多;(2)引导函数和扩散模型分别进行训练,不利于进一步扩增模型规模,不能够通过联合训练获得更好的效果。因此DDPM的作者提出了Classfier-Free的扩散模型,给噪声估计加入额外条件:
训练扩散模型时,结合有条件和无条件两种训练方式,无条件时,将条件置为Null,从而得到一个同时支持有条件和无条件噪声估计的模型。在逆行过程中,该方法通过以下方式,结合有条件和无条件噪声估计得到结果(相当于时模拟了梯度):
采用这种形式,对于每一种不同的引导类型,都需要重新训练扩散模型。
GLIDE:
利用no-classfier guidance的思想,将引导条件设置为caption:
使用与DALLE相同的大规模文本-图像对数据集,2048的batch size,训练了250万轮。更大的模型:算法采用了Guided Diffusion方法中相同的Autoencoder结构,但是进一步扩大了通道数量,使得最终的网络参数数量达到了3.5 billion
文章:
GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models
Denoising Diffusion Probabilistic Models
Improved denoising diffusion probabilistic models
Diffusion Models Beat GANs on Image Synthesis
More Control for Free! Image Synthesis with Semantic Diffusion Guidance
Classifier-Free Diffusion Guidance
Zero-Shot Text-to-Image Generation
On Fast Sampling of Diffusion Probabilistic Models
Vector Quantized Diffusion Model for Text-to-Image Synthesis