AAAI 2020 | 反向R?削弱显著特征为细粒度分类带来提升
论文提出了类似于dropout作用的diversification block,通过抑制特征图的高响应区域来反向提高模型的特征提取能力,在损失函数方面,提出专注于top-k类别的gradient-boosting loss来优化训练过程,模型在ResNet-50上提升3.2%,算法思路巧妙,结构易移植且效果也不错,值得学习
论文:Fine-grained Recognition: Accounting for Subtle Differences between Similar Classes
Introduction
在FGVC(fine-grained visual categorization)上,一般的深度学习模型都是通过学习输入图片到输出标签的映射,这样会导致模型倾向于专注少部分显著区域来同时区分模糊的种群内(inter-class)相似性和种群间(intra-class)的变化
如图1所示,一般的深度学习模型的attention经常密集地集中在小部分区域,因此只会提出有限的特征。因此,论文建议分散attention来构建多样的分布在特征图上的特征。因为在特征层面进行attention分散,在预测时则需要反过来,例如只关注最相似的类别来提高模型的辨别能力。通过关注相似的类别以及分散模型的attention,论文实际是在让模型避免对训练集的overfiting,增加泛化能力。论文的主要贡献如下:
- 提出gradient-boosting loss,通过适当地调整梯度更新的幅度来解决高度相关类别的模糊部分
- 提出diversification block,掩盖显著的特征,从而迫使网络去寻找外观相似的类别的不易察觉的不同点
- 论文提出的方法能够加速模型的收敛以及提高识别的效果
Method
论文提出的方法能简单地接到所有分类网络中,结构如图2所示。使用论文的方法,需要将主干网络的所有global pooling layer和最后的fully conntected layer替换成1x1 convolution,ouput channel等于类别数,模型主要包含两个部分:
- diversification module,用于迫使网络去获取更多不易察觉的特征,而非专注于明显特征
- gradient boosting loss,使模型在训练时专注于容易混淆的类别
Diversification Block
考虑如图2中$C$个类别的多标签分类任务,$I$为训练图片,$l\in J, J={1,2,...,C}$是对应的GT,diversification block的输入是类别特定(category-specific)的特征图$M\in R^{C\times H\times W}$ ,由修改后的主干网络输出。标记$M={M_c : c\in [1,C]}$,其中$M_c\in \mathbb{R}^{H\times W}$是对应类别$c^{th}$的独立特征图。diversification block的核心思想是抑制$M$中的明显区域,从而迫使网络去提取其它区域的特征,主要面临两个问题:1) 抑制哪些特征? 2) 怎么抑制?
Mask Generation
下面解释如何产生用于指明抑制区域的mask,定义$B={B_c : c\in [1, C]}$,$B_c\in \mathbb{R}^{H\times W}$是二值抑制mask对应特征图$M_c$,1表示抑制,0表示不抑制
Peak suppression
首先对特征图的峰值进行随机抑制,因为这是对分类器最显著的部分,$P_c\in \mathbb{R}^{H\times W}$是$M_c$的峰值mask,'*'是element-wise的相乘,而$r_c$是服从伯努利分布的随机值,即有$p_{peak}$的概率为1
Patch suppression
将每个$M_c$分成多个固定大小的patch,定义l行m列的patch为$M_c^{[l,m]}\in \mathbb{R}^{G\times G}$,$G_c$为patch的集合
$B_c^{''}\in \mathbb{R}^{H\times W}$对应$M_c$的抑制mask,跟峰值的mask一样,使用伯努利分布对块进行赋值,随机值为1的块将整块进行抑制,$[0, 1]\in \mathbb{R}^{G\times G}$
由于只考虑非峰值点,因此将峰值点的值设为0
最后将两种mask相加得到最后的抑制mask
Activation Suppression Factor
$M_c^{'}$为抑制后的特征图,$\alpha$为抑制因子,后面的实验设置为0.1
在进行特征抑制后,对特征进行global average pooling来获取最后的置信度$s\in \mathbb{R}^{1\times C}$
Gradient-boosting Cross Entropy Loss
diversification module用于发现更多不易察觉的细微特征,而gradient-boosting loss则是避免容易混淆的类别的误分
Loss Function
论文认为,目前使用最广的交叉熵损失函数平均地考虑了所有的负类别,而在细粒度分类中,模型更应该关注相似的负类别,因此提出gradient-boosting cross entropy(GCE),只专注于top-k个负类别
首先定义$J'$为所有的负类别,$J'={i : i\in [1,C]\land i\neq l }$,$s'={s_i, i\in J'}$为所有负类别的得分,$t_k$为负类别的top-k类别集合,将$J'$分别top-k集合和非top-k集合
对交叉熵进行改造,只考虑top-k类别的计算,k一般设置为15
Gradient Boosting
公式13和公式14分别是交叉熵和GCE的梯度回传公式
根据公式10和公式11的定义,可以发现公式15的包含关系
因此可以推出GCE的梯度是要比交叉熵的梯度要大的,使用GCE能够让模型专注于区分混淆类别
Training and Inference
diversification block仅在训练阶段使用,在测试阶段不再使用,改为将完整的特征图输入到global average pooling中
Experiments
实验在5个最常用的数据机上进行
Quantitative Results
其中两个数据集的结果如表2、表3所示,可以看到,论文提出的方法在效果上的提升还是挺不错的,而且参数量比较小,在另外几个数据集上,论文提出的方法也是比其它方法要出色
Ablation Study
Diversification block (DB)
使用diversification block能让ResNet-50的性能提升0.8%
Gradient-boosting loss
如表4所示,使用gradient-boosting loss能让ResNet-50+DB从86.3%提升到87.7%,提升要比其它损失函数方法要好
Suppressing Factor
从实验看出,抑制因子$\alpha$对实验结果影响挺大的,选择0.1的时候表现最好
Choices of k
top-k的数量选择对结果影响也是比较大的,选择top-15的时候效果最好
Convergence Analysis
从图5可以看出,论文提出的方法收敛速度更快,尽管可以看到原始方法在训练集上的准确率比论文提出的方法要好,但是在测试集的表现不好,这说明原始方法对训练集有点过拟合了
Qualitative Results
从图4可以看出,论文提出的方法提取了更多的特征区域
ImageNet Results
为了进一步验证论文提出的模型的效果,在ImageNet上进行了实验。由于论文的方法专注于难样本,因此在50轮后的训练才进行对比,可以看到论文的方法的效果在ImageNet上还是不错的
Conclusion
论文提出了diversification block以及gradient-boosting loss,diversification block通过随机抑制响应高的区域引导模型学习更多的不易察觉的特征,有点类似dropout的思想,而gradient-boosting loss则让模型专注于top-k个类别的学习,加大对应类别的梯度回传,使得训练收敛更快且提升性能。总体而言,论文的思路清晰,而且效果还是有的,可以实验下,然后当作基本方法加入到平时网络的架构中,特别是后面的gradient-boosting loss
写作不易,未经允许不得转载~
更多内容请关注 微信公众号/知乎专栏【晓飞的算法工程笔记】
AAAI 2020 | 反向R?削弱显著特征为细粒度分类带来提升的更多相关文章
- CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021
论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现细微的特征变化.除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看 来源 ...
- Infrared-Visible Cross-Modal Person Re-Identification with an X Modality (AAAI 2020)
Infrared-Visible Cross-Modal Person Re-Identification with an X Modality (AAAI 2020) 1. Motivation 可见 ...
- 京东云与AI 10 篇论文被AAAI 2020 收录,京东科技实力亮相世界舞台
美国时间2月7-12日,AAAI 2020大会在纽约正式拉开序幕,AAAI作为全球人工智能领域的顶级学术会议,每年评审并收录来自全球最顶尖的学术论文,这些学术研究引领着技术的趋势和未来.京东云与AI在 ...
- AAAI 2020论文分享:通过识别和翻译交互打造更优的语音翻译模型
2月初,AAAI 2020在美国纽约拉开了帷幕.本届大会百度共有28篇论文被收录.本文将对其中的机器翻译领域入选论文<Synchronous Speech Recognition and Spe ...
- Region Normalization for Image Inpainting, AAAI 2020
论文:Region Normalization for Image Inpainting, AAAI 2020 代码:https://github.com/geekyutao/RN 图像修复的目的是重 ...
- ACNet: 特别的想法,腾讯提出结合注意力卷积的二叉神经树进行细粒度分类 | CVPR 2020
论文提出了结合注意力卷积的二叉神经树进行弱监督的细粒度分类,在树结构的边上结合了注意力卷积操作,在每个节点使用路由函数来定义从根节点到叶子节点的计算路径,结合所有叶子节点的预测值进行最终的预测,论文的 ...
- AAAI 2020 | DIoU和CIoU:IoU在目标检测中的正确打开方式
论文提出了IoU-based的DIoU loss和CIoU loss,以及建议使用DIoU-NMS替换经典的NMS方法,充分地利用IoU的特性进行优化.并且方法能够简单地迁移到现有的算法中带来性能的提 ...
- Spiking-YOLO : 前沿性研究,脉冲神经网络在目标检测的首次尝试 | AAAI 2020
论文提出Spiking-YOLO,是脉冲神经网络在目标检测领域的首次成功尝试,实现了与卷积神经网络相当的性能,而能源消耗极低.论文内容新颖,比较前沿,推荐给大家阅读 来源:晓飞的算法工程笔记 公众 ...
- 史上最详细的VM虚拟机安装Kali-linux教程(以2020.1版本为例,含下载地址+默认提升为root权限)
一.官方下载 Kali Linux 官方网址:www.Kali.org下载方式分两种:http 下载和 bt 下载(由于是国外网站 http 方式下载会非常慢),选择对应版本点击即可下载. 二.创建新 ...
随机推荐
- 免密码 ssh 到其它机器
背景:在配置 hadoop 的时候这样设置会比较方便.目标:A 机器上输入 ssh root@B 可以直接访问,不需要输入密码 步骤: 首先在 A 机器上生成密钥对,一路回车 1 ssh-keygen ...
- Maven本地仓库在C盘下无法自动下载相关依赖的问题
打开项目时用管理员权限!!!
- OSX编译安装Python3及虚拟开发环境Virtualenv
0X00.前言 因为工作原因,最近主要做Python开发,刚好电脑系统重装之后所有的东西都需要重新配置.此文主要记录OSX下通过源码编译安装Python3以及安装虚拟开发环境Virtualenv. 0 ...
- frp端口映射穿透内网
前言 frp 是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务,支持 TCP.UDP.HTTP.HTTPS 等协议类型,并且 web 服务支持根据域名进行路由转发. Github: ...
- Github 绑定域名添加https的方法 2019年9月更新
官方教程 https://help.github.com/en/articles/using-a-custom-domain-with-github-pages 打开 https://github.c ...
- python语法生成器、迭代器、闭包、装饰器总结
1.生成器 生成器的创建方法: (1)通过列表生成式创建 可以通过将列表生成式的[]改成() eg: # 列表生成式 L = [ x*2 for x in range(5)] # L = [0, 2, ...
- Leetcode 981. Time Based Key-Value Store(二分查找)
题目来源:https://leetcode.com/problems/time-based-key-value-store/description/ 标记难度:Medium 提交次数:1/1 代码效率 ...
- 混乱中的ICO平台,会不会是下一个P2P的重灾区?
当众多巨头和创业者还在为共享打车.共享单车.VR.IP化.互联网金融沉迷时,一种全新的"众筹"正在造就一个又一个暴富神话.其名为ICO,即首次代币众筹,一般指区块链初创项目在众筹平 ...
- Git常用的操作指令
修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了.想要撤消刚才的提交操作,可以使用--amend 选项重新提交: 1 $ git commit --amend -m& ...
- 作为前端,你需要懂得javascript实现继承的方法
在ES6之前,javascript不跟其他语言一样,有直接继承的方法,它需要借助于构造函数+原型对象模拟实现继承.现在我们可以利用ES6的extends方法实现继承,如果想了解更多有关ES6实现的继承 ...