萬立志張運楚葛浙東王超
(1.山東建筑大學 信息與電氣工程學院,山東 濟南 250101;2.山東省智能建筑技術重點實驗室,山東 濟南 250101)
快速人員身份鑒別已成為當下社會安全和日常業務流程的重要技術手段,生物特征識別成為研究熱點,其中人臉識別因其準確度高、非侵入性和低成本等優點,得到充分關注和廣泛應用[1]。人臉識別需要大量人臉數據作為訓練樣本,然而在很多應用場景中獲得的人臉數據有限,且存在各種劇烈的臉部變化,如光照、表情和遮擋等[2]。若訓練樣本缺少,識別準確率會有很大降低[3]。因此,學者們提出研究小樣本人臉識別方法,在人臉訓練樣本較少的情況下,可以歸類人臉身份[4]。
基于深度學習的卷積神經網絡(Convolutional Neural Networks,CNN)能從特征圖的低層到高層逐步提取代表人臉的高級語義化特征,已廣泛應用于人臉識別。SUN等[5]采用卷積神經網絡提取人臉深層次特征,構造DeepID算法進行人臉驗證。SCHROFF等[6]提出了Facenet模型,將人臉圖像映射為一個128維的特征向量,并使用三元組損失Triplet loss增大類間差距、縮小類內差距,以提高模型性能。TAIGMAN等[7]提出了DeepFace算法,通過引入了三維人臉模型對有姿態的人臉仿射對齊,提高了識別精度。由于存儲容量的限制以及采用全局平均池化會使精度下降,移動設備較多地采用MobileNet或者ShuffleNet等模型進行人臉識別。張子昊等[8]改進了MoblieFaceNet網絡,考慮到人臉圖像中心和邊緣區域應具有不同的權重,故將全局深度卷積替代全局平均池化,讓網絡自主學習不同點的權重值,從而提高人臉識別精度。在孿生神經網絡應用于手寫筆跡識別后,張國云等[9]將其應用于人臉識別領域,通過比較兩張人臉圖像映射的特征向量之間的歐氏距離,從而完成人臉比對相似度。利用對比損失函數組合原始數據,創造了指數級別的數據量,解決了小樣本的數據量問題。但是,由于采用黑白圖像訓練,并且采用傳統的卷積神經網絡模型,因此準確率不高。
在損失函數設計方面,由于傳統的交叉熵損失函數(Cross Entropy Loss Function,CELF)僅關注于類間特征可分,不能很好地表示最小化類內距離,因此王靈珍等[10]在交叉熵損失函數的基礎上聯合中心損失函數(Center Loss Function,CLF)作為聯合損失函數進行模型優化。為了讓特征學習到更可分的角度特性,LIU等[11]利用角度距離在交叉熵損失函數的基礎上提出了角度損失函數(Angular Softmax Loss,A-Softmax),利用大角度間隔將類別分開。WANG等[12]利用余弦距離在A-Softmax損失函數的基礎上提出了加性間隔損失函數(Additive Margin Softmax Function,AMSoftmax)。DENG等[13]考慮到角度距離比余弦距離對角度的影響更加直接,在AMSoftmax損失函數的基礎上進行改進并提出了加性角度間隔損失函數(Additive Angular Margin Loss Function,Arcface),將特征向量歸一化到超球面上,使模型在角度空間對分類的邊界進行最大化,用以解決不同特征向量大小對分類效果的影響。
綜上所述,人臉識別領域中,利用深度學習模型進行的人臉識別在準確率上較高,但是模型的訓練過程需要大量的圖像數據作為訓練樣本,需要很高的硬件和時間需求。在沒有足夠樣本進行訓練的情況下,CNN模型不能夠很好地收斂運行,或者出現過擬合現象。文章在深度學習理論的基礎上,提出了一種引入混合域注意力機制(Convolutional Block Attention Module,CBAM)的孿生神經網絡模型,在預訓練Inception-Resnet V1的模型中選擇卷積層作為特征提取網絡,根據實驗測試將輸出映射至特定維度的特征向量空間中;通過度量學習的損失函數來優化模型,最終模型在小樣本的情況下使得同一人臉圖像距離減小,不同人臉圖像距離增大。文章以準確率為指標,與傳統模型進行對比實驗,以期驗證所提出的模型比起傳統方法有較好地提升。
多任務卷積神經網絡(Multi-task Cascaded Convolutional Networks,MTCNN)是一個基于深度學習的人臉識別方法,將人臉區域檢測和人臉關鍵點檢測聯合實現,采用3個串行連接的卷積神經網絡,每個卷積神經網絡均完成人臉檢測、人臉對齊和檢測框回歸3個任務[14]。
MTCNN的3個卷積網絡分別為建議網絡(Proposal Network,P-Net)、調整網絡(Refine Network,R-Net)和輸出網絡(Output Network,ONet)。為了適應不同尺寸圖片的輸入,建議網絡設置為全卷積神經網絡,同時使用卷積運算代替滑動窗口運算,減小了計算負擔,快速過濾>90%的背景目標,實現對人臉圖像的粗篩取;將建議網絡生成的人臉候選框輸入調整網絡中,調整網絡取消置信度判決為False的人臉候選框,并對其向量繼續回歸合并;輸出網絡輸出最終合并后的人臉框和人臉關鍵點位置。MTCNN框架圖如圖1所示。

