人臉識別之insightface
來自專欄人工智慧學習
論文地址:https://arxiv.org/pdf/1801.07698.pdf
項目源碼:deepinsight/insightface
簡介
作者在三個方面做了相關工作:
- 訓練數據
利用公開數據集,去除雜訊數據後訓練。
- 網路結構和設置
高性能卷積神經網路,如ResNet和Inception-ResNet,比VGG和Inception V1有較好的性能,不同的應用在速度和精度之間做權衡,對應移動設備,精度更加重要。
- 損失函數
1、歐式邊際損失函數
softmax損失函數在訓練中通常採用的損失函數,中心損失、距離損失和邊界損失增加了懲罰係數以減小方差或增加類間距,但是當訓練樣本身份達到百萬級的時候,需要消耗大量的GPU內存。
對比損失和T三元損失是訓練配對策略,contrastive loss函數包含正負樣本,其梯度拉近正樣本、遠離負樣本,Triplet loss函數使正樣本類間距最小、負樣本類間距最大。但是在訓練過程中,選擇有效的正負樣本是很困難的。
2、角度和餘弦損失函數
SphereFace cos(mθ),權重正則化的人臉識別中採用了L-softmax
從sotfmax到arcface
- softmax損失函數
softmax損失函數在深度人臉識別中經常使用,但是,在正人臉對中不能取得很高的相似度,在負人臉對中不能取得很低的相似度,從而導致效果不好。
- 權重歸一化
為了簡單化,我們將偏置參數 ,然後將轉換為目標logit:
通過L2正則修正 ,則有
在SphereFace實驗中,權重L2正則化僅僅提高了一點。
- 乘邊距角度
增加一個邊距m
,用單調函數 替代
計入超參
- 特徵正則化
特徵正則化廣泛用於人臉識別系統中,L2很容易應用在現有的深度學習網路中並取得很好的效果。
通過L2修正 , 縮放為s
- 增加cosin邊距
有三個好處:1、沒有複雜的超參,2、沒有softmax的情況下更容易收斂,更清晰,3、性能明顯提高
- 增加邊距角度
角度邊距比consin邊距有更好的幾何解析,並且角度空間的對應超球面的距離。
對cos增加一個邊距m,當 時,cos(θ+ m) 比cos(θ)要小,定義arcface為:
- 損失函數的比較
- 目標邏輯分析
作者使用LResNet34E-IR網路,訓練集使用MS1M數據集。
在4(a)圖中,對於SphereFace,m = 4、λ = 5的訓練曲線與m = 1.5、λ = 0的相似,但是SphereFace的m取值必須為整數,m = 2、λ = 0時訓練不收斂。從Softmax中略微降低目標logit曲線,可以增加訓練難度,提高性能,但降低過多會導致訓練發散。
CosineFace的曲線沿y軸負方向移動,ArcFace沿x軸負方向移動,至此,我們很容易理解從softmax到CosineFace和ArcFace的改進。
對於ArcFace,邊距m=0.5,當 ,目標曲線不是單調遞減的,實際上在 的時候是單調遞增的。在圖4(c)中, 在 為中心,最大 呈高斯分布。在訓練中幾乎不沒有增加ArcFace的間距。
圖4(c)中,CosineFace和ArcFace的高斯分布的中心從 移動之 。在圖4(a)中,在 至 區間,ArcFace的曲線低於consineFace,所以在這以區間,ArcFace比ConsineFace有著更嚴格的邊際懲罰。在4(b)中,分布是sotfmax、ConsinFace、ArcFace的收斂區別,開始的時候,ArcFace比CosineFace的懲罰項要重,紅色虛線在藍色虛線的下方,在訓練末期,ArcFace比CosineFace收斂得更好,如右邊 的柱狀圖(圖4(c))並且收斂曲線更高(圖4(b))。在圖4(c)中,在訓練末期, 的取值大多數小於 ,訓練樣本中最為困難的是訓練數據的雜訊問題。CosineFace在 有著更嚴格的邊際懲罰項(圖4(a)),在訓練末期難於達到此區間。因此,我們可以明白SphereFace在此階段,帶有相對較小的邊際值,卻有著較好的表現。
總之,當 時,加入較大的邊際懲罰項可能會引起訓練不收斂,比如SphereFace (m = 2,λ = 0)。當 時,加入邊際值可能會提升性能,因為這個部分對應於最有效的難以訓練的負樣本。當 時,加入邊際值可能不會提升性能,因為這一部分對於的是較容易訓練的樣本。在圖4(a)中在 的區間,我們可以明白為什麼從Softmax、SphereFace、CosineFace(在他們最好的係數設置的情況下)到ArcFace有著較好的性能提升,需要注意的是 和 是容易訓練和難以訓練樣本的初略分界點。
實驗
作者用MegaFace作為驗證集,LFW,CFP和AgeDB作為測試集,並取得了很好的表現。
- 數據
訓練數據
VggFace2
VggFace2包含8,631個身份共3,141,890張圖片,由於VggFace2是一個高質量的數據集,因此沒有對數據做處理。
MS-Celeb-1M
MS-Celeb-1M包含100K的身份共1000萬張圖片,減少圖像的雜訊獲得高質量的數據集,我們將每個身份的所有人臉圖像按其與身份中心的距離進行排序。對於特定的身份,離身份特徵中心較遠的特徵集被自動刪除。作者最終得到85K唯一的身份和380萬的數據集。
- 驗證集
LFW
給出6000對人臉做驗證
CFP
使用最優挑戰性的子集CFP-FP做驗證
AgeDB
使用最優挑戰性的子集AgeDB-30做驗證
- 測試集
圖5中,從Facesrub 數據集中給出雜訊數據。圖8(c)中展示了到特徵中心的consin距離。事實上人臉圖像221和136並不是Aaron Eckhart,我們手動清除並最終發現605個噪音數據。在測試期間,我們把噪音數據更換為正常數據,識別精度大約提高1%。在圖6(b)中,給出從MegaFace干擾項中的噪音數據,四個人臉頭像都是Alec Baldwin,手動清除MegaFace干擾項並最終發現707個噪音數據。在測試中,我們增加一個附加維度來區分噪音數據,這樣可以增加15%的識別精度。
網路設置
作者採用不同的網路,用VGG2數據訓練,採用softmax損失函數
- 輸入數據
使用5個標註點(眼睛中心,鼻子,嘴巴中心),對人臉頭像做相似度變化並歸一化。對人臉圖像進行裁剪並縮放為112*112,對每個像素減去127.5併除以128進行歸一化。
大多數用於Image-Net分類的卷積網路要求輸入224*224甚至更大。然而作者設計的網路輸入圖片大小為112*112,為了保持高維的特徵映射的解析度,在最初的卷積層使用conv3×3、stride=1替代conv7×7、stride=2,
- 輸出設置
在最後幾個卷積層中,不同的操作可以研究嵌入設置如何影響性能。除了Option-A,所有的特徵嵌入維度設置為512,因為Option-A是由最後的卷積層通道決定的。
在測試中,分數是由兩個特徵集合的consin距離計算得到的。最近鄰和置信度閾值用於人臉識別和驗證
- Block設置
除了原始的resnet單元外,作者還研究一些先進的殘差單元。圖7是改進的殘差單元(最終被稱為「IR」),有BN-Conv-BN-PReLu-Conv-BN結構,
- 骨幹網路
基於模型設計的最新結果,還探索用於深度人臉識別的MobileNet、InceptionResnet-V2、 DenseNet)、Squeeze、SE、DPN的網路。論文中對比了各種網路的精度、速度和模型大小。
- 網路選擇的結論
輸入選擇L
表2中,比較了是否選擇L。當使用conv3×3、stride=1作為第一個卷積層,網路輸出大小為7×7。為了對比,使用conv7×7、stride=2作為第一個卷積層,網路輸出大小為3x3。從表2中容易看出,在訓練過程中選擇更大的特徵圖獲得更高的驗證精度。
輸出選擇E
選項E取得了最好的表現
Block選擇IR
- 骨幹網的比較
表8中對比了不同網路的精度、速度和模型大小。基於速度和精度以及模型大小的考慮,最終選擇LResNet100E-IR作為MegaFace測試的網路。
- 權重衰減
基於SE-LResNet50E-IR網路,探討權重損失如何影響識別性能,
- 損失函數參數設置
表6中可以看出不同的m取值影響各個驗證集的表現,最終採用m=0.5。
作者還對比了Softmax、SphereFace、CosineFace、ArcFace損失函數的表現(表7)
- 在MegaFace驗證
採用LResNet100E-IR網路並整理MS1M數據集作為訓練數據。
對比了各種損失函數的表現
推薦閱讀:
※如何提高手機人臉識別的安全性?只需三招
※機器視覺設計者如何選擇合適的鏡頭?
※可二次開發的ocr識別技術有什麼特點呢?
※OpenCV-python 第一節:圖像的讀取