【Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding】
本篇文章是个人看文献的一些总结和个人的想法,都是个人看过文章之后的理解,不保证一定是对的,如果我的理解有错,欢迎纠正。
Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding
(NeurIPS 机器学习领域的顶级会议 2022.5.23)
Imagen模型是由谷歌团队提出的,在文字生成图像领域表现极其突出的模型,效果优于先前提出过的几乎所有文字-图像生成模型。
文章的主要贡献:
一
文章发现,文字编码器部分仅根据文本数据训练的大模型,然后训练时冻结语言模型对于文字-图像的生成非常有效。Imagen拿预训练好的大语言模型(BERT、T5、CLIP等)放到更大纯文本数据中进行训练。因为纯文本语料库比图片-文字的资料库大得多,因此可以使Imagen的文字编码器暴露在非常丰富和广泛的文本分布中。
Imagen在选择大语言模型的时候,为了简单起见,先冻结了文本编码器的权重(这里拿BERT、T5、CLIP了进行比较)。冻结权重有几个优点,比如可以让文字编码器在Embedding时产生的计算量和内存的占用忽略不计。
在训练的时候还发现缩放文本编码器大小可以提高文本-图像生成的质量。
经过比较的结果是:T5-XXL和CLIP在一般的评价指标benchmarks上表现差不多,但是在人类的评价下,T5-XXL更加受青睐,因此最终T5-XXL编码器超过了CLIP,成为更加适合Imagen的文字编码器。
二
引入动态阈值(dynamic thresholding),一种新的扩散采样技术,利用高指导(high guidance)权重,生成比之前更加逼真、详细的图像。
研究团队发现增加无分类器的引导权重可以改善图像-文字的对齐程度,但是这样会损害图像的保真度,从而产生有高度饱和度和看上去不自然的图像。研究团队发现这是由于高引导权重引起的训练测试不匹配而产生的问题。高指导权重会导致x预测超过边界,并且由于扩散模型在整个采样的过程中迭代应用于其自身的输出,因此采样过程中会产生不自然的图像,有时甚至会出现发散。
针对此问题,研究团队提出了静态阈值和动态阈值。
将x预测的元素裁剪为[-1, 1]称为静态阈值,研究者发现静态阈值对于引导权重的采样至关重要,还可以防止空白图像的生成。但是随着指导权重的进一步增加,静态阈值仍然会导致图像饱和度过高和细节不足的问题。
研究者近一步引入一种新的动态阈值方法:在每个采样步骤中,将s设置为 中的某个百分位绝对像素值,如果s>1,就将 阈值到[-s, s]范围,然后删除s。动态阈值将饱和像素向内推,从而主动防止像素在每一步中饱和。最终发现动态阈值可以明显提高图片的真实感和更好的图像-文本对齐效果。
三
模型的架构方面,Imagen利用一个基本64×64模型和两个文本条件超分辨率扩散模型生成64×64的图像,然后上采样为256×256的图像,最后再上采样为1024×1024的图像。
研究者发现具有噪声调节增强的级联扩散模型在逐步生成高保真图像方面非常有效。此外通过调节噪声水平使超分辨率模型了解添加的噪声量,可以显著提高采样的质量,并且有助于提高模型的鲁棒性。
Imagen对两个超分辨率模型都使用噪声调节增强,这样有助于生成高保真图像。
神经网络架构上,将U-Net架构应用于基础的64×64文本-图像扩散模型上。
研究者还研究了文本调节的各种方法,最终发现用于注意力和池化层中的文本嵌入层的归一化有助于提高模型的性能。
在Super-Resolution Diffusion Model(用于将图像64×64 -> 256×256 -> 1024×1024)中,研究者依旧拿U-Net架构去做,不过这里对U-Net模型进行了一些修改,目的是优化内存利用率、推理时间和收敛速度。在Super-Resolution Diffusion Model中,研究者还删除了自注意力层,但是保留了文本交叉注意力层。训练的时候拿64×64 -> 256×256 -> 1024×1024的成对图像去训练就可以了,目的是让解码器了解怎么将小图生成大图。
四
COCO验证集是评估监督和零样本设置的文字-图像模型的评价基准。Imagen在最先进的评价指标COCO FID中拿到了7.27分,达到了新的高度。
五
但是FID和CLIP分数都有局限性,例如FID与感知质量不完全一致,CLIP在计数方面无效,由于这些限制,研究者还使用了人工评估去去评价图像的质量和与文字的相似性。
COCO虽然是一个有价值的基准测试,但是它的提示范围有限越来越成为一个问题,因此研究者提出了一个新的文字-图像的验证集:DrawBench。DrawBench包含11类(200种)提示去测试模型的不同功能。