圖1 MTCNN框架圖
MTCNN引用多種損失函數實現多任務學習,人臉檢測任務時可采用交叉損失函數Ldet;而人臉框向量回歸任務時,采用的是平方和損失函數Lbox;同時采用了實際數據與標定數據差值的平方和作為人臉特征點回歸任務的損失函數Llandmark,O-Net最終輸出的人臉特征點實際為標定后的人臉特征點,即人臉關鍵點己經被對準到規范坐標,該標定過程被稱為人臉對齊。因此,MTCNN實際上完成了人臉檢測與人臉對齊兩個功能。
在判斷圖像是否包括人臉時采用交叉熵損失函數,數學表達式由式(1)表示為

式中y為對應的標簽值,在二分類情況時,即為0或1;pi為對應標簽的概率值。
在確定人臉邊界框和人臉特征點回歸時,采用歐氏距離損失函數,數學表達式分別由式(2)和(3)表示為

式中和為模型輸出的人臉框和人臉特征點的預測值;ybox和ylandmark為原始數據中人臉框和人臉特征點的實際值。
孿生神經網絡由一對相同結構、共享權值w和偏置值b的網絡模型組成[15]。每次輸入2個樣本后,通過共享權值的模型將輸入圖像的特征映射至指定維度的特征向量空間中,比較特征向量的歐氏距離以判定2張圖像的相似程度。孿生神經網絡結構如圖2所示。

圖2 孿生神經網絡圖
使用對比損失函數作為模型的優化函數[16],數學表達式由式(4)表示為

式中D2W=‖x1-x2‖2為2個樣本通過模型后輸出的特征向量之間的歐氏距離,即二范數;x1和x2為2個樣本在通過模型后映射至特征向量空間的坐標值;m為設定的閾值,表示只考慮在0~m之間的不相似特征歐氏距離,當距離超過m時,則損失視為0,在模型訓練中,閾值通常設定為1;Y為2個樣本是否匹配的標簽。
Y=1時代表2個樣本相似或者匹配,此時的損失函數由式(5)表示為

即原本相似的樣本,如果在特征空間的歐氏距離較大,則說明當前的模型參數設置不合理,因此損失增大,需要繼續迭代修改參數。
Y=0時則代表2個樣本不匹配,此時的損失函數由式(6)表示為

