清华团队新作 | 从Text-to-Image扩散模型中提取表征,服务下游任务

本文主要是介绍清华团队新作 | 从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扩散模型中提取表征,服务下游任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/202399

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、