魏彪,楊映波,曾珍,劉龍鳳
(四川大學計算機學院,成都610065)
隨著人臉數據的采集和深度學習的發展,人臉識別技術取得了長足的進展。越來越多的移動端應用都用到了人臉識別系統,如設備解鎖、應用登錄、移動支付等,為了給用戶更加友好體驗,移動端的人臉識別系統不僅要求精度高而且速度要快。然而目前人臉識別高精度的模型都是基于深度卷積神經網絡結構,如VGG[1]、GoogleNet[2]、ResNet[3]等系列網絡,這些模型需要大量的計算資源并不適用于移動端設備。
為解決上述問題,本文借鑒知識蒸餾算法DK[4]與FitNet[5]提出了深度特征蒸餾的算法,以高精度的大網絡模型為教師網絡,以高效的小網絡模型為學生網絡,通過教師網絡提取的特征指導學生網絡學習,設計了一種新的人臉損失函數,在模型壓縮很小時也能達到教師網絡識別準確率。本文在教師模型和學生模型網絡中嵌入SENet[6]網絡,進一步提高識別準確率。通過實驗驗證,本文提出的算法將學生模型的大小壓縮至教師模型的4 倍,在LFW[7]數據集上準確率只比教師模型低0.17%。
本文的主要貢獻包括:①對當前的深度卷積人臉識別模型進行了梳理與分析,揭示了當前模型實際部署的困難在于模型參數大和計算復雜度高從而檢索效率低;②提出基于深度特征蒸餾的人臉識別方法大幅度壓縮模型大小,設計了新的人臉識別函數。對教師模型和學生模型嵌入SENet 網絡結構,學習不同特征的重要性,提高識別準確率;③在LFW 數據集上驗證本文提出的兩種方法的有效性。
調整深度模型在準確率和性能取得好的平衡,一直是一個熱門的研究領域。為提高人臉識別準確率,研究者提出了多種基于深度卷積神經網絡的人臉識別方法,識別精度如表1 所示。DeepFace[8]算法通過建立3D 模型改進人臉對齊的方法,在LFW 數據集上取得了97.35%的識別精度。FaceNet[9]算法使用Triplet Loss代替常用的Softmax 多分類損失函數,在LFW 上取得99.63%的精度。L-Softmax[10]算法,對Softmax 改進,在網絡設計上將最后一層分類層的偏置項去掉,直接優化特征和分類器的余弦角度,通過人為設定增加了一個角度增加了模型的學習難度,在LFW 上達到98.71%精度。SphereFace[11]算法歸一化了權值W,讓訓練更集中優化深度映射和特征向量角度上,降低樣本數量不均衡問題,在LFW 上達到99.42%精度。AMSoftmax[12]算法在SphereFace 基礎上,乘性margin 改為加性margin,在權值歸一化的基礎上對特征也做了歸一化,并采用尺度因子s,在LFW 上取得了98.89%精度。ArcFace[13]算法在SphereFace 基礎上,將cos(mθ)改進為cos(θ+m),采用100 層ResNet 結構,在LFW 上得99.83%精度,目前是榜單第一名。
當前的深度模型壓縮和加速方法主要分為四類:參數剪枝和共享、低秩因子分解、小型卷積網絡,知識蒸餾。目前提出的小型高效網絡有:SequeezeNet[14]使用瓶頸方法設計一個非常小的網絡,并在ImageNet 上實現AlexNet[15]級別精度,參數減少50 倍。Mobile?NetV1[16]使用深度可分離卷積網絡,其中的Mobile?NetV1-160 參數大小相同時,在ImageNet 精度比Se?queezeNet 高出4%。ShuffleNet[17]利用分組卷積和混淆通道操作,降低計算成本并比MobileNetV1 更高效。MobileNetV2[18]模型基于一種倒置殘差結構和線性瓶頸結構,達到了小網絡的最好性能。MobileFaceNet[19]提出經過最后一個卷積層提取人臉特征后,不是接全局池化層或者全連接層,而是用一種全局深度卷積網絡結構對人臉特征不同的位置學習不同的權重,極大提高了識別精度。然而,這些小網絡的識別精度并不太高,見表1。另一種壓縮方法是知識蒸餾[20],將DeepID2+[21]作為教師網絡,監督訓練一個小型的學生網絡,在LFW上取得97.32%的精度,模型大小為4MB,另外兩種方法本文不予討論。
卷積神經網絡通常看作是在局部感受野上,將空間上的信息和特征維度上的信息進行聚合的信息聚合體。最近很多工作被提出來從空間維度層面來提升網絡的性能,如Inception 結構中嵌入了多尺度信息,聚合多種不同感受野上的特征來獲得性能增益;在Inside-Outside 網絡中考慮了空間中的上下文信息;還有將Attention 機制引入到空間維度上,等等。SENet 則是考慮特征通道間的關系,通過學習的方式來自動獲取到每個特征通道的重要程度,然后依照這個重要程度去提升有用的特征并抑制對當前任務用處不大的特征,SENet 可以嵌入到現有的所有基礎網絡中。

