周書田,顏 信,謝鎮汕
(電子科技大學格拉斯哥學院 成都 611731)
深度學習在人臉識別領域取得了巨大的成就,已經廣泛應用在金融認證、門禁控制等領域,創造了巨大的經濟與社會價值。在目前最大的公開人臉評測數據集MegaFace[1]上,頂尖的方法已經實現了97.91%的1:NTop-1 查準率[2],并且已經超過人眼識別的水平。典型的人臉識別流程包含人臉檢測[3]、人臉剪裁[4]、人臉特征提取[5]、人臉特征比對與查找[6]4 個流程。人臉識別模型優化的本質為:在一個特征空間中,屬于同一個人的圖像特征盡可能聚攏,不屬于同一個人的圖像特征盡可能發散,模型對于特征建模能力的強弱直接影響人臉識別模型的識別準確率。目前,人臉識別系統的巨大進步主要來自于網絡架構[7]的不斷革新,以及損失函數的設計。設計優良的損失函數,可以最大化實現類內特征的聚合與類間特征的離散。最近,大量的損失函數,如Triplet Loss[8],使負樣本對的距離大于正樣本對的距離,大大提升了網絡對于特異性特征向量的建模能力。
人臉識別模型依托于大規模的訓練,訓練圖片數量高達數百萬張,訓練過程經常持續數周。但現有人臉識別訓練模型常常會帶來收斂過程中的震蕩,使訓練成本加大。本文對現有的人臉識別損失函數ArcFace[2]進行改進,將其logit 曲線變換成為一條直線,使收斂過程更加穩定,本文的方法命名為LineFace。
人臉識別問題是一個典型的分類問題。解決傳統分類問題的方法為使用交叉熵-softmax 損失函數進行分類損失監督,然后將損失進行反向傳遞,來更新識別網絡參數。對于一張人臉照片,首先通過骨干網絡提取其特征向量,將其表示為xi∈Rd,并且屬于類別yi,對于類i的分類概率為:



圖1 不同損失函數logit 曲線的對比
為了實現穩定的訓練過程與極具特異性的特征表達,將logit 曲線變更為一條直線,在不同的收斂過程與階段,其梯度始終為定值,避免了梯度的跳變,這帶來了穩定的收斂。該損失函數命名為LineFace,其表達式為:

LineFace 在區間內單調遞減,并且梯度恒定,擁有更好的可解釋性。而對于ArcFace[2]和CosFace[10],其在區間內,并不單調遞減,并且梯度變化劇烈,使得訓練不穩定。大量的實驗表明,本文的損失函數可以大幅提高收斂過程的穩定性質,并帶來識別性能的提高。LineFace 在訓練過程中改變監督函數,不會在推理階段引入新的計算消耗,因此在提升訓練穩定的同時,保持了與之前工作相同的計算復雜性。
近年來,大規模數據集的出現極大地推進了人臉識別模型性能的提升,本文采用了學術界廣泛使用的MS-Celeb-1M[12]數據集作為訓練數據集,也是迄今為止開源的最大規模的人臉訓練數據集。原始MS-Celeb-1M[12]數據的數據集被證明具有大量的數據噪聲,因此與之前的工作相似,對MSCeleb-1M[12]數據進行了清理,清理后的數據集包含來自9 萬人的510 萬張照片。對于測試過程,本文選取了常見的LFW[13]、MegaFace[1]、YTF[14]以及IJB-A[15]數據集進行了測試。
人臉識別的第一步為人臉檢測與裁剪,本文使用MTCNN[4]檢測人臉與關鍵點,人臉圖像將會被仿射變換到112*112,然后將像素值歸一化到[0,1],并且在最后添加了隨機翻轉以進行數據增廣。
對于骨干模型,為了與之前的工作進行公平比較,采用了ResNet-101 的網絡結構,ResNet-101是經典的深度學習骨干模型,其良好的泛化性已經在眾多的任務中得到了驗證。將特征嵌入層的維度設置為512,與之前的工作保持一致。
本文在8 塊NVIDIA 1080TI GPUs 進行了實驗,總訓練步數為11 萬步,使用了步進學習率與權重衰減,初始學習率被設置為0.1,并且每4 萬輪衰減0.1 直到模型收斂,模型動量被設置為0.9。
作為人臉識別領域的黃金標準,LFW[13]測試集被廣泛使用。根據報告,人眼在該測試集上的性能為97.25%,它包含來自于5 749 人的13 233 張圖片,所有的照片都在非受限場景下采集,包括極具變化的姿勢與分辨率。
官方的測試流程包含了6 000 圖像對,其中3 000 張為正樣本對,3 000 張為負樣本對。本文嚴格參照了官方的10 折交叉驗證的測試流程。

表1 不同損失函數在LFW 上的性能比較
如表1 所示,本文的方法在LFW 數據集上取得了有競爭力的結果,為99.63%。LFW 的性能已經在近年趨于飽和,并且因為錯標注的存在,LFW數據集的理論上限為99.85%。因此,本文在更嚴苛的數據集YTF 與MegaFace 上進行了測試。
YTF[14]數據集包含來自1 595 人的3 424 個視頻,平均每個人2.15 個視頻,是現在廣泛采用的視頻人臉識別數據集。視頻的長度從48~6 070 幀不等,平均為181.3 幀。視頻人臉識別旨在測試模型在抖動模糊等極端場景下的建模能力。并且,在實際的驗證場景中,更多的應用場景為視頻數據。對于視頻中的每個幀,都將其提取特征,并且使用平均池化來匯聚各個幀的信息。
表2 是在YTF 上識別的結果,可以看到,本文的損失函數實現了性能的提高,超過了目前最好的模型ArcFace[2],并且大幅度領先了對幀之間匯聚進行精心設計的方法NAN[16],實驗結果證明了本文損失函數的有效性。

表2 不同損失函數在YTF 上的性能比較
MegaFace[1]被認為是目前最具有挑戰性的人臉測試集,它由兩個現存的數據集Facescrub 和FGNet作為查詢集,并且從互聯網上收集了百萬級別的干擾集。這是第一個在百萬級別進行極限人臉識別測試的數據集。
表3 是模型在MegaFace 上識別的性能,從表中可以看到,本文在MegaFace 上也取得了具有競爭力的結果,達到了98.03%。因為MegaFace 人臉測試集被證明包含大量的測試噪聲,因此本文采用了與之前工作ArcFace[2]相同的數據清理策略。

表3 不同損失函數在MegaFace 上的性能比較
通過對損失函數logit 曲線的改變,將損失函數變成了余弦空間中的一條直線,從而提供了穩定的梯度,本文對訓練過程進行了測試,如表4 所示,本文的模型收斂更快,在模型訓練早期的性能大幅領先目前的方法。表4 中,在訓練的迭代次數為30 000 時,本文方法領先主流方法6%~13%,證明了本文方法易于收斂。

表4 不同方法與不同訓練迭代數量在LFW數據集上的性能
本文對目前現有的人臉損失函數進行了回顧,并且注意到模型收斂中梯度變化劇烈的問題。通過對logit 曲線進行改變,將其變為一條直線,從而提供了在網絡訓練的各個階段都穩定的梯度。大量的實驗證明,本文的方法增強了模型的收斂性,并且在各個數據集上都實現了穩定的性能。