【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器

【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器

文章目录

  • 【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器
    • 一、介绍
    • 二、联系工作
    • 三、方法
    • 四、实验结果

Multi-class Token Transformer for Weakly Supervised Semantic Segmentation

本文提出了一种新的基于变换的框架来学习类特定对象定位映射作为弱监督语义分割(WSSS)的伪标签

  

可以利用标准视觉转换器中一个类令牌的参与区域来形成与类无关的定位映射,我们研究了转换器模型是否也可以通过学习转换器中的多个类令牌来有效地捕获特定于类的注意力

提出了一个多类令牌转换器,称为MCTformer,它使用多个类令牌来学习类令牌和补丁令牌之间的交互

提出的MCTformer可以成功地从对应于不同token的类到patch关注生成类判别对象定位映射

  
我们还建议使用从patch -patch转换器注意力中提取的patch级成对亲和度来进一步细化定位图

提出的框架被证明可以完全补充类激活映射(CAM)方法

  
  

一、介绍

弱监督语义分割(WSSS)旨在通过弱监督来减轻对像素级真值标签的依赖

利用弱标签生成高质量的伪分割真值标签

  

图像级标签可以提供简单的弱标签,其仅指示某些类的存在或不存在定位信息

来自卷积神经网络(CNNs)的对象定位图。尽管使用了复杂的CAM扩展策略或多个训练步骤,但现有方法在定位对象的完整性和准确性方面仍然表现出有限的性能

视觉转换器(ViT)作为第一个专门为计算机视觉设计的转换器模型,最近在多个视觉任务上取得了性能突破

ViT在大规模图像识别方面取得了最先进的性能,这要归功于其强大的远程上下文建模能力
  

ViT还使用一个额外的cls token来聚合来自整个patch token序列的信息

最近的一项工作DINO揭示了在自监督ViT特征中存在关于图像语义分割的明确信息

  

在实际工作中我们探究了Class_cls, CNN_cls和Patch_cls的联系,最后选择了Class_cls, CNN_cls

  

从类标记的注意力图中发现语义场景布局

注意力图在无监督分割任务中产生了有希望的结果

但如何将头部与正确的语义类相关联仍不清楚。也就是说,这些注意力映射仍然是类不可知的
  

在这里插入图片描述
  

  • 在之前的Transformer中,仅使用一个cls_token(红色方块)来聚合来自patch_token(蓝色方块)的信息
  • 所提出的MCTformer使用多个类令牌来学习cls_token和patch_token之间的交互。学习的类对不同类标记的注意力进行Patch可以生成类特定的对象定位图

  

利用Transformer的特定类别注意力是一项挑战

现有的基于转换器的作品有一个共同的问题,即仅使用一个cls_token,这使得在单个图像上准确定位不同对象具有挑战性

  
存在的问题:

  • cls_token设计本质上不可避免地从其他对象类别和背景中捕获上下文信息
  • 导致相当无歧视和有噪声的对象定位
  • 模型容量不足以实现有针对性的判别定位性能

  

一个简单的想法是利用多个cls_token,它将负责学习不同对象类的表示。为此,我们提出了一种多类令牌转换器(MCTformer),其中使用多个类特定令牌来利用类特定转换器的注意力

  
作用:

  • 拥有类特定令牌的目标不能通过简单地增加ViT中cls_token的数量来实现,因为这些类令牌仍然没有特定的含义
  • 沿着嵌入维度对来自转换器编码器的输出类令牌应用平均池,以生成cls_token,这些分数由基本事实类标签直接监督
  • 学习到的类对不同类的注意力的patch可以直接用作类特定的定位图
  • 所学习的patch到patch的注意力可以作为patch级别的成对亲和力
  • 所提出的转换器框架完全补充了CAM方法。这导致类标记和补丁标记之间的高度一致性,从而显著增强了它们派生的对象定位图的判别能力
      

贡献:

  • 建议利用类特定的转换器注意力进行弱监督语义分割
  • 提出了一个有效的转换器框架,其中包括一个新的多类令牌转换器(MCTformer),结合类感知训练策略,从类中学习特定于类的定位图,以修补不同类令牌的注意力
  • 使用patch到patch的注意力作为patch级别的成对亲和力,这可以显著细化特定类别的转换器注意力

  

二、联系工作

  
大多数现有的WSSS方法依赖于类激活映射来从CNN中提取对象定位图