表1 當前主流的人臉識別模型在LFW 數據集上的識別精度
借鑒Hitton 知識蒸餾的思想,本文采用深度特征蒸餾的方法,通過設計新的損失函數,用教師網絡的特征指導監督學生網絡的訓練,教師網絡采用Insight?Face 模型,將原本的512 維特征降至128 維,學生網絡采用目前的高效小網絡。為進一步提高識別精度,將SENet 網絡結構嵌入到教師網絡和學生網絡模型中。
SENet 是希望顯式地建模特征通道之間的相互依賴關系。另外,我們并不打算引入一個新的空間維度來進行特征通道間的融合,而是采用了一種全新的“特征重標定”策略,包括Squeeze 和Excitation 兩個關鍵模塊。首先是Squeeze 操作,順著空間維度來進行特征壓縮,將每個二維的特征通道變成一個實數,這個實數某種程度上具有全局的感受野。它表征著在特征通道上響應的全局分布,而且使得靠近輸入的層也可以獲得全局的感受野,這一點在很多任務中都是非常有用的。其次是Excitation 操作,它是一個類似于循環神經網絡中門的機制。通過參數來為每個特征通道生成權重,其中參數被學習用來顯式地建模特征通道間的相關性。最后是一個Reweight 的操作,我們將Excitation的輸出的權重看做是進過特征選擇后的每個特征通道的重要性,然后通過乘法逐通道加權到先前的特征上,完成在通道維度上的對原始特征的重標定。圖1 是將SE 模塊嵌入到Inception 模塊和ResNet 模塊的一個示例。
深度特征蒸餾分為特征回歸和人臉識別分類兩部分:①特征回歸,學生網絡從教師網絡的特征中學習,從而將教師網絡中知識遷移到學生網絡中,讓學生網絡獲得教師網絡的特征表達能力。②人臉分類,學生網絡采用最新的ArcLoss 損失函數。通過上述兩種方法,在得到參數少和計算量小的學生模型同時又融合了教師模型特征的先驗知識,能夠取得很好的效果。
如圖2 所示,深度蒸餾網絡的目標是在教師網絡T 提取的特征指導下訓練學生網絡S。對于人臉識別n 分類問題,訓練集其中xi為圖像數據,yi為對應的類別標簽,對一個訓練樣本l ∈{1,0}為類別標簽y 的one-hot 編碼,深度網絡S 最后一層輸出一個d 維的特征向量p。傳統的n 分類人臉問題通過最小化損失函數L( w; x,l)=H( p,l )來優化模型參數w,其中H( p,l )代表p 與l 的交叉熵。

圖1 原始的Inception模塊和SE-Inception模塊(左),原始的Residual模塊和SE-ResNet模塊
本文提出的深度特征蒸餾方法改進傳統的人臉損失函數,新的損失函數在原有交叉熵損失函數H( )p,l的基礎上,增加與訓練好的教師模型特征與學生模型特征的l2 距離如下:

式中T( x',w')為教師網絡最后一層特征,S( x,w )為學生網絡最后一層特征,最終的損失函數為:

式中:α 為蒸餾強度。
通過反響傳播(Back-Propagation,BP)算法不斷迭代優化公式(2),訓練學生網絡S,并最終取學生網絡S的最后一層人臉特征作為學生模型的輸出。
為了達到模型壓縮和加速的目的,學生網絡S(x,w)通常選取最新的高效小網絡模型,同時教師網絡T(x,w)為精度非常高的大網絡模型,其輸出的特征Tt=T(x,w)具有很多優良性質,因此數據對(x,Tt)相比原始數據(x,l)具有更多的知識。讓(x,Tt)通過監督信號公式(1)監督訓練學生網絡,可以得到比直接從訓練集D 更有的效果,同時讓學生網絡接受分類信號的監督,監督信號式(1)和分類信號共同組成了損失函數式(2)監督學生模型的訓練,最終學生模型的輸出融合了特征Tt和類別信息l,實現了對深度特征Tt蒸餾。

