关注公众号,发现CV技术之美

 写在前面

最近的研究表明,使用对比图像文本对进行大规模的预训练可能是从自然语言监督中学习高质量视觉表示的有前途的方法。得益于更广泛的监督来源,这一新范式在下游分类任务和可迁移性方面展现出了不错的结果。

然而,将从图像-文本对中学习到的知识转移到更复杂的密集预测任务的问题几乎没有被研究 。在这项工作中,作者通过隐式和显式地利用CLIP的预训练的知识,提出了一个新的密集预测框架。

具体而言,作者将CLIP中的原始图像-文本匹配问题 转换为像素-文本匹配问题 ,并使用像素-文本得分图来指导密集预测模型的学习。通过进一步使用来自图像的上下文信息来提示语言模型,能够促进模型更好地利用预训练的知识。

本文的方法与模型无关,可以应用于任意密集预测模型和各种预训练的视觉主干,包括CLIP模型和ImageNet预训练的模型。广泛的实验证明了本文的方法在语义分割,目标检测和实例分割任务上的卓越性能。

 1. 论文和代码地址

DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting

论文:https://arxiv.org/abs/2112.01518
代码:https://github.com/raoyongming/DenseCLIP

 2. Motivation

“预训练+微调”的范式在很大程度上推动了各种下游计算机视觉任务的SOTA水平,包括图像分类、目标检测、语义分割和动作识别。由于每像素预测的标注和计算成本很高,因此预训练对于密集预测任务更为关键。

如上图所示,预训练通常是由监督的分类或者自监督学习来学习的。然后,将特定任务模块(如检测器或解码器)添加到主干中,并使用较少的训练数据在目标数据集上对整个模型进行优化。

与仅基于图像的常规监督和自监督预训练方法不同,对比语言-图像预训练 (CLIP) 是通过探索大规模噪声图像-文本对的对比学习来学习高质量视觉表示的新框架。通过利用图像和相关文本之间的语义关系,这个新框架从文本的丰富和语义级监督中受益,同时享受更广泛和更便宜的数据源。由于语言监督,通过CLIP预训练的模型在没有标注或非常有限的标注的情况下在各种视觉分类任务上取得了不错的结果。

目前的工作已经可以将CLIP模型转移到下游的视觉分类任务中。但是,他们主要专注于通过执行图像-文本匹配将CLIP模型转移到分类任务中,这与原始的预训练任务非常接近。几乎没有解决将从图像文本对学习的知识转移到更复杂的密集预测任务和更通用的设置的问题。

在本文中,作者研究了如何将预训练的CLIP模型迁移到密集的预测任务 。与传统的ImageNet预训练模型相比,一个明显的挑战是上游对比预训练任务和下游像素预测任务之间的差距,前者涉及图像和文本的实例级表示,而后者仅基于像素级别的视觉信息。

为了解决这个问题,作者提出了一个新的语言指导的密集预测框架,名为DenseCLIP

如上图所示,它是通过隐式和显式地利用来自CLIP模型的预训练的知识而为各种密集预测任务而设计的。利用预训练的知识的一种隐式方法是直接微调下游数据集上的模型。结果表明,通过对超参数进行一些修改,CLIP模型可以优于传统的ImageNet预训练模型(如下图所示)。

但是直接的方法不能充分利用CLIP模型的潜力。受CLIP中的原始对比学习框架的启发,作者提出将CLIP中的原始图像-文本匹配问题转换为像素-文本匹配问题,并使用像素-文本得分图来明确地指导密集预测模型的学习

通过进一步使用图像中的上下文信息,使用Transformer模块来提示语言模型,能够通过优化文本嵌入,使模型更好地利用预训练的知识。

 3. 方法

3.1. Preliminaries: Overview of CLIP

CLIP由两个编码器组成,包括一个图像编码器 (ResNet或ViT) 和一个文本编码器 (Transformer)。CLIP的目标是通过对比目标在预训练期间对齐视觉和语言的嵌入空间。

