最近读的AIGC相关论文思路解读

2023-11-18

AIGC之SD可控生成论文阅读记录

提示:本博客是作者本人最近对AIGC领域相关论文调研后,临时记录所用,所有观点都是来自作者本人局限理解,以及个人思考,不代表对。如果你也正好看过相关文章,发现作者的想法和思路有问题,欢迎评论区留言指正!

既然是论文阅读分享,首先,你需要有一些AIGC基础知识,许多基础概念我不会具体深入讲它是什么!



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相关的特征,添加到当前的生成能够影响当前生成的布局语义等。

很想问具体融合方式?是否需要注意力?条件图类型不同照理说加法不同,但是作者给统一了。全部作为图像,做多尺度特征提取。

统一的条件

  1. 作者所针对的每一个模态,都可以通过已有模型的基础上快速获得大量数据.(比如canny filter对edge的提取,midas对深度图的提取等)。类似于InstructPix2Pix这篇工作,针对当前任务造出一个百万级别大小的训练数据,可能是微调模型使其学到隐式关系的关键。

  2. 作者提出的架构和对额外模态的输入形式使得一个通用架构成为可能。在上面介绍结构时,笔者提到作者是针对UNet的前半部分里的每一层做额外信息添加和复制训练的。其中当然就包括了Resnet的卷积层。即无论什么模态的信息,作者的架构都可以把它作为图像通过UNet的encoder对其进行多尺度的信息特征的提取。大量参数(对Encoder+MidLayer的复制)加上大量训练数据加上适配的网络架构可能是其成功的关键。

  3. 对信息的添加及添加位置的选定。如果直观上来理解,在UNet的encoder阶段添加模态信息引导使得Decoder生成时考虑到相关添加信息当然符合直觉。但为何作者没有选定(只)在Transformer层这样的模态信息制导生成的关键位置添加模块,而是一视同仁且是在每一层的结尾做信息融合。

上面主要搬运自中森


2. T2I-Adapter

几乎跟Control-Net没区别,区别只有两点:

  1. T2I-Adapter可以同时组合输入多种类型的Condition,用超参数 ω \omega ω控制的。
  2. T2I-Adapter是从SD的Encoder部分传入Condition的。

个人思考

  1. 是否可以说明在加条件在编,解码器部分是都能成功的。
  2. 为啥上面这俩加条件都仅仅是堆叠,而不是做cross attention。

3. Composer

ComposerControlNet和T2I-Adapter的思路类似。

思路:可编辑图像生成其实就是对图像各种元素的组合,Composer先用各种不同的模型将各种不同的图片分解成各种元素,然后将不同图片的元素进行重组。比如上图的戴珍珠耳环的少女,可以分解成shape、semantics、sketch、masking、style、content、intensity、palette、文字等等元素,然后跟其他不同图片的元素进行想要的重组。

条件添加方式

  1. Global Conditions: sentence embeddings, image embeddings and color histograms, 都需要添加到Timestep中
  2. Localized Conditions:segmentation maps, depthmaps, sketches, grayscale images, and masked images,并且需要添加到Noisy Image中。

Inpainting作用:通过引入掩蔽的正交表示,Composer能够将可编辑区域限制为用户指定的区域,用于所有上述操作,比传统的修复操作更灵活,同时还防止修改该区域以外的像素。

训练方式 :倾向于自监督,重建损失由原图X0和生成的X0副本相似性构建。它的编码器是一个多任务网络,分别由许多包含预训练的分支构成(分割,颜色,直方图等)。利用多任务网络获得条件C,再利用C,用噪声Z去完成扩散模型的反向扩散过程,获得X0副本。

条件使用方式

  1. 我个人理解和ControlNet是一致的,具体细节还是分开处理,文本(Caption)用Bert或者CLIP中的文本编码去提特征。而图像就用Unet的自编码器作为多尺度特征提取。
  2. 多个条件之间,是分别用概率P去控制加和获得最终条件。

推理阶段:可以完成Zero-Shot任务,输入任意一张图,可以获得8中子集,再用噪声Z去组合重建出自己想要的信息。举个例子,对于Mask图像,输入噪声Z和掩码mask条件和文本prompt,进行精确更改。

