(原)Ring loss Convex Feature Normalization for Face Recognition


轉載請注明出處:

http://www.cnblogs.com/darkknightzh/p/8858998.html

論文:

Ring loss: Convex Feature Normalization for Face Recognition

https://arxiv.org/abs/1803.00130v1

 

理解的不對的地方請見諒

 

Ring loss將特征限制到縮放后的單位圓上,同時能保持凸性,來得到更穩健的特征。

該損失函數作為輔助的損失,結合Softmax或者A-softmax等損失函數,來學習到特征的模,因而唯一的超參數就是ring loss的權重。論文中在權重為0.01時效果最好。

論文中指出,arcface,cosface等在訓練時,損失函數之前將特征進行了歸一化,但網絡實際上並未學習到歸一化的特征。如下圖所示,a為訓練樣本的特征分布,b為測試樣本的特征分布,訓練樣本特征均集中在一定的夾角范圍內。但是對於測試樣本中模比較小的,其變化范圍比較大。

令F為深度模型,x為輸入圖像,則F(x)為特征。可優化下面的損失函數:

$\min {{L}_{s}}(F(x))\text{  s}\text{.t}\text{. }{{\left\| F(x) \right\|}_{2}}=R$

R為歸一化后特征的模。由於模的等式限制,導致實際上該損失函數是非凸的(這句話不太確定怎么翻譯,反正是非凸)。

因而Ring loss定義如下:

${{L}_{R}}=\frac{\lambda }{2m}\sum\limits_{i=1}^{m}{{{({{\left\| F({{x}_{i}}) \right\|}_{2}}-R)}^{2}}}$

相應的梯度計算如下:

$\frac{\partial {{L}_{R}}}{\partial R}=-\frac{\lambda }{m}\sum\limits_{i=1}^{m}{({{\left\| F({{x}_{i}}) \right\|}_{2}}-R)}$

$\frac{\partial {{L}_{R}}}{\partial F({{x}_{i}})}=\frac{\lambda }{m}(1-\frac{R}{{{\left\| F({{x}_{i}}) \right\|}_{2}}})F({{x}_{i}})$

上式中R為特征模的長度,類似於cosface及arcface中使用到的s,只不過s是提前設定的(將特征的模歸一化,並放大到該值),如30,而此處的R是通過訓練學到的。m為batchsize, 為Ring loss的權重。實際使用時,可以結合softmax loss/A-softmax loss。Softmax/A-softmax loss為主損失函數,Ring loss為輔助損失函數。論文中 為0.01時,訓練效果最好。

下圖是一個簡單的例子,其中綠色點為初始化的點,藍色的為目標類別,紅色的為經過20次訓練后,特征的分布。a為使用softmax的結果;b為使用ring loss,權重為1;c為使用ring loss,權重為10。可見,使用softmax后,特征收斂到比較大的范圍。由於使用ring loss時,設置的特征模長為1,因而b能收斂到比較合理的位置(特征較集中)。當權重太大時,softmax起的作用很小,導致特征收斂到單位圓上,如c所示。因而需要合理的權重來平衡輔助損失函數ring loss和主損失函數。

論文中在MsCeleb1M(31000人,3.5M圖像)上訓練64層的resnet網絡,性能比較好。

我這邊在pytorch中進行了實現,初始化時R為0-30之間的隨機數,在casia上訓練resnet20的網絡,效果稍微好於直接使用softmax訓練后的模型(softmax的dir78%,ring loss的dir:不到80%。這兩個模型均使用了batchnorm,否則dir沒有這么高。。。)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM