龔 銳,丁 勝,章超華,蘇 浩
(1. 武漢科技大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,武漢430065; 2. 智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室(武漢科技大學(xué)),武漢430065; 3. 福建省大數(shù)據(jù)管理新技術(shù)與知識工程重點實驗室(泉州師范大學(xué)),福建泉州362000)
(*通信作者電子郵箱516123131@qq.com)
人臉識別是基于人的臉部特征信息進(jìn)行身份驗證的一種生物識別技術(shù),通過帶有攝像頭的終端設(shè)備拍攝人的行為圖像,使用人臉檢測算法,從原始行為圖像中得到人臉區(qū)域,用特征提取算法提取人臉的特征,并根據(jù)這些特征確認(rèn)身份。傳統(tǒng)的人臉識別方法包含主成分分析(Principal Component Analysis,PCA)[1]、拉 普 拉 斯 特 征 映 射[2]、局 部 保 持 映 射(Locality Preserving Projection,LPP)[3]、稀疏表示[4]等。這些傳統(tǒng)人臉識別算法在提取特征時,往往是通過人工手段去獲取樣本特征,而人為設(shè)定的特征在特征提取和識別過程存在提取特征過程復(fù)雜、識別效率低等不足,而且受人臉的姿態(tài)轉(zhuǎn)動、光照變化、遮擋等復(fù)雜場景下影響較大,這些方法所使用的特征屬于淺層特征,不能從原始圖像中獲取本征的高層語義特征。
自2012年AlexNet 在ImageNet[5]比賽上取得冠軍后,卷積神經(jīng)網(wǎng)絡(luò)愈發(fā)火熱。隨著VGGNet(Visual Geometry Group Networks[6]、GoogleNe[7]和ResNet(Residual Neural Networks)[8]的相繼提出,深度卷積神經(jīng)網(wǎng)絡(luò)將多個計算機(jī)視覺任務(wù)的性能提升到了新的高度,總體的趨勢是為了達(dá)到更高的準(zhǔn)確性構(gòu)建了更深更復(fù)雜的網(wǎng)絡(luò)。人臉識別作為一種重要的身份認(rèn)證技術(shù),被應(yīng)用于越來越多的移動端和嵌入式設(shè)備上,如設(shè)備解鎖、應(yīng)用登錄、刷臉支付等。由于移動設(shè)備計算能力以及存儲空間的限制,部署在移動設(shè)備上的人臉識別模型要滿足準(zhǔn)確率高、模型小、特征提取速度快的條件,這些大型網(wǎng)絡(luò)在尺度和速度上不能滿足移動設(shè)備的要求。MobileNetV1[9]提出了深度可分離卷積(depthwise separable convolutions),將標(biāo)準(zhǔn)卷積分解成深度卷積和逐點卷積,大幅度地降低了參數(shù)量和計算 量。ShuffleNet[10]使 用 分 組 逐 點 卷 積(group pointwise convolution),通過將卷積運算的輸入限制在每個組內(nèi),顯著地減少了計算量,再使用通道打亂(channel shuffle)操作,解決了分組卷積中不同組間信息不流通的問題。MobileFaceNet[11]從感受野的角度,分析了人臉識別任務(wù)中全局平均池化的缺點,使用全局深度卷積代替。
此外,人臉圖像較大的類內(nèi)變化和較小的類間差異是人臉識別任務(wù)的一個困難點。由于人臉的角度、光照、表情、年齡、化妝、遮擋、圖片質(zhì)量等變化,同一個人的不同人臉圖像具有很大差異,如何讓計算機(jī)在較大的類內(nèi)變化的干擾下依然能夠辨識到比較微弱的類間變化,是人臉識別的主要挑戰(zhàn)。人臉識別要從兩個方向優(yōu)化:一是增加不同人之間的距離(類間距離);二是降低同一個人在不同人臉圖像上的距離(類內(nèi)距離)?;诙攘繉W(xué)習(xí)的Triplet Loss[12]的目標(biāo)是使同類樣本之間的距離盡可能縮小,不同類樣本之間的距離盡可能放大。Center Loss[13]提出為每一個類提供一個類別中心,并最小化每個樣本與該中心的距離。二者都是基于Softmax Loss 的,存在不足。后來出現(xiàn)的損失函數(shù)SphereFace[14]、CosFace(Large Margin Cosine Loss)[15]和ArcFace(Additive Angular Margin Loss)[16]從根本上改進(jìn),要求擴(kuò)大分類面之間的margin,增強(qiáng)Softmax 損失函數(shù)的判別能力,能夠較好地滿足增大類間距離、減小類內(nèi)距離的要求。
現(xiàn)有的深度學(xué)習(xí)方法是將對齊后的人臉圖像通過深層網(wǎng)絡(luò)提取人臉特征,由于忽略了人臉的姿態(tài)特征,因而導(dǎo)致識別精度不夠高。針對這個問題,本文建立了一個多姿態(tài)的人臉數(shù)據(jù)集,如圖1所示。
圖1 多姿態(tài)人臉數(shù)據(jù)集Fig. 1 Multi-pose face dataset
該數(shù)據(jù)集由800 名志愿者每人5 張人臉圖像(5 個姿態(tài),分別為正臉、左側(cè)臉、右側(cè)臉、抬頭、低頭)組成,共4 000 張。采集過程為:在光照條件良好的環(huán)境下放置攝像頭,通過多任務(wù)級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)(Multi-Task cascaded Convolutional Neural Network,MTCNN)[17]算法對視頻流進(jìn)行人臉檢測,根據(jù)檢測到的人臉關(guān)鍵點(左右眼、鼻尖、左右嘴角)判斷人臉姿態(tài),判斷方法見1.3 節(jié),采集完5 個姿態(tài)后將對齊后的5 張圖像縮放到112×112 大小,保存起來,同時記錄對應(yīng)人臉的姓名年齡性別作為人臉識別的標(biāo)簽。
MTCNN 算法用于人臉檢測任務(wù),采用三個級聯(lián)的網(wǎng)絡(luò)PNet(Proposal Network)、R-Net(Refine Network)和O-Net(Output Network)由粗到細(xì),通過減少濾波器數(shù)量、設(shè)置小的卷積核和增加網(wǎng)絡(luò)結(jié)構(gòu)的深度,在較短的時間內(nèi)獲得很好的性能,在光照變化、部分遮擋和人臉轉(zhuǎn)動等情況下也能得到很好的人臉檢測結(jié)果。
圖2 MTCNN算法流程Fig. 2 Flow chart of MTCNN algorithm
MTCNN 算法可以檢測出人臉在圖像中的位置,同時還能檢測人臉關(guān)鍵點。人臉關(guān)鍵點可以用來做人臉對齊,將不同角度的人臉對齊后有利于人臉識別,人臉對齊步驟如圖3 所示。根據(jù)左右眼睛和鼻子的位置,通過仿射變換,將人臉對齊,并裁剪縮放到112×112。
圖3 人臉對齊Fig. 3 Face alignment
MTCNN 算法檢測的原圖和檢測后關(guān)鍵點位置如圖4 所示。本文使用左右眼、鼻尖和左嘴角這四個關(guān)鍵點判斷人臉姿態(tài)方向,記左眼坐標(biāo)為(x1,y1),右眼坐標(biāo)為(x2,y2),鼻尖坐標(biāo)為(x3,y3),左嘴角坐標(biāo)為(x4,y4)。以正臉圖為基準(zhǔn),從橫軸看,鼻尖近似在左右眼坐標(biāo)中心;從縱軸看,鼻尖近似在左眼和左嘴角坐標(biāo)中心,因此滿足如下式子:
同理,當(dāng)前人臉圖像是左側(cè)臉圖的條件是:
當(dāng)前人臉圖像是右側(cè)臉圖的條件是:
當(dāng)前人臉圖像是低頭圖的條件是:
當(dāng)前人臉圖像是抬頭圖的條件是:
在上面4 個式子中,D是一個大于0 的值,表示中心點與鼻尖的橫軸距離或縱軸距離,在本實驗中取值為10,即中心pixel點與鼻尖距離相差10 px(pixel)就算滿足條件。
圖4 原圖與人臉檢測后的關(guān)鍵點Fig. 4 Original image and key points after face detection
文獻(xiàn)[18]提出了一種高效網(wǎng)絡(luò)模塊,如圖5 所示,在本文中記為mainblock。 本文結(jié)合ShuffleNetV2 的優(yōu)點對MobileFaceNet 進(jìn)行了改進(jìn),改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如表1所示,改進(jìn)后的網(wǎng)絡(luò)記為ShuffleMNet。
圖5 ShuffleMNet的mainblockFig. 5 Mainblock of ShuffleMNet
在網(wǎng)絡(luò)的開始先使用步長為2 的卷積核對輸入進(jìn)行下采樣,再接上多個mainblock 模塊得到7×7 的特征圖,使用全局深度卷積(Global Depthwise Convolution,GDC)取代全局平均池化(Global Average Pooling,GAP)得到1×1 的特征圖,最后接上一個全連接層得到128維特征向量。
每個mainblock 模塊先對輸入進(jìn)行1 次如圖5(b)所示的步長為2 的下采樣,之后重復(fù)n-1 次圖5(a)所示的操作。圖5(a)中首先對輸入進(jìn)行通道分割(Channel Split),將通道為c的輸入分成2 組通道為c/2 的分支,左邊直接映射,右邊是一個類Inverted residuals[19]模塊,然后左右兩邊特征圖合并,最后進(jìn)行通道打亂(Channel Shuffle)使得各個通道之間的信息相互交通。圖5(b)中左邊分支是步長為2 的深度可分離卷積,右邊分支是步長為2 的類Inverted residuals 模塊,之后通過左右特征圖合并、通道打亂得到輸出。其中兩個類Inverted residuals模塊除了空間下采樣時第一個1×1卷積進(jìn)行升維,其他所有卷積操作輸入輸出通道數(shù)都相同。使用參數(shù)化修正線性單元(Parametric Rectified Linear Unit,PReLU)作為激活函數(shù)。
表1 ShuffleMNet結(jié)構(gòu)Tab. 1 ShuffleMNet architecture
將特征提取得到的128 維特征與人臉數(shù)據(jù)庫中的所有人臉特征進(jìn)行比對。相較于歐氏距離,余弦距離使用兩個向量夾角的余弦值衡量兩個個體間差異的大小,后者更加注重兩個向量在方向上的差異,因此,本實驗人臉特征比對采用的度量方法是計算余弦距離遠(yuǎn)近,距離越近(相似度越大)表示兩張人臉越相似。本次實驗設(shè)置閾值設(shè)為0.7,若余弦相似度大于0.7,則表示這張圖像匹配到了數(shù)據(jù)庫中對應(yīng)的人。如果存在多張人臉與當(dāng)前人臉的余弦相似度大于閾值,取相似度最高的為匹配結(jié)果。
文獻(xiàn)[20]使用核相關(guān)濾波(Kernelized Correlation Filters,KCF)方法用于人臉跟蹤,文獻(xiàn)[21]通過在MTCNN算法后新加一個網(wǎng)絡(luò)做人臉跟蹤。本文使用更簡單的方法做人臉跟蹤。
MTCNN 最后一個網(wǎng)絡(luò)O-Net 的網(wǎng)絡(luò)結(jié)構(gòu)如圖6 所示。由于MTCNN算法是通過級聯(lián)網(wǎng)絡(luò)由粗到細(xì)完成人臉檢測任務(wù),O-Net 第一個全連接層是256 維的高層特征,包含了人臉bounding box 回歸和人臉關(guān)鍵點的信息,可以利用這256 維特征作為人臉跟蹤的依據(jù),并判斷兩個人臉框中心點的歐氏距離進(jìn)一步確定是否是同一人臉。
圖6 MTCNN的最后一個網(wǎng)絡(luò)O-NetFig. 6 MTCNN's last network O-Net
本實驗使用遠(yuǎn)程服務(wù)器訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型,該服務(wù)器配有64位的CentOS系統(tǒng),配備了Inter Xeon E5 2620 v4處理器,64 GB內(nèi)存,8張Tesla V100顯卡,每張顯卡顯存為32 GB。
使用由DeepGlint 公開的Asian-Celeb 人臉數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)模型。該數(shù)據(jù)集包含93 979個純亞洲人,共2 830 146 張已經(jīng)對齊好的人臉圖像,規(guī)模有93.8 GB。本文提出的多姿態(tài)人臉數(shù)據(jù)集總800 人共4 000張,取其中640 人共3 200 張人臉圖像作為訓(xùn)練數(shù)據(jù)集,其他800張圖像作為測試集。
校驗數(shù)據(jù)集包含LFW(Labeled Faces in the Wild)[22]數(shù)據(jù)集、CFP(Celebrities in Frontal Profile)[23]數(shù)據(jù)集和Age-DB(Age Database)[24]數(shù)據(jù)集。其中,LFW 數(shù)據(jù)集包含5 749人共13 233張人臉圖像,姿態(tài)表情和光照變化較大,使用其中的6 000對人臉圖像作為校驗數(shù)據(jù)集;CFP 數(shù)據(jù)集包含500 個身份,每個身份有10個正臉,4個側(cè)臉,本實驗使用CFP 數(shù)據(jù)集中的frontalprofile(FP)人臉驗證,即CFP-FP(CFP with Frontal-Profile)數(shù)據(jù)集;AgeDB 數(shù)據(jù)集包含440 人共12 240 張人臉圖像,本次實驗使用AgeDB-30,包含300正樣本對和300負(fù)樣本對。
3.3.1 預(yù)處理設(shè)置
為了提高人臉識別方法的魯棒性,使用圖像增強(qiáng)的方法對訓(xùn)練集進(jìn)行數(shù)據(jù)擴(kuò)充,使用的方法為左右翻轉(zhuǎn)和模擬光照變化改變圖像明暗度,使得訓(xùn)練集數(shù)量直接擴(kuò)大了6 倍。之后在輸入時對輸入圖像RGB 三通道的像素值進(jìn)行歸一化處理,即對原來RGB 三個通道的像素值都減去127.5 再除以128,使像素值都在(-1,1)區(qū)間內(nèi)。
3.3.2 訓(xùn)練樣本設(shè)置
相較于Asian-Celeb 數(shù)據(jù)集,本文提出的多姿態(tài)人臉數(shù)據(jù)集樣本數(shù)量遠(yuǎn)少于前者。由于實際應(yīng)用場景往往與標(biāo)準(zhǔn)數(shù)據(jù)集的場景不同,需要提高訓(xùn)練時本文數(shù)據(jù)集所占的比重,所以改進(jìn)了訓(xùn)練時樣本選取的方式。之前樣本選取方式完全隨機(jī),并且每一輪每個樣本僅出現(xiàn)一次,多姿態(tài)數(shù)據(jù)集對整體權(quán)重貢獻(xiàn)比較小。改進(jìn)后,通過修改源程序使得每個batch(batch size 為256)都會包含2 個來自多姿態(tài)數(shù)據(jù)集的隨機(jī)樣本。這樣大大提升多姿態(tài)數(shù)據(jù)集對整個網(wǎng)絡(luò)權(quán)重的貢獻(xiàn),提高了其所占的比重。
3.3.3 網(wǎng)絡(luò)參數(shù)設(shè)置
網(wǎng)絡(luò)的下訓(xùn)練分2步。首先使用Softmax loss預(yù)訓(xùn)練,可以學(xué)習(xí)到可分的深度人臉特征,然后使用ArcFace loss訓(xùn)練,學(xué)習(xí)使得類內(nèi)緊湊、類間分離的人臉特征。
Softmax 訓(xùn)練是使用的學(xué)習(xí)率為0.1,共訓(xùn)練120 000 步,ArcFace訓(xùn)練初始學(xué)習(xí)率為0.1,迭代到120000、160000、180000步時學(xué)習(xí)率每次都除以10,總共訓(xùn)練200000步。全局深度可分離卷積層的權(quán)重衰減參數(shù)設(shè)置為4E-4,其他權(quán)重衰減參數(shù)設(shè)置為4E-5;使用隨機(jī)梯度下降策略(Stochastic Gradient Descent,SGD)優(yōu)化模型,動量設(shè)置為0.9;batch size設(shè)置為256。
第一步采用Softmax loss 訓(xùn)練的訓(xùn)練集精度和驗證集精度如圖7 所示,網(wǎng)絡(luò)訓(xùn)練到42 000 步時,訓(xùn)練集精度已經(jīng)達(dá)到81. 5%,LFW 精度為99. 03%,AgeDB-30 精度為88. 45%,CFP-FP 精度為84.84%,此時停止Softmax 訓(xùn)練開始使用ArcFace loss 進(jìn)行訓(xùn)練。使用ArcFace loss 訓(xùn)練的驗證集精度如圖8 所示,網(wǎng)絡(luò)訓(xùn)練到160 000 步時網(wǎng)絡(luò)已基本收斂,停止訓(xùn)練,此時LFW 精度為99.58%,AgeDB-30 精度為96.08%,CFP-FP精度為88.46%。
圖7 使用Softmax loss的訓(xùn)練曲線Fig. 7 Training curve using Softmax loss
圖8 使用ArcFace loss的訓(xùn)練曲線Fig. 8 Training curve using ArcFace loss
為了驗證本文提出的輕量級網(wǎng)絡(luò)的有效性,實驗并記錄了使用其他輕量級網(wǎng)絡(luò)同樣使用上面二步式訓(xùn)練的結(jié)果,訓(xùn)練時并未加入本文建立的數(shù)據(jù)集,僅使用Asian-Celeb 數(shù)據(jù)集訓(xùn)練,實驗結(jié)果如表2所示。
表2 ShuffleMNet與其他輕量級網(wǎng)絡(luò)精度對比 單位:%Tab. 2 Accuracy comparison of ShuffleMNet and other lightweight networks unit:%
3.5.1 人臉數(shù)據(jù)庫
模型訓(xùn)練好后,使用模型對測試集的800張人臉提取128維人臉特征,將人臉姿態(tài)(正臉、左側(cè)臉、右側(cè)臉、低頭、抬頭)與人臉信息(姓名、性別、年齡)作為標(biāo)記一起保存到數(shù)據(jù)庫中。
3.5.2 實地測試
重新對測試集中的160 名志愿者進(jìn)行人臉識別測試。在光照條件良好的場景布置攝像頭,再次獲取這些志愿者的5種人臉姿態(tài)圖像做測試。 使用兩種不同的方法進(jìn)行人臉識別,并統(tǒng)計結(jié)果。
第一種直接對每個志愿者的5 張人臉圖像提取特征后,分別和人臉數(shù)據(jù)庫中的所有特征進(jìn)行比對,閾值取0.7,余弦相似度大于0.7 且人臉信息(姓名、性別、年齡)相同則表示人臉識別正確。
第二種是根據(jù)5 張人臉圖像中每張人臉圖像的姿態(tài)(由1.3 節(jié)的方法自動判斷人臉姿態(tài),不再是手動獲取姿態(tài))選擇對應(yīng)姿態(tài)的特征進(jìn)行比對,即假設(shè)當(dāng)前要對比的正臉圖,則只選擇人臉數(shù)據(jù)庫中所有正臉圖對應(yīng)的人臉特征進(jìn)行比對,比對方法同上。
兩種方法的實驗結(jié)果如表3 所示,其中使用多姿態(tài)數(shù)據(jù)集意味著在訓(xùn)練時按照3.3.2 節(jié)中的方法加入多姿態(tài)數(shù)據(jù)集。實驗結(jié)果表明,第二種比對方法進(jìn)行人臉識別效果更好。
表3 不同方法的準(zhǔn)確率對比 單位:%Tab. 3 Accuracy comparison of different methods unit:%
本實驗采用的測試平臺是虛擬機(jī)64 位Ubuntu 18.04系統(tǒng),處理器是Inter Core i5-8400 CPU @2.80 GHz,內(nèi)存為2 GB。使用NCNN框架作神經(jīng)網(wǎng)絡(luò)前向推導(dǎo)。
測試結(jié)果如表4 所示。從表可以看出,ShuffleMNet 比MobileFaceNet 速度要快9 ms,此外,由2.3 節(jié)可以知道,人臉跟蹤提取了MTCNN第三個網(wǎng)絡(luò)全連接層的特征,這里僅僅是前向推導(dǎo)時順便提取出來的,不需要耗費其他時間做這個特征提取,剩下的就是相似度計算匹配,因此本文的人臉跟蹤算法幾乎不花費額外的時間,記錄檢測和識別的總時間僅僅是二者相加而已。
表4 不同網(wǎng)絡(luò)及其組合的時間對比 單位:msTab. 4 Time comparison of different networks and their combinations unit:ms
本文建立了一個多姿態(tài)人臉數(shù)據(jù)集,解決了目前單一姿態(tài)數(shù)據(jù)集存在的人臉識別準(zhǔn)確率不高的問題。另外,本文提出的網(wǎng)絡(luò)ShuffleMNet 相較于MobileFaceNet 等其他輕量級網(wǎng)絡(luò)精度更高,速度更快,可以很好地在移動設(shè)備上部署。同時,在數(shù)據(jù)采集時采集了志愿者的年齡性別,有助于后續(xù)的人臉年齡性別識別研究。