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

论文地址:https://arxiv.org/pdf/2112.01518.pdf

受到CLIP的启发,该文作者将CLIP应用到了Dense Prediction任务上,其将原本CLIP中的image-text问题转换成了pixel-text问题,将image上的每个像素点对应K个类别的文本,每个像素点得到K个分数,从而产生了pixel-text score maps来指导密集预测模型。实验证明,DenseCLIP在语义分割、目标检测、实例分割上都取得了不错的效果。

1.DenseCLIP的整体框架:

传统的Dense Prediction模型框架的预训练是使用image进行监督学习或自监督学习,在用于下游任务时使用Image encode和image decoder对预训练的权重进行微调得到预测模型。而DenseCLIP的预训练是选择使用大量的image-text对进行对比学习(CLIP)。在下游任务中,将原text encoder的权重固定为原预训练权重,而是在得到image embedding和text embedding后,用image embedding对text embedding进行调整,最终得到pixel-text的score maps。

2.Language-Guided Fine-tuning结构

这里作者使用的Image Encoder是ResNet50来进行介绍DenseCLIP,具体细节如下:

对于该模型的Image Encoder,其中{xi}4i=1为ResNet50的四个block的输出的feature map,其中最后一层x4的大小为H4W4xC。CLIP中有一个attention pooling layer,其先将x4进行了global avg pooling,得到feature x 4大小为1xC,再对[ x 4,x4]做multi-head self-attention得到[z ,z],此时的z 的大小为1xC,z的大小为H4W4xC。对于text encoder,若有k个类,那么经过encoder得到的特征大小为K x C,于是拿image feature z去query text feature t从而得到相似度score map s:
s=z^t^TsϵRH4W4∗Ks=\hat{z}\hat{t} ^{T} \ \ \ s\epsilon R^{H_{4}W_{4}\ast K} s=z^t^TRH4W4K
其中z和t表示z和t经过L2 normalized 的结果。这里的t,可能是先经过text encoder再经过vision information的refine,也可能先经过refine再经过text encoder得到的。

在模型中计算了两个损失分别为Auxiliary loss和task loss。对于Auxiliary loss,是使用score map和真实的segmentation map通过计算cross entropy作为辅助的loss。

对于语义分割任务(每个pixel都要分类正确),所以计算Auxiliary loss的公式为:

对于实例分割或者目标检测任务,计算Auxiliary loss的公式为:

y和y~都是对原尺度进行下采样的结果。

对于task loss,则需要使用score map和image feature经过image decoder后得到预测结果,然后与label进行cross entropy得到最终的loss。

Context-Aware Prompting

其方法与CoOp相似,但对比CoOp,CoOp仅仅是一个可学习的张量,并没有包含视觉信息,而DenseCLIP则采用的是Vision-to-language prompting,即在learnable context中引入一些视觉信息。作者介绍了两种refine方式:pre-model prompting和post-model pronpting。其中pre-model prompting是用视觉信息refine 在 text encoding 之前的context,而post-model prompting是用视觉信息refine在text encoding之后的context。

Pre-model prompting具体操作

这种方法是在进行text encoder之前进行学习视觉信息,首先引入了一个query张量q,q的大小为NxC(N为text中context length,C为图像通道数),和视觉特征(图片执行完image encoding后的特征)做cross-attention得到视觉信息 vpre,其大小为NxC。计算公式如下:
vpre=TransDecoder(q,[zˉ,z])v_{pre} = TransDecoder(q,[\bar{z},z]) vpre=TransDecoder(q,[zˉ,z])
用vpre替换CoOp中的learnable context。

Post-model prompting具体操作

这种方法是在进行text encoder之后进行学习视觉信息,先按照正常计算的带text feature t,t大小为K x C,使用t去query得到的视觉特征[z,z],得到vision context vpost ,其带下为K x C,再拿vpost去refine 文本特征t,计算公式如下:
vpost=TransDecoder(t,[zˉ,z])t←t+γypostv_{post} = TransDecoder(t,[\bar{z},z]) \\ t\leftarrow t+\gamma y_{post} vpost=TransDecoder(t,[zˉ,z])tt+γypost
其中y是可学习的,其用于控制残差的scale。

最终作者在实验中发现,post-model prompting的效果较好,故使用post-model prompting方法。

Limitation:在检测上的效果提升不是特别显著,作者分析的原因是CLIP在预训练时并没有和定位有关的约束。

3.总结

