可控图像生成 SeeCoder: Prompt-Free Diffusion: Taking “Text” out of Text-to-Image Diffusion Models 论文解读
这种方法已成为最受下游用户欢迎的方法之一,因为它:a) 与提示相比,将结构与内容分离可对结果进行。
Prompt-Free Diffusion: Taking “Text” out of Text-to-Image Diffusion Models
这里照例,说一下这次开组会的感受吧,最近这两次组会都是学长、学姐做汇报。感觉学长学姐讲的都很好,PPT内容也很充分,
大家无论是对最近的技术发展的介绍和对应文章的技术细节讲解的都很到位,反观自己的PPT好像似乎非常的笼统,
就是照着论文复制粘贴。并没有很详细。特别是对于最近的发展概况似乎不怎么重视。得改!
今天开组会的时候谈到了IP adapter和ControlNet的问题,但是我没有提出问题,因为我似乎又发现自己好像有一些东西还没注意到。
还有一些想法好像与大家的有一定的差异。所以就没敢吭声,读完这几篇文章 得停下来把之前的内容梳理一下 把遗留的问题解决一下。
这周的组会结束了 这周汇报的是See Coder这篇文章 但是好像讲解的效果还不是很好
好像连文章干的事也没解释好 也许下次应该向另外一位同事学习一下
把实验的结果提前放到前面讲 大家也许就能尽快知道文章的内容大概在讲什么
这里还有两个地方应该详细解释一下
就是decoder、query Transformer这儿的解释应该再详细一些
seeCoder
一、研究目的
searching high-quality text prompts for customized results is more art than science[文本提示工程和搜索高质量文本提示以获得定制结果是艺术而非科学]
作者认为说,写提示词是门技术活,麻烦的很。我就直接用几张图片来表达我想生成图片的样子,干脆利落,效果还好。
二、研究背景
对个性化合成结果的高需求推动了多项文本到图像(T2I)相关技术的发展,包括模型微调、提示工程和可控编辑等
2.1 模型微调
利用示例图像对 T2I 模型进行微调。个性化调整技术,如 DreamBooth,通过对模型权重进行微调,显示出良好的质量。但它们的缺点也很明显:对普通用户来说,对模型进行微调仍然需要耗费大量资源。
2.2 提示工程
提示工程(Prompt-engineering)是个性化 T2I 模型的轻型替代方案。
2.3 可控编辑
T2I 控制技术和自适应模型。具有代表性的作品有 ControlNet、T2I-Adapter等,它们提出了自适应连体网络,将用户自定义的结构条件(如可视边缘、深度、姿势等)作为提示之外的生成指导。这种方法已成为最受下游用户欢迎的方法之一,因为它:
a) 与提示相比,将结构与内容分离可对结果进行更精确的控制;
b) 这些即插即用模块可重复用于大多数 T2I 模型,从而为用户节省了额外的训练阶段。
ControlNet等方法能解决个性化 T2I 的所有难题吗?遗憾的是,答案并不尽然。例如,它仍然面临以下问题:
a) 当前的方法在生成用户指定的纹理、对象和语义方面面临挑战;
b) 搜索需要的提示有时会出现问题,而且很不方便;
c) 仍然需要为保证质量而进行提示工程。
三、研究内容(主要贡献)
将 “文本 ”从预训练的 T2I 扩散模型中移除,以减轻用户繁重的提示工程工作。我们提出的 “无提示扩散 ”框架只依赖视觉输入来生成新图像:它将参考图像作为 “上下文”、可选的图像结构调整和初始噪声,完全没有文本提示。这个场景背后的核心架构是语义上下文编码器(SeeCoder),它取代了常用的基于 CLIP 或 LLM 的文本编码器。
通过大量实验,我们发现无提示扩散(Prompt-Free Diffusion):
- 优于先前的基于范例的图像合成方法;
- 在使用最佳实践提示的情况下,与最先进的 T2I 模型性能相当;
- 可自然扩展到其他下游应用,如动漫人物生成和虚拟试穿,且质量可观。
SeeCoder 可复用于大多数开源的 T2I 模型,人们可以不费吹灰之力,轻松地将 T2I 管道转换为我们的无提示管道。
什么是基于范例的图像合成方法?
基于范例的生成技术致力于将结构化输入(例如边缘、姿态)转换成逼真的图像,同时保留范例图像的风格和内容。
四、技术路线
4.1.Prelimiaries
CLIP是一个双编码器网络,它通过**最小化嵌入之间的对比损失(即余弦相似度)**来连接文本图像对。CLIP 是 DALLE-2 和 Stable Diffusion 等现代 T2I 模型的重要先验模块。而且,先前的研究已经证明,其良好对齐的跨模态潜空间是 T2I 模型成功的核心原因之一。
图像变化(Image-Variation)定义了一项任务,即根据另一幅图像生成具有相似高级语义的图像。与基于范例的生成方法相比,“无提示扩散 ”更接近于 “图像变化”,前者使用 CLIP 图像编码器对 T2I 模型进行微调,而后者则针对虚拟试穿、化妆等任务提出了特定领域的网络。
4.2.Prompt-Free Diffusion
我们的目标是提出一种有效的解决方案,以处理当今高要求的个性化 T2I,同时积极保持先前方法的所有优点,即高质量、无需训练、可重复使用大多数开源模型。表 1 说明了各种方法的优缺点,我们从三个角度进行了衡量:个性化质量、易于安装和领域适应性,以及输入复杂性和灵活性。
Prompt-Free Diffusion 的设计继承了 T2I 和 ImageVariation 模型,由Diffusion Model和上下文编码器(seeCoder)这两个核心模块以及一个可选的 VAE 组成,VAE 可以降低扩散的维度。特别是在这项工作中,我们保留了类似稳定扩散(Stable Diffusion)的精确潜在扩散结构,如图 2 所示。
在传统的文本到图像(T2I)模型中,文本提示经过标记化(tokenized)后,由CLIP编码成N-by-C维度的上下文嵌入,这些嵌入随后输入到扩散模型的交叉注意层。我们的 “无提示扩散”方法用SeeCoder替换了CLIP,它仅接受图像输入,将视觉元素如纹理、物体和背景转换为相应的N-by-C嵌入。这种方法避免了使用文本提示,并且不需要像一些模型(例如Composer)那样进行图像分解,因为SeeCoder能够自动以无监督的方式处理从低级到高级的视觉信息。
4.3.Semantic Context Encoder
我们可能会注意到,CLIP 也可以对图像进行编码。但在实践中,CLIP 的 ViT [14] 显示出有限的能力,因为:
a) 无法接收分辨率高于 3842 的输入;
b) 无法捕捉纹理、物体等细节;
c) 训练时有对比度损失,使其成为处理视觉线索的间接方法。
因此,我们提出了 SeeCoder,这是一种比 CLIP 更适合视觉任务的解决方案。
SeeCoder 可分为三个组件: Backbone Encoder、Decoder 和 Query Transformer(见图 3)。
Backbone Encoder使用 SWIN-L,因为它能将任意分辨率的图像转换成特征金字塔,从而更好地捕捉不同尺度的视觉线索。
什么是 SWIN-L ?
Swin Transformer主要是提出来解决VIT在处理高分辨率图像和获取图像局部细节特征存在的不足。
不同于ViT一开始就使用16倍下采样Swin-Transformer开始采用4倍下采样的方式,后续采用8倍下采样,最终采用16倍下采样,Swin Transformer 通过不同层的特征进行有效融合,能够同时捕捉到图像的局部细节和全局上下文。
Swin Transformer采用了局部窗口的注意力机制,即每个位置只与其周围的局部窗口进行关联。这种方式大大减少了注意力机制的计算量。
采用W-MSA模块时,只会在每个窗口内进行自注意力计算,所以窗口与窗口之间是无法进行信息传递的。为了解决这个问题,作者引入了Shifted Windows Multi-Head Self-Attention(SW-MSA)模块。
具体信息可以参考这篇博客Swin Transformer网络详解
对于 Decoder,我们提出了一种基于 Transformer 的网络,其中包含多个卷积。具体来说,解码器从不同层次获取特征;使用卷积来均衡通道;将所有扁平化特征连接起来;然后通过 6 个具有线性投影和 LayerNorms [1] 的多头自注意力模块 [58]。 最后的输出被分割和整形回二维,然后与横向链接的输入特征相加。
这里其实就是将backbone Encoder里面的提取的不同层次的信息的concat,
经过多个Transformer再次提取特征,然后再送到Query Transformer中进行Cross Attention和Self-attention的交替计算。
Encoder 浅层提取的信息被认为是局部信息 深层则被认为是全局信息(下采样的倍数越来越大导致的)
SeeCoder 的最后一部分是Query Transformer,它能将多级视觉特征最终转换为单一的一维视觉嵌入。该网络从4 个自由学习的Global Query和 144 个Local Query开始。通过交叉注意层和自注意力层的交替结构,Cross-Attention将Local Query作为 Q,将视觉特征作为 K 和 V,Self-Attention使用全局和局部查询的连接作为 QKV,实现从视觉特征到局部查询,再从局部到全局查询的知识传递。
在这里其实还有一个点我没明白(反映出我Transformer也学的不好)
就是Enocder也是Transformer, Decoder 也是Transformer, 那为什么一个叫做Encoder, 一个叫做Decoder呢? 二者做的事情有什么不同? 从宏观的角度去看, Encoder和Decoder分别都是用来完成什么样的任务呢?
SeeCoder 此外,网络还包含自由学习的查询嵌入、水平嵌入和可选的二维空间嵌入。 可选的空间嵌入是正弦余弦编码,然后是几个 MLP 层。当存在二维空间嵌入时,我们将网络命名为 SeeCoder-PA,其中 PA 是 Position-Aware 的缩写。最后,全局和局部查询被串联起来,并传递给扩散器以生成内容。
五、实验结果
5.1 Performance
我们在图 4 中展示了 “无提示扩散 ”的性能,在图 4 中,我们的方法生成了高质量的图像,复制了参考输入的细节。在本实验中,无提示扩散法广泛使用了控制网(ControlNets)来处理各种结构条件,如canny-edge、depth、mlsd和scribble。
通过这张实验结果图,可以发现模型可以很好的利用深度图、结构图、轮廓图
去调整参考图像内容的结构、轮廓和朝向等信息,并且看起来毫无违和感。
与 T2I 比较:我们的实验比较了无提示扩散与传统的基于提示的ControlNet+T2I性能(见图5)。通过使用不同复杂度的提示,我们发现无提示扩散的性能接近于需要语义和风格装饰提示的级别,以及需要额外提示工程的级别。同时,我们观察到ControlNet+T2I存在难以解决的颜色偏移问题。
上面这张图其实是 T2I(如Stable Diffusion)+ControlNet 在 文本提示词 和 图像内容轮廓图 的提示下生成的图像
和利用Seecoder Diffusion + ControlNet 在 参考图像 和 图像内容轮廓图 的提示下生成的图像
两者进行对比虽然轮廓都被很好的体现出来,但是前者存在着颜色偏移问题。而且后者的提示复杂程度小得多
与Dual-ControlNet比较: 我们还将我们的结构引导性能(即单ControlNet的无提示扩散)与Dual-ControlNet设置进行了比较。图 7 显示了放大细节后的整体性能,从中我们可以看出,我们的方法在复制参照物的纹理、颜色、风格、背景等方面具有优势。
七、感想
这个SeeCoder给我的感觉更像IP-Adapter一些,即插即用,一次训练,反复利用。CLIP 的 ViT [14] 显示出有限的能力,这句话可能对我的影响会大一些。既然这样,是不是可以把Ip-Adapter和seeCoder结合起来看看效果如何。
更多推荐
所有评论(0)