Elon Musk

  • 11

    获得赞
  • 3

    发布的文章
  • 0

    答辩的项目

论文翻译解析:细粒度分类

图像分类 深度学习

最后更新 2020-04-17 13:53 阅读 4088

最后更新 2020-04-17 13:53

阅读 4088

图像分类 深度学习

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)

image.png下面重点讲解diversification block 和gradient-boosting loss;

二、Model

image.png

先简单说一下整个流程:

  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的点表示不需要被抑制;

image.png

对于第二个问题:

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

image.png

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'),但是还有一些虽然不是高峰值但是也是值得抑制的部位,所以先对特征图随机(同样是根据伯努利分布随机)分patch,然后随机的对每个patch进行抑制(抑制之后的图称为B'')然后总的图为 B = B' + B''

这里有个小问题需要注意: 在对Patch进行抑制的时候,patch块中的像素值可能已经在peak suppression操作中被抑制过了,所以要略过这写被抑制过的点,不然就会出现mask上为2的值,这样就不是二值图了。

3. 最后通过如下公式决定是否抑制和抑制强度,α\alphaα为Activation Suppression Factor文中设置为0.1

image.png

直观上的效果如图:

image.png

黑色部分表示抑制区域,由于是随机抑制,难免会产生一些问题,想一下有没有改进方案!!

四、Gradient Boosting Loss

image.png

文中对这部分的解释也有点繁琐,下面我就用言简意赅的文字介绍一下:

作者提出了gradient-boosting cross entropy(GCE)来关注负类中置信度最高的k个类。根据阈值,将所有样本划分为两类,GCE只作用于negative class那一类。

所以这里我就有一个问题:只有网络在后期的时候才能知道哪些是positive classes 哪些是negative classes,所以在前期使用这个loss是不是不合理。

image.png

至于此GCE loss 有Boosting作用,论文中只给出证明,在这里我就不赘述。

五、Training and Inference

image.png简单一句话:训练的时候使用diversification block,测试的时候不使用;

六、Experiment

image.pngimage.png


总结

  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 的作用在放在训练初期不合理。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请附上原文出处链接和本声明。
本文链接地址:https://flyai.com/article/382
讨论
500字
表情
发送
删除确认
是否删除该条评论?
取消 删除