(ECCV,2022)Mask-CLIP:从CLIP中提取自由密集标签

news2024/10/6 8:27:42

文章目录

  • Extract Free Dense Labels from CLIP
    • 相关资料
    • 摘要
    • 引言
    • 方法
      • Mask-CLIP
      • Mask-CLIP+
    • 实验

Extract Free Dense Labels from CLIP

相关资料

代码:https://github.com/chongzhou96/MaskCLIP
论文:https://arxiv.org/abs/2112.01071

摘要

对比语言-图像预训练(CLIP)在开放词汇的零样本图像识别方面取得了显著突破。许多最近的研究利用预训练的CLIP模型进行图像级别分类和操作。在本文中,我们希望检查CLIP在像素级密集预测方面的内在潜力,特别是在语义分割方面。为此,我们展示了通过最小修改,MaskCLIP在没有注释和微调的情况下,在各种数据集上的开放概念中产生了引人注目的分割结果。通过添加伪标记和自训练,MaskCLIP+在很大程度上超越了最先进的感应零样本语义分割方法,例如,在PASCAL VOC/PASCAL Context/COCO Stuff上未见类别的mIoUs从35.6/20.7/30.3提高到86.1/66.7/54.7。我们还测试了MaskCLIP在输入损坏下的鲁棒性,并评估了其区分细粒度对象和新概念的能力。我们的发现表明,MaskCLIP可以作为密集预测任务的新可靠监督源,实现无需注释的分割。源代码在此处可用。

引言

在这里插入图片描述

我们的模型名为MaskCLIP,我们展示了一个可以直接从CLIP的图像编码器中提取密集的补丁级特征,即最后一个注意力层的值特征,而不会破坏视觉-语言关联。用于密集预测的分类权重,本质上是1×1卷积,可以直接从CLIP文本编码器的文本嵌入中获得,而不需要任何刻意的映射。在我们的实证研究中,MaskCLIP在通过mIoU指标测量的定量性能和定性结果方面都产生了合理的预测。此外,MaskCLIP可以基于所有变体的CLIP,包括ResNets和ViTs。我们提供了两种流行的骨干网络之间的并排比较。我们还为MaskCLIP提出了两种掩码细化技术,以进一步提高其性能,即关键平滑提示去噪,两者都不需要训练。具体来说,关键平滑计算不同补丁的关键特征(最后一个注意力层)之间的相似性,这些特征用于平滑预测。提示去噪通过删除图像中不太可能存在的类别的提示,从而减少干扰因素,使预测更加准确。

方法

在这里插入图片描述

Mask-CLIP

如图2(b)所示,与传统的全局平均池化不同,CLIP的图像编码器采用了Transformer风格的多头注意力层,其中全局平均池化的特征作为查询,每个空间位置的特征生成一个键-值对。因此,这一层的输出是对传入特征图的空间加权和,然后是线性层 F ( ⋅ ) F(·) F()
在这里插入图片描述
其中 C C C是一个常数缩放因子, E m b ( ⋅ ) Emb(·) Emb()表示线性嵌入层。 x i x_i xi表示空间位置i的输入特征, x ˉ \bar{x} xˉ是所有 x i x_i xi的平均值。Transformer层的输出作为整个图像的全面表示。我们相信这是可能的,因为在每个空间位置计算的#F(v_i)#已经捕获了与CLIP文本嵌入中的标记很好地对应的局部语义的丰富响应。
基于这样的假设,如图2(b)所示,我们在我们的新尝试中直接修改了CLIP的图像编码器:

  1. 移除查询和键嵌入层;
  2. 将值嵌入层和最后的线性层重新制定为两个各自的1×1卷积层。
  3. 我们保持文本编码器不变,它以带有目标类别的提示作为输入。每个类别的得到的文本嵌入被用作分类器。

我们将得到的模型命名为MaskCLIP,因为它产生像素级掩码预测而不是全局图像级预测。然后,我们在各种标准分割基准测试以及网络爬取的图像上评估MaskCLIP。如图1所示,MaskCLIP可以在没有任何微调或注释的情况下输出合理的结果。有人可能会争论,由于全局注意力池化是一个自注意力层,即使没有修改,它也可以生成密集的特征。然而,由于查询 q ˉ \bar{q} qˉ是在CLIP预训练期间训练的唯一查询,这种朴素的解决方案失败了。我们将这个解决方案视为基线,并在实验中将其结果与我们的进行比较。此外,ViT中的Transformer层与全局注意力池化非常相似。实际上,唯一的两个区别是:

  1. 全局查询是通过一个特殊的[CLS]标记而不是所有空间位置的平均值来生成的;
  2. Transformer层有一个残差连接。因此,通过用q[cls]替换 q ˉ \bar{q} qˉ并在输出中添加输入x,MaskCLIP可以与ViT骨干一起工作。

