本文主要是介绍清华团队新作 | 从Text-to-Image扩散模型中提取表征,服务下游任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章标题:Unleashing Text-to-Image Diffusion Models for Visual Perception
代码地址:地址
文章地址:http://arxiv.org/abs/2303.02153
摘要
扩散模型(Diffusion Models,DMs)已成为生成模型的新趋势,并表现出强大的条件合成能力。其中,在大规模图文对上预训练的文本到图像扩散模型通过可定制的提示高度可控。与关注低层属性和细节的无条件生成模型不同,得益于视觉语言预训练,文本到图像的扩散模型包含了更多的高层知识。在本文中,我们提出了VPD (带有预训练扩散模型的视觉感知),一个在视觉感知任务中利用预训练的文本到图像扩散模型的语义信息的新框架。我们没有在基于扩散的pipeline中使用预训练的去噪自动编码器,而是简单地将其作为主干,旨在研究如何充分利用所学知识。具体来说,我们使用适当的文本输入提示去噪解码器,并使用适配器细化文本特征,从而更好地与预训练阶段对齐,并使视觉内容与文本提示进行交互。我们还提出利用视觉特征和文本特征之间的交叉注意力映射来提供显式的指导。与其他预训练方法相比,我们表明视觉语言预训练的扩散模型可以更快地适应下游的视觉感知任务。在语义分割、参考图像分割和深度估计上的大量实验证明了我们方法的有效性。值得注意的是,VPD在NYUv2深度估计上达到了0.254的RMSE,在RefCOCOval参考图像分割上达到了73.3 % oIoU,在这两个基准上都创下了新的记录。
引言
**背景:**大规模文本到图像的扩散模型能够生成纹理丰富、内容多样、结构合理的高质量图像,同时具有可组合、可编辑的语义。这一现象潜在地表明,大型文本-图像扩散模型可以从海量的图像-文本对中隐式地学习高层和低层视觉概念。同时,一些研究也表明:在文本到图像扩散模型中,文本中潜在的视觉特征和对应的单词之间存在明显的相关性。
难点:传统的视觉预训练方法和文本到图像的模型有区别。
传统的视觉预训练方法旨在将输入图像编码为潜在的表示,并在分类和视觉语言任务中使用对比学习和掩蔽图像建模等假设性任务或大量标注来学习表示。预训练过程使得学习到的潜在表示自然适用于一系列视觉感知任务,因为语义知识是从原始图像中提取的。
文本到图像的模型旨在基于文本提示生成高保真图像。文本到图像的扩散模型将随机噪声和文本提示作为输入,通过渐进的去噪过程生成图像。尽管在大型扩散模型中学习到了丰富的表征,但是对于各种视觉感知任务如何提取这些知识,以及是否能对视觉感知有利,仍然是未知的。
本文方向:本文研究如何利用从文本到图像中学习到的知识进行视觉感知。
在扩散模型上使用迁移学习的两个难点:
(1)扩散模型的pipeline与视觉感知任务之间的不兼容性
(2)UNet-like扩散模型与流行视觉骨架之间的架构差异。
本文研究重点:使用在文本生成高清图像上预训练的去噪自动编码器作为主干,研究如何充分利用学习到的高层和低层知识。
解决办法:
(1)不使用分步扩散pipeline,而是简单地使用自动编码器作为骨干模型直接使用没有噪声的自然图像,并通过设计prompt执行一个额外的去噪步骤来提取语义信息。
(2)为了与预训练阶段保持一致,并促进视觉内容和文本提示之间的交互,使用适当的文本输入来提示去噪扩散模型,并使用适配器来优化文本特征。
(3)受先前扩散模型中提示词与视觉模式关系研究的启发,提出利用视觉和文本特征之间的交叉注意力映射来提供显式的指导。
主要的idea如图所示:
方法
整体框架为:
Prompting Text-to-Image Diffusion Model
说明:使用eθ表示一个自动编码器(通常是UNet结构)
对于文本到图像模型,文章认为,由于预训练过程中对自然语言的监督较弱,因此有足够的高级知识。
一般的感知任务旨在对分布p(y|x)进行建模,其中y为任务特定标签,x为输入图像。
目标:充分挖掘训练有素的文本条件eθ的知识,并将学习到的知识迁移到下游的视觉感知任务中。
基本思想:在任务特定的标签和自然语言之间建立联系,使得学习到的语义信息能够被高效地提取出来。
预测模型定义:
解释:
(1)p(C|S)负责从类名中提取文本特征。本文使用相同的CLIP文本编码器作为Stable Diffusion的预训练阶段,文本输入使用" a photo of a [CLS] "模板简单定义。将文本编码器转移到下游任务时,通常会出现域gap。对此,受[3]的启发,本文使用一个作为两层MLP实现的文本适配器来细化CLIP文本编码器得到的文本特征。总体流程如下:
其中T表示对类名集合应用提示模板生成的原始文本。r是一个可学习的因子,初始化为非常小。这种设计可以帮助我们最大限度地保留文本编码器的预训练知识,同时缓解预训练任务与下游任务之间的领域鸿沟。
需要注意:不同于CLIP文本编码器使用整个句子的特征,我们简单地使用来自[EOS]标记的特征。
(2)p(F|x,C)目的是在给定输入图像x和条件输入C的情况下,提取分层特征图F。本文首先使用VQGAN(简写为E)的编码器将图像编码到潜在空间(z0=E(x)),然后将潜在特征图和条件输入输入到预训练的eθ网络。
分层特征F可以从不同分辨率的每个输出块的最后一层获得,输入图像大小为512 × 512,F包含4个特征图,空间大小具体如下:
(3)p(y|F)它是由分层特征图F生成结果的预测头。它的组成为语义FPN(特征金字塔),由多个卷积层和上采样层组成。
文章还指出,它的方法不再是基于扩散的框架,因为我们只使用单个UNet作为主干。
Semantic Guidance via Cross-attention
在训练好的文本到图像扩散模型中,**特征图与条件文本特征之间的交叉注意力图具有很好的局部性。**这一良好的性质促使文章利用交叉注意力图来明确地促进下游的视觉感知。
交叉注意力操作存在于eθ网络的4种分辨率中。对于第i个分辨率,我们可以简单地将所有属于该分辨率的交叉注意力图进行平均,得到平均后的图Ai。注意力图使用条件输入C作为key和value的。
平均的交叉注意力图是有用的,因为它的每个通道都聚集了某个类别的一些语义信息。然后,我们可以将平均后的交叉注意力图与原始的层次特征图进行拼接,并将结果反馈给预测头Fi←[Fi,Ai]。
文章不使用最低分辨率的交叉注意力图,因为它们不是非常准确。
通过实验发现,通过交叉注意进行显性语义引导可以帮助我们的模型更快地适应下游任务。
实验
实验设置
在训练时固定了VQGAN编码器E和CLIP文本编码器。我们总是将eθ的学习率设置为基学习率的1 / 10。文本适配器采用r = 1e - 4。
不同任务上的设置可以详细看论文。
实验结果
语义分割上不同方法的比较:
Referring image segmentation旨在从一幅图像中找到给定自然语言表达的相关对象。它的实验比较如下:
深度估计:
使用了已发布的1-5版本的"Stable-Diffusion"(简称SD-1-5)。以下结果表明,更长的预训练在下游任务产生更好的效果。
不足
虽然本文的方法表现出了令人满意的性能,但VPD的计算成本目前相对较高。eθ的高计算成本在我们当前的框架下无法解决。
结论
在本文中,我们提出了一个名为VPD的新框架,将预训练的文本到图像扩散模型的高级知识迁移到下游任务中。我们提出了几种设计来鼓励视觉-语言对齐,并隐式和显式地提示预训练模型。在语义分割、参考图像分割和深度估计上的大量实验证了VPD可以实现更好的性能且与各种视觉预训练范式的方法相比,表现出更快的收敛速度。我们也相信除了扩散模型,文本引导的生成模型也可以适用于VPD,这也是我们留给未来工作的方向。我们期望我们的努力能够揭示生成性文本到图像的预训练在视觉感知中的重要作用,为视觉生成和感知任务的统一迈出一步。
参考文献
[1]Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, et al. Learning transferable visual models from natural language supervision. In ICML, pages 8748–8763. PMLR, 2021. 4
[2]Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser, and Bj ̈ orn Ommer. High-resolution image synthesis with latent diffusion models. In CVPR, pages 1068410695, 2022. 1, 2, 4
[3]Peng Gao, Shijie Geng, Renrui Zhang, Teli Ma, Rongyao Fang, Yongfeng Zhang, Hongsheng Li, and Yu Qiao. Clip-adapter: Better vision-language models with feature adapters. arXiv preprint arXiv:2110.04544, 2021. 4
这篇关于清华团队新作 | 从Text-to-Image扩散模型中提取表征,服务下游任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!