因此无法为语义分割网络的学习提供足够的监督。为了解决这个问题,已经提出了特定的分割损失

  • SEC损失

  • CRF损失

  • 对比损失

      

进从CAM图中获得的伪分割标签上。这些方法可分为以下几类:生成高质量的CAM映射。一些方法开发了启发式策略,如“隐藏和搜索”[31]和擦除[40],应用于图像[24,49]或特征图[16,21],以驱动网络学习新的对象模式

子类别和跨图像语义来定位更准确的对象区域

  

正则化损失来引导网络发现更多的对象区域

通过引入扩张卷积来解决标准图像分类CNN的感受野有限的问题

  

Refining CAM maps with affinity learning

  

Ahn等人提出了affinity ,从原始CAM图的可靠种子中学习相邻像素之间的仿射关系

网络可以预测仿射矩阵以通过随机游动传播CAM映射

分割结果中的置信像素学习了成对亲和网络

  

直接从分类网络的特征图中学习亲和度,以细化CAM图

Xu等人[44]提出了一种跨任务亲和性,该亲和性是从弱监督多任务框架中的显著性和分割表示中学习的

我们提出了一种基于Transformer的模型来提取类特定的对象定位图。我们利用Transformer机制中的转换器注意图来生成对象定位图

  
Transformer

Transformer,最初设计用于对NLP领域中长序列的长程依赖性进行建模

如图像分类[10]、显著性检测[27]和语义分割[30],实现了有希望的性能

  

然后,这些标记被转发到多个堆叠的基于自我关注[37]的层中,使每个补丁都具有全局感受野

自监督方法应用于ViT,并观察到类标记在补丁上的注意力包含关于场景语义布局的信息

TS-CAM,使CAM模块适应ViT。然而,TS-CAM只利用了ViT的类不可知注意力映射

提出的多类令牌转换器框架被证明比原始ViT更好地补充了CAM机制,生成了比TS-CAM更好的对象定位图

  
  

三、方法

具体框架:

在这里插入图片描述

  

新的纯基于Transformer的框架(MCTformer-V1)来利用变换器注意力的类特定对象定位图

输入RGB图像首先被分割成不重叠的patch,然后被转换成patch标记序列

  

使用多个cls_token。这些类标记与嵌入patch信息的补丁标记连接,以形成转换器编码器的输入标记

cls_token和patch_token。我们对最后一层的输出cls_token应用平均池来生成类分数,而不是像传统的转换器那样使用多层感知(MLP)来进行分类预测

  

cls_token直接产生的类分数和基本事实类标签之间计算分类损失

聚合来自多个层的注意力图

从patch到patch的注意力中提取patch级别的成对亲和力,以进一步细化类到补丁的注意

  

类特定的定位图被用作种子以生成伪标签来监督分割模型

  

Multi-class token结构设计

  • 考虑一个输入图像,它被分割成N×N个补丁
  • patch标记序列
  • C类标记序列
  • C类标记与补丁标记级联,并添加位置嵌入
  • 每个编码层由一个多头注意力(MHA)模块、一个MLP和分别应用于MHA和MLP之前的两个LayerNorm层组成

  

我们使用标准的自关注层来捕获令牌之间的长程依赖关系。更具体地说,我们首先对输入token序列进行归一化

  

在这里插入图片描述
  

token到token的注意力映射At2t

全局成对注意力映射At2t

每一行表示特定class对所有patch的注意力得分

  

考虑到较高的层学习更多的高级判别表示(而较早的层捕获更多的一般和低级视觉信息)

class融合到最后K个变换器编码层的patch注意力
  

在这里插入图片描述

Amct是从所提出的MCFormer-V1的第l个变换器编码层提取的特定于类的变换器注意力。

以生成最终的class特定对象定位映射AmctRC×N×N

  

在这里插入图片描述
  

Class-specific attention refinement

在先前的工作中经常使用成对仿射来细化对象定位图。它通常需要一个额外的网络或额外的层来学习亲和图

我们建议从所提出的MCTformer的patch匹配注意力中提取成对亲和图,而无需额外的计算或监督

通过提取patch到patch的注意力Ap2pRM×M来实现的

  

在这里插入图片描述
  

所提取的亲和度用于进一步细化类特定的变换器注意力

  

在这里插入图片描述

