細粒度分析--RACNN

論文:https://ieeexplore.ieee.org/document/8099959
代碼:https://github.com/11-626/RA-CNN
CVPR2017的Oral文章。
概述:在multiple scales上,以類似cascade network的形式使得網絡相互增強學習,進行基於region 的特徵表達。
在這裏插入圖片描述
橫向:傳統vgg分類網絡,用來classification;縱向:APN,用來獲取attention map,本質爲兩層全連接層。
Multi-task formulation:
(1)分類
在這裏插入圖片描述
f(.)表示將卷積特徵映射到可以與類別條目匹配的特徵向量,通過fc層+softmax層實現,得到fine-grained categories概率。
(2)區域檢測

在這裏插入圖片描述
用來預測得到attention region 的box信息。g(.)表示兩層堆疊的全連接層tx, ty denotes the square’s center coordinates in terms of x and y axis, respectively, and tl denotes the half of the square’s side length.
作者代碼中,第一層全連接將W* X特徵轉化成1* 1 * 1024的向量,第二層的全連接,Channel=3,用來輸出[tx,ty,tl]。
Attention localization and amplifification:
得到attention region 的box信息之後,接着就要根據這行信息在原圖中進一步處理,用來得到下一層網絡訓練的數據集。
① 獲取Attention region 信息tx,ty,tl,其中tl爲Attention region 長寬的一半,如下圖所示:
在這裏插入圖片描述
(爲什麼tl爲Attention region 長寬的一半,就是爲了方便用tx,ty,tl這三個Attention region的信息表示Attention region左上角和右下角的位置座標)
② 獲取 Attention Mask.
在這裏插入圖片描述
X表示原圖;中間操作表示逐元素相乘;M(.)表示
在這裏插入圖片描述
所以
在這裏插入圖片描述
所以當K is large enough時,在位於Attention region內部的像素,x-tx(tl)正數,x-tx(br)爲負數,y-ty(tl)正數,y-ty(br)負數,則M(.)近似1* 1;而在Attention region外部的像素,近似0*0,所以M(.)與原圖逐元素相乘得到 Attention Mask.,其實就是相當於在原圖中截取Attention region ROI。
獲得 Attention Mask 之後,對 Attention Mask進行雙線性插值,使得 Attention Mask的大小與原圖大小一樣,這樣便得到下一層網絡的輸入。
LOSS部分:
在這裏插入圖片描述
同理,第二個loss中的2表示有2與之並列的網絡。
在這裏插入圖片描述
代碼中,margin爲一個0.05的常量。

rank_loss = (pred[i]-pred[i+1] + 0.05).clamp(min = 0);

第一個Lcls,爲 Multi-task formulation中分類中的loss,使用的是普通的交叉熵損失函數,第二個Lrank損失函數,表示Lcls預測結果的正確預測的概率。根據Lrank公式可知,當後一層網絡的準確率逐漸大於前一層網絡準確率時,Lrank會越來越收斂。說明,在Fine-grained 問題中,局部 attention map 訓練的準確率要高於整圖訓練的準確率。
思考:如果使用多個局部 attention map 代替原圖訓練,是不是會提高準確率?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章