Reverse Attention反向注意模块

前言

OSFormer模型中提到了反向边缘注意(Reverse Edge Attention)模块,通过十分简单的操作,就可以预测出伪装目标的边缘特征。作者也将OSFormer模型强大的细长边缘特征分割能力归功于反向边缘注意。那么,什么是反向注意(reverse attention)?反向注意有什么作用?为什么反向边缘注意可以预测出边缘特征?

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

1. Reverse Attention的提出

溯源Reverse Attention,发现Reverse Attention最早是2017年由来自美国南加州大学的团队提出的(Semantic Segmentation with Reverse Attention)。

这篇文章的主要目的是为了提高语义分割网络对于confusion area的预测能力。所谓的confusion area,是指网络对某些类别的预测概率都差不多大的区域。

下面这张图表示FCN网络提取特征和预测的过程。右下角表示最终预测的结果,圆形区域内部就是猫和狗重合部分的区域,也就是confusion area。
在这里插入图片描述

作者的观点是,FCN只是预测某个pixel属于各个类别的概率,而对于那些confusion area,如果能训练一个网络来预测得到这个区域不属于猫的概率比不属于狗的概率更大,那么结合原始FCN的预测,就可以得到这个区域应该预测成狗。所以构建了一个reverse learning process反向学习过程,来预测pixel不属于各个类别的概率。也就是Reverse Attention Network(RAN)。

在这里插入图片描述
在这里插入图片描述
整体框架如上面两张图所示,主要分成三个分支。

  • 第一个分支,也就是original branch,使用原始的FCN网络学习pixel属于各个类别的概率分布;
  • 第二个分支,也就是reverse branch,学习pixel不属于各个类别的概率分布;
  • 第三个分支,也就是reverse attention branch,学习第一、二个分支的预测图之间结合的权重。

最终用来预测的是经过attention branch输出的混合预测(combined pred)。

为什么需要第三个分支,也就是reverse attention branch:

最直接的想法是将original prediction和reverse prediction的结果直接相减,但是问题在于reverse learning的效果可能没有original learning的好。我们期望的是在original learning结果的confusion area上引入reverse learning的预测结果,因此需要引入一个attention机制,将reverse learning的结果引入confusion的区域。

数学表示:
Reverse Attention反向注意模块

Reverse Attention反向注意模块表示像素位置坐标,Reverse Attention反向注意模块表示Reverse Attention反向注意模块的响应图。
由于NEG反转和sigmoid函数的作用,Reverse Attention的效果是,对于FCN原始预测Reverse Attention反向注意模块中负的、较小的响应将会被突出,考虑它的reverse attention;对于正的、较大的响应就会被抑制,变得很小,不考虑它的reverse attention。

2. 显著目标检测中的Reverse Attention

显著目标检测(Salient Object Detection, SOD)的目的是突出图像中的显著目标区域,通常作为图像分割、图像字幕等高级视觉任务的预处理步骤。一篇ECCV 2018的论文Reverse Attention for Salient Object Detection受到上述工作的启发,采用自上而下的reverse attention来学习更准确的残差细节。
在这里插入图片描述

通过逐步的自上而下、自深到浅的反向注意的处理,得到最终的输出预测。
在这里插入图片描述

3. PraNet:用于息肉分割的并行Reverse Attention网络

PraNet是2020年发表在MICCAI的一篇文章。使模型精准地分辨息肉边缘的粘膜是息肉分割任务中的一个难点。PraNet中使用RA (Reverse Attention)模块挖掘对应的边缘信息。
在这里插入图片描述

4. OSFormer中的Reverse Edge Attention

了解Reverse Attention的提出及后续演进模型之后,回头再看OSFormer中对Reverse Attention的使用。从结构图中能够明显看出的是,REA模块的输入同样来自不同层级的特征图,不同点在于用于监督Reverse Attention模块卷积核参数更新的不再是Ground Truth标签,而是边缘标签和Edge loss边缘损失函数。原论文中提到,这里用于监督的边缘标签没有经过任何手工标记,而是通过侵蚀实例掩码标签来获得的。
在这里插入图片描述

  • 输入REA模块的不同层级的特征图(T4、T3、C2)是否和之前的Reverse Attention一样经过了上采样?
  • REA模块的输出边缘特征图Reverse Attention反向注意模块最终输出到了哪里?是否和之前的Reverse Attention一样与不同层级的REA输出相加到了一起?
  • 通过侵蚀实例掩码标签来获得边缘标签是怎么实现的?
  • Edge loss是怎么进行计算的?原论文中3.5节提到,Reverse Attention反向注意模块。那么,Reverse Attention反向注意模块又是什么?是V-Net论文中提到的Dice loss吗?那Dice loss有什么特别之处呢?这与之前的Reverse Attention所用的损失函数有什么区别?

参考

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年2月26日 上午10:41
下一篇 2023年2月26日 上午10:42

相关推荐