【论文】Learning Affinity from Attention: ... Weakly-Supervised Semantic Segmentation with Transformers

论文标题:

Learning Affinity from Attention: End-to-End Weakly-Supervised Semantic Segmentation with Transformers

作者信息:

在这里插入图片描述

论文地址:

https://arxiv.org/abs/2203.02664

代码地址:

https://github.com/rulixiang/afa.

Abstract

作者认为现在的弱监督分割大多是基于卷积网络的,这些模型缺乏global 信息,从而导致分割中得到的图像不完整。作者引入了transfomer去整合全局信息,利用自注意机制和semantic affinity 以生成假标签。

作者提处理AFA (Affinity from Attention)module,利用transformer中多头注意力学习semantic affinity,refine初步生成的假标签。

还有PAR(Pixel-Adaptive Refinement ),利用像素的low-level image appearance(位置、颜色)也是去refine假标签。

Introduction

WSSS(weakly-supervised semantic segmentation)任务使用图像级标签获得分割结果。WSSS常见的有几种方法:
1.multi-stage方法:训练一个分类模型,生成CAM(假标签),refine假标签,最后再训练一个标砖赌地语义分割模型。缺点是,训练流复杂而且会降低运行效率。
2.end-to-end方法:仍然需要生成CAM,且和1相同大多采用CNN,fail to explore the global feature relations 。因此也会显著影响假标签的质量。
3.transformer结构:作者认为 discovering more integral object regions,克服了CNN的缺点;多头自注意力机制也可以 capture semantic level affinity,
在这里插入图片描述
在这里插入图片描述

作者进一步介绍了本文的贡献:
1.使用transformer生成初始的CAM(假标签)。
2.设计AFA,利用transformer机制, 获得pseudo affinity labels 去监督学习多头注意力中提取的semantic affinity。学到的affinity使用随机行走算法去refine初始假标签。
3.设计RAP,融入了RGB信息和位置信息,也用于refine假标签。

Methodology

下图为该论文的总体流程图:
在这里插入图片描述

Transformer backbone

常规的transformer处理方式,将图片划分成patch进而映射成token,然后计算注意力获得feature maps
在这里插入图片描述

CAM 生成

常规的CAM生成方式,根据输出的类的权重对由特征图进行加权求和。
在这里插入图片描述

Affinity from Attention

作者认为图1和图2中反映了Transformer的多头自注意力机制能够体现出sematic level affinity。
记transformer获得的特征图为S,首先求取初始emantic affinity matrix—A。
affinity是一个对称的概念,如像素1和像素2是互相affinity的,但是多头注意力可视为有向图模型 (单向的,我不太理解,这里作者给出了相关文献可供查阅),这里将S和S的转置输入到一个MLP层中获得A。
在这里插入图片描述

a.Pseudo Affinity Label Generation

需要寻找一个对Affinity的监督信息,这个信号从CAM的假标签经refine后获得(如图3)。这里给出了具体的获得方法:
记CAM为M,则设置两个参数 β h \beta_h βh β t \beta_t βt 类似于分段限幅,由M生成假标签 Y p Y_p Yp
在这里插入图片描述
对假标签 Y p Y_p Yp 继续处理生成affinity label Y a f f Y_{aff} Yaff:

如果像素1和2同数值,affinity 记为正向,否则记为负向;
如果两个像素其中一个位于 ignored region 则忽略他们之间的affinity (应该是赋值255,和公式(4)一致);
另外也只考虑同一个windows下 (不懂啥是同一个window) 的像素的affinity,
最后获得也是矩阵 Y a f f Y_{aff} Yaff

b.Affinity Loss

对获得的A在监督信号下 Y a f f Y_{aff} Yaff进行学习,损失函数设计如下:
在这里插入图片描述
就是说对正向affinity和负向affinity分别求sigmoid或者其相反数,然后取均值。
(我不太理解它的原理,尤其这个 A A A上面的这个逗号是做个什么运算,是计算两个像素的差值?或者?)
作者认为这个公式可以保证网络可以confident的学习语义亲和关系。

c.Propagation with Affinity

这里要将学到的semantic affinity用于refine初始的CAM,使用的是random Walk算法:
对于semantic affinity 矩阵A,定义semantic transition matrix矩阵T:
在这里插入图片描述
对于初始的CAM记为M,利用公式:
在这里插入图片描述
(公式(6)和公式(7)的原理我不懂,应该就是random Walk算法) 这个传播算法可以扩散高affinity semantic信息而抑制错误的
激活区域,来使activate map获得更好的边界。

Pixel-Adaptive Refinement

作者受pixel-adaptive convolution(参考文献4和37)的启发,设计了RAP,参考图3,RAP融合了空间位置和RGB信息,定义了一种 low level 的affinity pairwise,其作用还是对pseudo labels做refine,
CRF是一种典型的refine处理方式,但是它并不适合端到端网络,另外它的运行效率也比较的低。
PAR的具体做法:
对于一个输入图像I,其中的两个像素位置(i,j)和(k,l)和,定义RGB和空间位置计算对为:
在这里插入图片描述
之后构建affinity的核心算子(类似于卷积核),主要是在一个像素点的邻域中,norm公式(8),并做softmax处理。
在这里插入图片描述
基于公式(8)的affinity kernal ,作者refine了初始的CAM和propagated CAM(参考图3),采用公式(10)进行多代的优化:
在这里插入图片描述
(公式10的原理我也没看懂(本质应该是做卷积),以及要具体怎么迭代计算也不懂) 可以理解为,利用当前位置(像素/特征)和邻域内其他位置处间的联系,来更新当前l位置的label。对于一个邻域 N ( . ) N(.) N(.),作者设计了多个不同的不同的空洞卷积rate,来保证训练的效率。

Network Training

该模型主要涉及三种损失函数,分别使分类损失函数 L c l s L_{cls} Lcls、分割损失函数 L s e g L_{seg} Lseg和affinity训练损失函数 L a f f L_{aff} Laff,其中:
分类损失函数见公式(11)
在这里插入图片描述
分割损失是cross-entropy loss,affinity损失就是公式(5),另外作者引入了正则化损失 L r e g L_{reg} Lreg,总的损失函数就是公式(12):
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值