个人思考:图像生成尽可能准确丰富的提取图像中各个维度的结构化信息(包括文字信息),然后通过Stable Diffusion模型组合融入想要的结构化信息,进而达到完全自主可控的图像生成。

============================================分界线
下面看两篇针对人脸的可控生成的

4. Diffusion-AE

总结:

  1. 采用卷积编码器提取高级语义特征Zsem,如:年龄、性别、头发的样式。
  2. 采用Conditonal DDIM提取低级随机变化特征。再XT重建回X0的时候又以刚刚的Zsem为条件。
  3. 该方法,可以同时提取图像高级语义特征和低级随机变化,可以用于很多下 游任务。
  4. 为了无条件生成,该方法又专门针对获得Zsem额外训练了Latent DDIM,以增加生成的多样性。

思考:

  1. 与Composer相比,我的理解是这里的卷积提取Zsem特征就类似于Composer用各种不同的模型将各种不同的图片分解成各种元素的总和过程。不过Zsem更加粗粒度,而Composer拆解的特征更加细粒度!
  2. 总之,扩散模型还原过程都要有充分的特征做支撑才能做到自主生成!

5. Diffusion-Rig

架构图传不上来,一直说违规,,,没办法。。。

总结:

  1. Diff-AE很相似,但是总的架构更像Stylegan-rig就是在扩散模型中加条件,Diff-AE只是加了二维卷积特征作为条件(高阶语义信息,而扩散模型DDIM编码器部分作为低阶语义信息提取器),这里的话,加了三维的DECA模型抽取的特征分别称为为Surface Normals,Albedo, Lambertian Render这三者和编码器特征(也是卷积,提取全局外观信息,低阶)。

  2. DiffAE的架构一致,它们的目的都是基于自动编码器的结构进行重建原图构建loss。在Diff-AE中,它为了做无条件生成,需要重新针对高级语义特征Z的获得额外训练一个Latent DDIM。而本文则是分为双阶段完成该任务。第一阶段,利用DECA抽取的特征作为physical buffer(其实就是条件)和卷积的全局外观信息,在大规模人脸数据集上进行训练和重建。在第二阶段,冻结扩散模型编码器部分(卷积全局特征信息)。只利用DDIM进行Finetune, 就是说,只针对当前的特定人的相册比如20来张照片进行微调,保留住身份信息,就能完成任务了。

============================================分界线
下面看两篇针对可控训练中训练技巧的,这个点其实在中森的文章中也提到了。

6. Taming-Encoder

架构梳理总结:
本质上就是一个扩散模型,在文本引导条件的基础上还加了图像中的目标编码条件,就是加一个额外的Cross Attention模块共同去生成最终图像。
本文的重点研究内容就是怎么把这个图像目标编码器向量嵌入到扩散模型反向扩散过程中,还要别影响到了原本的文本条件的引导生成作用。总之就是让它俩条件合作,而不能互相影响。

核心贡献创新其实就俩:

  1. 提出正则化联合训练方案和目标身份保留损失,也就是Figure 3。
    总结就是防止图像目标编码特征太强影响到文本条件的引导作用,所以,要把身份信息(CLIP中自带的)从对象嵌入中分离出来,所以以一定概率用其他人的头像。

  2. 提出一个字幕生成方案,主要是针对特定领域数据集的文本描述设计的。
    分别有两个模型,分别叫标题模型和属性模型(预训练好的)。分别提取各自文本描述再粘贴到一起,作为文本的条件描述。这可以避免文本条件属性丢失问题。

7. Paint by Example

架构梳理总结

因为需要的数据集无法构建,提出替代方案,用一张图的检测框作为mask,框里面的图就是参考图。把参考图里面的目标还原回原始图里。把还原回来的图和真实的原图做损失计算。
为了保证该方法不偷懒,直接学复制粘贴操作。分别提出下面两点创新:

  1. 利用预训练的SD作初始化,把参考图提取特征后只保留CLS的token,再通过Cross Attention的方式,加上一些额外的全连接层到扩散过程中去解码特征。避免图像特征给多了让神经网络偷懒。
  2. 参考图做数据增强,(反转,平移等),检测框的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层进行操作,学习布局信息去引导生成。操作方式分为两种,前向和后向。