即當樣本不相似時,兩者之間特征空間的歐氏距離反而小的情況下,損失函數的值會變大。
由于孿生神經網絡一次性輸入2張樣本,同時使用對比損失函數進行網絡優化,使得每張樣本不僅只是使用一次,而是利用每1張樣本與其他同類或非同類樣本通過網絡映射的特定維度向量空間后產生的特征向量進行距離比較,擴大單張樣本的訓練次數,從而使得人臉識別網絡訓練數據以指數級別的增加,同時將人臉分類問題轉換為2張圖像相似度比較的問題。
使用孿生網絡訓練時,由于其逐對訓練的原理,可以在小樣本的情況下創造平方級別數量級的數據來訓練模型,彌補了在小樣本情況下的過擬合缺陷。假設原始樣本有A類,每類有B個樣本,如果利用傳統的分類模型進行訓練,則原始樣本提供的可訓練數據量為N=A×B。但是在使用了孿生神經網絡和對比損失函數的情況下,原始樣本可以提供的訓練數據量N由式(7)表示為

基于度量學習的損失函數能夠有效地減少復雜干擾造成的相同身份人臉特征向量之間的差異,并增大不同身份人臉特征向量間差異。從大量的訓練人臉特征向量中學習該特征空間更具有穩定性、可區分的距離度量,將原本在原始空間中分辨困難的數據進行維度變換,可降低干擾影響,提升識別精度。
利用MTCNN檢測圖像中的人臉區域并將人臉部分進行截取,從而減少計算量和無關的圖像信息,將所有人臉圖像進行標準化來減小光照、噪聲等外來干擾。將經過預處理的圖像進行孿生神經網絡計算后,通過比較輸出的特征向量在特征向量空間之間的歐氏距離比較2張人臉的相似度。孿生神經網絡算法流程如圖3所示。

圖3 孿生神經網絡算法流程圖
采用遷移學習來減小運算時間并在小樣本的數據集上進行實驗,具體操作為:(1)將Inception-ResNet-v1利用交叉熵損失函數和中心損失函數的聯合損失函數在大型數據集的基礎上進行訓練后,將模型的卷積層作為特征提取部分;(2)添加注意力機制模塊CBAM,為不同的通道和特征圖區域設置權重值;(3)利用全局平均池化層(Global Average Pooling 2D)取代壓平層(Flatten)后,添加隨機斷開層(Dropout)和全連接層(Dense)將輸出映射至128維的向量空間中,網絡結構見表1。通過比較特征向量之間的歐氏距離大小來判斷2張人臉的相似程度。

表1 網絡結構表
預訓練模型是利用Inception-Resnet-v1模型在大型數據集上進行訓練分類;截取模型的卷積層,作為預訓練的特征提取網絡,使得網絡模型的參數在預訓練的基礎上進行迭代優化,從而減小模型運算時間。
CBAM層是基于混合域注意力機制思想設計的注意力機制模塊。引入注意力機制模塊可以微調原始模型參數,使得網絡能夠給予更重要的圖像區域和通道更大的權重,從而提高了整個模型的準確度。通過對比實驗證明,引入基于CBAM模塊注意力機制模塊比不添加注意力機制模型有一定的提升。
Global Average Pooling 2D層是代替Flatten層和全連接層的全局平均池化層,將輸入的(3,3,1 792)維度的特征值壓縮至(1,1,1 792),選擇3×3矩陣中的平均值作為特征輸出,最終全局平均池化層的輸出為一維的特征向量值,特征向量值的長度為輸入特征向量的通道數1 792。利用全局平均池化層取代Flatten層和全連接層可以減少模型的計算量,提高運算效率,同時可以抑制過擬合,保證模型的泛化能力。
Dropout層是指在深度學習網絡的訓練過程中,對于神經網絡單元,按照一定的概率將其暫時從網絡中斷開。對于隨機梯度下降來說,由于是隨機丟棄,因此在每一輪的訓練中都在訓練不同結構的網絡,從而提高了網絡的泛化能力,減小了模型的過擬合情況。文章按照0.5的比率,每輪訓練時隨機斷開一半的神經元,所以輸出為896。
Dense層是全連接層,其輸出是1個一維向量,向量的長度取決于全連接層的輸出。對于孿生神經網絡模型,Dense層的輸出代表了孿生神經網絡輸出的向量空間維度。通過對比實驗證明,選擇128維的特征向量輸出有利于提高模型的準確度,在一定程度上避免了過擬合的情況。
注意力機制的本質是定位到感興趣的信息,抑制無用信息,給予不同位置的像素以不同的權重值,其核心思想是在訓練過程中更多地關注于需要被關注的區域,使得模型性能受到值得重視的部分更多影響。對于應用于單張圖像的注意力機制通常分為通道域注意力機制(Channel Domain)、空間域注意力機制(Spatial Domain)以及混合注意力模型(Mixed Domain)3種類型。通道域注意力機制是指為不同的通道設置權重值,并納入到模型的學習中,使得最后的結果受到權重大的通道更多影響,從而改善模型效果。空間注意力機制指為特征圖不同位置設置權重值,并納入到模型的學習中,使得最后的結果受到權重大的特征圖區域更多影響,從而提高模型性能。文章采用基于CBAM作為網絡模型的注意力機制模型,其結構如圖4所示,是通過串聯通道域注意力機制(Channel Attention)和空間域注意力機制(Spatial Attention)來組成混合注意力機制[17]。相比于網絡結構SENet(Squeeze and Excitation Network)只關注通道域的注意力機制,CBAM混合域注意力模型可以取得更好的效果。

