人臉識別:《Arcface》論文詳解,對損失層的改進有較為詳細的講解 人臉識別:《Arcface》論文詳解
人臉識別:《Arcface》論文詳解
2018年08月27日 11:18:20 shentanyue 閱讀數:670轉載於 https://blog.csdn.net/Wuzebiao2016/article/details/81317154
寫的很詳細易懂。
目錄
前言
近年來隨著硬體計算能力的大爆發,在高效能運算的支援下深度學習有了革命性的進步,在網際網路大資料的保證下深度學習有了源源不斷的動力,優秀的網路結構被不斷提出,深度學習技術已被推向 時代浪潮。在深度學習的分支領域,計算機視覺領域當中,人臉識別技術的發展依然是工業界、學術界重點關注的物件。在ResNet在2015年被提出後,越來越多優秀的網路基於ResNet進行優化更新也已取得卓越的成就,而在網路結構進一步升級優化有困難的情況下,研究者逐步將目光轉向損失函式這一指揮棒上。
文章[ArcFace:Additive Angular Margin Loss for Deep Face Recognition]的作者提出的Angular Margin Loss在繼SoftmaxLoss、Center Loss、A-Softmax Loss、Cosine Margin Loss之後有更加卓越的表現,同時作者也對這一“卓越表現”予以了論證。
論文地址:https://arxiv.org/abs/1801.07698
Code:https://github.com/deepinsight/insightface
人臉識別流程
人臉識別分為四個過程:人臉檢測、人臉對齊、特徵提取、特徵匹配。其中,特徵提取作為人臉識別最關鍵的步驟,提取到的特徵更偏向於該人臉“獨有”的特徵,對於特徵匹配起到舉足輕重的作用,而我們的網路和模型承擔著提取特徵的重任,優秀的網路和訓練策略使得模型更加健壯。
但在Resnet網路表現力十分優秀的情況下,要提高人臉識別模型的效能,除了優化網路結構,修改損失函式是另一種選擇,優化損失函式可以使模型從現有資料中學習到更多有價值的資訊。
而在我們以往接觸的分類問題有很大一部分使用了Softmax loss來作為網路的損失層,實驗表明Softmax loss考慮到樣本是否能正確分類,而在擴大異類樣本間的類間距離和縮小同類樣本間的類內距離的問題上有很大的優化空間,因而作者在Arcface文章中討論了Softmax到Arcface的變化過程,同時作者還指出了資料清洗的重要性,改善了Resnet網路結構使其“更適合”學習人臉的特徵。
如下是ArcFace的輸入到輸出流程:
上圖的處理流程是這樣子的,這裡假設我們的樣本類別數為nn,我們的輸入資料x的維度為dd,模型權重ww的維度為d⋅nd⋅n,我們首先對我們的樣本xx和權重ww進行歸一化,歸一化之後樣本經過網路最後得到1⋅n1⋅n維的全連線輸出,輸出後計算得到Target Logit再乘以歸一化引數ss再經過Softmax計算得到Prob。
資料
在訓練過程中,神經網路都是基於我們的訓練資料學習特徵的,既然是從訓練資料學習特徵,最終的方向自然是逼近最終資料的最真實的特徵,也就是說,我們資料最原始是什麼樣子,我們的網路的極限就是什麼樣子,它不能超越資料本身,而研究者在做的事情,也就是使得網路最後能更加逼近“極限”。所以資料在深度學習中扮演著極其重要的角色,所以文章中強調了乾淨的資料(資料清洗)的重要性。
這裡列舉一些文章中提到的開源資料集:
VGG2
VGG2Face人臉資料集包含有訓練集8631個人的臉(總量有3141890張人臉),測試集包含有500個人的臉(總量有169396張人臉),屬於高質量資料集。
MS-Celeb-1M
MS1M資料集包含有大約10萬個人的臉(大約有1千萬張人臉),但是資料集中包含有很多的“噪聲”,所以作者對MS1M做了資料清洗,最終作者清洗得到的乾淨的資料包含有8.5萬個人的臉(包含有380萬張人臉)。
MegaFace
MegaFace資料集包含有69萬個人的臉(包含大約有100萬張人臉),所有資料由華盛頓大學從Flickr上組織收集。MegaFace是第一個在百萬規模級別的面部識別演算法的測試基準,這個專案旨在研究當資料庫規模提升數個量級時,現有的臉部識別系統能否維持可靠的準確率。MegaFace是目前最為權威、最熱門的評價人臉識別效能,特別是海量人臉識別檢索效能的基準參照之一。
LFW
LFW(Labeled Faces in the Wild)資料集包含了從網路收集的13000張人臉影象,每張影象都以被拍攝的人名命名。其中,有1680個人有兩個或兩個以上不同的照片。LFW主要側重於對比兩張人臉照片是否具有相同身份不同。
CPF
CFP(Celebrities in Frontal Profile )資料集是美國名人的人臉資料集,其中包含有500個人物物件,有他們的10張正面照以及4張形象照,因此在作為人物比對驗證的時候,作者選用了最有挑戰的正面照與形象照作為驗證集(CFP,Frontal-Profile,CFP-FP )。
AgeDB
AgeDB(Age Database )資料集包含有440個人的臉(包含有12240張人臉),但其中包含有不同人的不同年齡階段的照片,最小從3歲到最大101歲時期的照片,每個物件的平均年齡範圍為49年。作者採用和LFW一樣的對比驗證方式。
最後,作者在網路訓練過程中採用了VGG2以及MS1M作為訓練集,選用了LFW、CPF以及AgeDB作為驗證集,最終使用MegaFace作為評測標準。
損失層
關於Loss對於網路的影響,最直觀的就是通過計算Loss反傳梯度來實現對模型引數的更新,不同的Loss可以使模型更加側重於學習到資料某一方面的特性,並在之後能夠更好地提取到這一“獨有”的特徵,因此Loss對於網路優化有導向性的作用。
而在近年來人臉識別領域,優化Loss對於最終結果的提高有很大的幫助,從Center Loss的提出,到SphereFace,CosineFace,InsightFace等都有在損失函式這一環節提出新的解決方案,它們的出現對於人臉識別的發展做出了不可磨滅的貢獻。
無論是SphereFace、CosineFace還是ArcFace的損失函式,都是基於傳統的softmax loss進行修改得到的,所以想要理解ArcFace,需要對之前的損失函式有一定理解。
Softmax Loss
這是我們傳統的Softmax公式,其中, 代表我們的全連線層輸出,我們在使損失下降的過程中,則必須提高我們的所佔有的比重,從而使得該類的樣本更多地落入到該類的決策邊界之內。
而這種方式主要考慮樣本是否能正確分類,缺乏類內和類間距離的約束。
在[A Discriminative Feature Learning Approach for Deep Face Recognition]這篇文章中,作者使用了一個比LeNet更深的網路結構,用Mnist做了一個小實驗來證明Softmax學習到的特徵與理想狀態下的差距。
實驗結果表明,傳統的Softmax仍存在著很大的類內距離,也就是說,通過對損失函式增加類內距離的約束,能達到比更新現有網路結構更加事半功倍的效果。於是,[A Discriminative Feature Learning Approach for Deep Face Recognition]的作者提出了Center Loss,並從不同角度對結果的提升做了論證。
Center Loss
Center Loss的整體思想是希望一個batch中的每個樣本的feature離feature 的中心的距離的平方和要越小越好,也就是類內距離要越小越好。作者提出,最終的損失函式包含softmax loss和center loss,用引數λ來控制二者的比重,如下面公式所示:
因而,加入了Softmax Loss對正確類別分類的考慮以及Center Loss對類內距離緊湊的考慮,總的損失函式在分類結果上有很好的表現力。以下是作者繼上個實驗後使用新的損失函式並調節不同的引數λλ得到的實驗結果,可以看到,加入了Center Loss後增加了對類內距離的約束,使得同個類直接的樣本的類內特徵距離變得緊湊。
A-Softmax Loss(SphereFace)
Center Loss的出現,使得人臉識別的研究轉向損失函式的改進,對於之前的損失函式,研究發現Softmax Loss學習到的特徵分辨性不夠強,Center Loss考慮到了使得類內緊湊,卻不能使類間可分,而Contrastive Loss、Triplet Loss增加了時間上的消耗,[SphereFace: Deep Hypersphere Embedding for Face Recognition]這篇文章的作者提出了A-Softmax Loss。
在Softmax Loss中,由知,特徵向量相乘包含由角度資訊,即Softmax使得學習到的特徵具有角度上的分佈特性,為了讓特徵學習到更可分的角度特性,作者對Softmax Loss進行了一些改進。
其中,作者在中約束了||W||=1並且令 bj=0 ,並將 從區分出來,就是為了讓特徵學習到更可分的角度特性。通過這樣的損失函式學習,可以使得學習到的特徵具有更明顯的角分佈,因為決策邊界只與角相關。
對於Softmax而言,希望能有cos(θ1)>cos(θ2),所以作者增加了在角度空間中對損失函式的約束cos(t⋅θ1)>cos(θ2),也就是要把同類資料壓縮在一個緊緻的空間,同時拉大類間差距。
由於cosθ在[0,π]上單調遞減,因此θ有上界,為了使得這個函式隨角度單調遞減,作者構造一個函式去代替cosθ。
在SphereFace的實際訓練過程中,作者發現引入Softmax約束可以保證模型的收斂性。因此,對φ(θyi)函式做了變更,並同時用引數λ來控制二者的比重。
tt的大小是控制同一類點聚集的程度,從而控制了不同類之間的距離。如圖可以看出不同的tt的取值對對映分佈的影響(不同的類位於一個單位超球表面的不同區域)
後續的F-Norm SphereFace對SphereFace做了更新,僅注重從資料中得到的角度資訊,而不考慮特徵向量的值,所以採用了s=64作為特徵歸一化引數替代了||x||,因此公式更新為:
而這種採用了s=64作為特徵歸一化引數替代了||x||||x||的思想也被Cosine Loss和Arcface Loss沿用,即相對於距離資訊更加關注角度資訊。
Cosine Margin Loss
與SphereFace相比,CosineFace最明顯的變化就是將cos(t⋅θyi)中的tt提出來變成cos(θyi)−t,與之前相比,這樣有幾個明顯的優勢。
- 相對於SphereFace而言要更加容易實現,移除了φ(θyi),減少了複雜的引數計算
- 去除了Softmax監督約束,訓練過程變得簡潔同時也能夠實現收斂
- 模型效能有明顯的改善
Angular Margin Loss
儘管在餘弦範圍到角度範圍的對映具有一對一的關係,但他們之間仍有不同之處,事實上,實現角度空間內最大化分類界限相對於餘弦空間而言具有更加清晰的幾何解釋性,角空間中的邊緣差距也相當於超球面上的弧距。
於是,作者提出了Angular Margin Loss,將角度邊緣t置於cos(θ)函式內部,使得cos(θ+t)在θ∈[0,π−t]範圍內要小於cos(θ),這一約束使得整個分類任務的要求變得更加苛刻。
對於,在滿足的情況下,其損失計算公式為
對於可以得到,對比CosineFace的,ArcFace中的不僅形式簡單,並且還動態依賴於,使得網路能夠學習到更多的角度特性。
Loss對比分析
為了研究 SphereFace、 CosineFace 和ArcFace是如何提高人臉識別的效果,作者使用了 LResNet34E-IR網路和M1SM人臉資料集分別使用不同的損失函式對網路進行訓練,客觀分析了其中的影響。
上圖的Target Logit Curve描繪了隨著角度值θ的變化,
對於,
其中的Target Logit 也就是指的值,s是歸一化引數,在條件下,是輸入向量與權重在超平面中的夾角,
同理,
對於來說,
Target Logit 對應著的值,也就意味著,在θ∈[0∘,30∘]時,CosineFace的曲線要低於ArcFace,也就是在θ∈[0∘,30∘]範圍內CosineFace對於網路的“懲罰”要大於ArcFace,再看θ∈[30∘,90∘]範圍內ArcFace的曲線要低於CosineFace,也就是說在θ∈[30∘,90∘]內ArcFace對於網路的“懲罰”要大於CosineFace(由下面的θ分佈圖可知θ在90∘以上範圍基本沒有,可以忽略)。
而作者提供了訓練開始時,中間以及收斂後的θ的分佈圖,可以看到,在網路收斂的情況下,ArcFace和CosineFace的θ分佈基本在[30∘,60∘]範圍內,同時,ArcFace和CosineFace的θ中心值要更靠左一點,雖然在θ∈[0∘,30∘]範圍內CosineFace對於網路的“懲罰”要大於ArcFace,但是由最終結果可以看出,收斂時θθ達到[0∘,30∘][0∘,30∘]範圍內的數量很少,相對於[30∘,60∘]範圍內可以忽略,而在ArcFace對於網路的“懲罰”要大於CosineFace的θ∈[30∘,60∘]範圍內分佈著絕大多數的θ。
我們已經由θθ的分佈圖可知在收斂的時候ArcFace的θ中心值與CosineFace相比要偏左一點,同時,由上圖可知,收斂的時候紅色實線要高於藍色和黃色實線,也就意味著,收斂的時候ArcFace相對於其他Loss使得同一類更加“緊湊”,相對於其他的Loss實現了將同一個類壓縮到一個更緊緻的空間,更密集,使得網路學習到的特徵具有更明顯的角分佈特性。
網路
為了衡量怎樣的網路更適合人臉識別,作者在基於VGG2Face作為訓練集和使用Softmax作為損失函式的情況下對Resnet網路做了不同的設定,以期望能達到最好的效果。
作者用了8塊特斯拉P40的顯示卡,設定訓練時的總的Batch Size為512,同時學習率從0.1開始在分別在10萬、14萬、16萬次迭代下降一個量級,設定了總的迭代為20萬次,momentum 動量為0.9,權值衰減為 5e−4 。
PS:實驗表明採用權值衰減值為5e−4效果最好。
Input selects L
大多數的卷積神經網路為完成Image-Net的分類任務而設計的,所以網路會採用224x224的輸入,然而作者所用的人臉大小為112x112,如果直接將112x112的資料作為預訓練模型的輸入會使得原本最後提取到的特徵維度是7x7變成3x3,因此作者將預訓練模型的第一個7x7的卷積層(stride=2)替換成3x3的卷積層(stride=1),這樣第一個卷積層就不會將輸入的維度縮減,因此最後還是能得到7x7的輸入,如下圖所示,實驗中將修改後的網路在命名上加了字母“L”,比如SE-LResNet50D。
Output selects E
對於網路的最後幾層,不同的輸出可能會影響模型的效能,因此作者對Option-A到Option-E分別做了測試,在測試過程中,利用兩個特徵向量對距離進行計算。在識別與驗證的過程中採用了最近鄰與閾值比較法。
- Option-A: Use global pooling layer(GP).
- Option-B:Use one fullyconnected(FC) layer after GP.
- Option-C: Use FC-Batch Normalisation (BN) after GP.
- Option-D: Use FC-BN-Parametric Rectified Linear Unit (PReLu) after GP.
- Option-E: Use BN-Dropout-FC-BN after the last convolutional layer.
經過對比結果得知,使用Option-E模型能取得更好的表現。
Block selects IR
作者改善了Resnet網路的殘差塊使其更適合人臉識別模型的訓練,採用 BN-Conv-BN-PReLu-Conv-BN 結構作為殘差塊,並在殘差塊中將第一個卷積層的步長從2調整到1,啟用函式採用PReLu替代了原來的ReLu。採用修改過的殘差塊的模型作者在後面添加了“IR”以作為標識。
同樣實驗表明,採用Option-E與改善後的殘差塊使得模型表現有明顯的提升。
Network Setting Conclusions
綜上所述,最終在Resnet網路上做出了3項改進,第一是將第一個7x7的卷積層(stride=2)替換成3x3的卷積層(stride=1),第二是採用了Option-E輸出,第三是使用了改善後的殘差塊。
評估
作者同時對比測試了其他主流的網路結構,有MobileNet、Inception-Resnet-V2、DenseNet、Squeeze and excitation networks (SE)以及Dual path Network (DPN),評價的標準由精確度、速度以及模型大小組成。
同時,MegaFace作為百萬規模級別的面部識別演算法的測試基準,作者以LResNet100E-IR作為網路結構,以MS1M作為訓練集,分別對比了不同損失函式在MegaFace上的表現,其中最後兩列括號中有“R”是代表清洗過的MegaFace,Rank1指標代表第一次命中率,[email protected]代表在誤識率FAR上的TAR,也就是說第一次命中率Rank1越高越好,[email protected]越高越好。
轉載於 https://blog.csdn.net/Wuzebiao2016/article/details/81317154