尽管MaskCLIP与现有的分割方法相比简单,但提出的方法享有从CLIP继承的多个独特优点:

  1. MaskCLIP可以用作免费的分割注释器,为使用有限标签的分割方法提供丰富和新颖的监督信号。
  2. 其次,由于CLIP在MaskCLIP中保留了视觉-语言关联,它自然具备分割开放词汇表类别的能力,以及由自由形式短语描述的细粒度类别,如白色汽车和红色公交车。
  3. 由于CLIP是在原始网络策划的图像上训练的,CLIP展示了对自然分布变化[45]和输入损坏[47]的巨大鲁棒性。

我们验证了MaskCLIP在一定程度上保留了这种鲁棒性。关键平滑和提示去噪。为了进一步提高MaskCLIP的性能,我们提出了两种细化策略,即关键平滑和提示去噪。回想一下,在方程3中,除了 q ˉ \bar{q} qˉ,关键特征 k i k_i ki也在CLIP预训练期间得到了训练。然而,在原始的MaskCLIP中, k i k_i ki被简单地丢弃了。因此,在这里我们寻求利用这些信息来细化最终输出。关键特征可以被视为相应补丁的描述符,因此具有相似关键特征的补丁应该产生相似的预测。基于这个假设,我们提出用以下方式平滑预测:
在这里插入图片描述

其中 k i k_i ki p r e d i pred_i predi分别是空间位置 i i i的关键特征和类别置信度预测, ∣ ∣ ⋅ ∣ ∣ 2 ||·||_2 ∣∣2 c o s ( ⋅ ) cos(·) cos()分别表示L2归一化和余弦相似性。我们称这种策略为关键平滑。此外,我们还观察到在处理许多目标类别时,由于在单个图像中只有一小部分类别出现,其余的类别实际上是干扰因素,会削弱性能。因此,我们提出了提示去噪,它通过移除所有空间位置上的类别置信度都小于阈值t=0.5的提示的目标类别。

Mask-CLIP+

虽然MaskCLIP不需要任何训练,但其网络架构受限于CLIP的图像编码器。为了从架构限制中解放MaskCLIP并整合更高级的架构,如PSPNet[55]和DeepLab[5,6],我们注意到可以在训练时而不是推理时部署MaskCLIP,它充当一个通用且鲁棒的注释器,提供高质量的伪标签。结合标准的自训练策略,得到的模型,称为MaskCLIP+,实现了显著的卓越性能。除了无需注释和开放词汇表分割,MaskCLIP+也可以应用于感应零样本语义分割任务,其中MaskCLIP仅为未见类别生成伪标签。

实验

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1905143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyVideoTrans:一款功能全面的视频翻译配音工具!【送源码】

PyVideoTrans是一款功能全面的视频翻译配音工具,专为视频内容创作者设计。它能够将视频中的语言翻译成另一种语言,并自动生成与之匹配的字幕和配音。支持多种语言,包括但不限于中文(简繁体)、英语、韩语、日语、俄语、…

算法010:无重复字符的最长子串

无重复字符的最长子串. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 使用的算法:滑动窗口 在这个…

apk反编译修改教程系列-----修改apk 解除软件限制功能 实例操作步骤解析_3【二十二】

在前面的几期博文中有过解析去除apk中功能权限的反编译步骤。另外在以往博文中也列举了修改apk中选项功能权限的操作方法。今天以另外一款apk作为演示修改反编译去除软件功能限制的步骤。兴趣的友友可以参考其中的修改过程。 课程的目的是了解apk中各个文件的具体作用以及简单…

C-11 三角剖分的调研

C-11 三角剖分算法 三角剖分就是将输入的多边形,分割成一系列互不重叠的三角形,其重要性就在这不多赘述。这个是一个别人总结的链接:http://vterrain.org/Implementation/Libs/triangulate.html 图片链接:http://www-cgrl.cs.m…

STM32点灯闪烁

stm32c8t6引脚图 开发板引脚图 GPIO端口的每个位可以由软件分别配置成 多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 配置GPIO端口步骤:开启时钟->使用结构体设置输出模式…

Android项目中,查看项目依赖树的多种方式

1.使用预设的Task来进行查看 1.1 命令行 查看某个模块的所有依赖树: gradlew [模块名称]:dependencies 例如:gradlew app:dependencies查看某个模块的某功能的依赖树: gradlew [模块名称]:dependencies --configuration [功能名称] 例如&…

