張 典,汪海濤,姜 瑛,陳 星
昆明理工大學(xué) 信息工程與自動化學(xué)院,昆明 650500
人臉識別是一種重要的身份識別方式,是計算機視覺領(lǐng)域中的重要研究方向之一。由于人臉識別被認為是用戶體驗最為友好的生物識別方式,使得其在設(shè)備解鎖、移動支付、應(yīng)用認證等移動和嵌入式應(yīng)用中有了廣泛的應(yīng)用。近年來,由于各大機構(gòu)在網(wǎng)絡(luò)上發(fā)布的大型人臉數(shù)據(jù)集,以及深度卷積網(wǎng)絡(luò)在人臉識別技術(shù)上的研究取得了巨大的成功,使得深度卷積網(wǎng)絡(luò)可以使用大量數(shù)據(jù)來學(xué)習(xí)數(shù)據(jù)中表征人臉的最佳特征。這讓基于深度卷積網(wǎng)絡(luò)的人臉識別算法實現(xiàn)了非常高的準(zhǔn)確度。
由于有先進的網(wǎng)絡(luò)結(jié)構(gòu)和判別式訓(xùn)練方法,深度卷積網(wǎng)絡(luò)將人臉識別的性能提高到了前所未有的水平。但是目前的研究重點大多在于如何構(gòu)建層數(shù)更深、寬度更廣的神經(jīng)網(wǎng)絡(luò),這樣會導(dǎo)致神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)龐大。現(xiàn)有的高精度人臉識別模型都是建立在這樣的大型深度卷積網(wǎng)絡(luò)模型之上的,同時這種模型需要大量的計算資源,使得網(wǎng)絡(luò)只能在性能高的處理器上運行,這不利于模型移植到移動和嵌入式設(shè)備中。在實際的使用場景中,一些移動和嵌入式設(shè)備中需要離線進行身份驗證,如手機解鎖、車載身份識別中,需要在有限的計算資源里實現(xiàn)精準(zhǔn)的面部驗證,同時還需要模型精簡和迅速,因此神經(jīng)網(wǎng)絡(luò)的輕量化對移動平臺設(shè)備的使用,有很好的工業(yè)價值。
輕量化神經(jīng)網(wǎng)絡(luò)需要考慮到三個維度:參數(shù)少、速度快和精度高。通過對現(xiàn)有的SqueezeNet、Moblie-Net V1、MobileNet V2、ShuffleNet、ShuffleNet V2等高效神經(jīng)網(wǎng)絡(luò)架構(gòu)[1-5]進行研究,根據(jù)實驗,與最先進的大型卷積網(wǎng)絡(luò)生成的結(jié)果相比,它們只能達到非常低的準(zhǔn)確度。
本文分析了常見的深度神經(jīng)網(wǎng)絡(luò)用于人臉識別時的缺點,并專門設(shè)計了Lightfacenet輕量級神經(jīng)網(wǎng)絡(luò)來克服這個缺點。這是一組非常高效的卷積神經(jīng)模型,專為在移動和嵌入式設(shè)備上實現(xiàn)高精準(zhǔn)度的實時面部驗證進行設(shè)計。通過在現(xiàn)有的輕量級神經(jīng)網(wǎng)絡(luò)中引用了基于擠壓和激勵結(jié)構(gòu)[6-7](squeeze and excitation)的輕量級注意力模型,為網(wǎng)絡(luò)增加更多的非線性結(jié)構(gòu),可以使網(wǎng)絡(luò)能更好地擬合通道間的復(fù)雜相關(guān)性,并使用Swish激活函數(shù)代替ReLU以提高神經(jīng)網(wǎng)絡(luò)的精度。在卷積網(wǎng)絡(luò)的結(jié)尾處使用全局深度卷積層輸出判別特征向量,使用交叉熵損失函數(shù)在MSCeleb-1M數(shù)據(jù)集上進行訓(xùn)練,并用中心損失函數(shù)調(diào)優(yōu),使得該網(wǎng)絡(luò)的精度達到現(xiàn)有的大型卷積神經(jīng)網(wǎng)絡(luò)的水準(zhǔn)。
本文提出的神經(jīng)網(wǎng)絡(luò)Lightfacenet,其參數(shù)量小,在相同的實驗條件下,在LFW(labeled faces in the wild)、AgeDB等公有數(shù)據(jù)集上,對Lightfacenet與MoblieNet V1、MobileNet V2、ShuffleNet、ShuffleNet V2和Resnet-50等深度卷積神經(jīng)網(wǎng)絡(luò)進行對比實驗。實驗表明Lightfacenet擁有輕量級神經(jīng)網(wǎng)絡(luò)高效性的同時,也有著媲美大型卷積網(wǎng)絡(luò)的精度。
本文主要研究的是基于輕量級深度卷積網(wǎng)絡(luò)的人臉識別算法。通過調(diào)整深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)使模型在速度和精度上取得平衡,這是在近幾年中積極發(fā)展研究的領(lǐng)域。例如,SqueezeNet通過使用瓶頸結(jié)構(gòu)設(shè)計了一個小巧的網(wǎng)絡(luò)(參數(shù)量為125萬),并在ImageNet上實現(xiàn)了AlexNet(參數(shù)量為6 000萬)級別的準(zhǔn)確度,同時其網(wǎng)絡(luò)參數(shù)減少98%。MobileNet V1使用深度可分卷積模塊構(gòu)建輕量級神經(jīng)網(wǎng)絡(luò),在細粒度識別中達到了Inception V3的效果,并且大大減少了計算量和尺寸。ShuffleNet使用逐點群卷積和通道混洗的方式降低計算成本,實現(xiàn)了比MoblieNet V1更高的效率。MoblieNet V2中引入了倒置殘差模塊,改善了模型性能。ShuffleNet V2使用了Channel-Split模塊,使得模型的性能進一步提高。
在這些通用的輕量級卷積神經(jīng)網(wǎng)絡(luò)中都存在著全局池化層,比如SqueezeNet、MoblieNet V1、Mobile-Net V2、ShuffleNet、ShuffleNet V2等。通過研究表明,對于人臉驗證和識別,不包含全局池化層的卷積網(wǎng)絡(luò)比包含全局池化層的卷積網(wǎng)絡(luò)更加精確。
如圖1所示,在特征圖進行全局池化前,可以得知人臉圖像中心區(qū)域的感受野(receptive field)比邊緣角落區(qū)域的感受野重要。在進行全局池化后,特征圖所有的位置權(quán)重平均化,不區(qū)分位置的重要性,這樣不符合真實的情況。使用全局深度卷積替換全局池化進行計算時,對于固定的空間位置,所有通道中的全局深度卷積的權(quán)重信息可以象征不同位置的空間重要性,這樣的計算方式可以使神經(jīng)網(wǎng)絡(luò)重點學(xué)習(xí)圖像中重要的特征。
Fig.1 Flow chart of lightweight convolutional neural network圖1 輕量級卷積神經(jīng)網(wǎng)絡(luò)計算流程圖
本文對神經(jīng)網(wǎng)絡(luò)中卷積核的感受野進行分析,通過級聯(lián)神經(jīng)網(wǎng)絡(luò)來檢測圖像的人臉和面部特征點,并用面部特征點通過相似變換對齊矯正人臉圖像。將對齊面部圖像進行歸一化處理后,使用以MoblieNet V2為主體結(jié)構(gòu)的輕量級網(wǎng)絡(luò)提取特征向量,在全局池化層合并特征之前,最后一層卷積層輸出的特征圖是具有7×7的矩陣特征圖。盡管在角落的特征單元與中心位置的特征單元的感受野具有相同的尺寸大小,但是它們位于輸入圖像的不同位置。如圖1所示,在中心位置的感受野特征點輸出結(jié)果要比角落處的感受野特征點輸出結(jié)果的影響大得多,其特征圖的影響力分布近似于高斯分布。特征圖在角落處的有效感受野要明顯小于中心處感受野,因此角落處的特征點包含的信息要少于中心位置,不同位置的特征點提取到的面部特征也就有了不同的重要性。同時輕量級神經(jīng)網(wǎng)絡(luò)的卷積末端并不適合直接應(yīng)用于人臉特征提取,因為它具有高達62 720維的特征尺寸,這使得網(wǎng)絡(luò)會學(xué)習(xí)到很多影響力不大的特征,因此在輕量級神經(jīng)網(wǎng)絡(luò)的末端加入全局池化層雖然效果不好,但也是一種減少特征維度,使特征更加精簡的方式。對以上的問題進行了研究,有兩種方式解決這個問題,一種是用全連接層代替全局池化層,但是這會為網(wǎng)絡(luò)模型增加大量的參數(shù),即使是128維,全連接層也會給網(wǎng)絡(luò)帶來將近800萬個模型參數(shù),這顯然是不符合本文要實現(xiàn)人臉識別的神經(jīng)網(wǎng)絡(luò)輕量化的目的,因此本文選擇了另一種,使用全局深度可分卷積替換全局池化。
為了處理不同位置具有不同重要性的特征圖,本文使用了全局深度卷積替代輕量級神經(jīng)網(wǎng)絡(luò)中的全局池化層,全局深度卷積層本質(zhì)上是深度卷積層,特殊之處在于其卷積核的大小與輸入的大小相同,padding為0,stride為1,全局深度卷積如圖2所示。
Fig.2 Global depth separable convolution圖2 全局深度可分卷積
圖中,F(xiàn)是W×H×D的特征圖,K是W×H×D的深度可分卷積核,公式的計算結(jié)果如下:
當(dāng)輕量級神經(jīng)網(wǎng)絡(luò)的最后一層使用7×7×1 280的全局深度可分卷積后,會輸出1 280維的面部特征向量,其計算成本為62 720次,使用全局深度可分卷積后將網(wǎng)絡(luò)通過MS-Celeb-1M數(shù)據(jù)集以角度損失函數(shù)訓(xùn)練,在LFW和AgeDB的數(shù)據(jù)集上準(zhǔn)確度得到了明顯的提升。
在神經(jīng)網(wǎng)絡(luò)搭建的過程中采用擠壓和激勵結(jié)構(gòu)讓神經(jīng)網(wǎng)絡(luò)增加一個小型的注意力機制使之在學(xué)習(xí)的過程中自主獲取到每一個特征通道的重要程度,之后再參照這個重要程度去提升有用的特征和抑制用處不大的特征。擠壓和激勵結(jié)構(gòu)如圖3所示。
Fig.3 Squeeze and excitation structures圖3 擠壓和激勵結(jié)構(gòu)
如圖3所示,擠壓和激勵結(jié)構(gòu)包含三部分:
第一部分是擠壓函數(shù)Fsq,將特征圖的全局空間信息沿著特征通道的方向壓縮為一個通道信息,該通道擁有全局特征通道的感受野,這里通過使用全局池化層來實現(xiàn)統(tǒng)計數(shù)據(jù)。在形式上通過將空間維度H×W×D縮小為1×1×D來生成統(tǒng)計數(shù)據(jù)z∈RD ud表示第d層通道的特征圖,zd表示第d層通道統(tǒng)計的數(shù)據(jù)。
第二部分是激勵函數(shù)Fex,為了充分利用擠壓函數(shù)中聚合的信息來捕獲特征通道方面的依賴關(guān)系,這里使用了帶有Sigmoid激活的門控機制學(xué)習(xí)參數(shù)W,為特征通道生成權(quán)重s。通過兩個帶有非線性激活函數(shù)的全連接層的瓶頸來實現(xiàn)門控機制,第一層減低維度使用ReLU選擇性輸出結(jié)果,第二層升高維度使用Sigmoid將權(quán)重歸一化到0-1,讓結(jié)果更具非線性的同時也極大減少參數(shù)量和計算量。
第三部分是重組權(quán)重函數(shù)Frw,將激勵函數(shù)輸出的結(jié)果與原來的特征圖進行通道乘積為特征圖權(quán)重加權(quán),來重新設(shè)定每個特征通道的重要程度。
擠壓和激勵結(jié)構(gòu)通過全局卷積和兩層非線性激活函數(shù)以及重組權(quán)重的方式,在模型搭建和推理計算方面有良好性能,不需要新設(shè)計函數(shù)和神經(jīng)網(wǎng)絡(luò)層就可以實現(xiàn)擠壓和激勵結(jié)構(gòu),這使得模型的部署容易實現(xiàn)。
本文在Lightfacenet模型中引入了一種分段式線性激活函數(shù)(Hard_Swish)的非線性激活函數(shù),當(dāng)使用Hard_Swish替代用作ReLU時,對于分類任務(wù)可以顯著提高神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確性,Hard_Swish是根據(jù)Swish[8]非線性激活函數(shù)改進的,Swish定義為:
Swish非線性激活函數(shù)可以提高網(wǎng)絡(luò)的準(zhǔn)確性,但是同時也帶來了不好的問題,Sigmoid函數(shù)需要增加大量的計算,這對移動與嵌入式設(shè)備計算模型非常不友好。本文將通過以下方法來處理這個問題。
本文使用分段式線性函數(shù)(Hard_Sigmoid)來替代Sigmoid函數(shù):
如圖4所示,本文中替換Sigmoid的分段式線性激活函數(shù)(Hard_Swish)與Swish的非線性激活函數(shù)相比只有細微差別,其在準(zhǔn)確性上面沒有明顯的差異,新的激活函數(shù)使用了ReLU6,這樣大大提高了模型的推理速度,與直接使用ReLU激活相比速度幾乎沒有差別。從部署的角度來看,這樣的替代優(yōu)化了模型在移動平臺上的運行效率,同時還消除了Swish中Sigmoid函數(shù)在計算數(shù)值的精度損失,在保持速度與ReLU相當(dāng)?shù)那闆r下,提高網(wǎng)絡(luò)的準(zhǔn)確性。
經(jīng)過多次卷積后,網(wǎng)絡(luò)應(yīng)用非線性函數(shù)的成本會降低很多,因為在每次卷積后,每一層的特征圖大小通常會減半,在更深層使用Hard_Swish函數(shù)更有利于輕量化網(wǎng)絡(luò)的實現(xiàn)。因此本文僅在網(wǎng)絡(luò)的后半部分使用Hard_Swish函數(shù)來提高模型的推薦速度。
本章詳細描述了Lightfacenet輕量級神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),如表1所示。
Table 1 Lightfacenet lightweight neural network structure表1 Lightfacenet輕量級神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
Fig.4 Contrast of nonlinear activation function圖4 非線性激活函數(shù)對比
該網(wǎng)絡(luò)包含10個block(模塊),擴張為輸入模型的特征通道數(shù)倍數(shù),重復(fù)為重復(fù)模塊的次數(shù),SE為是否使用擠壓和激勵結(jié)構(gòu),NL為激活函數(shù)的類型。
Bottleneck為瓶頸結(jié)構(gòu)[9],在網(wǎng)絡(luò)中使用瓶頸結(jié)構(gòu),可以在保證精度不減的情況下大大減少網(wǎng)絡(luò)的參數(shù)量。其結(jié)構(gòu)如表2所示。
在實驗中主要使用MS-Celeb-1M[10]數(shù)據(jù)集作為輕量級深度網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)集。MS-Celeb-1M包含1 000多萬張圖,10萬個類別,平均每個類別有100張圖片,這是目前類別(ID)數(shù)量最大的數(shù)據(jù)集。使用這個數(shù)據(jù)集可以極大地避免由于訓(xùn)練不充分而導(dǎo)致模型性能低下的情況,使得深度神經(jīng)網(wǎng)絡(luò)更理想地發(fā)揮擬合模型的優(yōu)勢?,F(xiàn)有的大規(guī)模人臉數(shù)據(jù)集如表3所示。
Table 2 Bottleneck structure表2 瓶頸結(jié)構(gòu)
Table 3 Face data set table表3 人臉數(shù)據(jù)集表
在MS-Celeb-1M數(shù)據(jù)集中每個類別的圖片有幾十到幾百張,由于圖片的品質(zhì)不同,圖像信息完整性不一,使數(shù)據(jù)包含了很多噪音信息。不針對數(shù)據(jù)集做預(yù)處理就直接進行模型訓(xùn)練,會導(dǎo)致網(wǎng)絡(luò)學(xué)習(xí)到錯誤或異常的數(shù)據(jù),不能準(zhǔn)確地對人臉特征進行辨別。再者因為圖像的人臉姿態(tài)各異,位置和角度不同,如果沒有對圖片進行姿態(tài)矯正,就會給網(wǎng)絡(luò)學(xué)習(xí)與收斂提高難度。因此在訓(xùn)練網(wǎng)絡(luò)前對數(shù)據(jù)做預(yù)處理是非常有必要的。
實驗中針對數(shù)據(jù)集中人臉位置和姿態(tài)角度不同、人臉信息是否完整的問題,將圖像輸入到級聯(lián)人臉檢測神經(jīng)網(wǎng)絡(luò)[11]中來判斷圖像是否具有完整的面部信息,如果信息完整就獲取圖像中的人臉區(qū)域和面部關(guān)鍵點信息,利用面部的關(guān)鍵點和仿射變換函數(shù)對人臉區(qū)域進行姿態(tài)矯正后截取出人臉區(qū)域圖像[12-15],再將圖像統(tǒng)一調(diào)整為112×112像素作為人臉識別的訓(xùn)練樣本。
為了驗證本文提出的基于輕量級深度卷積網(wǎng)絡(luò)的實時人臉識別算法,使用神經(jīng)網(wǎng)絡(luò)框架Mxnet實現(xiàn)算法,在網(wǎng)絡(luò)的訓(xùn)練階段從網(wǎng)絡(luò)結(jié)構(gòu)、參數(shù)量、運行速度、識別率幾方面進行對比實驗。網(wǎng)絡(luò)主要使用Resnet50[16]、MobileNet V1、MobileNet V2、ShuffleNet、ShuffleNetV2和本文Lightfacenet輕量級神經(jīng)網(wǎng)絡(luò)。在測試集上本文使用LFW[17]、AgeDB等數(shù)據(jù)集進行測試。
實驗將數(shù)據(jù)集的訓(xùn)練樣本按9∶1劃分,生成實驗的訓(xùn)練集和測試集,采用arcface損失函數(shù)并用隨機梯度下降法進行訓(xùn)練[18-19],批處理大小設(shè)置為256,學(xué)習(xí)率為0.1,在12 000次、14 000次將學(xué)習(xí)率下降到原來的10%。實驗結(jié)果對比如表4所示。
Table 4 Effectiveness contrast table of neural network model表4 神經(jīng)網(wǎng)絡(luò)模型效果對比表
從表4中可以看出,本文中使用了深度可分卷積的網(wǎng)絡(luò)模型大小要遠遠小于使用傳統(tǒng)卷積的Resnet50網(wǎng)絡(luò)模型,表中沒有提到Resnet50迭代了15 000次相比較于本文的網(wǎng)絡(luò)模型迭代了15 000次在訓(xùn)練時間上要快一些。本文網(wǎng)絡(luò)在實現(xiàn)的代碼中使用了大量的內(nèi)存和指針的跳轉(zhuǎn),使得Resnet50會比本文網(wǎng)絡(luò)更快完成訓(xùn)練。不過評價一個網(wǎng)絡(luò)模型的優(yōu)良,網(wǎng)絡(luò)模型的推理速度、識別的準(zhǔn)確率才是重要指標(biāo)??梢钥闯鯨ightfacenet網(wǎng)絡(luò)模型與MobileNet V1、MobileNet V2、ShuffleNet、ShuffleNet V2這樣的輕量網(wǎng)絡(luò)比較,本文的Lightfacenet網(wǎng)絡(luò)因為在采用了全局深度可分卷積結(jié)構(gòu)和瓶頸結(jié)構(gòu)的情況下其在參數(shù)量保持較少的情況下有更好的準(zhǔn)確率,在性能增益的同時保證模型參數(shù)不增加,從而更高效地使用模型參數(shù)。Lightfacenet_A表示沒有使用擠壓與激勵結(jié)構(gòu)的網(wǎng)絡(luò),可以看出沒有使用這個結(jié)構(gòu)的網(wǎng)絡(luò)模型相比使用結(jié)構(gòu)的Lightfacenet模型參數(shù)量稍微減少了一些,但效果還是挺明顯的,網(wǎng)絡(luò)推理的準(zhǔn)確率有所下降。Lightfacenet_B表示沒有使用Hard_Swish非線性激活函數(shù)的網(wǎng)絡(luò),與使用了Hard_Swish非線性激活函數(shù)的網(wǎng)絡(luò)相比,Lightfacenet_B使用ReLU函數(shù),其神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確性有所下降。因此可以看出Lightfacenet網(wǎng)絡(luò)在人臉識別的準(zhǔn)確率上基本達到了Resnet50的效果,與Lightfacenet_A和Lightfacenet_B相比也有明顯的提升。使用了Hard_Swish非線性激活函數(shù)的Lightfacenet,其參數(shù)量只有1 100 000。與輕量級網(wǎng)絡(luò)模型對比中Lightfacenet網(wǎng)絡(luò)也非常具有優(yōu)勢,在參數(shù)量較少的情況下,達到了很好的識別效果,這對于后期在移動設(shè)備上移植算法打下了基礎(chǔ)。
針對移動端的算法移植,使用神經(jīng)網(wǎng)絡(luò)前向計算框架NCNN將神經(jīng)網(wǎng)絡(luò)模型轉(zhuǎn)化為移動端模型,并在Android系統(tǒng)平臺上搭建運行算法的平臺。表5是模型在搭載了高通625處理器的移動端Android平臺上的運行速度對比表。
從表5中可以看出,Lightfacenet網(wǎng)絡(luò)模型系列的推理運行的最少時間處于主流的網(wǎng)絡(luò)模型的第一梯隊,其推理運行的最長時間也要少于網(wǎng)絡(luò)模型,因此從平均時間來看Lightfacenet網(wǎng)絡(luò)模型與現(xiàn)在主流的神經(jīng)網(wǎng)絡(luò)模型在運行推理的速度上具有明顯的優(yōu)勢,通過增加擠壓與激勵結(jié)構(gòu)和Hard_Swish結(jié)構(gòu)換來更好的識別準(zhǔn)確率是有益的。同時Lightfacenet的網(wǎng)絡(luò)參數(shù)量較少,在移動平臺上只需要很少的存儲空間就可以運行,大大減少了模型在嵌入式平臺的移植難度,也因為速度的優(yōu)勢,讓模型在移動嵌入式平臺上可以達到實時運行使用的水平。
Table 5 Comparison table of operating speed of neural network model on mobile platform表5 神經(jīng)網(wǎng)絡(luò)模型在移動平臺上的運行速度對比表 ms
本文從實用角度出發(fā),提出一種基于輕量級深度卷積網(wǎng)絡(luò)的實時人臉識別算法Lightfacenet。本文的實驗表明,因為Lightfacenet網(wǎng)絡(luò)的結(jié)構(gòu)采用了深度分離卷積單元、擠壓和激勵結(jié)構(gòu)以及修改后的非線性激活函數(shù),這些模塊在深度學(xué)習(xí)框架中缺少原生代碼支持,使模型在訓(xùn)練的速度上比傳統(tǒng)的殘差網(wǎng)絡(luò)慢一些,接下來進一步優(yōu)化代碼結(jié)構(gòu),相信網(wǎng)絡(luò)會有更好的訓(xùn)練速度。除此之外,Lightfacenet網(wǎng)絡(luò)模型是一個成功的模型,它可以保持與大型卷積網(wǎng)絡(luò)Resnet50模型基本相同的識別精度,并且在計算速度方面比Resnet50提高很多。在與現(xiàn)有的高效輕量級神經(jīng)網(wǎng)絡(luò)模型相比時也具有速度優(yōu)勢,網(wǎng)絡(luò)具有非常高的效率,可以在搭載高通625處理器的移動設(shè)備上僅僅占用少量的存儲空間,進行快速的推理計算來達到實時人臉驗證的效果。