当前位置: 首页 > article >正文

WeakTr阅读笔记

WeakTr: Exploring Plain Vision Transformer for Weakly-supervised Semantic Segmentation

论文链接
代码链接

  • 本文研究了用于弱监督语义分割(WSSS)的普通ViT的特性。
  • 观察到不同的ViT注意头对不同的图像区域的关注:提出了一种基于权重的端到端估计注意头重要性的新方法,同时自适应融合自注意图,以获得具有更完整对象的高质量CAM结果
  • 提出了一种基于vit的梯度剪裁解码器,用于在线再训练CAM结果
    在这里插入图片描述
    在这里插入图片描述
    图a表示注意力图
    图b表示类与类之间的皮特森相关系数

本文方法

在这里插入图片描述
首先将图像patch token和多个class token输入到transformer编码器中
通过对patch token应用卷积层来生成粗CAM
使用自适应注意融合模块从所有自注意映射中生成动态权重,并通过前馈网络使动态权重相互作用。
最后,利用加权cross注意映射和加权patch注意映射,将粗CAM优化为精CAM。类token、粗CAM和细CAM最后通过池化生成预测,计算相应的预测损失。
详细看下面内容

Plain ViT Backbone

详细请看vit这篇论文
编码器内部由K个编码层组成。每一层由两个子层组成:多头自注意(MSA)和多层感知器(MLP)

Direct CAM Generation with Adaptive Attention Fusion

接下来,我们使用卷积层得到粗CAM∈R(N×N×C),如下所示:
在这里插入图片描述
在得到粗CAM后,利用transformer编码器的自注意映射对粗CAM进行细化。
单个自注意图的形状为(C + n2)2,这使得我们可以得到C个class token对于n2个patch token的交叉注意map,以及n2个patch token相对于它们自身的patch attention map
考虑到vit编码器有K个编码层,每个编码层有H个注意头,我们可以得到交叉注意映射为CA∈R(K×H)×N×N×C, patch-注意映射为P A∈R(K×H)×N 2×N 2
在这里插入图片描述
我们采用与MCTformer和TransCAM相同的方法将粗CAM、CA和PA结合起来:R代表reshape
在这里插入图片描述
总损失:
在这里插入图片描述

WeakTr Online Retraining with Gradient Clipping Decoder

对CAM进行再训练从而达到精调
在这里插入图片描述
本文所提出的梯度剪切解码器的架构。梯度剪切解码器的输入由两部分组成:ViT编码器输出的class token和patch token。
在解码层操作之后,我们首先结合class token和patch token得到相应的patch预测。
接下来,我们对获得的预测进行上采样,并将预测分割为预测补丁{Pi}。然后利用CAM种子计算梯度patch{Gi}。最后,我们动态生成梯度剪切mask{Mi},并将梯度剪切mask与原始梯度图相乘。
请注意,在这个图中,我们只展示了梯度剪切解码器的结构。在训练过程中,ViT编码器和梯度剪切解码器一起更新。

在这里插入图片描述
CE是为每个像素计算的交叉熵损失

在这里插入图片描述
局部和全局梯度约束,实现对梯度较大的patch区域的丢弃:
在这里插入图片描述
clip the gradient:
在这里插入图片描述
最后,得到了mask梯度patch,并反向传播它们的平均值。通过这样做,我们动态地选择具有较小梯度的区域作为自信的CAM区域,以优先学习分割网络。在推理过程中,应用条件随机场(CRF)来提高分割质量

消融实验

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


http://www.kler.cn/a/8098.html

相关文章:

  • Java面向对象编程进阶之包装类
  • nginx配置负载均衡详解
  • WPF学习之路,控件的只读、是否可以、是否可见属性控制
  • Android Framework AMS(16)进程管理
  • 使用 start-local 脚本在本地运行 Elasticsearch
  • 「Mac玩转仓颉内测版7」入门篇7 - Cangjie控制结构(下)
  • Spring销毁的几种实现
  • 【vSphere | Python】vSphere Automation SDK for Python Ⅵ—— VM Guest Processes APIs
  • 实时决策系统中 OpenMLDB 的常见架构整合方式
  • 【微信小程序-原生开发】系列教程目录(已完结)
  • 只依赖Tensorrt和opencv的yolov5源代码
  • GPT的未来--基于标准接口的由计算机和无数工业软件构成的联合体
  • 青少年CTF训练平台-WEB-部分wp
  • vue给input框属性赋值的方法
  • Android系统重要组件AMS
  • 【Spring】4—声明式事务
  • 【Mysql系列】——详细剖析数据库中的存储引擎
  • Java面向对象三剑客之——继承
  • Burp Suite的使用(常用模块)
  • python基础-元组
  • 【gRPC】第1篇 全面讲解RPC原理(必收藏)
  • egg编写用户点赞的接口
  • 思维导图手撕MyBatis源码
  • Spring中的循环依赖是什么?如何解决它?
  • HTB-Passage
  • Kafka源码分析之Producer数据发送流程(四)