DenseCLIP将CLIP模型应用到了密集预测任务中,将原来的只使用image encoder进行预训练并在下游任务中微调,修改成了使用image encoder和text encoder进行预训练(CLIP),并在微调时,将text encoder的权重固定,只训练image encoder和image decoder中的权重。DenseCLIP成功的将文本信息运用到了图像的密集预测任务中。

DenseCLIP:Language-Guided Dense Prediction with Context-Aware Prompting相关推荐

  1. 运行结果展示 |(DPT)Vision Transformers for Dense Prediction

    代码地址:isl-org/DPT: Dense Prediction Transformers (github.com)​​​​​​ 这篇文章的环境非常好配,几乎没有报什么error,按照readme ...

  2. 【论文阅读】DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting

    一篇CLIP应用在语义分割上的论文 论文标题: DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting 作者信 ...

  3. Anchor-free目标检测综述 -- Dense Prediction篇

      早期目标检测研究以anchor-based为主,设定初始anchor,预测anchor的修正值,分为two-stage目标检测与one-stage目标检测,分别以Faster R-CNN和SSD作 ...

  4. 【Transformer】DPT: Vision Transformer for Dense Prediction

    文章目录 一.背景和动机 二.方法 2.1 Transformer encoder 2.2 Convolutional decoder 2.3 处理不同输入大小 三.效果 3.1 单目深度估计 3.2 ...

  5. 《Channel-wise Knowledge Distillation for Dense Prediction》论文详解

    原文地址:<Channel-wise Knowledge Distillation for Dense Prediction> 代码地址: https://git.io/Distille( ...

  6. Tomcat启动Maven项目异常:java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext

    Tomcat启动Maven项目异常:java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext 参考文 ...

  7. 【李宏毅《机器学习》2022】作业1:COVID 19 Cases Prediction (Regression)

    文章目录 [李宏毅<机器学习>2022]作业1:COVID 19 Cases Prediction (Regression) 作业内容 1.目标 2.任务描述 3.数据 4.评价指标 代码 ...

  8. 密集预测/Dense Prediction

    密集预测/Dense Prediction 密集预测/Dense Prediction

  9. dense prediction的理解

    看语义分割文章,常常会看到dense prediction, 英语直译是密集预测,dense prediction 实际上是给图像上的每个像素预测一个类别,由于一般图片的像素都很多,直观上看很密集,所 ...

最新文章

  1. 《正则表达式必知必会》读书笔记
  2. SpringBoot 使用(三): 配置文件详解
  3. 一个文件夹就是一个信息系统
  4. linux考试基础知识测验
  5. 字节流写数据的三种方式
  6. figma下载_Figma和ProtoPie中的原型制作,比较
  7. 我是一个硬盘(开始以为是一个笑话,看到最后会发 ...
  8. 如何最快速的找到页面某一元素所绑定的点击事件,并查看js代码
  9. 8. JavaScript 全局对象
  10. 2篇word文档比较重复率_【软件】PDF转word黑科技 快来get!
  11. java关键字false_无聊,null,true,false是java关键字吗
  12. 浙江大学黄杨思博计算机学院,浙江大学节能减排社会实践与科技竞赛成功举行.DOC...
  13. VB浏览器html5网页,VB用IE浏览器打开网页源码,及用其它指定的浏览器打开网页源码。...
  14. 软件平台与中间技术复习
  15. Unity网格编程篇(四) 三维温度图、热力图
  16. 【SpringBoot项目实战】之Chrome谷歌浏览器全屏
  17. 带缓冲的输入/输入流
  18. 关于CFD计算过程的梳理
  19. 百度音乐API抓取-Fiddler
  20. android5自动刷,nexus5怎么刷Android5.0 nexus5刷Android5.0教程

热门文章

  1. WeakHashMap源码解析及使用场景
  2. Win11玩不了红警怎么办?Win11玩不了红警解决方法分享
  3. Qt项目的新首席维护人员
  4. 1008: 美元和人民币
  5. PyMouse模拟鼠标键盘操作
  6. python加数据库_python向数据库添加数据(添加一条数据)
  7. 家庭服务器 作用,家庭网络存储服务器四大主要功能
  8. 微软迷你服务器,十分钟上手 实测微软小企业专属服务器OS
  9. 诺基亚java闪退_手机程序闪退怎么办?使用这三种办法,即可轻松搞定
  10. 2022中国汽车测试及质量监控博览会