前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大道至简,仅需4行代码提升多标签分类性能!ICCV21 南大提出Residual Attention

大道至简,仅需4行代码提升多标签分类性能!ICCV21 南大提出Residual Attention

作者头像
CV君
发布2021-09-03 11:02:42
1.1K0
发布2021-09-03 11:02:42
举报

写在前面

多标签图像识别是一项具有挑战性的计算机视觉任务。然而,目前解决这一任务的方法复杂、计算量大、缺乏直观解释 。为了能够有效地感知不同类别物体所占据的空间区域,作者提出了一个非常简单的模块,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

代码语言:javascript
复制
论文地址: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网络来提取特征,其中是一个的特征矩阵:

在实验中,特征的维度通常是,因此在空间维度打平之后就可以表示成。然后通过一个FC分类器得到分类的结果,其中为第i类分类器的参数。

然后就可以定义第i个类第j个位置上的class-specific attention scores(在空间维度进行softmax,使得每个类所有空间上概率之和为1,以此来得到每个类别的空间attention map):

其中是用来控制score的 temperature,是一个超参数。代表了第i类在第j个位置上出现的概率。

得到第i类在第j个位置上出现的概率之后,我们就可以把这个概率和特征进行相乘求和,得到class-specific的特征向量了:

全局的class-agnostic特征可以通过将所有位置的特征进行求平均得到:

由于在多分类任务中能够达到比较好的效果,所以作者依旧将作为主特征。(这里个人其实有一点疑问,既然作者想证明class-specific的特征是非常有用的,但是为什么作者又用了一个比较小的权重来减少class-specific特征的影响?)

如上图所示,最终的特征有class-specific特征和class-agnostic特征相加得到:

最终分类的结果就是用特征用分类器进行分类的结果:

其中为数据集中类别的数量

3.3. CSRA 的解释

在本节中,作者将会证明代码中的max pooling的实现方式就是CSRA的一种特殊情况。首先将分类的结果重新展开可以得到:

公式第一行的第一项的是第i个类的base logit,也可以用下面的公式表示:

第二项的是第k个位置的分类分数,然后再用来进行加权。

当T趋向于正无穷时,softmax的输出结果就变成了一个Dirac delta函数:

因此就可以用最大项来代替,这也就得到代码中max pooling的由来:

另外,f可以被表示成:

在这个式子中常数可以直接被忽略,因此CSRA的特征就是特征被加权之后的结果。

3.4. Multi-head attention

在上面的代码和式子中,我们可以看到有一个 temperature超参数需要去调,不同的类可能需要不同的超参数。为了避免这个调参的过程,作者引入了一个mul-head attention的方式来避免这个调参的过程。

如上图所示,作者将CSRA改成了一个多分支的结构(每一个分支就代表是一个head),每个分支使用相同的,但是使用不同的。当只有一个head时,固定为1;随着head的增加,不同head的也不断增大,如下所示:

通过将不同的结果进行融合,就能够避免了调参的过程。

4.实验

4.1. Comparison with state-of-the-arts

4.1.1. VOC2007

可以看出在ResNet上加入CSRA,就能够超过以前的SOTA模型。

4.1.2. VOC2012

如上表所示,当仅使用ResNet-101的ImageNet预训练模型时,CSRA已经超越了以往的方法。通过用额外数据(MS-COCO)进行预训练,可以进一步提高CSRA的性能,达到新的SOTA性能。

4.1.3. MS-COCO

MS-COCO上的实验结果表明,CSRA模块不仅适用于ResNet结构,而且也适合Vision Transformer结构。

4.2. Effects of various components in CSRA

4.2.1. Class-agnostic vs. class-specific

class-specific的特征比 class-agnostic的特征更有效。通过合并两者,CSRA的performance明显优于前两者。

4.2.2. Visualizing the attention

可以看出,CSRA的attention map能够精确定位来自不同类别的对象。

4.2.3. Effect of λ

如上图所示,VIL-L16的性能在λ < 1.0时稳定上升;在λ = 1.0达到峰值,而ResNet-cut在λ = 0.1处得分最高。

4.2.4. Number of attention heads

从上表可以看出,当H增加到较大的数值(6或8)之前,mAP值稳定增加,说明了multi-head CSRA的有效性。

4.2.3. Normalization

上表显示了Normalization的影响,可以看出Normalization对精度影响不大,但是在训练的时候使用能够加快收敛的速度。

5. 总结

在本文中,作者提出了一个新的多标签分类框架CSRA,仅通过四行代码,就能够提高多标签分类任务的准确率。该算法不仅提高了识别精度,而且消除了对超参数的依赖。CSRA在4个基准数据集上的表现优于现有的SOTA方法,不仅简单,而且可解释性更强。

▊ 作者简介

厦门大学人工智能系20级硕士

研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

知乎/公众号:FightingCV

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.1. 为什么max pooling会有用?
  • 3.2. Residual attention
  • 3.3. CSRA 的解释
  • 3.4. Multi-head attention
  • 4.1. Comparison with state-of-the-arts
    • 4.1.1. VOC2007
      • 4.1.2. VOC2012
        • 4.1.3. MS-COCO
        • 4.2. Effects of various components in CSRA
          • 4.2.1. Class-agnostic vs. class-specific
            • 4.2.2. Visualizing the attention
              • 4.2.3. Effect of λ
                • 4.2.4. Number of attention heads
                  • 4.2.3. Normalization
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档