【论文阅读】Extract Free Dense Labels from CLIP

一篇CLIP应用在语义分割上的论文

论文标题:

Extract Free Dense Labels from CLIP

作者信息:

在这里插入图片描述

代码地址:

https://github.com/chongzhou96/MaskCLIP

Abstract:

许多论文研究了CLIP在图像分类的表现,作者提出了采用CLIP去处理像素型密集任务,如图像分割,作者提出了MaskCLIP和MaskCLIP+均取得了很好的效果。

Introduction

(作者认为CLIP模型有处理密集型预测任务的潜力,具有以下优势:)
1.能够学习一些局部的语义特征(从NLP中)。
2.能够学习一些开放的词汇的概念。
3.能够捕获丰富的上下文本信息。

(作者的尝试和经验)
1.不要打破CLIP中固有的visual-language association。作者早期将CLIP中的img encode单独拿出用于初始化如deeplab的backbone并Fine tune。使CLIP的泛化能力降低。
2.不要对CLIP中的text encode做太多改变,会使CLIP丢失对unseen物体的分割能力。

(作者的贡献和模型的效果)
1.作者提出了MaskCLIP模型:从CLIP中的 Img encode获得patch-level图像特征,从text encode直接获得像素预测的权重,而没有采用有意的映射。
另一篇论文有些类似:也取消了采用GAP生成CAM,而是改用1×1的卷积直出)
2.提出两种refine技术:key smoothing 和prompt denoising。
2.提出了MaskCLIP+,利用MaskCLIP对unseen的物体生成伪标签,然后进行训练。

Methodology

下图为模型的整体概略图
在这里插入图片描述

3.1 Preliminary on CLIP

(作者简单介绍了下CLIP模型)

3.2 Conventional Fine-Tuning Hinders Zero-Shot Ability

(对于分割问题的范式)1.初始化在Image net上预训练的backbone,2.添加专用于分割模块(随机初始化权重)3.fine tune backbone,增添新的模块。
(作者仿照这样的思路)首先,用image encoder of CLIP替换ImageNet预训练的backbone(deeplab)。然后,使用映射器将CLIP中的text decoder权重的映射给模型(deeplab)分类层权重,用公式表达如下:
在这里插入图片描述
这样效果不好,尤其是对unseen物体的zero-shot分割上面无法取得满意的分割性能。作者认为可能出了这些问题:
1.CLIP中的img encode和常规网络的backbone应该有区别。
2.img encoder的权重在训练以及fine tune中被重新更新。
3.text encoder的映射器仅仅只在新的数据上进行训练,因此泛化性不够。

3.3 MaskCLIP

在这里插入图片描述
(上图是MaskCLIP种的核心做法,把CLIP 中以Transfomer为基的encoder给换成的右侧的1×1卷积)
原本CLIP中的方法用公式表示如下:
在这里插入图片描述
作者认为这里Transformer的输出可以作为整体文本的一个较好的representation。是由于这些计算的 F ( v i ) F(v_i) F(vi)已经捕获了丰富的局部语义响应,这些响应与CLIP的文本嵌入中的标记很好地对应。(不太能理解,参考:https://zhuanlan.zhihu.com/p/562819258
基于这样的假设,作者进行了一些改进:
(1)丢弃了 q q q k k k,仅保留嵌入的 v v v
(2)将 v v v和最后一层线性层直接输入到1×1卷积中
同时不改变text encode,直接和目标prompt后,作为输入,每个类的结果文本嵌入被用作分类器。

(这里估计不太好理解,作者做了进一步的讨论,总的来说就是扔掉了 q ‾ \overline{q} q使用了 v v v)
1.原CLIP中用的是 q ‾ \overline{q} q作为分类型任务,叫global query,它是由一个特殊的[CLS]产生的。
而这里作者采用的是每个patch下的token的[CLS],即 v v v作为密集型任务预测。
1.或者从另一个角度看:q,k,v中的v和attention层的输出是差不多的,只是多了一个q和k相互dot后的系数,所以这里用attention的输出或者v进一步往下做都是可以的(作者代码中也给了接口)

(作者的原文是这么说的)
讨论了 ViT中Transformer层和 global attention pooling的不同:
(1) the global query is generated by a special [CLS] token instead of the average among all spatial locations;
(2)Transformer layer has a residual connection.

Key Smoothing and Prompt Denoising.

(两种refine手段,文章里面说得很简略,都没看懂)
Key Smoothing:
在这里插入图片描述
Prompt Denoising:
如果目标类在所有空间位置的类置信度都小于阈值t = 0.5,则删除具有目标类的Prompt。

3.4 MaskCLIP+

将相同的预处理图像输入提供给MaskCLIP,并使用MaskCLIP的预测作为伪地真标签来训练目标网络。
也可以用于zero-shot分割任务,使用MaskCLIP生成unseen的物体的伪标签,然后进行训练。

Self-Training:

训练到一部分发现MaskCLIP得为标签已经无法达到进一步提升性能得要求,于是用MaskCLIP+得训练结果进一步训练自己。
(知识蒸馏)

Experiments

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值