国内采用docker部署open-metadata

背景 最近看看开源的元数据管理项目,比较出名点的有open-metadata、datahub、OpenLineage、atlas。 open-metadata有1千多的贡献者,4.8K的stars,社区现在也比较活跃,支持的数据库类型还蛮多,基本市面上常见的都有支持…

C++ 函数高级——函数的占位参数

C中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补改位置 语法: 返回值类型 函数名(数据类型){ } 在现阶段函数的占位参数存在意义不大,但是后面的课程中会用到该技术 示例:…

离线开发(VSCode、Chrome、Element)

一、VSCode 扩展 使用能联网的电脑 A,在VSCode官网下载安装包 使用能联网的电脑 A,从扩展下载vsix扩展文件 将VSCode安装包和vsix扩展文件通过手段(u盘,刻盘 等)导入到不能联网的离线电脑 B 中 在离线电脑 B 中安装…

Gitlab Fork Workflow(协作工作流)

Gitlab Fork WorkFlow(协作工作流) Fork WorkFlow用于团队间的协作开发。在开发过程中,我们都需要将最新修改的代码合并到代码库上,在代码合并之前,为了保证代码符合上传要求(符合需求、代码规范等&#xf…

PageHelper分页查询遇到的小问题

如果我们是这样子直接查询 pagehelper会拼接导我们的sql语句之后 这样子我们搜索出来的list&#xff0c;就是里面参杂了PageHelper的东西 所以我们可以直接转成我们的Page类型 但是如果我们搜索出来的是List<Blog>&#xff0c;我有些信息不想返回给前端&#xff0c;所以…

运维系列.Nginx中使用HTTP压缩功能

运维专题 Nginx中使用HTTP压缩功能 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550…

系统级别的原生弹窗窗口

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原生的弹出窗口dialog</title><style>…

【密码学】信息安全五大属性

信息安全的五大属性&#xff0c;通常被称为CIA三元组加上两个额外的属性&#xff0c;他们是确保信息在存储、处理和传输过程中保持安全、完整和可用的关键要素。这些属性共同构成了信息安全的基础框架。 一、信息安全五大属性 我先给出一个直观的列表&#xff0c;方面大家后续…

C++面向对象的常见面试题目(一)

1. 面向对象的三大特征 &#xff08;1&#xff09;封装&#xff1a;隐藏对象的内部状态&#xff0c;只暴露必要的接口。 #include <iostream> #include <string>// 定义一个简单的类 Person class Person { private: // 私有成员&#xff0c;外部不可直接访问std…

【LeetCode】十三、分治法:多数元素 + 最大子序列和

文章目录 1、分治法2、leetcode169&#xff1a;多数元素3、leetcode53&#xff1a;最大子序和 1、分治法 分治一般都搭配递归使用&#xff1a; 用分治法的一个应用——归并排序&#xff1a;将一组数不停的一分为二&#xff0c;直到分到每组只有一个数的时候 分到每组只有一个数…

【qt】TCP 服务端怎么收到信息?

上一节,我已经讲了,TCP的监听,是基于上一节的,不知道的可以看看. 当我们的TCP 服务器 有 客户端请求连接的时候,会发出一个信号newConnection(). 在TCP服务端与客户端的通信中,我们需要使用到套接字 QTcpSocket类. 套接字相当于是网络通信的接口,服务段和客户端都要通过它进行通…

【网络安全】实验一(网络拓扑环境的搭建)

一、本次实验的实验目的 学习利用 VMware 创建虚拟环境 学习利用 VMware 搭建各自网络拓扑环境 二、创建虚拟机 三、克隆虚拟机 选择克隆的系统必须处于关机状态。 方法一&#xff1a; 方法二&#xff1a; 需要修改克隆计算机的名字&#xff0c;避免产生冲突。 四、按照要求完…

JavaWeb—js(1)

概述 javascript简称js 1.js的特点&#xff0c;基本语法&#xff0c;对象等 2.js的功能&#xff0c;用来操作页面元素&#xff0c;用户交互&#xff0c;浏览器交互&#xff0c;网络数据的请求 后期使用的更多的是js的框架 jquery.js vue.js react.js JS相关概念 javascrip…

python使用pywebview集成vue3和element-plus开发桌面系统框架

随着web技术越来越成熟&#xff0c;就连QQ的windows客户端都用web技术来开发&#xff0c;所以在未来&#xff0c;web技术来开发windows桌面软件也会越来越多&#xff0c;所以在此发展驱动之下&#xff0c;将最近流程的python与web技术相结合&#xff0c;使用vue3和element-plus…