Pairwise Confusion for Fine-Grained Visual Classification 閱讀筆記
1) 摘要
儘管細粒度視覺分類資料集的樣本數量很少,但是卻存在著顯著的類內差異性和類別間相似性。然而,先前的工作通常採用定位或者分割來解決類內的差異性,但是,類別間相似性依然影響特徵的學習從而降低分類器的效能。針對這一問題,我們提出了一種可端到端驚醒訓練的新奇的優化方法--Pairwise Confusion(PC),在啟用中故意引入混淆來減少過擬合。通過實驗證明PC能夠提高定位能力並且在六個細粒度任務資料集上實現了最佳的效能。在訓練階段不需要額外的引數調整,在測試階段不會增加額外的耗時,PC是很容易應用的。
2) 論文介紹
在訓練的過程中,如果兩個樣本具有非常相似的內容,但是卻是不同的類別標籤,這個時候使用交叉熵損失函式就會強迫神經網路挖掘較高置信度的特徵,從而減小訓練損失。這種情況在細粒度分類任務中尤其嚴重,所以,我們提出了在輸出的logit啟用中引入混淆,來強迫網路挖掘較少的判別特徵,從而減少在特定樣本上的過擬合。具體而言,我們打算通過最小化訓練集的隨機樣本對之間的預測概率分佈之間的距離來混淆網路。
3) 相關工作
(1) Fine-Grained Visual Classification
(2) Pairwise Learning
(3) Learning from Label Confusion
4) 模型結構
5) 成對混淆
當度量兩個分佈的相似性的時候,我們往往會首先想到KL散度,但是論文的3.1節證明了KL散度的不可行性,所以採用了歐式距離,並且在論文的3.2節給出了證明。
演算法:
使用的是權重共享的孿生網路,每個網路有單獨的交叉熵損失,兩個網路之間有混淆損失。具體的,在訓練的時候,將batchsize的前半部分輸入到網路1中,後半部分輸入到網路2中,這樣就把一個batchsize的資料分成兩部分,兩部分的資料一一對應,判斷標籤是否相同,如果相同就不存在混淆損失,如果不同就計算混淆損失。在測試的時候只用一個卷積神經網路。
6) 引數設定及其實驗結果
(1) 引數設定
(2) 實驗結果
7) pytorch程式碼
自我感覺官方的程式碼沒有比較label是否相同,相同與否都做了混淆損失的計算,跟虛擬碼不相符,所以自己添加了label比較的部分。