Multi-class Token Transformer for Weakly Supervised Semantic Segmentation

news2024/9/24 19:14:28

code:https://github.com/xulianuwa/MCTformer

摘要

本文提出了一种基于Transformer的新框架,用于学习类别特定的对象定位图,并将其作为弱监督语义分割(WSSS)的伪标签。受到标准视觉Transformer中单类别token的关注区域可用于生成类别无关定位图的启发,我们探讨了Transformer模型是否也能够通过学习多个类别token来有效捕捉类别特定的注意力,从而实现更具区分性的对象定位。为此,我们提出了一种多类别token Transformer,称为MCTformer,它使用多个类别token来学习类别token与patch token之间的交互。所提出的MCTformer能够成功生成类别区分度高的对象定位图,这些图是通过不同类别token与patch之间的注意力关系得到的。我们还提出使用patch间的成对关联性(从patch到patch的Transformer注意力中提取)进一步优化定位图。此外,所提出的框架与类激活映射(CAM)方法完全互补,在PASCAL VOC和MS COCO数据集上显著提升了WSSS的效果。这些结果强调了类别token在WSSS中的重要性。

  • 在图像处理中,图像会被切分成小块(通常是固定大小的区域),这些小块称为“patch”。
  • 每个“patch”会被转换为一个特征向量,这个特征向量就被称为一个“token”。
  • 在本文中,除了图像patch生成的token,还有用于表示类别信息的“class token”。这些类别token用于捕捉不同类别的注意力信息,从而帮助模型生成类别特定的定位图。

图一:(a)在之前的视觉变形器[10]中,仅使用一个类token(红色方块)来聚合patch  token(蓝色方块)的信息。学习到的与类token对应的patch关注生成与类无关的定位图。(b)相比之下,所提出的MCTformer使用多个类token来学习类token与patch  token之间的交互。学习到的不同类token的类到patch注意可以生成特定类的对象定位映射。 

1.引言

从Transformer中提取类别特定的注意力是一项具有挑战性的任务。我们认为,现有的基于Transformer的方法存在一个共同的问题,即仅使用一个类别token,这使得在单张图像上精确定位不同的对象变得困难。这有两个主要原因。首先,单一类别token的设计不可避免地会捕捉到来自其他类别对象和背景的上下文信息。换句话说,由于只考虑了一个类别token,模型在学习时会同时捕捉到类别特定和通用的表示,从而导致对象定位的区分度较低且含有噪声。其次,模型仅使用一个类别token来与patch tokens进行交互,以学习数据集中多个不同类别对象的表示。因此,模型的容量不足以实现目标的区分性定位性能。

为了解决这些问题,一个直接的想法是利用多个类别token,这些token负责学习不同类别对象的表示。为此,我们提出了一种多类别token Transformer(MCTformer),其中使用了多个类别特定的token来提取类别特定的Transformer注意力。仅仅通过增加ViT中的类别token数量并不能实现类别特定的目标,因为这些类别token仍然没有特定的含义。为了确保每个类别token能够有效地学习特定类别对象的高级区分表示,我们提出了一种类别感知的训练策略用于多个类别token。具体来说,我们在Transformer编码器输出的类别token上沿着嵌入维度应用平均池化,以生成类别分数,这些分数直接由真实的类别标签进行监督。通过这种设计,成功建立了每个类别token与相应类别标签之间的一对一强连接。通过这种设计,最大的优势在于,不同类别的类别到patch的注意力可以直接作为类别特定的定位图使用。

值得注意的是,在训练过程中学习到的patch-to-patch注意力作为附带产物,无需额外计算就可以作为一种patch级别的成对关联性。这种关联性可以用来进一步优化类别特定的Transformer注意力图,显著提升定位性能。此外,我们还展示了所提出的Transformer框架在应用于patch tokens时,与CAM(类激活映射)方法完全互补(通过同时基于类别token和patch token的表示进行分类学习)。这使得类别token和patch token之间的一致性大大提高,从而显著增强它们所生成的对象定位图的区分能力。