细化的类特定定位图

可以获得更好的对象定位图,并提高外观连续性

  

Class-aware training

与传统的转换器使用来自最后一层的单个cls_token通过MLP执行分类预测相比,我们有多个类令牌,并且我们需要确保不同的类令牌可以学习不同的类判别信息

平均值集中输出类令牌以生成类分数
  

在这里插入图片描述
  

我们计算类c的类得分y(c)与其基本事实标签之间的soft margin loss

  

我们将CAM模块集成到所提出的多类令牌转换器框架中

我们将其划分为输出类令牌Tout_cls RC×D和输出补丁令牌Tout_pth RN×D

patch标记进行整形,并将其转发到具有C个输出通道的卷积层

总损失是分别根据类标记和补丁标记在图像级基本事实标记和类预测之间计算的两个soft margin loss的总和

在这里插入图片描述

将PatchCAM和特定于类的转换器注意力相结合

可以从最后一个卷积层提取基于补丁标记的CAM(此后称为PatchCAM)图

将提取的PatchCAM映射与所提出的类特定变换器注意力映射相结合

  

通过逐元素乘法运算产生融合的对象定位映射

where ◦ denotes the Hadamard product
  

类特定的对象定位映射细化。类似于MCTformer-V1中提出的注意力细化机制

我们也可以从MCTformer-V2中提取Patch到Patch的注意力图作为Patch级别的成对亲和度,以细化融合的对象定位图

  
在这里插入图片描述
  
其中CAM方法可以灵活而稳健地适应多标签图像

  
  

四、实验结果

数据集:PASCAL VOC 2012和MS COCO 2014

  

PASCAL VOC:

  • 即训练集(train)、验证集(val)和测试集,每个子集分别包含1464、1449和1456个图像
  • 20个对象类和一个用于语义分割任务的背景类
  • 10582张图像的增强集以及中的额外数据进行训练

  

MSCOCO:

  • 80个对象类和一个背景类进行语义分割
  • 其训练集和验证集分别包含80K和40K图像

  

只使用了这些数据集的图像级基本事实标签

ImageNet[9]上预训练的DeiT-S主干构建了所提出的MCTformer

  

具体细节:

  • 遵循了中提供的数据扩充和默认训练参数
  • 训练图像的大小调整为256×256
  • 然后裁剪为224×224
  • 在测试时,我们使用多尺度测试和超参数的CRF进行后处理

  

在这里插入图片描述

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

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

相关文章

ONERugged车载平板电脑厂家丨工业车载电脑优势体现丨3年质保

作为现代社会中必不可少的出行工具,汽车不仅仅是代步工具,更是我们生活中的重要一部分。而在如此多功能的汽车内,一款高可靠性、适应不同行业应用的车载平板电脑成为了当下的热门选择。ONERugged车载平板电脑以其卓越的品质和强大的功能而备受…

Java前置一些知识

文章目录 搭建Java环境安装path环境变量Java技术体系 Java执行原理JDK组成跨平台Java内存分配 IDEA管理Java程序 搭建Java环境 安装 oralce官网下载 JDK17 Windows 傻瓜式的点下一步就行,注意:安装目录不要有空格、中文 java 执行工具 javac 编译工具…

MWeb Pro For Mac v4.5.9 强大的 Markdown 软件中文版

MWeb 是专业的 Markdown 写作、记笔记、静态博客生成软件,目前已支持 Mac,iPad 和 iPhone。MWeb 有以下特色: 软件下载:MWeb Pro For Mac v4.5.9 软件本身: 使用原生的 macOS 技术打造,追求与系统的完美结合…

为什么需要网络切片?

网络切片是电信领域的一个突破性概念,它允许将物理网络基础设施划分为多个虚拟网络,称为切片。每个切片作为一个独立的网络运行,拥有自己的专用资源和定制的特性,满足不同应用、行业或用户的特定需求。 将网络切片视为在共享物理…

Linux云计算之Linux基础3——Linux系统基础part-2

1、终端、shell、文件理论 1、终端 终端(terminal):人和系统交互的必要设备,人机交互最后一个界面(包含独立的输入输出设备) 物理终端(console):直接接入本机器的键盘设备和显示器虚拟终端(tty):通过软件…

数据绑定多级对象属性时的报错解决

