文章目錄
前言
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
先簡單說一下整個流程:
- 採用一個backbone進行特徵提取,最終得到2048*C(這裏的C是class 不是channel) 2048應該是height * width的結果,但是我暫時還不知道是多少乘多少
- 然後將每個 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的點表示不需要被抑制
對於第二個問題:
-
Peak Suppression
隨機抑制高峯位置,因爲它們是對於分類器來說最有區分度的位置。對於特徵圖最大的位置,使用伯努利分佈來判斷是否遮罩 -
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只是對高峯像素點就行進行抑制(抑制之後的圖稱爲),但是還有一些雖然不是高峯值但是也是值得抑制的部位,所以先對特徵圖隨機(同樣是根據伯努利分佈隨機)分patch,然後隨機的對每個patch進行抑制(抑制之後的圖稱爲)然後總的圖爲。
這裏有個小問題需要注意: 在對Patch進行抑制的時候,patch塊中的像素值可能已經在peak suppression操作中被抑制過了,所以要略過這寫被抑制過的點,不然就會出現mask上爲2的值,這樣就不是二值圖了。 -
最後通過如下公式決定是否抑制和抑制強度,爲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
總結
- proposed a novel approach to better discriminate closely related categories in fine-grained classification task
- 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.
- solution is both simple and elegant, leads to higher accuracy and demonstrates better computational efficiency
不足在於:
- 隨機的選取suppress的區域,不是很合理。
- GCE 的作用在放在訓練初期不合理。