點擊上方「AI公園」,關注公眾號,選擇加「星標「或「置頂」
Triplet的兩大問題,計算複雜度和噪聲敏感,看看這篇文章如何用一種對Triple的近似的方法來解決這兩大問題。
三元組損失是ReID中非常常用的損失, 三元組損失的主要問題在於其計算上非常貴,在大數據集上的訓練會受到計算資源的限制。而且數據集中的噪聲和離群點會對模型造成比較危險的影響。這篇文章要解決的就是這兩個問題,提出了一種新的三元組損失,叫做fast-approximated triplet(FAT)損失,下面來看下這個損失具體是什麼樣的。
1. 介紹上面說過,三元組損失的一個問題是計算量的問題,三元組的組合數量和樣本數量是3次方的關係,這個數字是非常龐大的。而且,大量的三元組實際上是不重要的,也就是簡單樣本,對模型的優化其實是沒什麼用的。如果是隨機採樣的話,確實可以加速訓練,但是容易不收斂,所以現在都會使用各種困難樣本挖掘的方法。不過,這些困難樣本挖掘的方法會產生採樣的偏差,對於離群點會很脆弱。
本文的貢獻:
提出了FAT loss,提升了標準的triplet loss的效率。首次證明了處理了標註噪聲可以進一步提升ReID的性能。通過分配soft label可以學到更魯棒的特徵。2. 方法2.1 Fast Approximated Triplet (FAT) LossFAT loss的推導如下:
我們首先有下面的三角不等式:
這個式子裡,ca和cn是聚類中心。d是距離函數。
對於離群點,上界包含兩項,p2s(點到集合)的距離,這個依賴於anchor點,再加上簇的內聚性的懲罰項,定義為最大簇的「半徑」。我們最小化這個上界,就得到了FAT loss:
這個損失和完整的triplet loss的性能相當,當時效率高了很多。很明顯可以看到,FAT loss的計算量對於數據集的大小是線性複雜度。
歸一化的FAT Loss
做為一個margin loss,對於輸入尺度是很敏感的。所以,往往會對輸入特徵進行歸一化。這樣就得到歸一化的FAT loss:
這裡,R『類似於歸一化的樣本集的半徑。實際上,我們發現,加上一個交叉熵loss會對訓練更加穩定,這樣就得到了混合loss:
簇中心的選擇
FAT的簇中心的選擇也是很有講究的,有四個選擇:1)簇特徵的平均值,2)歸一化的簇特徵的平均值,3)簇特徵的平均值的歸一化,4)歸一化的簇特徵的平均值的歸一化。具體如下:
可視化圖:
實驗表明,第4中方式,歸一化的簇特徵的平均值的歸一化表現的最好。
ReID中的標籤噪聲主要3種類型:1)圖像被分配到了錯誤的id類別中,2)圖像不屬於任何一種id類別,3)同一張圖像同時存在多個標籤。三元組損失對這些標籤噪聲是很敏感的。由於FAT loss用的是聚類中心,所以對於噪聲點影響不會那麼明顯。我們以此提出了一種標籤蒸餾的teacher-student模型。方法如下:
1、首先,用交叉熵,用分類的方式訓練5個epochs,這裡包括有噪聲的數據。採用這種方式訓練的網絡對於簡單的樣本具有較高的置信度。
2、重新訓練5個epochs,這次只使用那些置信度高的樣本。
3、不斷的重複上面的過程。
教師模型訓練完了之後,使用教師模型的預測作為soft label來代替之前的hard label,然後使用FAT loss來訓練學生模型。只有那些置信度高的樣本才會參與計算聚類中心,如果使用了混合損失,soft label也會用作交叉熵的target。
3. 實驗結果FAT loss在幾個數據集上的效果:
教師-學生網絡的各自的效果:
論文連結:https://arxiv.org/pdf/1912.07863
代碼連結:https://github.com/VITA-Group/FAT
或者在公眾號後臺回覆:「FAT」,可下載打包好的論文和代碼。
請長按或掃描二維碼關注本公眾號
喜歡的話,請給我個好看吧!