为了学习更多可迁移的预训练知识,CLIP收集4亿图像-文本对进行模型训练。迁移CLIP的知识,对于下游分类任务,一种简单但有效的方法是基于模板(如“a photo of a [CLS]”)构建一组文本提示,其中[CLS]可以替换为实际的类名。

然后给定一个图像,可以使用CLIP来计算图像和嵌入空间中的文本提示之间的相似性,并且得分最高的类被视为最终预测。最近,一些作品已经表明CLIP可以通过很少的样本获得强大的分类性能。因此,这就出现了一个有趣的问题: CLIP强大的能力是否可以迁移到像密集预测这样更复杂的视觉任务中?

但是,这种扩展是不容易的。首先,如何在密集预测任务中利用视觉语言预训练模型是一个几乎没有被研究的问题。尽管一种简单的解决方案是仅像预训练的2D主干一样使用图像编码器,但作者认为文本编码器中包含的语言先验也非常重要

其次,由于上游对比预训练任务与下游每像素预测任务之间存在巨大差距,因此将知识从CLIP转移到密集预测更加困难 ,前者考虑图像和文本的实例级表示,后者仅基于视觉信息,但需要像素级输出。

3.2. Language-Guided Dense Prediction

为了解决上述问题,作者提出了本文的语言指导的密集预测框架,该框架可以更好地利用CLIP预训练模型中的语言先验。本文的模型结构如上图所示。作者发现,除了全局图像特征之外,还可以从CLIP图像编码器的最后一层中提取语言兼容的特征图。

为了说明这一点,下面首先详细描述CLIP图像编码器的结构。以ResNet 编码器为例,总共有4个阶段,将特征图表示为。与原始的ResNet不同,CLIP添加了一个注意力池化层。

具体而言,CLIP首先对执行全局平均池化,以获得全局特征 ,其中是从主干网络第4阶段开始的特征图的高度,宽度和通道数。然后将concat的特征输入到多头自注意层(MHSA) 中:

在CLIP的标准训练过程中,全局特征用作图像编码器的输出,而其他输出通常被忽略。然而,作者发现z有两个有趣的特性:

1)z仍然保留了足够的空间信息,因此可以用作特征图

2)因为MHSA对每个输入元素都是对称的,所以z可能和 相似 。根据以上观察结果,作者可以将z用作语言兼容的特征图。

为了获得文本特征,可以从模板“a photo of a [CLS].”中构造文本提示使用K类名称,并使用CLIP文本编码器将特征提取为。然后,使用语言兼容的特征图z和文本特征t通过以下方式计算像素文本得分图:

其中和是沿通道维度的z和t的l2归一化版本。得分图表示了像素文本匹配的结果,这是本文框架中最关键的要素之一。首先,可以将分数图视为具有较低分辨率的分割结果,因此可以使用它们来计算辅助分割损失。

其次,将分数映射concat到最后一个特征映射,以显式地合并语言先验,即。本文的框架是与模型无关的,因为修改的特征图可以像往常一样直接用于分割或检测。

3.3. Context-Aware Prompting

先前的研究已经证明,减少视觉或语言领域的差距可以显著提高CLIP模型在下游任务中的性能。因此,作者寻求其他方法来改进文本特征t,而不是使用人类预先定义的模板。

Language-domain prompting

与原始CLIP不同,原始CLIP使用人工设计的模板,如“a photo of a [CLS]”。CoOp引入了可学习的文本上下文,通过使用反向传播直接优化上下文,在下游任务中实现更好的可迁移性。受CoOp的启发,作者还在框架中使用可学习的文本上下文作为baseline,其中仅包括语言域提示。文本编码器的输入变为:

其中是可学习的文本上下文,而是第k类名称的嵌入。

Vision-to-language prompting

包括视觉上下文的描述可以使文本更加准确。例如,“a photo of a cat in the grass.”比“a photo of a cat.”更准确。因此,作者研究了如何使用视觉上下文来重新提取文本特征。通常可以使用Transformer decoder中的交叉注意机制来建模视觉和语言之间的相互作用。

作者提出了两种不同的上下文感知提示策略,如上图所示。作者考虑的第一个策略是pre-model prompting 。将特征传递给Transformer解码器以编码视觉上下文:

