论文提出了类似于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表示不抑制

  1. Peak suppression

  首先对特征图的峰值进行随机抑制,因为这是对分类器最显著的部分,$P_c\in \mathbb{R}^{H\times W}$是$M_c$的峰值mask,'*'是element-wise的相乘,而$r_c$是服从伯努利分布的随机值,即有$p_{peak}$的概率为1

  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?削弱显著特征为细粒度分类带来提升的更多相关文章

  1. CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021

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

  2. 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 可见 ...

  3. 京东云与AI 10 篇论文被AAAI 2020 收录,京东科技实力亮相世界舞台

    美国时间2月7-12日,AAAI 2020大会在纽约正式拉开序幕,AAAI作为全球人工智能领域的顶级学术会议,每年评审并收录来自全球最顶尖的学术论文,这些学术研究引领着技术的趋势和未来.京东云与AI在 ...

  4. AAAI 2020论文分享:通过识别和翻译交互打造更优的语音翻译模型

    2月初,AAAI 2020在美国纽约拉开了帷幕.本届大会百度共有28篇论文被收录.本文将对其中的机器翻译领域入选论文<Synchronous Speech Recognition and Spe ...

  5. Region Normalization for Image Inpainting, AAAI 2020

    论文:Region Normalization for Image Inpainting, AAAI 2020 代码:https://github.com/geekyutao/RN 图像修复的目的是重 ...

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

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

  7. AAAI 2020 | DIoU和CIoU:IoU在目标检测中的正确打开方式

    论文提出了IoU-based的DIoU loss和CIoU loss,以及建议使用DIoU-NMS替换经典的NMS方法,充分地利用IoU的特性进行优化.并且方法能够简单地迁移到现有的算法中带来性能的提 ...

  8. Spiking-YOLO : 前沿性研究,脉冲神经网络在目标检测的首次尝试 | AAAI 2020

    论文提出Spiking-YOLO,是脉冲神经网络在目标检测领域的首次成功尝试,实现了与卷积神经网络相当的性能,而能源消耗极低.论文内容新颖,比较前沿,推荐给大家阅读   来源:晓飞的算法工程笔记 公众 ...

  9. 史上最详细的VM虚拟机安装Kali-linux教程(以2020.1版本为例,含下载地址+默认提升为root权限)

    一.官方下载 Kali Linux 官方网址:www.Kali.org下载方式分两种:http 下载和 bt 下载(由于是国外网站 http 方式下载会非常慢),选择对应版本点击即可下载. 二.创建新 ...

随机推荐

  1. EL表达式详细教程

    EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...

  2. 吴裕雄--天生自然KITTEN编程:一箭穿心

  3. spring-boot-学习笔记(三)-过滤器

      过滤器有两种配置方式,一种是通过注解来完成,一种是通过自定义配置类来设置 这里假设的场景是,定义一个过滤器,过滤所有请求,如果参数中没有username信息则重定向到login_page登录页面, ...

  4. break、continue与数组

    一. 1.break与continue.这两个关键字一般放在循环的花括号里面使用.break——结束整个循环.continue——结束本次循环,进入下次循环. break的案例:    int i = ...

  5. Introduction Of Gradient Descent

    不是一个机器学习算法 是一种基于搜索的优化方法 作用:最小化一个损失函数 梯度上升法:最大化一个效用函数 import matplotlib.pyplot as plt import numpy as ...

  6. Linux USB 鼠标驱动程序详解(转)

    Linux USB 鼠标驱动程序详解 USB 总线引出两个重要的链表!一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表.设备链表包含各种系统中的 USB 设备以 ...

  7. XML的相关基础知识分享(二)

    前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义 ...

  8. github浏览器无法访问,并且idea无法push项目

    github浏览器无法访问,并且idea无法push项目 原因:前一晚还能正常访问github,今天就无法提交项目了.前一步的操作为删库,然后改库.估计是因为dns出现了问题,具体问题不知道. 网上一 ...

  9. Windows 10 右键 在此处打开 CMD

    1. 打开注册表 # 1. 使用快捷键打开 “运行” # win + r # 2. 在 “运行” 中输入 # regedit # 3. 回车 2. 创建与设置 OpenCMDHere # 1. 切换到 ...

  10. 得亏了它,我才把潜藏那么深的Bug挖出来

    2020年写了很多事故解决的文章,并不是我绞尽脑汁想出来的,而是真的遇到了这些问题.通过文章的方式记录下来,分享出去,才有意义. 事故背景 首先看下面的图吧,这是我从cat上截的图. 可以看到是一个R ...