总结来说,我们的主要贡献有三点:

  1. 我们提出了利用类别特定的Transformer注意力进行弱监督语义分割。
  2. 我们提出了一个有效的Transformer框架,其中包括一种新颖的多类别token Transformer(MCTformer),结合类别感知的训练策略,通过不同类别token的类到patch注意力学习类别特定的定位图。
  3. 我们提出使用patch-to-patch Transformer注意力作为patch级别的成对关联性,可以显著优化类别特定的Transformer注意力。此外,所提出的MCTformer能够与CAM机制完全互补,生成高质量的对象定位图。

该方法可以为弱监督语义分割(WSSS)生成高质量的类别特定多标签定位图,并在PASCAL VOC测试集(mIoU为71.6%)和MS COCO数据集(mIoU为42.0%)上取得了新的最先进结果。

2.相关工作

图二:所提出的多类别token Transformer(MCTformer-V1)的概述如下:首先,将输入的RGB图像分割并转换为一系列patch tokens。我们提出学习C个额外的类别token,其中C是类别的数量。将这C个类别token与patch tokens拼接在一起,并加入位置嵌入(Position Embeddings,PE),然后通过连续的L个Transformer编码层。最后,输出的C个类别token通过平均池化生成类别分数。我们从最后K层和多个头部中聚合Transformer的注意力,以生成最终的注意力图,从中可以分别提取类别特定的对象定位图和基于类别到patch以及patch到patch注意力的patch级别成对关联性图。这个patch级别的成对关联性可以用于优化类别特定的Transformer注意力图,从而生成更精确的对象定位图。 

我们提出了一个新的纯基于transformer的框架(MCTformer-V1)来利用来自transformer注意力的类特定对象定位映射。MCTformer-V1的总体体系结构如图2所示。首先将输入的RGB图像分割成不重叠的小块,然后将其转换为一系列小块标记。与仅使用一个类token的传统transformer不同,我们建议使用多个类token。这些类token与补丁token相连接,嵌入位置信息,形成transformer编码器的输入token。在transformer编码器中使用了几个transformer块来提取patch tokens and class tokens. 的特征,我们对最后一层的输出类token应用平均池化来生成类分数,而不是像传统transformer那样使用多层感知(MLP)来进行分类预测

在训练时,为了确保不同的类token可以学习不同的类特定表示,我们采用了3.2节中详细介绍的类感知训练策略。分类损失是在由类token直接产生的类分数和真类标签之间计算的。这样就可以在每个类token和相应的类标签之间建立牢固的连接。在测试时,我们可以从transformer中的类到patch注意中提取特定于类的位置映射。我们进一步聚合来自多层的注意力图,以利用从不同transformer层学习到的互补信息。此外,可以从patch到patch的关注中提取patch级的成对亲和力,以进一步细化类到patch的关注,从而显著改进类特定的定位图。使用特定于类的定位映射作为种子来生成伪标签以监督分割模型。

3. Multi-class Token Transformer

3.2. Class-Specific Transformer Attention Learning

特定于类的多类token注意。我们使用标准的自关注层来捕获token之间的长期依赖关系。更具体地说,我们首先将输入token序列归一化,并通过线性层将其转换为Q∈R ^(C+M)×D, K∈R^ (C+M)×D和V∈R^ (C+M)×D的三元组[10]。我们采用缩放点积注意[37]机制来计算查询和键之间的注意值。每个输出标记是所有tokens的加权和,使用注意力值作为权重,表示为:

 

其中,我们可以得到一个token到令token的注意力映射At2t∈R^ (C+M)×(C+M),且At2t = softmax(QK^T/√D)。

从全局成对关注图At2t中,我们可以提取类对patch Ac2p∈R^C×M的关注,即类对patch的关注,其中Ac2p = At2t[1: C, C + 1: C + M],如图2中黄点矩阵所示.每一行表示一个特定类对所有补丁的关注得分。利用这些注意力向量,加上所有补丁的原始空间位置,可以生成与C类相关的定位地图。我们可以从每个转换器编码层提取与类相关的本地化映射。考虑到更高的层学习更高级的判别表示(而更早的层捕获更一般和低级的视觉信息),我们建议融合最后K转换编码层的类到补丁关注,以探索生成的对象定位图的精度和召回率之间的良好权衡。这个过程的公式是:

其中,A^l mct是从提出的mctform - v1的第L个transformer编码层提取的特定于类的transformer注意力。将融合后的Amct沿两个空间维度进一步采用最小-最大归一化方法进行归一化,生成最终的类特定对象定位Amct∈R^ C×N×N。关于如何选择K的详细结果见图6。

特定于类的注意细化。在之前的研究中[1,38,44]经常使用成对亲和来细化目标定位图。它通常需要额外的网络或额外的层来学习亲和映射。相反,我们从所提出的MCTformer的patch- to-patch关注中提取成对亲和映射,而不需要额外的计算和监督。这是通过提取patch-to-patch的关注点Ap2p∈RM×M来实现的,其中Ap2p = At2t[C + 1: C + M, C + 1: C + M],如图2中蓝点矩阵所示。patch-to-patch的关注被重塑为一个4D张量:Ap2p∈R N×N×N×N。提取的关联用于进一步细化特定于类的transformer注意。这个过程的公式是:

 其中Amct ref∈R C×N×N是细化后的特定于类的定位图。如表5和图5所示,使用patch级成对亲和度进行细化可以得到更好的对象定位图,并提高了外观的连续性

我们需要确保不同的类tokens可以学习到不同的分类判别信息。为此,我们对输出类tokens使用平均池化产生类分数

图3:概述MCTformer-V2。我们在MCTformer-V1中引入了CAM模块。具体来说,CAM模块由卷积层和全局平均池化(GAP)层组成。它接受来自最后一个transformer编码层的重塑输出补丁标记作为输入,并输出类分数。对于MCTformer-V1,我们也使用输出类令牌来生成类分数。因此,整个模型通过分别应用于两种类型的分类预测的两种分类损失来优化。

在推理时,我们融合了类特定的transformer注意(MCT注意)和PatchCAM映射。通过从patch-to-patch transformer关注中提取的patch亲和度进一步细化结果,生成最终的目标定位图。

 

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

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

相关文章

SpringBoot天猫商城基于前后端分离+SpringBoot+BootStrap、Vue.js、JQuery+JPA+Redis

SpringBoot天猫商城整站 一、项目介绍和演示 SPRINGBOOT天猫整站,基于 前后端分离思想, 由于该商城高并发的特点,后端框架便使用了方便维护的 SpringM VC、SpringBoot框架,而前端框架则选择了主流的BootStrap、Vue.js,…

虚拟机扩展分区

1、删除快照后 先扩展 虚拟机空间 2、 创建分区 rootlocalhost /]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 99.5G 0 part ├─VolGroup-lv_root (dm-0) 249:0 0 50G 0 lvm / ├─VolGroup-lv…

网络防火墙的主要功能及其弊端

防火墙(Firewall),也称防护墙,是由Check Point 创立者Gil Shwed于1993 年发明并引入国际互联网。 它是一种位于内部网络与外部网络之间的网络安全系统。是一项信息安全的防护系统,依照特定的规则,允许或是限…

【python】时间序列模型(ARIMA)

文章目录 前言一、示例二、代码实现----python全部数据的平稳性检验划分训练集平稳性检验确定 p,q结果分析和模型检验模型预测 前言 接上一篇博客,用python完成代码编写。 【学习笔记】时间序列模型(ARIMA) 一、示例 已知一个上市公司一段时期的开盘价…

leetcode 数组+哈希+双指针+子串+滑动窗口

——————双指针 283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] …

AI大模型日报#0820:DeepMind创始人访谈、阿里多模态mPLUG-Owl3、抱抱脸SOTA小模型

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE-4.0-8K-latest)、“智谱AI”(glm-4-0520)生成了今日要点以及每条资讯的摘要。欢迎阅…

linux文件——文件系统——学习硬件:磁盘

前言:本节将带领友友们认识计算机外设中的——磁盘。 目的是为后面学习文件系统打好基础。认识磁盘我们将从——磁盘的组成、磁盘的逻辑结构两个方面进行讲解。 下面开始我们的学习吧。 ps:本节适合所有阶段的友友们学习哦, 友友们可以在本篇…

推荐几款论文初稿ai工具,一键生成!

开题报告-科研加速秘籍:AI论文写作工具推荐! 在科研的世界里,论文写作是不可或缺的一部分。 然而,很多时候我们在开题报告的编写上就遇到了巨大的挑战。 别担心,今天我要分享这个工具来帮助你轻松应对这个问题。 通过…

