細粒度分析--WS-DAN

論文:https://arxiv.org/pdf/1901.09891.pdf
代碼:https://github.com/GuYuc/WS-DAN.PyTorch
論文主要訓練流程及思想爲:(1)生成attention maps;(2)Bilinear Attention Pooling(BAP); (3)loss設計
在這裏插入圖片描述
(1)生成attention maps
①首先使用Inceptionv3等普通網絡作爲主幹網絡提取特徵,得到特徵圖F,
在這裏插入圖片描述
②然後對F進行1*1卷積操作,得到attention map,其中,這裏的M爲一個經驗值。
在這裏插入圖片描述
實驗證明,attention map數越多,模型精度會越高,但是直到增加到32時,模型精度趨於穩定,所以,論文中,便將M設置成32.
32個attention map表示原圖目標中32個不同的部位,那麼就是一張原圖,會生成32張attention maps。
在這裏插入圖片描述
(2)BAP
在這裏插入圖片描述
①將F與每個channel 的attention map逐元素相乘(element-wise multiplication),得到32個Part Feature Maps組合。
在這裏插入圖片描述
Ak表示第k個通道的attention map。
②對每個Part Feature Maps組合進行GAP,或者GMP,或者卷積操作,進行降維。
在這裏插入圖片描述
每組Part Feature Maps中的一張Part Feature Map,最終降維變成一個數,那麼一組Part Feature Maps通過降維操作(論文裏使用GAP)就變成一組一維tensor。也就是說,一張attention map與F融合後,最終成爲一組一維tensor。然後將這32張attention map與F融合後的結果拼接(concatenate)在一起,便形成了最後線性分類層的輸入特徵Feature Matrix。
(3)loss 設計
得到Feature Matrix之後,再接個loss,就能完成網絡構建了。論文中總共有2處loss,一處爲普通分類的交叉熵損失函數,論文中定義爲預測粗粒度概率(Predict coarse-grained probability)的函數;另一處爲均方差損失函數,文中定義爲attention歸一化約束(attention Regularization),這個loss,對輔助部分,即通過attention maps增強得到的數據不使用,如下圖所示:
在這裏插入圖片描述
fk爲對每個Part Feature Maps組合進行GAP降維後的結果,表示原圖第k部分的attention map與F融合的結果;初始值爲0,是一個學習出來的tensor,其表示的意義爲objects part`s feature center.學習更新過程爲:
在這裏插入圖片描述
整個LA設計的初衷爲:在細粒度分類中,objects之間的差別一般在於物體局部的某個part,所以,我們希望生成的各個attention map不要有太大差異,比如對於鳥類品種的細粒度分類,我們希望,生成的所有attention map大多數在鳥頭部的part。所以設計的LA就是能夠使得每個特徵圖能夠固定到每個parts的中心。
輔助部分
輔助部分便是對attention maps進行數據增強。論文中存在兩處,一處爲attention cropping;另一種爲attention Dropping。首先看這兩輔助部分給模型結果帶來的優勢。
在這裏插入圖片描述
(1)attention cropping
對歸一化之後的attention maps進行興趣域選取,所截取的興趣域文中叫Crop Mask。通過設置一個超參數,將歸一化的attention map中,像素值大於這個超參數的值置1,小於這個超參數的值置0。這裏設置爲1的區域我們重點關注的FGVC細節區域。得到這塊區域之後,對這塊區域進行上採樣到原圖大小,也就是擴大細節方式,作爲增強的數據集,參與模型訓練。
(2)attention dropping
這種方式與attention cropping正好相反,attention dropping的過程爲將Crop Mask的區域從原圖中eliminated去,將剩下的其他parts作爲訓練集參與模型訓練。

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