人臉識別之insightface

人臉識別之insightface

來自專欄人工智慧學習

論文地址:arxiv.org/pdf/1801.0769

項目源碼: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損失函數在深度人臉識別中經常使用,但是,在正人臉對中不能取得很高的相似度,在負人臉對中不能取得很低的相似度,從而導致效果不好。

  • 權重歸一化

為了簡單化,我們將偏置參數 b_j = 0 ,然後將轉換為目標logit:

通過L2正則修正 ||W_jk|| = 1 ,則有

在SphereFace實驗中,權重L2正則化僅僅提高了一點。

  • 乘邊距角度

增加一個邊距m

θ_{yi} ∈ [0, π/m] ,用單調函數  ψ(θ_{yi}) 替代 cos(mθ_{yi})

ψ(θ_{yi}) = (?1)^kcos(mθ_{yi}) ? 2k, θ_{yi} ∈ [kπ/m ,(k+1)π/m]

計入超參 lambda

  • 特徵正則化

特徵正則化廣泛用於人臉識別系統中,L2很容易應用在現有的深度學習網路中並取得很好的效果。

通過L2修正 ||x_i||||x_i|| 縮放為s

  • 增加cosin邊距

有三個好處:1、沒有複雜的超參,2、沒有softmax的情況下更容易收斂,更清晰,3、性能明顯提高

  • 增加邊距角度

角度邊距比consin邊距有更好的幾何解析,並且角度空間的對應超球面的距離。

對cos增加一個邊距m,當 θ ∈ [0, π ? m] 時,cos(θ+ m) 比cos(θ)要小,定義arcface為:

cos(θ+m) = cos θ cos m?sin θ sin m

  • 損失函數的比較

  • 目標邏輯分析

作者使用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,當 θ ∈ [0^?, 180^? ] ,目標曲線不是單調遞減的,實際上在 θ > 151.35^? 的時候是單調遞增的。在圖4(c)中, 	heta90^o 為中心,最大 105^o 呈高斯分布。在訓練中幾乎不沒有增加ArcFace的間距。

圖4(c)中,CosineFace和ArcFace的高斯分布的中心從 90^o 移動之 35^o-40^o 。在圖4(a)中,在 30^o90^o 區間,ArcFace的曲線低於consineFace,所以在這以區間,ArcFace比ConsineFace有著更嚴格的邊際懲罰。在4(b)中,分布是sotfmax、ConsinFace、ArcFace的收斂區別,開始的時候,ArcFace比CosineFace的懲罰項要重,紅色虛線在藍色虛線的下方,在訓練末期,ArcFace比CosineFace收斂得更好,如右邊 	heta 的柱狀圖(圖4(c))並且收斂曲線更高(圖4(b))。在圖4(c)中,在訓練末期, 	heta 的取值大多數小於 60^o ,訓練樣本中最為困難的是訓練數據的雜訊問題。CosineFace在 θ < 30^o 有著更嚴格的邊際懲罰項(圖4(a)),在訓練末期難於達到此區間。因此,我們可以明白SphereFace在此階段,帶有相對較小的邊際值,卻有著較好的表現。

總之,當 θ ∈ [60^o, 90^o] 時,加入較大的邊際懲罰項可能會引起訓練不收斂,比如SphereFace (m = 2,λ = 0)。當 θ ∈ [30^o, 60^o] 時,加入邊際值可能會提升性能,因為這個部分對應於最有效的難以訓練的負樣本。當  θ < 30^o時,加入邊際值可能不會提升性能,因為這一部分對於的是較容易訓練的樣本。在圖4(a)中在 [60^o, 90^o] 的區間,我們可以明白為什麼從Softmax、SphereFace、CosineFace(在他們最好的係數設置的情況下)到ArcFace有著較好的性能提升,需要注意的是 30^o60^o 是容易訓練和難以訓練樣本的初略分界點。

實驗

作者用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 第一節:圖像的讀取

TAG:人臉識別 | 圖像識別 | 計算機視覺 |