论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现细微的特征变化。除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看

来源:晓飞的算法工程笔记 公众号

论文: Context-aware Attentional Pooling (CAP) for Fine-grained Visual Classification

Introduction


  论文认为大多数优秀的细粒度图像识别方法通过发掘目标的局部特征来辅助识别,却没有对局部信息进行标注,而是采取弱监督或无监督的方式来定位局部特征位置。而且大部分的方法采用预训练的检测器,无法很好地捕捉目标与局部特征的关系。为了能够更好地描述图片内容,需要更细致地考虑从像素到目标到场景的信息,不仅要定位局部特征/目标的位置,还要从多个维度描述其丰富且互补的特征,从而得出完整图片/目标的内容。

  论文从卷积网络的角度考虑如何描述目标,提出了context-aware attentional pooling(CAP)模块,能够高效地编码局部特征的位置信息和外观信息。该模块将卷积网络输出的特征作为输入,学习调整特征中不同区域的重要性,从而得出局部区域的丰富的外观特征及其空间特征,进而进行准确的分类。

  论文的主要贡献如下:

  • 提出在细粒度图像识别领域的扩展模块CAP,能够简单地应用到各种卷积网络中,带来可观的细粒度分类性能提升。
  • 为了捕捉目标/场景间的细微差别,提出由区域特征引导的上下文相关的attention特征。
  • 提出可学习的池化操作,用于自动选择循环网络的隐藏状态构成空间和外观特征。
  • 将提出的算法在8个细粒度数据集上进行测试,获得SOTA结果。
  • 分析不同的基础网络,扩大CAP模块的应用范围。

Proposed Approach


  论文算法的整体流程如上图所示,输入图片,输出具体从属类别,包含3个组件(3组参数):

  • 基础CNN网络\(\mathcal{F}(.;\theta_b)\)
  • CAP模块\(\mathcal{F}(.;\theta_c)\)
  • 分类模块\(\mathcal{F}(.;\theta_d)\)