其中是一组可学习的查询,而是提取的视觉上下文。

另一种选择是在文本编码器之后重新定义文本特征,即post-model prompting 。在此变体中,作者使用CoOp生成文本特征,并直接将其用作Transformer解码器的查询:

这种实现鼓励文本特征查找最相关的视觉线索。然后,通过残差连接更新文本特征:

其中是可学习的参数,用于控制残差的缩放。以非常小的值进行初始化,以最大程度地保留文本特征中的语言先验。

尽管这两个变体的目标是相同的,但作者认为post-model prompting更好 ,主要有两个原因:

1)模型后提示是高效的。由于文本编码器的输入依赖于图像,因此在推理过程中,预模型提示需要额外的文本编码器前向传递。在后模型提示的情况下,可以存储训练后提取的文本特征,从而减少文本编码器在推理过程中带来的开销。

2)  实验结果表明,模型后提示可以比模型前提示获得更好的性能。

3.4. Instantiations

Semantic segmentation

本文的框架是模型不可知的,可以应用于任何密集的预测pipeline。此外,作者提出使用辅助目标来在分割中更好地利用像素文本得分图。由于得分图可以看作较小的分割结果,因此分割损失为:

其中 τ = 0.07是温度系数,是ground truth标签。辅助分割损失有助于恢复特征图的局部性,这有利于分割和检测的密集预测任务。

Object detection & instance segmentation

在这两种任务下,没有ground truth分割标签。为了构造一个类似于分割中的辅助损失,作者使用边界框和标签来构建一个二元目标。辅助目标可定义为二元交叉熵损失:

Applications to any backbone models

本文框架的另一个有趣的用法是,可以用任何主干 (例如,ImageNet预训练模型和自监督模型) 替换CLIP的图像编码器。尽管视觉主干的输出和文本编码器之间可能没有很强的关系,但是主干可以通过语言指导更好,更快地学习。

换句话说,本文模型可以利用来自预训练的文本编码器的语言先验来提高任何预训练的图像主干的性能,这使得DenseCLIP成为一个更通用的框架,可以利用从大规模预训练中学到的自然语言先验来改善密集预测。

 4.实验

上表展示了ADE20K上的语义分割结果,可以看出,本文方法在不同的backbone上都具有性能优势。

上表展示了prompt的消融实验结果。

上表展示了使用RetinaNet框架在Coco val2017上目标检测的结果。

上表展示了使用mask r-cnn 框架在COCO val2017上的目标检测和实例分割结果。

上图展示了在ADE20K数据集上定性实验结果。

上表展示了将DenseCLIP应用于任何backbone的实验结果。

 5. 总结

这篇文章尝试了利用CLIP模型进行dense prediction的任务,具体来说,CLIP是将CLS token和文本的token进行对比,而本文将视觉端的所有特征都进行的相似度计算,用基于视觉特征作为文本生成prompt的条件,然后基于文本和相似度map来生成最终的dense prediction结果。

▊ 作者简介

研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

知乎/公众号:FightingCV

END

欢迎加入「视觉语言学习交流群

