▊ 写在前面
多标签图像识别是一项具有挑战性的计算机视觉任务。然而,目前解决这一任务的方法复杂、计算量大、缺乏直观解释 。为了能够有效地感知不同类别物体所占据的空间区域,作者提出了一个非常简单的模块,Class-Specific Residual Attention(CSRA)。首先计算一个根据特征的空间Attention Score,然后将其与类别无关的平均池化特征相结合,CSRA能够为每个类别生成 class-specific的特征。
CSRA在多标签识别任务中取得了SOTA的性能,同时也比其他方法简单得多。最重要的是CSRA实现起来非常简单,只有4行代码,就可以在没有任何额外数据训练的情况下,在许多不同的预训练模型和数据集上实现比较大的性能提升。因此,相比于以前的方法,SCRA具有易于实现、计算量小、解释直观、良好的可视化 等优点。
什么是多标签图像分类?
(From:https://blog.csdn.net/xiaosongshine/article/details/98172805)
1)传统单标签分类 :
city(person)
2)多标签分类 :
city , river, person, European style
3)人的认知 :
两个人在河道边走路
欧洲式建筑,可猜测他们在旅游
天很蓝,应该是晴天但不是很晒
相比较而言,单标签 分类需要得到的信息量最少 ,人的认知 得到的信息量最多 ,多标签 分类在它们两者之间 。
▊ 1. 论文和代码地址
Residual Attention: A Simple but Effective Method for Multi-Label Recognition
论文地址:https://arxiv.org/abs/2108.02456
代码地址:官方尚未开源
核心代码(第三方):https://github.com/xmu-xiaoma666/External-Attention-pytorch#23-Residual-Attention-Usage
▊ 2. Motivation
卷积神经网络(CNN)在许多计算机视觉任务中成为了主流结构,特别是在图像分类中。然而,尽管已经有许多用于单标签分类的网络结构被提出,如VGG、ResNet、EfficientNet和VIT,但多标签识别的进展仍然有限。在多标签任务中,对象的位置和大小变化很大,很难学习一个适合所有对象的单一特征表示。
近年来对多标签识别的研究主要集中在标签间的语义关系 、对象proposal 和注意力机制 三个方面。基于标签间的语义关系方法,计算成本较高而且存在手工定义邻接矩阵的问题;基于对象 proposal的方法,在处理对象proposal上花费太多时间;尽管注意力模型是一种端到端的,相对比较简单的方法,但对于多标签分类,这些模型往往过于复杂,导致难以优化、实现或解释。
基于以上的问题,作者出了一个简单而容易的类特定残差注意力(class-specific residual attention,CSRA)模块,通过充分利用每个对象类别单独的空间Attention,取得了较高的准确性。
上图为CSRA的Pytorch代码,在没有任何额外的训练的情况下,只用4行代码,CSRA在许多不同的预训练模型和数据集上,可以改进多标签识别的performance(结果如下表所示)。
在本文中,作者们证明了CSRA这个操作,实际上是一个class-specific的Attention操作。基于CSRA,作者在VOC2007、VOC2012、MSCOCO和WIDER-Attribute四个多标签数据集取得了SOTA的性能。此外,作者提出的CSRA对空间注意力如何融入其中,还做了一个直观的解释。
▊ 3. 方法
3.1. 为什么max pooling会有用?
上表展示了对于不同的模型和数据集,CSRA都能提升性能(其中 是一个超参数)。对于多标签任务,作者使用mAP作为评价指标,而ImageNet(单标签任务)使用Accuracy。
这些结果表明,简单地增加一个max-pooling可以提高多标签识别的精度,特别是当baseline模型的mAP不高时。从上面的代码中可以看出,CSRA就是多了一行max-pooling,那么,为什么这个max-pooling是有用的呢?
1)首先,y_max获取了每个类别的所有空间位置中的最大值。因此,它可以被看作是一种class-specific的注意力机制。
2)另外,作者推测CSRA能够让模型关注不同物体类别在不同位置的分类得分,因此相比于传统的分类网络,CSRA更加适用于多标签分类的任务。
3.2. Residual attention
对于一张图片 ,首先通过一个CNN网络 来提取特征 ,其中 是一个 的特征矩阵ÿ