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只是對高峯像素點就行進行抑制(抑制之後的圖稱爲BB'),但是還有一些雖然不是高峯值但是也是值得抑制的部位,所以先對特徵圖隨機(同樣是根據伯努利分佈隨機)分patch,然後隨機的對每個patch進行抑制(抑制之後的圖稱爲BB'')然後總的圖爲B=B+BB=B'+B''
    這裏有個小問題需要注意: 在對Patch進行抑制的時候,patch塊中的像素值可能已經在peak suppression操作中被抑制過了,所以要略過這寫被抑制過的點,不然就會出現mask上爲2的值,這樣就不是二值圖了。

  3. 最後通過如下公式決定是否抑制和抑制強度,α\alphaActivation 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 的作用在放在訓練初期不合理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章