diffusion 综述
待排版
- 第一部分是DDPM时代的图像编辑。因为还没有任何的引导生成技术的出现,这一阶段的论文都属于利用输入图像引导生成的范式。
- 第二部分是在显式分类器引导生成技术出现后,基于CLIP模型的多模态引导生成技术的调研。
- 第三部分是最近(2022.11)一两个月基于Stable-Diffusion/Imagen等一系列模型所产生的图像编辑技术的调研。
不像人话
第一阶段: DDPM
加噪 diffusion 再降噪还原 全局修改
逐步发现对梯度的控制很重要,于是加入对梯度控制。DDPM->IVLR->SDEdit->RePaint
最后从打补丁控制生成的基础上,引导出了对导数的控制
第二阶段: DDIM
Diffusion Models Beat GANs on Image Synthesis 加入10倍的定向梯度控制
More Control for Free! Image Synthesis with Semantic Diffusion Guidance : CLIP 可以局部修改
想要使用一个文本来引导图像生成,我们可以每一步都计算现在的图像表征和文本表征的距离,使用方程的梯度来计算缩小这个距离的方向
但就在十天之后OpenAI发布了GLIDE,使用了下面会提到的隐式分类器引导的图像生成
随着新的更强大更便捷的模型如Stable-Diffusion, Imagen等如雨后春笋般涌现,上面的各项工作可能只剩下了借鉴意义。
Classifier-Free Diffusion Guidance :基于隐式分类器的文生图大模型
无分类器引导可以说是GLIDE/Stable-Diffusion/Imagen的做法的直接奠基工作之一
第三阶段:
在隐式分类器上引导生成过程中的调控生成
第一种是根据扩散模型迭代去噪的特性,我们在模型的低频细节上继续生成。这种做法虽然能保留大部分几何特征,但是也同样无法调控几何特征。
Imagic: Text-Based Real Image Editing with Diffusion Models:
具体来说,Imagic将概念绑定这件事拆成了三个步骤,对于输入图像x和我们希望生成的目标描述文本text_target来说:
1:我们首先冻结整个模型,使用模型训练时的生成目标来微调text_target的文本表征,使其接近于图像的表征。
2:我们放开整个模型的权重更新,依然使用训练时的生成目标,但这次全模型微调。模型的输入是图像x和我们微调后的文本表征。这一步是因为哪怕我们让目标文本表征和原图的表征接近了,也不能保证我们输入让我们微调后的目标文本表征可以生成我们的原图,所以我们再次将这两个概念一起训练,使得我们可以使用微调后的目标文本表征生成我们的原图
3:既然我们已经将原图和微调后的新文本表征绑定起来了,现在我们再使用原本的目标文本表征与微调后的文本表征做插值,来对原图像施加影响即可。
训练好图形输出锁住参数-> 微调全参数适应文本输出-> 开放全参数两个一起训练 ->将两个概念捆绑并开放修改
简单来讲可以将微调后的目标文本表征近似当作原图像原生的文本表征,那么最后一步使用目标表征对原生的表征施加影响就非常自然了
DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation
具体来说作者提出了使用稀缺词加种类词如“beikkpic dog”的组合文本来微调一组照片和这个文本的绑定。但是仅仅用少量的照片来微调一个有着大量参数的模型很明显会带来极为严重的过拟合。并且还会带来一个语言模型里特别常见的事情–灾难性遗忘。这两个问题的表现一个是绑定词的形态很难变换,就如上篇的Unitune一样。另一个问题是对种类词里面的种类生成也会快速失去多样性和变化性。于是针对这个问题作者针对性地提出了一个叫自身类别先验保存损失的损失函数
。
这个函数的设计是在用户提供一个指定的类别和这个类别的一组图片(如自家的宠物狗的多张照片)后,模型同时使用“特殊词+类别”对用户照片训练和“类别”与模型生成的该类别图训练。这样做的好处是模型可以在将特定的照片主体与特殊词绑定的时候可以一起学到和其类别的关系,并且同时该类别的信息在不断的被重申以对抗用户照片信息的冲击。作者在训练的时候特意将这两个损失以一比一的比例训练了200个轮次左右。(单卡GPU 15分钟左右就可以)
Prompt-to-Prompt Image Editing with Cross-Attention Control
这篇文章的洞见来自于一个重要思考:即多模态里文生图的文本是如何对生成过程施加影响的?
基于隐式分类器的文图模型是通过训练一个既可以做无条件生成的梯度预估,也可以做条件生成的梯度预估的模型实现的。而其中这个条件交互的方式在Imagen和Stable-Diffusion里都是通过cross-attention实现信息融合的。那么很明显,我们的着眼点也应该在cross-attention上。
而作者的洞见则在于:我们输入的文本和像素之间存在着一个空间对应的关系。通过调控注意力和像素间的映射。我们能够对图像的不同区域实施准确的引导。
有了以上洞见据此进行图像引导生成就很直观了,作者将其分为三个主要场景:单词替换(比如在上图里将熊换成猫则将猫这个token对应的map换成熊的map),单词增添(在原有的map上增加新的单词的map),注意力重加权(如果想放大或减弱某个词对原图的引导效果则对其map乘上新的权重值,如降低下雪的效果开花的程度等)