清华MBZUAICMU牛津提出DenseCLIP,用上下文感知的提示进行语言引导密集预测!代码已开源!...相关推荐

  1. 基于java的语义分割,NeruIPS2019 | 深圳大学提出点云语义分割框架ELGS,效果拔群(代码已开源)...

    标题:Exploiting Local and Global Structure for Point Cloud Semantic Segmentation with Contextual Point ...

  2. 国防科大提出基于可变形三维卷积(D3Dnet)的视频超分辨,代码已开源

    视频是具有时间连续性的图像集合,其中每帧图像的上下文信息(空域信息)与不同帧之间的互补信息(时域信息)都有助于提升视频超分辨的性能. 近日,来自国防科技大学的学者提出基于可变形三维卷积的视频超分辨网络 ...

  3. CVPR小样本检测:蒸馏上下文助力小样本检测(代码已开源)

    计算机视觉研究院专栏 作者:Edison_G 目标检测现在的框架越来越多,我们"计算机视觉研究院"最近也分享了众多的目标检测框架!今天我们继续分享一个最新的检测框架--YOLOR. ...

  4. CVPR21小样本检测:蒸馏上下文助力小样本检测(代码已开源)

    计算机视觉研究院专栏 作者:Edison_G 目标检测现在的框架越来越多,我们"计算机视觉研究院"最近也分享了众多的目标检测框架!今天我们继续分享一个最新的检测框架--YOLOR. ...

  5. 国科大港中文提出带视觉语言验证和迭代推理的Visual Grounding框架,性能SOTA,代码已开源!(CVPR2022)...

    关注公众号,发现CV技术之美 本文分享 CVPR 2022 的一篇论文『Improving features Visual Grounding with Visual-Linguistic Verifi ...

  6. Align and Prompt:SalesforceANU提出ALPRO,进行细粒度的视频文本对齐!代码已开源!...

    关注公众号,发现CV技术之美 本文分享论文『Align and Prompt: Video-and-Language Pre-training with Entity Prompts』,由 Sales ...

  7. MS-TCT:InriaSBU提出用于动作检测的多尺度时间Transformer,效果SOTA!已开源!(CVPR2022)...

    关注公众号,发现CV技术之美 本篇分享 CVPR 2022 论文『MS-TCT: Multi-Scale Temporal ConvTransformer for Action Detection』, ...

  8. VLM:Meta AI CMU提出任务无关视频语言模型视频理解预训练VLM,代码已开源!(ACL 2021)...

    关注公众号,发现CV技术之美 本文分享 ACL 2021 论文『VLM: Task-agnostic Video-Language Model Pre-training for Video Under ...

  9. 国科大提出FreeAnchor,新一代通用目标检测方法,代码已开源

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自新智元(ID:AI_era),请勿二次转载.   新智元专栏   作者:张小松 (中国科学院大学) [新智元导读]中国科学院大学联合厦门大学和 ...

最新文章

  1. 35. Search Insert Position
  2. 淘宝——移动端页面终端适配
  3. 解决Exchange2010中无法显示客户端访问服务器ClientAccessArray中成员的问题
  4. Adobe Experience Design是什么软件?xd mac版下载安装教程 XD 2021发布
  5. sql子句的执行顺序_SQL Server查询执行计划– WHERE子句的示例
  6. Java编程练习题1
  7. 现代操作系统读书笔记
  8. openEuler服务器系统,操作系统openEuler开放源代码、镜像及开发测试环境
  9. 下终南山过斛斯山人宿置酒
  10. ios 音高测试软件,‎App Store 上的“固定音高训练”
  11. 每日一练(三) pointSprite(点精灵)
  12. linux 交换机实例,华为路由器和交换机实例配置
  13. Gibbs Sampling(吉布斯采样)
  14. 大端(Big Endian)和小端(Little Endian)的区别
  15. httpd离线安装(含依赖包下载地址)
  16. 微信公众号订阅号申请注册教程
  17. linux shell 在后台运行命令
  18. 任意长度的python列表最后一个元素索引_任意长度的 Python 列表、元组和字符串中最后一个元素的下标为 ________ 。_学小易找答案...
  19. using the Connector/J connection property 'autoReconnect=true' to avoid this problem
  20. 汽车以太网技术及测试介绍

热门文章

  1. Tensorflow入门之运算篇
  2. 网络爬虫ip代理服务器【程序样例】
  3. Unity 4 3 制作一个2D横版射击游戏
  4. dnf公共频道服务器不稳定已从初始化状态,合区前兆?DNF公共频道开启跨区添加好友服务...
  5. api postmain 鉴权_WebAPI常见的鉴权方法,及其适用范围
  6. linux 6.3 ftp安装,CentOS6.3下安装VSFTP服务
  7. 刷脏页策略linux,linux – 生成大量脏页阻止同步写入
  8. 自行车测速器怎么调_一种自行车测速器及其安装方法与流程
  9. .net mvc actionresult 返回字符串_Spring 框架基础(06):Mvc架构模式简介,执行流程详解
  10. html5 心跳效果,css3实现心脏跳动