ICCV 2021 | 4行代码的残差注意力提升多标签分类!!!

南京大学

Residual Attention: A Simple but Effective Method for Multi-Label Recognition

paper:https://arxiv.org/abs/2108.02456

摘要

多标签图像识别是一项具有挑战性的计算机视觉实用任务。然而,这一领域的往往发展的特点是使用复杂的方法、大量的计算和缺乏直观的解释。为了有效地捕获来自不同类别的对象所占据的不同空间区域,提出了一个极其的简单模块,命名为类特定的残余注意(CSRA)。CSRA通过提出一个简单的空间注意评分,为每个类别生成类特定的特征,然后将其与类无关的平均池特征相结合。CSRA在多标签识别上取得了最先进的结果,同时也比它们要简单得多。此外,由于只有4行代码,CSRA还可以在没有任何额外训练的情况下对许多不同的预训练模型和数据集进行一致的改进。CSRA在计算中既容易实现又很轻量级,也具有直观的解释和可视化。

论文背景

卷积神经网络(CNNs)主导了许多计算机视觉任务,特别是在图像分类方面。然而,尽管已经提出了许多用于单标签分类的网络架构,如VGG、ResNet、EfficientNet和VIT,但多标签识别的进展仍然不大。在多标签任务中,对象的位置和大小差异很大,很难学习适合所有它们的单一深度表示。近年来对多标签识别的研究主要集中在三个方面:标签之间的语义关系、目标Proposal和注意机制。但它们的缺点显而易见:基于语义关系的方法具有较高的计算成本,目标Proposal的方法在处理目标Proposal时花费的时间太多。虽然注意模型是端到端且相对简单的,但对于多标签分类,它们诉诸于复杂的空间注意模型,这些模型难以优化、实现或解释。

论文主要思想

 为了能够有效地感知不同类别物体所占据的空间区域,作者提出了一个非常简单的模块,Class-Specific Residual Attention(CSRA)。首先计算一个根据特征的空间Attention Score,然后将其与类别无关的平均池化特征相结合,CSRA能够为每个类别生成 class-specific的特征。

Keras实现

以下是根据论文实现的keras版本(支持Tensorflow1.x)。

def _CSRA(inputs, lambd=0.1):
    channel_axis = 1 if K.image_data_format() == 'channels_first' else -1
    in_dim = K.int_shape(inputs)
    if channel_axis == -1:
        y_raw = Reshape((-1, in_dim[-1]))(inputs)
        y_avg = Lambda(lambda x: K.mean(x, axis=1))(y_raw)
        y_max = Lambda(lambda x: lambd*K.max(x, axis=1))(y_raw)
    else:
        y_raw = Reshape((in_dim[1], -1))(inputs)
        y_avg = Lambda(lambda x: K.mean(x, axis=2))(y_raw)
        y_max = Lambda(lambda x: lambd*K.max(x, axis=2))(y_raw)
    out = Add()([y_avg, y_max])
    return out

声明:本内容来源网络,版权属于原作者,图片来源原论文。如有侵权,联系删除。

创作不易,欢迎大家点赞评论收藏关注!(想看更多最新的注意力机制文献欢迎关注浏览我的博客)

猜你喜欢

转载自blog.csdn.net/u011447962/article/details/119713582