在这里插入图片描述

  1. 前向引导:正向引导直接修改激活层以符合规定的模式,在推理过程开始时,该模式被反复“强制”进行多次去噪迭代。当模型开始在正确的图像区域中生成正确的输出时,注意力自然会与规定的布局相匹配。
    在这里插入图片描述

  2. 后向引导:类似于classifier guidance的模式,使用损失函数来评估注意力图是否遵循期望的模式,并修改latent以引导注意力集中在特定区域。

  3. 作者还发现了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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最近读的AIGC相关论文思路解读 的相关文章

  • Qt学习笔记(四)ui界面通过样式表添加图片、背景、字体颜色等

    1 创建工程 添加ui 添加qrc资源文件 将图片导入 2 进入ui 可对背景界面 可对label pushbutton等构件右键改变样式表 进入样式表 看到添加资源下有三个选项 background image board image i
  • 【密码学】古代、古典密码

    古代密码 数据的保密基于加密算法的保密 Scytale密码 使用一条纸袋作为载体 环绕在一根固定半径的圆柱上 加密 在绕好的纸带上写上明文 解开缠绕后 就是加密好的 无序的密文 圆柱的半径就是密钥 解密 找到相同大小的圆柱 将纸带缠绕在援助
  • 随机数函数(一):均匀分布的随机数函数

    随机数是随机产生的数 可以分为两种 真随机数和伪随机数 计算机所使用的都是伪随机数 并不能像投硬币或者投骰子那样产生真正随机的 事前不能确定结果的数值 事实上 计算机在模拟产生随机数前就会按照某种算法产生一个特定的序列 也就意味着每个随机数
  • 主流WEB漏洞扫描器种类及其指纹特征分析

    福利 网络安全重磅福利 入门 进阶全套282G学习资源包免费分享 0x01 Web 漏洞扫描 器 国内 绿盟 WVSS https www nsfocus com cn html 2019 206 0911 8 html 安恒 明鉴 htt
  • ESP32 的esp_http_client详解

    说明 我使用的是esp idf V3 1 3 官方给我们封装好了 HTTP 使用起来还是很方便 一 wifi连接 在main函数里面主要是做了wifi连接的初始化和HTTP任务的创建 如下是main的全部内容 void app main e