Context-aware attentional pooling (CAP)

  定义卷积网络输出的特征为\(x=\mathcal{F}_b(I_n;\theta_b)\),CAP的模块综合考虑像素级特征、小区域特征、大区域特征以及图片级特征的上下文信息进行分类。

  • pixel-level contextual information

  像素级特征的上下文信息主要学习像素间的关联度\(p(x_i|x_j;\theta_p)\),在计算\(j\)位置的输出时根据关联度综合所有其他像素特征,直接使用self-attention实现,特征转化使用\(1\times 1\)卷积。这一步直接对主干网络输出的特征进行操作,但没在整体流程图中体现。

  • Proposing integral regions

  为了更高效地学习上下文信息,论文在特征图\(o\)上定义不同粒度级别的基本区域,粒度级别由区域的大小决定。假设\((i,j)\)位置上的最小的区域为\(r(i,j\Delta_x,\Delta_y)\)为例,可通过放大宽高衍生出一系列区域\(R=\{r(i,j,m\Delta_x,n\Delta_y)\}\),\(i < i + m \Delta_x \le W\),\(j < j + n \Delta_y \le H\)。在不同的位置产生相似的区域合集\(R\),得到最终的区域合集\(\mathcal{R}=\{R\}\)。\(\mathcal{R}\)覆盖了所有的位置的不同宽高比区域,可以提供全面的上下文信息,帮助在图片的不同层级提供细微特征。

  • Bilinear pooling

  按照上一步,在特征图上得到\(|\mathcal{R}|\)个区域,大小从最小的\(\Delta_x\times\Delta_y\times C\)到最大的\(W\times H\times C\),论文的目标是将不同大小的区域表示为固定大小的特征,主要采用了双线性插值。定义\(T_{\psi}(y)\)为坐标转换函数,\(y=(i,j)\in \mathbb{R}^c\)为区域坐标,对应的特征值为\(R(y)\in \mathbb{R}^C\),则转换后的图片\(\tilde{R}\)的\(\tilde{y}\)坐标上的值为:

  \(R(T_{\psi(y)})\)为采样函数,\(K(\cdots)\)为核函数,这里采用的是最原始的方法,将目标坐标映射回原图,取最近的四个点,按距离进行输出,最终得到池化后的固定特征\(\bar{f}(w\times h\times C)\)。

  • Context-aware attention

  这里,论文使用全新的注意力机制来获取上下文信息,根据\(\bar{f}_r\)与其他特征\(\bar{f}_{r^{'}}(r, r^{'}\in \mathcal{R})\)的相似性进行加权输出,使得模型能够选择性地关注更相关的区域,从而产生更全面的上下文信息。以查询项\(q(\bar{f}_r)\)和一组关键词项\(k(\bar{f}_{r^{'}})\),输出上下文向量\(c_r\):

  参数矩阵\(W_{\beta}\)和\(W_{\beta^{'}}\)用来将输入特征转换为查询项核关键项,\(W_{\alpha}\)为非线性组合,\(b_{\alpha}\)和\(b_{\beta}\)为偏置项,整体的可学习参数为\(\{W_{\beta},W_{\beta^{'}},W_{\alpha},b_{\alpha},b_{\beta}\}\in\theta_c\),而注意力项\(\alpha_{r,r^{'}}\)则代表两个特征之间的相似性。这样,上下文向量\(c_r\)能够代表区域\(\bar{f}_r\)蕴含的上下文信息,这些信息是根据其与其他区域的相关程度获得的,整体的计算思想跟self-attention基本相似。

  • Spatial structure encoding

  上下文向量\(c=\{c_r|r=1,\cdots|\mathcal{R}|\}\)描述了区域的关键程度和特点,为了进一步加入空间排列相关的结构信息,论文将区域的上下文向量\(c\)转为区域序列(论文按上到下、左到右的顺序),输入到循环神经网络中,使用循环神经网络的隐藏单元\(h_r\in\mathbb{R}^n\)来表达结构特征。

  区域\(r\)的中间特征可表示为\(h_r=\mathcal{F}_h(h_{r-1},f_r;\theta_h)\),\(\mathcal{F}_h\)采用LSTM,\(\theta_h\in\theta_c\)包含LSTM的相关参数。为了增加泛化能力和减少计算量,上下文特征\(f_r\in\mathbb{R}^{1\times C}\)由\(c_r\in\mathbb{R}^{w\times h\times C}\)进行全局平均池化得到,最终输出上下文特征序列\(f=(f_1,f_2,\cdots,f_r,\cdots,f_{|\mathcal{R}|})\)对应的隐藏状态序列\(h=(h_1,h_2,\cdots,h_r,\cdots,h_{|\mathcal{R}|})\),后续用于分类模块中。

Classification

  为了进一步引导模型分辨细微的变化,论文提出可学习的池化操作,能够通过组合响应相似的隐藏层\(h_r\)来整合特征信息。论文借鉴NetVLAD的思想,用可导的聚类方法来对隐藏层的响应值进行转换,首先计算隐藏层响应对类簇\(k\)的相关性,再加权到类簇\(k\)的VLAD encoding中:

  每个类簇都有其可学习的参数\(W_i\)和\(b_i\),整体思想基于softmax,将隐藏层的响应值按softmax的权重分配到不同的类簇中。在得到所有类簇的encoding向量后,使用可学习的权值\(W_N\)和softmax进行归一化。因此,分类模块\(\mathcal{F}_d\)的可学习参数为\(\theta_d=\{W_i, b_i, W_N\}\)。

Experiments and Discussion


  在不同的数据集上,对不同方法进行对比。

  不同主干网络下的准确率对比。

  不同模块输出特征的可视化,图b是加入CAP后,主干网络输出的特征。

Conclusion


  论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现目标的细微特征变化。除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021的更多相关文章

  1. NLP之基于Bi-LSTM和注意力机制的文本情感分类

    Bi-LSTM(Attention) @ 目录 Bi-LSTM(Attention) 1.理论 1.1 文本分类和预测(翻译) 1.2 注意力模型 1.2.1 Attention模型 1.2.2 Bi ...

  2. ACNet: 特别的想法,腾讯提出结合注意力卷积的二叉神经树进行细粒度分类 | CVPR 2020

    论文提出了结合注意力卷积的二叉神经树进行弱监督的细粒度分类,在树结构的边上结合了注意力卷积操作,在每个节点使用路由函数来定义从根节点到叶子节点的计算路径,结合所有叶子节点的预测值进行最终的预测,论文的 ...

  3. Transformer可解释性:注意力机制注意到了什么?

    原创作者 | FLPPED 论文: Self-Attention Attribution: Interpreting Information Interactions Inside Transform ...

  4. (转)注意力机制(Attention Mechanism)在自然语言处理中的应用

    注意力机制(Attention Mechanism)在自然语言处理中的应用 本文转自:http://www.cnblogs.com/robert-dlut/p/5952032.html  近年来,深度 ...

  5. 注意力机制(Attention Mechanism)在自然语言处理中的应用

    注意力机制(Attention Mechanism)在自然语言处理中的应用 近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展.基于注意力(attention)机制的神经网络成为了 ...

  6. 自然语言处理中的自注意力机制(Self-attention Mechanism)

    自然语言处理中的自注意力机制(Self-attention Mechanism) 近年来,注意力(Attention)机制被广泛应用到基于深度学习的自然语言处理(NLP)各个任务中,之前我对早期注意力 ...

  7. AAAI2018中的自注意力机制(Self-attention Mechanism)

    近年来,注意力(Attention)机制被广泛应用到基于深度学习的自然语言处理(NLP)各个任务中.随着注意力机制的深入研究,各式各样的attention被研究者们提出,如单个.多个.交互式等等.去年 ...

  8. 深入理解BERT Transformer ,不仅仅是注意力机制

    来源商业新知网,原标题:深入理解BERT Transformer ,不仅仅是注意力机制 BERT是google最近提出的一个自然语言处理模型,它在许多任务 检测上表现非常好. 如:问答.自然语言推断和 ...

  9. 注意力机制(Attention Mechanism)应用——自然语言处理(NLP)

    近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展.基于注意力(attention)机制的神经网络成为了最近神经网络研究的一个热点,下面是一些基于attention机制的神经网络在 ...

随机推荐

  1. 帝国cms插件 解决后台修改信息时内容关键字不替换的问题

    很多站长是不是发现了帝国cms增加信息时,是有关键词替换的,这样是有利于网站优化排名. 但是在后台格式化数据之后,再去进行修改之后,对不起,内容关键字就实效了. 针对这一问题,解决方案如下: 找到 / ...

  2. upsource 配置git仓库时的 rsa 问题

    在使用 upsource 时,当 通过 SSH-key 需要配置一个 git 仓库代码时,在使用本机已有配置的 rsa 是出现无法连接的问题.这是需要看下具体的提示,如下图的显示 其实关键的地方看这个 ...

  3. Java语言学习day21--7月27日

    ###01接口的概念 * A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的"类". 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实 ...

  4. JavaScript 数学 (Math) 方法

    一.Math 方法 1.Math.round(x) 的返回值是 x 四舍五入为最接近的整数: Math.round(7.8); // 返回 8 Math.round(3.3); // 返回 3 2.M ...

  5. python 多进程共享全局变量之Manager()

    Manager支持的类型有list,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Queue,Value和A ...

  6. Kafka生成消息时的3种分区策略

    摘要:KafkaProducer在发送消息的时候,需要指定发送到哪个分区, 那么这个分区策略都有哪些呢? 本文分享自华为云社区<Kafka生产者3中分区分配策略>,作者:石臻臻的杂货铺. ...

  7. 简单几步解决ie打不开闪退的问题 亲测有效

    起因: 银行U盾插入 IE自动打开银行门户网站 打不开 闪退 不插入之后 IE还是闪退, 修复之法 清除IE扩展 一些自己安装的扩展或是被恶意安装的扩展插件会导致IE无法启动 1. 按住windows ...

  8. Win10搭建Jenkins部署Java项目(本机和远程Win10部署)

    目录 一.前言&背景 二.环境准备 三.插件安装 四.全局配置 Maven JDK Git Maven 五.新建项目并配置 新建项目 配置 1.Discard old builds 2.Thi ...

  9. 绕过 Docker ,大规模杀死容器

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 作者 | Connor Brewster 译者 | Sambodhi 策划 | Tina 要让 ...

  10. 不使用比较和条件判断实现min函数的一种方法

    不使用比较和条件判断实现min函数,参数为两个32位无符号int. 面试的时候遇到的题目,感觉很有意思. 搜了一下多数现有的解法都是仅有两种限制之一,即要么仅要求不能使用比较,要么仅要求不能使用条件判 ...