圖4 CBAM注意力模塊圖
CBAM中通道域注意力模塊如圖5所示,原特征圖通過全局最大池化和全局平均池化;再分別通過一個共享權值的多層感知器,將輸出特征圖全局同位相加;采用Sigmoid函數激活,將權重限制在0~1之間;將權重矩陣和原始輸入特征圖通道相乘,使得不同通道的特征圖在整體模型的訓練中起到不同的作用。

圖5 通道域注意力模塊結構圖
通道域注意力機制的數學表達式由式(8)表示為

式中x為輸入的特征圖;A為對特征圖的全局平均池化;M為對特征圖的全局最大值池化;Fs為一個共享權值的多層感知器;δ為將輸入限制于0至1之間的非線性激活函數Sigmoid;Mc(x)為經過通道域注意力機制后的特征圖。
多層感知機(Multilayer Perceptron,MLP)設置為三層全連接層,第一層和第二層輸出分別為1 204和512;第三層全連接層輸出設置為模塊原輸入的通道數1 792,能夠保證輸出的權重矩陣維度和原特征圖的通道數一致,使得最終得到的Channel Attention能夠給予原不同通道的特征圖以不同的權重,從而加強模型的表達效果,提高準確率。
CBAM中空間域注意力模塊如圖6所示,是原始特征圖沿通道方向將1 792個數據進行全局最大池化和全局平均池化得到2張(3,3,1)的特征矩陣;矩陣沿通道域連接組合,形成一個(3,3,2)的特征圖;經過一層的3×3卷積核的神經網絡,將通道域維度降至1維;通過Sigmoid激活函數將變換后的權重系數矩陣權重限制在0~1之間后,將得到的權重系數矩陣(Spatial Attention)與原始輸入特征圖(Feature Map)點乘,賦予原本神經網絡輸出的特征圖的每一區域不同權重。

圖6 空間域注意力模塊結構圖
空間域注意力機制的數學表達式由式(9)表示為

