热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

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

论文: Attention Convolutional Binary Neural Tree for Fine-Grained Visual Categorization

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

  • 论文地址:https://arxiv.org/abs/1909.11378
Introduction

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

  细粒度分类(Fine-Grained Visual Categorization, FGVC)是图片分类的一个分支,由于类别间的相似性非常大,一般人比较难区分,所以是个很有研究意义的领域。受神经树研究的启发,论文设计了结合注意力卷积的二叉神经树结构(attention convolutional binary neural tree architecture, ACNet)用于弱监督的细粒度分类,论文的主要贡献如下:

  • 提出结合注意力卷积的二叉神经树结构ACNet用于细粒度分类,在树结构的边上结合了注意力卷积操作,在每个节点使用路由函数从而定义从根节点到叶子节点的计算路径,类似于神经网络。这样的结构让算法有类似于神经网络的表达能力,以及能够从粗到细的层级进行特征学习,不同的分支专注于不同的局部区域,最后结合所有叶子节点的预测值进行最终的预测
  • 添加attention transformer模块来加强网络获取关键特征进行准确分类
  • 在三个数据集CUB-200-2011、Stanford Cars和Aircraft上达到了SOTA

#Attention Convolutional Binary Neural Tree


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

  ACNet包含4个模块,分别是主干网络(backbone network)、分支路由(branch routing)、attention transformer和标签预测(label prediction),如图2所示。将ACNet定义为(T,O)(\mathbb{T},\mathbb{O})T\mathbb{T}为树状拓扑结构,O\mathbb{O}为树边的操作集。论文使用满二叉树T={V,E}\mathbb{T}=\{\mathcal{V},\mathcal{E}\}V={v1,...,vn}\mathcal{V}=\{v_1,...,v_n \}为节点,E={e1,...,ek}\mathcal{E}=\{e_1,...,e_k \}为边,对于树深hh,共n=2h1n=2^h-1节点,k=2h2k=2^h-2边。每个节点为路由模块,决定下一个计算节点,边采用attention transformer进行操作。另外,满二叉树T\mathbb{T}采用了非对称结构,例如左边使用两个transformer模块,右边使用一个transformer模块,这样有利于提取不同尺寸的特征

Architecture

  • Backbone network module

  由于细粒度类别的关键特征都是高度局部的,需要使用相对较小的感受域来提取特征,因此主干网络使用截断的VGG-16网络,输入改为448×448448\times 448

  分支路由用来决定子节点的选择,结构如图2b所示,kk-th层的ii-th路由模块Rik()\mathcal{R}_i^k(\cdot)1×11\times 1卷积和global context block组成

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

  global context block的大概结构如上图a所示,来自GCNet的论文中。在context modeling和fusion步骤使用了simplified NL block,在transform步骤使用了SE block,这个模块能够很好地结合上下文信息来提取特征,最后使用global average pooling、element-wise square-root、L2正则化以及sigmoid**的全连接层输出标量[0,1][0,1]
  假设分支路由模块Rik(xj)R_i^k(x_j)输出样本xjXx_j\in X到右边节点的概率为ϕik(xj)[0,1]\phi_i^k(x_j)\in [0,1],则输出到左边节点的概率为1ϕik(xj)1 - \phi_i^k(x_j),概率越大的节点对最终结果的影响越大

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

  Attention transformer模块用于加强网络获取关键特征的能力,在3×33\times 3卷积后面插入结构如图2c所示的attention模块,该模块的旁路输出一个大小为RC×1×1\mathbb{R}^{C\times 1\times 1}的channel attention map对输入特征进行加权

  对于ACNet的每个叶子节点,用标签预测模块Pi\mathcal{P}_i来预测目标xjx_j的类别,rik(xj)r_i^k(x_j)为目标xjx_j从根节点到k层第i个节点的累计概率,预测模块由1×11\times 1卷积层、max pooling层、L2归一化层、全连接层和softmax层组成,通过求和所有的叶子节点的预测结果和路径累计概率的乘积得到最终的预测C(xj)=i=12h1Pi(xj)rih(xj)\mathcal{C}(x_j)={\sum}_{i=1}^{2^{h-1}}\mathcal{P}_i(x_j)r_i^h(x_j)

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

  最终的预测结果C(xj)\mathcal{C}(x_j)的各项和为1,论文对其进行了证明,有兴趣的可以去看看,主要基于叶子节点的累计概率和为1,各叶子节点的预测结果和也为1

Training

  • Data augmentation

  在训练阶段,使用裁剪和翻转操作进行数据增强,首先将图片缩放至短边512像素,然后随机裁剪到448×448448\times 448,随机进行翻转

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

  ACNet的损失函数由两部分组成,分别为叶子节点预测产生的损失以及最终结果产生的损失。hh为树高,yy^*为GT,L(Pi(xj),y)L(\mathcal{P}_i(x_j),y^*)为最终预测结果的负对数似然损失,L(P(xj),y)L(\mathcal{P}(x_j),y^*)为第ii个叶子预测结果的负对数似然损失

  主干网络使用在ILSVRC上预训练的模型,使用"xavier"进行所有卷积层的随机初始化,整个训练过程包含两阶段,第一阶段固定主干网络训练60周期,第二阶段则使用小学习率对整个网络进行200周期的fine-tune

Experiments

  训练共需要512G内存,8张V100,下面的实验主要跟弱监督的细粒度算法进行对比,即不需要额外的标注的细粒度算法

CUB-200-2011 Dataset

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

Stanford Cars Dataset

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

Aircraft Dataset

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

Ablation Study

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

  • Effectiveness of the tree architecture

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

  如图5所示,使用树状结构能够显著提升准确率,使用Grad-CAM产生heatmap来对叶子节点对应的响应区域进行可视化,发现不同的叶子节点关注的特征区域各不一样

  • Height of the tree

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

  • Asymmetrical architecture of the tree

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

  论文对比左右路径的attention transformer数的对称性对识别的影响

  • Effectiveness of the attention transformer module

  如图5所示,attention transformer模块能够有效地提升模型的准确率

  • Components in the branch routing module

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

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

  论文发现不同的分支路由模块关注的特征区域也不一样,图6的可视化结果分别为图2的R1、R2和R3节点使用Grad-CAM得到的响应区域

CONCLUSION

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



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

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


推荐阅读
author-avatar
君与龙_501
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有