随机推荐

  • In-Memory:内存数据库

    在逝去的2016后半年 由于项目需要支持数据的快速更新和多用户的高并发负载 我试水SQL Server 2016的In Memory OLTP 创建内存数据库实现项目的负载需求 现在项目接近尾声 系统运行稳定 写一篇博客 记录一下使用内存数
  • 探究前后端数据交互方式

    前端和后端在 Web 开发中扮演着不同的角色 两者需要进行数据的传递和交互 本篇文章将主要讨论前后端数据交互方式的不同类型和应用场景 一 什么是前后端数据交互 在 Web 开发中 前端负责用户界面的设计和交互 后端负责数据的处理和存储 因此
  • JAVA中的集合知识点

    JAVA中的集合主要又Collection和Map两个接口组成 其中Collection包括Set List Queue三个实现类 而Map接口包含TreeMap HashMap HashTable等实现类 下面是主要介绍 1 Collec
  • 训练 open-mmlab/mmclassification

    代码下载 github https github com open mmlab mmclassification 确定模型 resnet18 点击configs gt resnet18 8 b32 in1k py 说明 模型文件 base
  • 空间里种菜、偷菜,重现只属于80后的回忆

    何为 无人农场 中国工程院院士罗锡文用五句话高度概括 耕种管收生产环节全覆盖 机库田间转移作业全自动 自动避障异况停车保安全 作物生产过程实施全监控 智能决策精准作业全无人 随着新一代信息技术飞速融入传统产业 农业数字化 网络化 智能化逐步
  • cesium js 路径_Cesium开发入门篇

    01 开发环境准备 利用Cesium API进行二次开发属于Web前端开发范畴 目前比较火的Web三剑客包括React Vue AngularJS 每个js库的详细介绍可转至官网查看 在此不做详细介绍 本次开发环境是基于Vue搭建的 需要安
  • 搭建VUE脚手架 + 引入element-ui

    转载路径 https segmentfault com a 1190000011023102 从新建vue项目到引入组件Element 一 新建项目 1 查看 node是不是已经安装好命令 node v 没有安装的先安装环境 https n
  • 云服务器被ddos五个解决方案

    如果你的网站或网络设备遭到了DDOS攻击 你可以采取以下步骤来解决这个问题 1 首先 应尽快联系你的厂家ISP 告诉他们你正在遭受DDOS攻击 他们可能会帮助你拦截攻击流量 并提供其他帮助 2 尝试使用拥有较大带宽的服务器或CDN 内容分发
  • Android Studio 常用快捷键整理(转载+体验)

    一 调换格式 Ctrl D 复制行 其实是复制粘贴到下一行 有用 alt shift 移动到上一行 行内容向上移动 剪切粘贴到上一行 还行 alt shift 移动到下一行 剪切粘贴到下一行 Ctrl R 查找后替换 逐个查找 自动跳跃 手
  • 域名备案指南

    在运营网站的过程中 有一件不可忽略的事情 那就是网站上线之前需要完成 ICP 备案 根据工信部规定 所有在境内运行的服务 有境内公网 IP 地址 能够通过公网访问 都必须进行 ICP 备案 1 哪些单位需要办理互联网网站备案 已在工信部备案
  • CentOS8安装redis5

    CentOS8安装redis5 CentOS8的安装镜像已经包含redis5的软件包 可以直接通过yum安装 安装并启动redis5 yum install y redis systemctl start redis service sys
  • Oracle VM VirtualBox安装及使用常见问题

    1 安装系统显示FATAL NO bootable medium found System halted 镜像问题 需要下载纯净的镜像 推荐MSDN所提供的镜像 从网上或者系统之家下载的将无法启动 https msdn itellyou c
  • uniapp小程序单页面改变手机电量,头部通知的颜色效果demo(整理)

    onShow 改变电池的颜色 wx setNavigationBarColor frontColor ffffff 只支持两种颜色 backgroundColor ffffff animation duration 1
  • 刷题day_9 : 删除链表的倒数第 N 个结点

    题意描述 给你一个链表 删除链表的倒数第 n 个结点 并且返回链表的头结点 利用虚拟头结点 和双指针法 如果要删除倒数第n个节点 让fast移动n步 然后让fast和slow同时移动 直到fast指向链表末尾 删掉slow所指向的节点就可以
  • MoCaPose:在宽松服装中实现动作捕捉

    动作姿态是人类个体活动和互动的基本信息来源 采集人们的动作信息能实现了解 分析日常生活等功能 尽管在宽松服装上可以使用IMU实现动作捕捉 但由于需要将大量IMU并将其节点牢固 精确地固定在特定的身体位置 因此并不适合许多现实生活中的应用 这
  • python cgi如何获得html post 的信息,如何在Python CGI脚本中读取所有HTTP标头?

    可以使用python在apache CGI脚本中获取自定义请求标头的值 解决方法与此类似 Apache的mod cgi将为收到的每个HTTP请求标头设置环境变量 以这种方式设置的变量都将带有HTTP 前缀 因此例如x client vers
  • pluto实现分析(10)

    本文档的Copyleft归yfydz所有 使用GPL发布 可以自由拷贝 转载 转载时请保持文档的完整性 严禁用于任何商业用途 msn yfydz no1 hotmail com 来源 http yfydz cublog cn 10 主机对
  • 信息网络传播权 服务器,信息网络传播权的特征

    信息网络传播权的特征 著作权法法律快车2018 05 1510 21 062415人阅读15赞 不论是专业人士 还是普通民众 对 广播权 和 信息网络传播权 的感知总是通过日常频繁接触广播电台 电视台 网站等传播媒介得以实现的 那么信息网络
  • pytorch低版本环境加载高版本(1.6+)模型报错(xxx is a zip archive (did you mean to use torch.jit.load()?))

    问题描述 transformers 4 0 版本训练出来的模型 在3 0的Model from pretrained中加载会报错 pytorch model bin is a zip archive did you mean to use
  • 最近读的AIGC相关论文思路解读

    AIGC之SD可控生成论文阅读记录 提示 本博客是作者本人最近对AIGC领域相关论文调研后 临时记录所用 所有观点都是来自作者本人局限理解 以及个人思考 不代表对 如果你也正好看过相关文章 发现作者的想法和思路有问题 欢迎评论区留言指正 既