式中Fdr為降維的神經網絡,將通道數降至1維;設計為1個3×3卷積核、步長為1、通道數為1的卷積層;設置填充方式為same padding,使得降維之后的權重矩陣保持和輸入特征圖同樣的維度大小;Ms(x)為經過空間域注意力機制后的特征圖。
利用權重矩陣和原特征圖逐點相乘,同一張特征圖的不同區域得到了不同的權重值,從而增強模型的準確率。
利用CASIA-WebFace人臉公開數據集進行實驗,其是由中國科學研究院自動化研究所李子青團隊在2014年收集整理完成,包含10 575個人的494 414張人臉圖像。從數據集中隨機選擇100個對象進行實驗,選擇人臉對象的前10張圖像作為實驗數據。通過隨機組合的方式選擇10 000組數據樣本,其中正負樣本數量之比為1∶1,并且按照8∶2的數據比分割測試集和驗證集。
實驗的硬件配置為:中央處理器i5-8400、圖形處理器英偉達1070、16G運行內存。實驗平臺是基于Tensorflow后端的keras框架。批大小設置為64,損失函數為對比損失函數,優化器為適應性矩估計(Adaptive moment estimation,Adm),步長為0.000 2,迭代次數設置為100。
采用Inception-Resnet-v1作為預訓練模型,通過交叉熵損失函數和中心損失函數的聯合損失函數在CASIA-WebFace上進行訓練,選擇模型的卷積層作為特征提取部分,連接全連接層并添加Dropout層和Relu激活函數后將輸出映射至特定維度的向量空間。每次2張圖像通過孿生神經網絡模型運算,得到2個相同維度的特征向量,通過比較其在向量空間中的歐氏距離來判定2張人臉的相似度。為了選定維度大小,設定了最后一個Dense層的輸出維度進行實驗比較分析。維度選擇的實驗結果見表2。

表2 不同特征向量維度實驗結果表
由表2可知,選擇128維的特征空間輸出的特征向量訓練集的準確率達到了98.78%,準確率差距最小為2.34%,可以得出實驗過程中沒有出現過擬合現象,因此確定以128維特征向量輸出的Dense層作為輸出。
為了對比在孿生神經網絡中添加注意力機制的有效性,實驗將添加通道域注意力機制SENet的模型命名為SE_Siamese,添加空間域注意力機制(Global Context Network,GCNet)的模型命名為GC_Siamese,添加混合域注意力機制CBAM的模型命名為CBAM_Siamese,不添加注意力機制的模型命名為Siamese。實驗結果見表3。實驗驗證集準確率如圖7所示。

表3 注意力機制實驗結果表
由圖7可知,通過增加注意力機制模塊的3種模型的驗證集準確率都超過了不添加注意力模塊的表現。比起通道的激勵擠壓注意力機制SENet,集合了SENet和NLNet(Non-local)的GCNet以及混合了空間域和通道的CBAM表現得更加優秀。基于模型的準確率以及訓練參數的綜合選擇,確定了以CBAM注意力模塊嵌入神經網絡模型中。

圖7 實驗驗證集準確率圖
為了進一步比較實驗算法的準確率,在訓練上述網絡模型的數據集中將文章所設計CBAM_Siamese模型與PCA+SVM[3]、Facenet+SVM[6]、DeepFace[7]和ResNet-50[13]進行比較。實驗結果見表4。

表4 不同方法人臉識別準確率對比表
由表4可知,由于PCA的特征選取沒有進行訓練,所以識別率較低。基于加性角度間隔損失函數的ResNet-50模型在準確率上沒有達到本實驗方法的準確率,而利用DeepFace算法的深度學習模型識別率也有待提高。利用Facenet模型提取了128維人臉特征后,通過特征進行SVM分類的方法也沒有達到CBAM_Siamese模型的準確率。通過對這5種檢測算法的對比實驗可知,文章提出的算法對于小樣本的人臉進行識別具有一定的優勢性,其準確率達到了98.12%。
通過上述研究,得到如下結論:
(1)在使用更少的訓練數據情況下,文章選擇了混合域注意力機制的CBAM模塊作為注意力機制嵌入至孿生神經網絡中,與其他單純使用通道域和空間域注意力機制模塊相比,其能夠充分考慮給予不同通道的特征圖以不同的權重,使得模型比傳統的孿生神經網絡具有更高的準確率;以訓練集和驗證集準確率綜合考慮,輸出128維的孿生神經網絡模型人臉識別準確率達到96.44%,而且過擬合現象小。
(2)以實驗準確率為性能指標,通過與其他4種人臉識別模型對比,文章所提出的算法對于小樣本集的人臉識別達到了98.12%的準確率。