圖2 深度特征蒸餾人臉識別框架
如圖2 所示,教師網絡T 為InsightFace 模型,網絡結構為100 層的ResNet+SENet,輸入圖像大小為112×112 像素,圖像的每個像素通過減去127.5,然后除以128 來歸一化。學生網絡S 采用如MobileNetV1、Shuf?fleNet、MobileNetV2、MobileFaceNet 等小網絡,同樣嵌入SENet 網絡結構,輸入圖像操作同教師模型T,輸出特征維度都為128 維。
本文首先進行對教師模型ArcFace 模型嵌入SENet 網絡對比實驗,ArcFace 模型在L-FW 數據集上已接近飽和,因此為充分驗證嵌入SENet 網絡的效果在MegaFace[22]數據集上驗證效果。在LFW 上利用提出的深度特征蒸餾方法和嵌入SENet 結構對多種學生網絡進行對比評測,以驗證方法的有效性。
(1)采用MegaFace 數據集來驗證嵌入SENet 網絡的有效性,MegaFace 包含一百萬張圖片,690K 不同的人。預先對MegaFace 干擾集做了仔細的比對和清理,這樣獲得的性能才是模型本身的性能,也移除了噪音帶來的隨機性。
(2)LFW 用來評估學生網絡的性能。LFW 包含5749 人的13233 張圖片及其標注,每張圖片標注一個人名,其中大約1680 個人包含兩個人以上的人臉。評測時,使用提供的標準的3000 對相同人臉及3000 對不同人臉的圖片,待評估模型對其中每一對人臉判斷是否為同一個人,計算判斷的正確率。
如圖2 所示,多數據集的每張圖片,使用MTCNN[23]檢測人臉和關鍵點并對齊。將對齊后的圖片縮放至112×112 尺寸,并將數據轉換成TFRecord 格式,本次實驗采用4 塊Tesla V100 16G 顯卡,深度學習框架為TensorFlow。
(1)訓練教師網絡
我們用生成的TFRecord 格式數據集作為輸入,采用的損失函數為ArcFace 算法的損失函數ArcLoss,即式(2)中的H( p,l )為:

其中:

實驗時,令 s=64, m=0.5,權重衰減參數為0.001,統一批尺寸(batch size)為128,初始學習率為0.01,隨迭代周期變小,400000 步變為0.001,560000 步變為0.0001,640000 步變為0.00001,梯度更新方式采用mini-batch SGD 優化算法,迭代周期為700000 步。網絡結構為ResNet100+SENet,最后一層特征維度改為128 維,數據集是經過清洗的版本,結果對比如表2所示。

表2 MegaFace 上不同模型的識別和驗證結果,“Rank1”是指取最高置信度精度,“VR”指的是虛假接受率上的面部真實接受率
(2)訓練學生網絡
在做學生模型數據集時,需要用訓練完成的教師模型提取LFW 數據集上每張對齊后的人臉圖片的人臉特征,將人臉圖片和對應的人臉特征一起做成TFRecord 數據集作為輸入。訓練時,網絡模型采用小網 絡:SequeezeNet、MobileNetV1、ShuffleNet、Mobile?NetV2、MobileFaceNet 五種網絡做對比實驗,記錄模型的參數和模型的大小。采用深度特征蒸餾的方法改進損失函數,如式(5):

參數見式(4),T( x',w')是教師模型提取的人臉特征,S( x,w )是學生模型輸出的對應人臉特征。令s=64,m=0.5,權重衰減參數為0.001,batch_size 為128,由于是小網絡模型,學習率設為0.01,蒸餾強度系數α=1,訓練到180000 步時模型擬合。為充分驗證方法的有效性,做了三次對比實驗。第一次直接用小網絡模型來訓練人臉數據集,第二次用深度特征蒸餾的算法實驗,第三次采用深度特征蒸餾加嵌入SENet 網絡結構的思想進行實驗,實驗結果見表3。

表3 LFW 上三種方法的人臉識別精度
(3)結果評測
如表3 所示,教師模型ArcFace 網絡嵌入SENet結構時,在MegaFace 數據集上的Rank1@106和VR@FAR 10-6評測標準中,精度分別提升了0.74%和0.48%,模型大小經過TensorFlow 框架PB 之后的大小為16MB 和16.1MB,這說明了模型大小增加很小的情況下精度得到了一定的提升,驗證了嵌入SENet 網絡的有效性。
表3 的三組數據對比了深度特征蒸餾和嵌入SENet 網絡的效果,128 維學生網絡的識別精度通過深度特征蒸餾方法最好的精度達到99.28%,比直接使用學生模型精度高了6.23%,提升非常大,比教師模型的精度低了0.5%,但模型大小壓縮了接近4 倍,充分驗證了深度特征蒸餾的有效性。最后一組數據是深度特征蒸餾和嵌入SENet 方法,再一次驗證了嵌入SENet網絡結構有助于提高識別精度。
本文提出了深度特征蒸餾方法和嵌入SENet 網絡結構的方法,以大模型為教師網絡,使用教師網絡指導輕量級的學生網絡訓練,通過改進學生網絡結構和損失函數,在接近教師網絡模型識別精度的情況下,模型大小壓縮近4 倍,取得非常好的效果。通過本文提出的算法最終訓練生成的模型,能夠嵌入到移動端設備中,滿足特定場景下的人臉識別算法的需求。