(java)动态代理

1.思想分析 不能修改原有的代码: 代理:相当于中介公司 代理:转移职责 代理:做准备工作 调用对象中的方法 代理:通过接口--接口中的方法就是要代理的方法

JVM类加载机制—类加载器和双亲委派机制详解

一、概述 上篇我们介绍了JVM类加载机制—JVM类加载过程,类加载过程是类加载机制第一阶段,这一阶段主要做将类的字节码(class文件)加载JVM内存模型中,并转换为JVM内部的数据结构(如java.lang.Class实例&…

Java常用工具类之Date类和Calender类

1、 Date类中常用方法 1. Date类的常用方法 Date类的常用方法 方法 含义 new Date() 实例化Date对象,常见于获得系统当前时间 new Date(long time) 实例化Date对象,并根据具体的时间偏移量time设置时…

C语言 | Leetcode C语言题解之第371题两整数之和

题目&#xff1a; 题解&#xff1a; int getSum(int a, int b){ int c; while(b) {c(unsigned int)(a&b)<<1;a^b;bc; }return a; }

静态网页的制作步骤

静态网页是由HTML、CSS和JavaScript等前端技术构建而成的&#xff0c;它们通常用于展示静态内容&#xff0c;不涉及动态数据的处理。制作静态网页的过程涉及多个步骤&#xff0c;包括规划、设计、编码和测试等。下面是一个详细的制作静态网页的步骤&#xff0c;希望对你有帮助。…

Apache Flink内存模型

Flink 内存模型 大数据中所有开源的框架都会使用到JVM&#xff0c;不如&#xff0c;MapReduce&#xff0c;Storm&#xff0c;Spark等&#xff0c;这些计算框架处理数据过程中涉及到将大量数据存储到内存中&#xff0c;此时如果内存管理过渡依赖JVM&#xff0c;会出现java对象存…

国产GD32单片机开发入门(二)GD32单片机详解

文章目录 一.概要二.单片机型号命名规则三.GD32F103系统架构四.GD32F103C8T6单片机启动流程五.GD32F103C8T6单片机主要外设资源六.单片机开发过程中查看芯片数据手册的必要性1.单片机外设资源情况2.GD32单片机内部框图3.GD32单片机管脚图4.GD32单片机每个管脚功能5.单片机功耗数…

Mybatis--其他查询操作和数据库连接池(下下)

序 准备工作&#xff1a; mysql数据库和表的信息更新&#xff1a; DROP TABLE IF EXISTS articleinfo;CREATE TABLE articleinfo (id INT PRIMARY KEY auto_increment,title VARCHAR ( 100 ) NOT NULL,content TEXT NOT NULL,uid INT NOT NULL,delete_flag TINYINT ( 4 ) DEF…

24 messagebox 组件

messagebox 组件使用指南 Tkinter messagebox 组件用于创建弹出式消息框&#xff0c;以显示信息、警告、错误或询问用户问题。它提供了一种简单的方法来向用户展示消息&#xff0c;并等待用户响应。以下是对 messagebox 组件的详细说明和一个使用案例。 messagebox 组件方法 …

数学基础(十)

一、层次聚类 层次聚类是聚类算法的一种&#xff0c;通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中&#xff0c;不同类别的原始数据点是树的最低层&#xff0c;树的顶层是一个聚类的根节点。 常见聚类树有自下而上合并和自上而下分裂两种方法 …

【计算机网络】mini HTTP服务器框架与代码

注注注&#xff1a;本篇博文都是代码实现细节&#xff0c;但不会进行演示&#xff0c;演示看孪生篇 另外&#xff0c;由于tcp套接字部分本质都是套路&#xff0c;所以就不再进行赘述。 目录 1 请求反序列化2 读取url文件内容3 构建响应 1 请求反序列化 我们肯定会先收到请求&…

VIVO社招入职SHL测评题库题型分析:动机问卷、性格问卷、归纳推理、数字推理、语言推理

VIVO社招入职SHL测评数字推理考什么&#xff1f;例题分析 VIVO社招入职SHL测评归纳推理考什么&#xff1f;例题分析