数据绑定多级对象属性时的报错解决 (1)例子如下: (2)当syncObjForm被后台数据赋值时,会产生报错: (3)原因就是: 模板在渲染时,读取对象中的某个…

普通人怎么赚钱?2024普通人做什么好?2024创业项目小成本!2024创业新项目新商机!2024做什么行业前景好?

普通人真的想赚钱,必须得去赚看得见的钱。什么是看得见的钱?打个比方卖一份炒粉,成本是三块,卖十块钱,一天卖出去100份,那一天就赚700块钱,而不是去跟人合伙,你连钱都没赚到&#xf…

【matlab】如何解决打开缓慢问题(如何让matlab在十几秒内打开)

【matlab】如何解决打开缓慢问题(如何让matlab在十几秒内打开) 找到我们解压缩时Crack中的license_standalone.lic文件,将其拷贝 在安装matlab的路径下新建一个文件,粘贴上面的license_standalone.lic文件 在桌面鼠标移动到matl…

每日一题:修改后的最大二进制字符串

给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改: 操作 1 :如果二进制串包含子字符串 "00" ,你可以用 "10" 将其替换。 比方说, "00010"…

【leetcode面试经典150题】34.有效的数独(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

OpenHarmony4.0源码解析之媒体框架

媒体框架简介 媒体框架 multimedia_player_framework 主要提供音视频的录制与播放功能。 框架简介 从框架图中可以看出,媒体框架的主要工作模式为通过 Gstreamer 的插件自动化注册及插件组合功能,将其余媒体播放相关的框架功能插件化,配合 …

linux学习:内存(栈,堆,数据段,代码段)

目录 内存 栈内存 堆内存 数据段 代码段 注意 堆 例子 内存 Linux 操作系统为了更好更高效地使用内存,将 实际物理内存进行了映射,对应用程序屏蔽了物理内存的具体细节,有利于简化程序的编写 和系统统一的管理。 假设你正在使用的…

【热门话题】OneFlow深度学习框架介绍

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 OneFlow深度学习框架介绍引言一、OneFlow概述1.1 定位与起源1.2 核心特性数据流…

Linux网络名称空间的调试方法全面分析

Linux网络名称空间是一种广泛使用的技术,用于隔离网络环境,特别是在容器化和微服务架构中📦。然而,随着网络名称空间的广泛应用,开发者和系统管理员可能会遇到需要调试网络名称空间配置和性能的情况🔍。本文…

WEB3浪潮下的全新体验:精灵派对链游引领边玩边赚的创新之旅

在当前的数字经济浪潮中,区块链技术以其独特的去中心化特性,正在逐渐改变我们的生活和工作方式。其中,区块链游戏(链游)作为新兴的领域,正以其独特的优势吸引着全球玩家的目光。在这样一个背景下&#xff0…

ssm“健康早知道”微信小程序

采用技术 ssm“健康早知道”微信小程序的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 需求分析 利用ssm、Java、MyEclipse和mysql数据库等知识点,结合相关设…

云卓C20,22倍变焦三轴夜视云台

云卓C20三轴云台,带探照灯,打破光线与空间束缚。具备22倍光学变焦与探照能力,为视觉带来新视角,随时捕捉高清影像,精准搜寻广阔区域。配备变焦高亮聚光灯,强化夜间作业效能与安全保障。适用于公安、电力、救…

excle如何设置自动显示星期几

目录 一.目的 二.范例结果 三.处理方式 一.目的 excle依据日期,设置后自动显示星期几。 二.范例结果 三.处理方式 公式1TEXT(XXX,DDDD) 公式2TEXT(XXX,DDD)

银河麒麟桌面版v10系统安装windows的exe应用-使用CrossOver安装exe软件

银河麒麟桌面版V10系统属于Linux系统,要想在上面运行windows系统下的exe应用是可以实现的(理论上可以实现,但实际中受限系统版本,虚拟windows应用的软件版本等多种问题,在安装使用的时候,并不能全部成功&am…

第十届蓝桥杯大赛个人赛省赛(软件类) CC++ 研究生组2.0

A立方和 #include<iostream> #include<cmath> using namespace std; int main(){int n, t, flag, x;long long ans 0;for(int i 1; i < 2019; i){t i;flag 0;while(t && !flag){x t % 10;if(x 2 || x 0 || x 1 || x 9) flag 1;t / 10;}if(fl…