AIGC之SD可控生成论文阅读记录
提示:本博客是作者本人最近对AIGC领域相关论文调研后,临时记录所用,所有观点都是来自作者本人局限理解,以及个人思考,不代表对。如果你也正好看过相关文章,发现作者的想法和思路有问题,欢迎评论区留言指正!
既然是论文阅读分享,首先,你需要有一些AIGC基础知识,许多基础概念我不会具体深入讲它是什么!
文章目录
AIGC之SD可控生成论文阅读记录 1. ControlNet 2. T2I-Adapter 3. Composer 4. Diffusion-AE 5. Diffusion-Rig 6. Taming-Encoder 7. Paint by Example 8. GLIGEN 9. Improving Diffusion Models for Scene Text Editing with Dual Encoders 10. Training-Free Layout Control with Cross-Attention Guidance 11. Universal Guidance for Diffusion Models 总结1. ControlNet
这篇文章在一个框架下统一了SD模型添加各种模态做受控生成的方法,包括但不限于Edge Map, Sketch, Depth Info, Segmentation Map, Human Pose, Normal Maps 等。9类!具体来说,对于预训练好的模型(比如作者使用SD1.5-UNet里Encoder和MidLayer的ResNet和Transformer层)里的一层结构, 作者固定了其参数,并将该层的输入额外添加了一个全联接映射后的条件c,输入到一个和该层结构一致的复制网络里,再映射一次后重新添加回原结构里的输出。按照作者的解释来看,这样做的好处有两个:一个是最大程度的保留原模型的生成能力,另一个是新添加的组件将以0值初始化所以在优化的初始阶段该模型的输出与原模型等价。
即对于一张模型生成的图片,其UNet的decoder一定已经包含了其生成的一些空间信息,语义信息等。直接抽取decoder相关的特征,添加到当前的生成能够影响当前生成的布局语义等。
很想问具体融合方式?是否需要注意力?条件图类型不同照理说加法不同,但是作者给统一了。全部作为图像,做多尺度特征提取。
统一的条件:
作者所针对的每一个模态,都可以通过已有模型的基础上快速获得大量数据.(比如canny filter对edge的提取,midas对深度图的提取等)。类似于InstructPix2Pix这篇工作,针对当前任务造出一个百万级别大小的训练数据,可能是微调模型使其学到隐式关系的关键。
作者提出的架构和对额外模态的输入形式使得一个通用架构成为可能。在上面介绍结构时,笔者提到作者是针对UNet的前半部分里的每一层做额外信息添加和复制训练的。其中当然就包括了Resnet的卷积层。即无论什么模态的信息,作者的架构都可以把它作为图像通过UNet的encoder对其进行多尺度的信息特征的提取。大量参数(对Encoder+MidLayer的复制)加上大量训练数据加上适配的网络架构可能是其成功的关键。
对信息的添加及添加位置的选定。如果直观上来理解,在UNet的encoder阶段添加模态信息引导使得Decoder生成时考虑到相关添加信息当然符合直觉。但为何作者没有选定(只)在Transformer层这样的模态信息制导生成的关键位置添加模块,而是一视同仁且是在每一层的结尾做信息融合。
上面主要搬运自中森。
2. T2I-Adapter
几乎跟Control-Net没区别,区别只有两点:
T2I-Adapter可以同时组合输入多种类型的Condition,用超参数 ω \omega ω控制的。 T2I-Adapter是从SD的Encoder部分传入Condition的。个人思考:
是否可以说明在加条件在编,解码器部分是都能成功的。 为啥上面这俩加条件都仅仅是堆叠,而不是做cross attention。3. Composer
Composer跟ControlNet和T2I-Adapter的思路类似。
思路:可编辑图像生成其实就是对图像各种元素的组合,Composer先用各种不同的模型将各种不同的图片分解成各种元素,然后将不同图片的元素进行重组。比如上图的戴珍珠耳环的少女,可以分解成shape、semantics、sketch、masking、style、content、intensity、palette、文字等等元素,然后跟其他不同图片的元素进行想要的重组。
条件添加方式:
Global Conditions: sentence embeddings, image embeddings and color histograms, 都需要添加到Timestep中 Localized Conditions:segmentation maps, depthmaps, sketches, grayscale images, and masked images,并且需要添加到Noisy Image中。Inpainting作用:通过引入掩蔽的正交表示,Composer能够将可编辑区域限制为用户指定的区域,用于所有上述操作,比传统的修复操作更灵活,同时还防止修改该区域以外的像素。
训练方式 :倾向于自监督,重建损失由原图X0和生成的X0副本相似性构建。它的编码器是一个多任务网络,分别由许多包含预训练的分支构成(分割,颜色,直方图等)。利用多任务网络获得条件C,再利用C,用噪声Z去完成扩散模型的反向扩散过程,获得X0副本。
条件使用方式:
我个人理解和ControlNet是一致的,具体细节还是分开处理,文本(Caption)用Bert或者CLIP中的文本编码去提特征。而图像就用Unet的自编码器作为多尺度特征提取。 多个条件之间,是分别用概率P去控制加和获得最终条件。推理阶段:可以完成Zero-Shot任务,输入任意一张图,可以获得8中子集,再用噪声Z去组合重建出自己想要的信息。举个例子,对于Mask图像,输入噪声Z和掩码mask条件和文本prompt,进行精确更改。
个人思考:图像生成尽可能准确丰富的提取图像中各个维度的结构化信息(包括文字信息),然后通过Stable Diffusion模型组合融入想要的结构化信息,进而达到完全自主可控的图像生成。
============================================分界线
下面看两篇针对人脸的可控生成的
4. Diffusion-AE
总结:
采用卷积编码器提取高级语义特征Zsem,如:年龄、性别、头发的样式。 采用Conditonal DDIM提取低级随机变化特征。再XT重建回X0的时候又以刚刚的Zsem为条件。 该方法,可以同时提取图像高级语义特征和低级随机变化,可以用于很多下 游任务。 为了无条件生成,该方法又专门针对获得Zsem额外训练了Latent DDIM,以增加生成的多样性。思考:
与Composer相比,我的理解是这里的卷积提取Zsem特征就类似于Composer用各种不同的模型将各种不同的图片分解成各种元素的总和过程。不过Zsem更加粗粒度,而Composer拆解的特征更加细粒度! 总之,扩散模型还原过程都要有充分的特征做支撑才能做到自主生成!5. Diffusion-Rig
架构图传不上来,一直说违规,,,没办法。。。
总结:
Diff-AE很相似,但是总的架构更像Stylegan-rig就是在扩散模型中加条件,Diff-AE只是加了二维卷积特征作为条件(高阶语义信息,而扩散模型DDIM编码器部分作为低阶语义信息提取器),这里的话,加了三维的DECA模型抽取的特征分别称为为Surface Normals,Albedo, Lambertian Render这三者和编码器特征(也是卷积,提取全局外观信息,低阶)。
DiffAE的架构一致,它们的目的都是基于自动编码器的结构进行重建原图构建loss。在Diff-AE中,它为了做无条件生成,需要重新针对高级语义特征Z的获得额外训练一个Latent DDIM。而本文则是分为双阶段完成该任务。第一阶段,利用DECA抽取的特征作为physical buffer(其实就是条件)和卷积的全局外观信息,在大规模人脸数据集上进行训练和重建。在第二阶段,冻结扩散模型编码器部分(卷积全局特征信息)。只利用DDIM进行Finetune, 就是说,只针对当前的特定人的相册比如20来张照片进行微调,保留住身份信息,就能完成任务了。
============================================分界线
下面看两篇针对可控训练中训练技巧的,这个点其实在中森的文章中也提到了。
6. Taming-Encoder
架构梳理总结:
本质上就是一个扩散模型,在文本引导条件的基础上还加了图像中的目标编码条件,就是加一个额外的Cross Attention模块共同去生成最终图像。
本文的重点研究内容就是怎么把这个图像目标编码器向量嵌入到扩散模型反向扩散过程中,还要别影响到了原本的文本条件的引导生成作用。总之就是让它俩条件合作,而不能互相影响。
核心贡献创新其实就俩:
提出正则化联合训练方案和目标身份保留损失,也就是Figure 3。
总结就是防止图像目标编码特征太强影响到文本条件的引导作用,所以,要把身份信息(CLIP中自带的)从对象嵌入中分离出来,所以以一定概率用其他人的头像。
提出一个字幕生成方案,主要是针对特定领域数据集的文本描述设计的。
分别有两个模型,分别叫标题模型和属性模型(预训练好的)。分别提取各自文本描述再粘贴到一起,作为文本的条件描述。这可以避免文本条件属性丢失问题。
7. Paint by Example
架构梳理总结:
因为需要的数据集无法构建,提出替代方案,用一张图的检测框作为mask,框里面的图就是参考图。把参考图里面的目标还原回原始图里。把还原回来的图和真实的原图做损失计算。
为了保证该方法不偷懒,直接学复制粘贴操作。分别提出下面两点创新:
Figure 3. 这就是典型的偷懒现象,直接复制粘贴操作,融合的很差。为了避免这个现象,采用了创新思路。
思考:其实本质上就仅仅只是一个图作为Reference条件生图的架构,作者也一直在强调图像生成图像的直观作用大于文本引导生成图像,所以,它设计了这个架构。最值得学习的是它的数据增强思路和特征Cross Attention方式。
============================================分界线
下面看两篇简单的针对可控区域生成的
8. GLIGEN
数据图:
注意力添加方式:
核心思路:将bbox的信息和其对应的词的text embedding拼接过一个全联接网络MLP后得到我们的融合表征grounding tokens。这个表征会注入到UNet里self-attn和cross-attn之间,以一个新的架构gated-self-attn的方式添加进网络。
**个人思考:**直接加位置信息和对应的文本属性到扩散模型中,直接就可以在对应的区域生成自己想要的内容。方法很简单,缺点也很明显,加了额外的自注意力层,带来了很多的额外的训练开销!
9. Improving Diffusion Models for Scene Text Editing with Dual Encoders
架构图:
方法架构梳理总结:
类似于GLIGEN,也是对Cross Attention操作。在SD的原本的文本条件(instruction encoder负责风格)的基础上,加了一个额外的character encoder,负责文本的易读性和真实性。这俩编码器得到的公共的条件一起进行Cross Attention。
训练细节: 数据要Instruction word,mask,GT。 8张V100 80Ksteps 两天完成。
**个人思考:**本质上只是为了完成字符的融入任务,甚至这里的Instruct word都可以不需要语义信息,反而更多应该关注单词本身字符和图像风格。缺点也一样,需要额外训练。
============================================分界线
最后再介绍两篇不需要训练的,公式推理就比较复杂了,作者能力有限,只能看个大概。
10. Training-Free Layout Control with Cross-Attention Guidance
核心方法图:
目标是:
研究预训练的文本到图像生成器是否可以在推理过程中遵守用户指定的布局,而无需使用明确的布局条件进行训练。例如,给定文本描述y,文本提示中单词yi的索引i和边界框B,我们希望生成一个在B中包含yi的图像x,本质上修改生成器以从具有额外控件的新分布p(x|y,B,i)中采样。
方法架构梳理总结:
就是对Cross Attention层进行操作,学习布局信息去引导生成。操作方式分为两种,前向和后向。
前向引导:正向引导直接修改激活层以符合规定的模式,在推理过程开始时,该模式被反复“强制”进行多次去噪迭代。当模型开始在正确的图像区域中生成正确的输出时,注意力自然会与规定的布局相匹配。
后向引导:类似于classifier guidance的模式,使用损失函数来评估注意力图是否遵循期望的模式,并修改latent以引导注意力集中在特定区域。
作者还发现了EOT和SOT这种不包含固定图像区域的token包含了很多位置和布局信息。(我很想问,这是不是就是Text Inversion干的事儿呢?)
个人思考:
个人感觉前向就是利用注意力让模型强制在目标框内生成,反向就是保证生成的类别是对的。(不知道是不是这个意思),总的来说都是设计了计算公式,修改预训练好的模型的权重符合自己的需求而不需要额外训练!
这里我只贴了相关公式,没有对公式变量进行解释,需要看懂并且自己推理的需要自己去看原文。(注:如果您看懂了,作者十分乐意向您请教!!)
11. Universal Guidance for Diffusion Models
核心就提出了通用的guidance方法,使任何现成的模型或损失函数(分割,检测等)都可以作为扩散的guidance。由于guidance函数可以在不重新训练或修改的情况下使用,这种形式的guidance是通用的,因为它可以使扩散模型适用于几乎任何目的。
总结了Guidance和Condition的区别:Guidance无需额外训练,Condition视任务需要额外的巨大的训练开销。Guidance更加高端吧!
难点:怎么直接把扩散采样过程中的噪声图像域迁移到被训练的guidance模型的干净图像上。
研究关键:classifier guidance, 改变采样方式,而不改变模型!
研究Motivation点:宋飏的DDIM,
Guidance方式:前向,后向,Per-step Self-recurrence三种方式。
利用classifier guidance作为前向guidance的理论基础,但是前向guidance会过度保留图像真实性,于是利用后向guidance给生成的图像匹配prompt提供了优化方向,并优先实施约束,辅助生成的图像满足限制。然而,既能确保真实性又能满足guidance约束的最佳点并不总是存在的。于是,有了Per-step Self-recurrence的思路,通过给 Zt-1 插入K次高斯噪声找到满足真实性和guidance约束的最佳点。(一次找不到,多找几次)
个人思考:公式还是太复杂了,只能看个懵懵懂懂。个人理解就是跟上一篇Training-Free Layout Control with Cross-Attention Guidance的思路类似,不过本文如题目所说,更加具有普适性,可以同时结合各种(多个)预训练模型作为guidance,得到想要的结果。
总结
以上就是今天要分享的内容,作者能力有限,记录也是为了将来复习回顾,如果能帮到您就更好了。
最后附上所有参考文献(顺序自己对一下):
Zhang L, Agrawala M. Adding conditional control to text-to-image diffusion models[J]. arXiv preprint arXiv:2302.05543, 2023.
Mou C, Wang X, Xie L, et al. T2i-adapter: Learning adapters to dig out more controllable ability for text-to-image diffusion models[J]. arXiv preprint arXiv:2302.08453, 2023.
Huang L, Chen D, Liu Y, et al. Composer: Creative and controllable image synthesis with composable conditions[J]. arXiv preprint arXiv:2302.09778, 2023.
Preechakul K, Chatthee N, Wizadwongsa S, et al. Diffusion autoencoders: Toward a meaningful and decodable representation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 10619-10629.
Jia X, Zhao Y, Chan K C K, et al. Taming Encoder for Zero Fine-tuning Image Customization with Text-to-Image Diffusion Models[J]. arXiv preprint arXiv:2304.02642, 2023.
Yang B, Gu S, Zhang B, et al. Paint by Example: Exemplar-based Image Editing with Diffusion Models[J]. arXiv preprint arXiv:2211.13227, 2022.
Liu S, Zeng Z, Ren T, et al. Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection[J]. arXiv preprint arXiv:2303.05499, 2023.
Chen M, Laina I, Vedaldi A. Training-Free Layout Control with Cross-Attention Guidance[J]. arXiv preprint arXiv:2304.03373, 2023.
Bansal A, Chu H M, Schwarzschild A, et al. Universal Guidance for Diffusion Models[J]. arXiv preprint arXiv:2302.07121, 2023.
Ding Z, Zhang X, Xia Z, et al. DiffusionRig: Learning Personalized Priors for Facial Appearance Editing[J]. arXiv preprint arXiv:2304.06711, 2023.
Ji J, Zhang G, Wang Z, et al. Improving Diffusion Models for Scene Text Editing with Dual Encoders[J]. arXiv preprint arXiv:2304.05568, 2023.