這是CVPR 2019 一篇人臉識別的文章。三個創新點:

1. 針對類別不均衡問題,改進 margin-based softmax loss,不再對每一類設置固定大小的margin,而是自適應的學習margin,使得訓練樣本少且類內方差小的類有更大的margin。

2. 由於人臉數據集中的類別數非常大(包含的人數非常多),但對於每一個人而言,和他長得比較像的、容易分錯的人就那麼幾個。為了高效的進行訓練,提出了一種Hard Prototye Mining,使得訓練時只關注相近的類別。

3. 同樣是出於訓練效率的角度,提出了改進版的難例挖掘——Adaptive Data Sampling。其對每一個訓練樣本都分配一個權重,如果某樣本被分類正確,則減小其權重,使其之後被選到的概率減小,而對於分錯的樣本則增加其權重。這樣在訓練後期,總被分對的樣本就不會再參與訓練,網路會專註於學習難分樣本。

這幾個點看起來好像不是很大,但其實已經很不容易了,主要還是識別任務確實已經非常成熟了,CVPR今年識別相關工作比例之低也說明瞭這一點。

關於創新點1:

之前的margin-based softmax loss 確實可以減小類內方差,擴大類間方差,如圖1,但是卻沒有考慮到樣本不均衡問題。對於訓練樣本量較少、且訓練樣本的類內方差不是很大的類別,這種loss 對類內方差 squeeze 得不夠小,如圖2 (a) 所示。圖2 中,紅色是樣本數量充足的類,藍色是樣本數較少的類。由圖2(a) 可見,紅色類的大量樣本和藍色類的少量樣本都被壓縮在大小相同的特徵空間,然而實際上,由於藍色類別樣本量少,而且現有樣本的類內方差小,因而其潛在的實際特徵空間是更大的,實際的類內方差也更大,類間方差也相對減小了,如圖中淺藍色區域所示,這就有點違背了最初壓縮類內方差、擴大類間方差的初衷。而作者提出的AdaM Softmax 如圖2(b) 所示,藍色類的少量樣本被壓縮的更緊了,這就可以使得藍色類潛在的實際特徵空間也是被有效壓縮的。

下面依據公式來看。首先對於樣本 x_j 和其對應的標籤 y^{j} ,原始的 Softmax Loss 為:

M為batch size,p_{ij} 是樣本 x_j 被分為 y^{j} 類的概率,W_i 就是神經網路最後一層全連接層對應於第i類的權重。W_{i}^{T}x_j 又可寫成:

各種各樣的 margin based softmax loss 都是根據這個式子,在角度上加margin 的,如L Softmax,A-Softmax,CosFace 等。以 Cos Face 為例,loss如下:

其中,s是W_{i}^{T}x_j中的幅度部分。該式中的margin m對每一類都是相同的,因而就會導致對樣本少、且訓練樣本類內方差小的類別的壓縮不夠。本文提出的改進如下:

對每一類都指定一個對應的margin,在網路中自動學習。另外,由於自己學出來的margin m有可能為0,作者有加了一項類別不變的margin:

最終的Adaptive Margin Softmax Loss 為:

根據實驗結果來看,這個loss 確實達到了預期效果,margin隨著類別訓練樣本數的減少而增大:

再來看創新點2:

人臉識別數據集的類別數量往往成千上萬,也就是說其往往包含非常多的人(identity),但是對每個人(類別)而言,和他長得比較像的(類間方差較小的)人是很少的,那麼在訓練時其實不必和所有類進行比較來計算 Softmax loss(指數運算的計算量還是有點大的)。另一方面,對於每一個類,其對應的全連接層權重 W_i描述了該類所在的角度(可參考圖2理解,每一類的樣本都在該類權重W_i的一定範圍內)。於是,作者針對每一類i,用 ANN (angle nearlest neighbor) graph 找到與該類最接近的k個類別,維護一個與類別i相對應的隊列(queue) Q_i。那麼在每一次迭代中,先找出batch 中所有樣本對應的類C_a,再根據各自的隊列Q_i找出所有與batch 中的類最相關的類C_b,最終用C_b的W作為這次迭代的權重矩陣進行計算。當然,這個隊列也是動態維護的。

創新點3就不多說了,就是開頭說的那樣。

參考文獻:

H. Liu, X. Zhu, Z. Lei, S. Li, "AdaptiveFace: Adaptive Margin and Sampling for Face Recognition," in Proc. IEEE Conf. Computer Vision and Pattern Recognition, 2019, pp. 11947-11956.

推薦閱讀:

相關文章