AdaptiveFace: Adaptive Margin and Sampling for Face Recognition 閱讀筆記

識別softmax相關文章。主要目的是對類別自適應的margin。


方法

框架結構圖

 

方法創新點主要包括3個部分:AdaM-Softmax,ADS和HPM。

Adaptive Margin Softmax

如下圖,以cosface爲例,深藍色區域爲我們想要約束 的特徵空間,但實際的特徵空間卻是淺藍色區域。原因主要爲 的數據量比較少。但如圖(b)所示,如果我們給 一個比較大的margin就可以學習到比較好的特徵空間。

margin對不同類別的影響


如下,loss函數比較簡單。將cosface(或者arcface等)的margin 改爲參數學習,然後約束各類別的margin的平均值最大。

 

 

adam softmax loss

 

如下圖,可以明顯得看出相比於cosface,adam-softmax不同類別之間的特徵更加易區分。

 

特徵空間示例對比

Hard Prototype Mining:挑選容易誤判的sample進行參數更新。
Adaptive Data Sampling:每次迭代時增大錯誤樣本的採樣,減小簡單樣本和髒數據(卡閾值)的採樣

實驗上也有較明顯的漲點。

 

實驗

第一次寫博客,寫博客的念頭早就有了,但遲遲因爲拖延症沒有實現。今天打鐵趁熱,剛看完這篇論文,順勢來寫一個博客!

寫博客的原因是想回頭看這篇論文的時候,看一下博客就可以想起這篇論文的要點了。

希望陸陸續續把接下來看的論文都在博客上和大家進行分享,也希望和大家一起交流。也想回頭把之前看的論文的筆記也post上來,先立個flat吧!

本人目前在研究不平衡數據的分類,接下來的博客估計大多與此相關,希望同道中人一起交流交流。

寫的博客,才疏學淺,一起探討!

 

Let‘s begin!

 

 

的博客,才疏學淺,一起探討!

 

Let‘s begin!

 

1 Motivation
對於以往的Margin based Softmax Loss,都有一個前提假設:即所有的類別都有足夠多的樣本來描述該類別的分佈,因此一個預設的常量margin就足以縮小每一個類別的類內差異。但是,實際上人臉數據集的樣本很不平衡,類別的樣本數量之間有很大差異。這和長尾分佈差不多,數據集的描述如下圖所示:

因此,作者提出了Adaptive Margin Softmax來自適應地調整不同類的邊距。

並且,還從兩個方面對採樣過程進行了自適應:

首先,論文中提出了Hard Prototype Mining,自適應地選擇少量的hard類參與分類;

其次,在數據採樣方面,還引入了自適應數據採樣來尋找有價值的樣本進行自適應訓練。

這三部分組合在一起作爲最終的AdaptiveFace。

 

2 Hightlight
論文的亮點在於:

1.考慮了人臉識別數據集中的不平衡數據問題,針對以往提出的Margin based Softmax Loss進行改進,將固定的margin改進爲自適應的margin,即根據類別包含的數據size學習出一個特定的邊距,使得最終少數類(樣本稀少且類內方差大)獲得大的邊距。

2.論文中的hard mining有兩個,第一個是從數據採樣出發,建立了一個反饋機制,使得模型在後期可以更關注hard sample,以求學習有價值的樣本。

3.第二個hard mining從類層次進行,同樣地建立了一個反饋機制,讓模型在訓練過程關注相近的類別。

 

3 Introduction
在介紹Adaptive margin Softmax Loss之前,先介紹另外一篇論文《CosFace: Large Margin Cosine Loss for Deep Face Recognition》中提出的Large Margin Cosine Loss,Adaptive margin Softmax Loss是在它的基礎上改進的。

提到了CosFace,又不得不提SphereFace,它們是角空間softmax一系列的論文。

3.1 SphereFace
首先對於SphereFace,這裏就不作詳細的介紹了,希望接下來可以再寫一篇博客補充一下。這裏就給出loss的推導過程。

對於傳統的softmax損失:

爲了簡化計算,把偏置b設置爲0,然後權重和輸入的內積可以用下面式子表示:

然後使用L2正則化處理Wj使得||Wj||=1,L2正則化就是將Wj向量中的每個值都分別除以Wj的模,從而得到新的Wj,新的Wj的模就是1:

根據權重和輸入的內積公式可以將softmax loss損失函數變換爲只與角度相關的公式:||x|| (cos(θi) - cos(θj)) = 0,其中,θi是Wi和x之間的角度。通過這樣的損失函數學習,可以使得學習到的特徵具有更明顯的角分佈,因爲決策邊界只與角有關。這樣修改後的損失函數modified softmax loss爲:

爲了拉大類間距離,並且使得類內差異減少,作者將參數m增加到角度中去,使得決策邊界爲cos(θ1) = cos(mθ2)。這樣兩個類的分佈中間就會隔着一個比較大的角度邊距,因爲各自的角度都要乘以m才能到達邊界。於是,A-softmax loss(angular softmax)損失函數定義爲:

3.2 CosFace
CosFace是針對SphereFace改進的。SphereFace裏面提出的angular softmax loss中的margin是以一種相乘cos(m*θ)的方式出現的,這樣帶來的一個問題就是反向傳播計算比較複雜,loss優化也不是很容易。而cosface爲了彌補了這個缺陷,將margin設置爲cos(θ) - m,這樣優化會比較簡單。同時,因爲在角空間中,人臉識別是根據兩個特徵向量之間的餘弦相似度計算的,於是特徵向量x的範數發揮的作用不大,因此將||x||設定爲固定的 縮放值s。而且,這樣可以使得模型的學習只依賴餘弦值去提升判別能力,將同一類的特徵向量聚在一起,將不同類的特徵向量在超球面上拉開。

於是,Loss 公式變成了如下:

 

4 AdaptiveFace
AdaptiveFace的overview如下,由模型的損失函數AdaM-Softmax、反饋採樣分支ADS和類別權重hard mining HPM三部分組成:

4.1 Adaptive margin Softmax Loss


在不平衡的數據集中,多數類因爲樣本比較多,因此所描述的特徵空間與真實特徵空間幾乎相同。而少數類樣本少,且類內差異小,因而其實際特徵空間是更大的,實際的類內方差也更大,類間方差也會比上圖相對減小。因此固定的margin在數據不平衡的數據集中達到的增大類間距離,縮小類內距離的效果並不會很好。於是,作者提出的Adaptive margin Softmax Loss引入自適應邊距,使模型學習特定於每個類的邊距,自適應地擠壓類內的差異。修改後的margin Softmax Loss定義如下:

注意,這個margin my(j)和CosFace的m是不一樣的,my(j)是特定於類別y(j)的margin。

然後爲了獲得較大的m來減少類內部的差異,引入了一個正則項來約束邊距:

這是所有類的平均邊距,如果邊距越大,那麼損失就越小。

結合這兩部分就是作者提出的Adaptive margin Softmax損失(AdaM-Softmax):

其中,λ控制margin約束Lm的強度。

4.2 Adaptive Data Sampling(ADS)
在AdaptiveFace這個模型的第二個部分,作者提出了Adaptive Data Sampling(ADS),該算法通過從分類層到數據層的反饋通道來尋找有價值的樣本進行網絡訓練。具體來說,就是給每個樣本分配採樣概率,在訓練過程中,當樣本在本次迭代中被正確分類時,將信號反饋給數據層,降低其採樣概率。否則,增加它的採樣概率,使得那些經常被正確分類的樣本會隨着訓練的進行而逐漸被忽略。同時還設置了最小採樣概率smin,以防那些簡單的樣本永遠不會被抽樣。

此外,爲了減輕噪聲數據的影響,還對噪聲樣本進行了反饋。對於mini-batch中的每一個樣本,如果其特徵與對應的原型之間的分數低於一個閾值,我們就會將消息傳遞給數據層,從而大大降低該樣本的採樣概率。

4.3 Hard Prototype mining(HPM)
除此之外,人臉識別數據集的類別數量往往成千上萬,也就是說其往往包含非常多的人(identity),但是對每個人(類別)而言,和他長得比較像的(類間方差較小的)人是很少的,那麼在訓練時其實不必和所有類進行比較來計算 Softmax loss。

於是,論文使用了困難原型挖掘,即在類別層次進行困難挖掘,將每個類的權值wi作爲其原型,然後爲所有類的原型構建一個ANN(angle nearest neighbor)圖,找到與每個類最相似的k個類,並將它們放入與類別i相對應的隊列Qi中。那麼在每一次迭代中,先找出batch 中所有樣本對應的類Ca,再根據各自的隊列Qi找出所有與batch 中的類最相關的類Cb,最終用Cb的W作爲這次迭代的權重矩陣進行計算。

對於這個隊列Qi,是動態更新的,首先,對於一個特徵xj,如果它的預測結果cp是它對應的類y(j),則不需要更新。其次,如果cp≠ y(j),就通過排序所有類分數大於cos(θy (j) j)的類來更新該優勢隊列。

 

個人總結
總得來說,對於不平衡數據的處理,AdaptiveFace的模型還是很典型的,首先設計一個模型針對不平衡的損失函數,然後在採樣層級對模型進行修改,再加上一個權值的處理。

有一個疑問:HPM的原型(權值矩陣)在模型的初始階段是怎麼得到的?

 

參考博客:

https://zhuanlan.zhihu.com/p/71155683

https://www.cnblogs.com/wanghui-garcia/p/12567817.html

https://zhuanlan.zhihu.com/p/45153595
————————————————
版權聲明:本文爲CSDN博主「獨行深者」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_36616304/article/details/105841779

階段是怎麼得到的?

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