Fine-grained Recognition: Accounting for Subtle Differences between Similar Classes论文阅读解析

前言

Fine-grained Recognition: Accounting for Subtle Differences between Similar Classes这是AAAI2020的Paper。首先这不是一篇垃圾论文,虽然没有开源代码。作者是苏黎世联邦理工学院,2020年QS世界大学排名中列第6位。Inception Institute of Artificial Intelligence也是全球顶尖的人工智能研究院。虽然有人评价他的gradient-boosing loss华而不实,实际作用不大,但是其中的想法还是很有启发意义的。
话不多说,开始正文,如有不足,还请斧正

正文

Motivation

由文题Fine-grained Recognition: Accounting for Subtle Differences between Similar Classes 可知,这篇论文关注的是细粒度识别文题中相似类之间的细微差别的问题。
由此可以抓住两个重点:1. Subtle Differences 2.Similar Classes
论文的两个亮点1. diversification block 2.gradient-boosting loss正是解决这两个问题的法宝

回过头来想一想,为什么会有这个问题呢?
第一,以鸟的识别为例,鸟头的位置会成为网络区别不同类的关键位置(对梯度的贡献跟有效),然而如羽毛和其他位置也对网络性能的增强也有作用,但是普通的网络忽视了这些部位的作用。下面的第二行是普通网络的attention map,第三行是作者网络的attention map 作者的diversification block就是为了解决这个问题

第二,最常使用的CE loss(交叉熵损失函数)considering all negative classes equally,从人的角度,我们应该对困难样本多加学习,对难题多加训练,作者通过(gradient-boosting loss)达到这个目的,这是在CE loss的基础上做改进的(The gradient-booting loss focuses on difficult (confusing) classes for each
image and boosts their gradient

在这里插入图片描述
下面重点讲解diversification block 和gradient-boosting loss

Model

在这里插入图片描述
先简单说一下整个流程:

  1. 采用一个backbone进行特征提取,最终得到2048*C(这里的C是class 不是channel) 2048应该是height * width的结果,但是我暂时还不知道是多少乘多少
  2. 然后将每个 Mc input进diversification block,output *Mc’*然后进行GAP(global average pooling)最终用gradient boosting loss进行评判

diversification block

DB(diversification block)的核心内容在于:使用Mask图抑制(suppress)显著性最强的区域,迫使网络学习其他部位,现在问题就在于:
1. where to suppress?
2. how to suppress?

对于第一个问题:
首先根据生成的Mask二值图判断是否被抑制,值为1的点表示需要被抑制,0的点表示不需要被抑制
在这里插入图片描述
对于第二个问题:

  1. Peak Suppression
    在这里插入图片描述
    随机抑制高峰位置,因为它们是对于分类器来说最有区分度的位置。对于特征图最大的位置,使用伯努利分布来判断是否遮罩

  2. Patch Suppression
    还需要使用patch suppression的原因是:Peaks are the most discriminative regions,but there are other discriminative regions as well that encompass more subtle inter-class differences
    论文中这一步的解释有点繁琐,简单来说就是:peak suppression只是对高峰像素点就行进行抑制(抑制之后的图称为 B B' ),但是还有一些虽然不是高峰值但是也是值得抑制的部位,所以先对特征图随机(同样是根据伯努利分布随机)分patch,然后随机的对每个patch进行抑制(抑制之后的图称为 B B'' )然后总的图为 B = B + B B=B'+B''
    这里有个小问题需要注意: 在对Patch进行抑制的时候,patch块中的像素值可能已经在peak suppression操作中被抑制过了,所以要略过这写被抑制过的点,不然就会出现mask上为2的值,这样就不是二值图了。

  3. 最后通过如下公式决定是否抑制和抑制强度, α \alpha Activation Suppression Factor文中设置为0.1
    在这里插入图片描述
    直观上的效果如图:
    黑色部分表示抑制区域,由于是随机抑制,难免会产生一些问题,想一下有没有改进方案!!
    在这里插入图片描述

Gradient Boosting Loss

在这里插入图片描述
文中对这部分的解释也有点繁琐,下面我就用言简意赅的文字介绍一下:
作者提出了gradient-boosting cross entropy(GCE)来关注负类中置信度最高的k个类。根据阈值,将所有样本划分为两类,GCE只作用于negative class那一类。
**所以这里我就有一个问题:**只有网络在后期的时候才能知道哪些是positive classes 哪些是negative classes,所以在前期使用这个loss是不是不合理。
在这里插入图片描述
在这里插入图片描述
至于此GCE loss 有Boosting作用,论文中只给出证明,在这里我就不赘述。

Training and Inference

在这里插入图片描述
简单一句话:训练的时候使用diversification block,测试的时候不使用

Experiment

在这里插入图片描述
在这里插入图片描述

总结

  1. proposed a novel approach to better discriminate closely related categories in fine-grained classification task
  2. method has two novel components: (a) diversification block that forces the network to find subtle distinguishing features between each pair of classes and (b) gradient-boosting loss that specifically focuses on maximally separating the highly similar and confusing classes.
  3. solution is both simple and elegant, leads to higher accuracy and demonstrates better computational efficiency

不足在于:

  1. 随机的选取suppress的区域,不是很合理。
  2. GCE 的作用在放在训练初期不合理。
发布了29 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43343116/article/details/104293324
今日推荐