计算机系统应用教程网站

网站首页 > 技术文章 正文

大道至简,仅需4行代码提升多标签分类性能

btikc 2024-10-15 08:58:54 技术文章 4 ℃ 0 评论

作者 | 小马
编辑 | CV君
报道 | 我爱计算机视觉(微信id:aicvml)


【写在前面】


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

在实验中,特征的维度通常是,因此在空间维度打平之后就可以表示成。然后通过一个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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表