方國(guó)康 李俊 王垚儒
摘 要:針對(duì)ARM平臺(tái)上人臉識(shí)別實(shí)時(shí)性不強(qiáng)和識(shí)別率低的問(wèn)題,提出一種基于深度學(xué)習(xí)的實(shí)時(shí)人臉識(shí)別方法。首先基于MTCNN人臉檢測(cè)算法設(shè)計(jì)了一種實(shí)時(shí)檢測(cè)并追蹤人臉的算法;然后在ARM平臺(tái)上基于深度殘差網(wǎng)絡(luò)(ResNet)設(shè)計(jì)人臉特征提取網(wǎng)絡(luò);最后針對(duì)ARM平臺(tái)的特點(diǎn),使用Mali-GPU加速人臉特征提取網(wǎng)絡(luò)的運(yùn)算,分擔(dān)CPU負(fù)荷,提高系統(tǒng)整體運(yùn)行效率。算法部署在基于ARM的瑞芯微RK3399開(kāi)發(fā)板上,運(yùn)行速度達(dá)到22幀/s。實(shí)驗(yàn)結(jié)果表明,與MobileFaceNet相比,該方法在MegaFace上的識(shí)別率提升了11個(gè)百分點(diǎn)。
關(guān)鍵詞:ARM平臺(tái);人臉識(shí)別;人臉追蹤;殘差網(wǎng)絡(luò);Mali-GPU
中圖分類號(hào):?TP183; TP391.4
文獻(xiàn)標(biāo)志碼:A
Real-time face recognition on ARM platform based on deep learning
FANG Guokang1,2, LI Jun1,2*, WANG Yaoru1,2
1.School of Computer Science and Technology, Wuhan University of Science and Technology, Wuhan Hubei 430065, China ;
2.Hubei Province Key Laboratory of Intelligent Information Processing and Real-time Industrial System (Wuhan University of Science and Technology), Wuhan Hubei 430065, China
Abstract:?Aiming at the problem of low real-time performance of face recognition and low face recognition rate on ARM platform, a real-time face recognition method based on deep learning was proposed. Firstly, an algorithm for detecting and tracking faces in real time was designed based on MTCNN face detection algorithm. Then, a face feature extraction network was designed based on Residual Neural Network (ResNet) on ARM platform. Finally, according to the characteristics of ARM platform, Mali-GPU was used to accelerate the operation of face feature extraction network, sharing the CPU load and improving the overall running efficiency of the system. The algorithm was deployed on ARM-based Rockchip development board, and the running speed reaches 22 frames per second. Experimental results show that the recognition rate of this method is 11 percentage points higher than that of MobileFaceNet on MegaFace.
Key words:?ARM platform; face recognition; face tracking; Residual neural Network (ResNet); Mali-GPU
0 引言
隨著計(jì)算機(jī)圖像處理技術(shù)的發(fā)展,基于計(jì)算機(jī)視覺(jué)的目標(biāo)識(shí)別在特征分析[1]和目標(biāo)監(jiān)控[2]等領(lǐng)域具有廣泛的應(yīng)用價(jià)值。人臉識(shí)別[3]是圖像處理中的一個(gè)重要研究領(lǐng)域,作為一種身份識(shí)別手段,因其直接性和靈活性等優(yōu)點(diǎn),有著廣闊的市場(chǎng)應(yīng)用前景。人臉識(shí)別是通過(guò)人臉圖像確定人臉身份的過(guò)程,包括人臉檢測(cè)、人臉對(duì)齊、人臉特征提取和特征匹配4個(gè)過(guò)程[4]。近年來(lái),隨著視頻監(jiān)控的大量普及,基于視頻的人臉識(shí)別技術(shù)越來(lái)越受到各界的重視。傳統(tǒng)人臉識(shí)別算法圍繞主成分分析(Principal Component Analysis,PCA)[5]、線性判別分析(Linear Discriminant Analysis,LDA)[6]和局部特征分析(Local Feature Analysis,LFA)[7]等展開(kāi),但這些算法利用到的特征為圖像淺層的特征,識(shí)別效果容易受到姿態(tài)轉(zhuǎn)動(dòng)、光照變化、遮擋等因素的影響,存在著較大的局限性。同時(shí),與靜態(tài)圖像相比,視頻中包含了更加豐富的信息[8],但視頻的識(shí)別難度大,實(shí)時(shí)性強(qiáng),對(duì)算法和設(shè)備都有著更高的要求。
近年來(lái),隨著人工智能的快速發(fā)展,深度學(xué)習(xí)在圖像識(shí)別領(lǐng)域取得了良好的效果[2]。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[9]通過(guò)模擬人的大腦結(jié)構(gòu),構(gòu)建多層非線性映射關(guān)系,擁有很強(qiáng)的非線性特征學(xué)習(xí)能力,能夠從大量樣本中學(xué)習(xí)到高維語(yǔ)義特征和深度特征。鑒于傳統(tǒng)人臉識(shí)別算法發(fā)展遇到了瓶頸,2014年,Taigman等[10]基于深度學(xué)習(xí)提出DeepFace,使用CNN來(lái)提取人臉深層抽象語(yǔ)義特征,利用特征的余弦相似度來(lái)比較人臉相似性,最終在LFW(Labeled Faces in Wild)[11]上的準(zhǔn)確率達(dá)到了95%,取得了很好的識(shí)別效果。
2015年,針對(duì)CNN在達(dá)到一定深度后,網(wǎng)絡(luò)梯度消失的問(wèn)題,He等[12]提出了殘差網(wǎng)絡(luò)(Residual Neural Network,ResNet),與VGGNet(Visual Geometry Group Network)[13]、GoogleNet[14]等網(wǎng)絡(luò)相比,ResNet擁有更深的網(wǎng)絡(luò)結(jié)構(gòu),可達(dá)到150層,學(xué)習(xí)到的特征也更加深層抽象,分類能力也更強(qiáng)。
2016年,Zhang等[15]提出了MTCNN(Multi-Task Cascaded Convolutional Neural Network)人臉檢測(cè)算法,使用三個(gè)級(jí)聯(lián)CNN來(lái)檢測(cè)人臉位置和關(guān)鍵點(diǎn),檢測(cè)人臉時(shí)由粗到細(xì),不僅有很好的檢測(cè)效果,而且速度很快,在Nvidia Titan X上的檢測(cè)速度達(dá)到了99幀/s(Frames Per Second, FPS);同時(shí),MTCNN算法通過(guò)將人臉圖像對(duì)齊,提供了標(biāo)準(zhǔn)統(tǒng)一的人臉圖像,促進(jìn)了后續(xù)人臉識(shí)別的研究。
2017年,Liu等[16]提出了SphereFace算法,針對(duì)損失函數(shù)進(jìn)行了改進(jìn),能夠讓特征學(xué)習(xí)到更可分的角度特性。該算法使用64層的深度網(wǎng)絡(luò)訓(xùn)練,最終在LFW上的測(cè)試精度達(dá)到了99.4%,在MegaFace[17]上的準(zhǔn)確率達(dá)到了72.4%。
而后,Wang等繼續(xù)針對(duì)損失函數(shù)進(jìn)行改進(jìn),相繼提出了NormFace[18]以及AMSoftmax(Additive Margin Softmax)[19]算法。
2018年,Deng等[20]提出了ArcFace(Additive Angular Margin Loss)算法,更加注重在角度空間里對(duì)類別進(jìn)行區(qū)分。該算法使用了50層的ResNet進(jìn)行訓(xùn)練,在LFW上的準(zhǔn)確率達(dá)到了99.8%,在MegaFace的準(zhǔn)確率達(dá)到了97.6%,是目前MageFace上排名第一的人臉識(shí)別算法。
相比傳統(tǒng)的人臉識(shí)別算法,基于深度學(xué)習(xí)的人臉識(shí)別算法在圖像人臉識(shí)別任務(wù)中取得了很好的結(jié)果,其識(shí)別精度在百萬(wàn)級(jí)數(shù)據(jù)量的測(cè)試集上達(dá)到了97%,已經(jīng)能夠滿足大多數(shù)場(chǎng)景下實(shí)際使用需求。但這些算法在實(shí)際部署時(shí),需要使用支持大量計(jì)算的服務(wù)器,成本很高。近年來(lái),以手機(jī)為代表的嵌入式設(shè)備得到了飛速發(fā)展,其性能日新月異,嵌入式系統(tǒng)以其功能齊全、安全可靠、價(jià)格低廉、體積小、功耗低等優(yōu)勢(shì),以貼近生活、以實(shí)際應(yīng)用為核心的特點(diǎn),越來(lái)越廣泛地應(yīng)用到了各個(gè)領(lǐng)域。Mali-GPU[21]是ARM公司推出的高性能移動(dòng)圖形處理器,主要應(yīng)用于基于ARM體系結(jié)構(gòu)的移動(dòng)設(shè)備上。與桌面級(jí)GPU一樣,Mali-GPU專為執(zhí)行復(fù)雜的數(shù)字和幾何計(jì)算而設(shè)計(jì),迎合了深度學(xué)習(xí)對(duì)大量數(shù)字計(jì)算的需求;不同的是,Mali-GPU主要針對(duì)移動(dòng)設(shè)備,能耗更低,雖然計(jì)算能力相對(duì)較弱,但其移動(dòng)便攜性卻是桌面級(jí)GPU無(wú)法比擬的。
隨著MobileNet[22]、ShuffleNet[23]等輕量化網(wǎng)絡(luò)的提出,基于嵌入式系統(tǒng)的深度學(xué)習(xí)研究也逐漸成為熱點(diǎn)。輕量化網(wǎng)絡(luò)的提出旨在精簡(jiǎn)網(wǎng)絡(luò)參數(shù)、降低網(wǎng)絡(luò)計(jì)算的復(fù)雜度,但這會(huì)在一定程度上損失網(wǎng)絡(luò)的識(shí)別精度。2017年,Chen等[24]發(fā)布的深度學(xué)習(xí)編譯器TVM(End to End Deep Learning Compiler Stack)是一個(gè)端到端優(yōu)化堆棧,可以降低和調(diào)整深度學(xué)習(xí)工作負(fù)載,適應(yīng)多種硬件后端,針對(duì)不同的硬件設(shè)備生成底層優(yōu)化代碼。
在ARM平臺(tái)上,TVM能夠同時(shí)實(shí)現(xiàn)CPU和GPU上的優(yōu)化加速和負(fù)載均衡,這使得嵌入式設(shè)備也能在一定程度上執(zhí)行復(fù)雜計(jì)算。
本文從實(shí)際的部署成本這個(gè)角度出發(fā),針對(duì)ARM平臺(tái)設(shè)計(jì)了可以實(shí)時(shí)識(shí)別人臉的算法,同時(shí)使用ResNet來(lái)提取人臉特征,其識(shí)別精度能夠達(dá)到服務(wù)器級(jí)別的水平。
首先,本文在MTCNN算法的基礎(chǔ)上進(jìn)行改進(jìn),設(shè)計(jì)了一種能夠?qū)崟r(shí)檢測(cè)并追蹤人臉的算法,通過(guò)對(duì)人臉進(jìn)行追蹤,可以減小提取人臉特征的頻率,從而達(dá)到更快的運(yùn)行速度;然后,在ARM平臺(tái)上使用ResNet提取人臉特征,并用Mali-GPU來(lái)對(duì)人臉特征的提取加速。實(shí)驗(yàn)表明,本文基于ARM平臺(tái)設(shè)計(jì)的人臉識(shí)別模型能夠滿足實(shí)時(shí)識(shí)別需求,同時(shí)也能達(dá)到很高的識(shí)別精度。
1 基于深度學(xué)習(xí)的人臉識(shí)別框架
1.1 人臉檢測(cè)
人臉檢測(cè)是在圖像中找到人臉并返回人臉框大小和位置坐標(biāo)信息的過(guò)程。本文中使用MTCNN算法對(duì)人臉進(jìn)行檢測(cè)。MTCNN是一種將多任務(wù)級(jí)聯(lián)卷積神經(jīng)網(wǎng)絡(luò)用于人臉檢測(cè)和對(duì)齊的人臉檢測(cè)算法。該算法總共分為三個(gè)階段:
第一階段,對(duì)圖像在不同尺度上生成若干候選框,通過(guò)一個(gè)簡(jiǎn)單的CNNPNet(Proposal Net)來(lái)預(yù)測(cè)所有候選框的概率,然后對(duì)所有候選框非極大值抑制(Non-Maximum Suppression,NMS),消除多余候選框;
第二階段,使用一個(gè)較為復(fù)雜的CNN——RNet(Refine Net)對(duì)第一階段生成的候選框位置和大小進(jìn)行回歸校正并預(yù)測(cè)其概率,然后對(duì)所有候選框使用NMS方法篩選;
第三階段,使用一個(gè)更為復(fù)雜的CNN——ONet(Output Net)對(duì)第二階段的預(yù)測(cè)框位置和大小進(jìn)行回歸校正并使用NMS方法篩選,為每個(gè)預(yù)測(cè)框生成5個(gè)人臉關(guān)鍵點(diǎn),分別為兩只眼睛、鼻尖和兩邊嘴角。MTCNN算法流程如圖1所示。
1.2 人臉對(duì)齊
人臉對(duì)齊是在圖像中檢測(cè)到人臉后,對(duì)人臉圖像進(jìn)行處理的過(guò)程,處理后的圖像能夠更好地被識(shí)別。本文中根據(jù)MTCNN檢測(cè)到的5個(gè)人臉關(guān)鍵點(diǎn)對(duì)原始圖像進(jìn)行仿射變換處理,對(duì)人臉部分圖像的大小和角度進(jìn)行調(diào)整,調(diào)整后的圖像像素大小為112×112。
1.3 特征提取
人臉特征提取的目的是為了得到人臉中的深層抽象信息,這個(gè)抽象信息能夠?qū)⒉煌娜藚^(qū)分開(kāi),進(jìn)而實(shí)現(xiàn)對(duì)人臉的判別。本文運(yùn)用深度學(xué)習(xí)方法來(lái)提取人臉特征,采用了ResNet作為人臉識(shí)別網(wǎng)絡(luò),并使用ArcFace人臉識(shí)別算法來(lái)訓(xùn)練識(shí)別網(wǎng)絡(luò)。
ArcFace Loss是一種用于人臉識(shí)別的損失函數(shù),基于該損失函數(shù)訓(xùn)練得到人臉識(shí)別算法ArcFace。ArcFace的思想和AMSoftmax有一定的共同點(diǎn),不同點(diǎn)在于:ArcFace在角度空間中最大化分類界限,而AMSoftmax是在余弦空間中最大化分類界限。ArcFace Loss基于傳統(tǒng)的Softmax Loss修改得到,式(1)是Softmax Loss損失函數(shù)。
L1=- 1 m ∑ m i=1 lg e W Tyi x i+ b yi ∑ n j=1 e W Tj x i+ b j
(1)
將式(1)中的偏置 b j設(shè)置為0,然后權(quán)重 W 和輸入 x 的內(nèi)積用下面式子表示。
W Tj x i=‖ W j‖‖ x i‖cos θ j
對(duì)權(quán)重 W j使用L2正則化處理,使得‖ W j‖=1,得到公式:
L2=- 1 m ∑ m i=1 lg e‖ x i‖cos θ yi e‖ x i‖cos θ yi+∑ n j=1, j≠yi e‖ x i‖cos θ j
(2)
然后對(duì)輸入 x i也用L2作正則化處理,同時(shí)再乘以一個(gè)縮放系數(shù)s;另一方面將cos θ yi用cos( θ yi+m)替換,這部分是ArcFace的核心,m為附加角。于是得到ArcFace算法的損失函數(shù)如下:
L3=- 1 m ∑ m i=1 lg es·cos( θ yi+m) es·cos( θ yi+m)+∑ n j=1, j≠yi es·cos θ j
(3)
ArcFace算法的整體流程如圖2所示。
1.4 特征匹配
提取到人臉特征后,需要在特征庫(kù)中匹配特征,以找到對(duì)應(yīng)的身份信息。普遍的方法是計(jì)算目標(biāo)人臉特征與特征庫(kù)中所有特征的相似度,根據(jù)相似度找到最符合的特征。本文中使用余弦相似度來(lái)表示特征的相似性,對(duì)于特征向量 m 和特征向量 n ,其余弦相似度為兩特征向量夾角α的余弦值:cosα= ?m · n? ‖ m ‖·‖ n ‖ ,cosα越大,相似度越高。
2 針對(duì)ARM平臺(tái)的人臉識(shí)別方法
2.1 總體系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
深度學(xué)習(xí)模型的訓(xùn)練需要大量的計(jì)算,通常需要具有強(qiáng)大計(jì)算能力的服務(wù)器來(lái)訓(xùn)練。本文中的模型使用配備英偉達(dá)GPU的服務(wù)器來(lái)訓(xùn)練,模型訓(xùn)練完成后,應(yīng)用到嵌入式系統(tǒng)中。ARM端系統(tǒng)總體設(shè)計(jì)如圖3所示。
在本系統(tǒng)上,攝像頭負(fù)責(zé)采集視頻,交給CPU實(shí)時(shí)檢測(cè)并追蹤人臉;CPU檢測(cè)到人臉后,若GPU處于空閑狀態(tài),則將檢測(cè)到的人臉圖像對(duì)齊后傳送給GPU,在GPU上提取人臉的特征信息,CPU繼續(xù)檢測(cè)并跟蹤人臉;GPU上人臉特征提取完成后,到數(shù)據(jù)庫(kù)中與事先提取好的特征庫(kù)進(jìn)行相似度匹配,若匹配到相應(yīng)身份信息,則交由CPU實(shí)時(shí)追蹤該目標(biāo),并不再對(duì)該目標(biāo)進(jìn)行識(shí)別。當(dāng)一個(gè)目標(biāo)被正常識(shí)別后,將識(shí)別結(jié)果發(fā)送到遠(yuǎn)程服務(wù)器,進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理。
由于提取人臉特征需要較大的資源開(kāi)銷,系統(tǒng)無(wú)法對(duì)每幀檢測(cè)到的人臉都進(jìn)行識(shí)別,所以本文通過(guò)對(duì)人臉的實(shí)時(shí)追蹤,對(duì)同一個(gè)目標(biāo)只需要識(shí)別一次,避免識(shí)別每幀圖像,進(jìn)而提高系統(tǒng)運(yùn)行的效率。同時(shí),系統(tǒng)充分利用硬件設(shè)備的計(jì)算資源,使用CPU來(lái)檢測(cè)追蹤人臉,GPU提取人臉特征,CPU和GPU并行運(yùn)行,互不干擾,系統(tǒng)運(yùn)行起來(lái)流暢穩(wěn)定。
2.2 改進(jìn)MTCNN用于人臉追蹤
本文中,人臉追蹤是對(duì)檢測(cè)到的人臉持續(xù)標(biāo)記的過(guò)程,即同一個(gè)體的人臉在不同的視頻幀中,具有相同的標(biāo)記。本文對(duì)MTCNN算法進(jìn)行了改進(jìn),使得MTCNN算法能夠適用于人臉追蹤。原始的MTCNN算法包含了三個(gè)級(jí)聯(lián)CNN,這三個(gè)級(jí)聯(lián)網(wǎng)絡(luò)用于對(duì)人臉位置和關(guān)鍵點(diǎn)進(jìn)行檢測(cè),對(duì)于視頻序列,MTCNN算法不能實(shí)時(shí)追蹤每個(gè)目標(biāo)。在MTCNN三個(gè)級(jí)聯(lián)網(wǎng)絡(luò)的基礎(chǔ)上,通過(guò)添加第四個(gè)CNN——FNet(Feature Net)來(lái)實(shí)時(shí)提取每個(gè)目標(biāo)的特征信息,通過(guò)匹配視頻幀之間目標(biāo)的特征相似度,實(shí)現(xiàn)對(duì)每個(gè)目標(biāo)的實(shí)時(shí)追蹤。
FNet基于MobileFaceNet[25]進(jìn)行設(shè)計(jì)。MobileFaceNet是一個(gè)輕量化的CNN,其中采用了可分離卷積(Depthwise Separable Convolution)[26]來(lái)精簡(jiǎn)網(wǎng)絡(luò)參數(shù),使得網(wǎng)絡(luò)更加適用于移動(dòng)設(shè)備。同時(shí),MobileFaceNet還在MobileNetV2[27]的基礎(chǔ)上使用可分離卷積層代替全局平均池化層(Global Average Pooling),使網(wǎng)絡(luò)可以學(xué)習(xí)不同點(diǎn)的權(quán)重。FNet在MobileFaceNet的基礎(chǔ)上精簡(jiǎn)了網(wǎng)絡(luò)結(jié)構(gòu),并加入了通道混洗(Channel Shuffle)[23]策略,通道混洗能夠加強(qiáng)通道之間的信息流通,增強(qiáng)網(wǎng)絡(luò)的信息表達(dá)能力。FNet網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。
人臉追蹤算法流程:
程序前
FO R 視頻中的每幀 DO
MTCNN算法檢測(cè)每幀圖像
取出所有檢測(cè)到的人臉,resize為112×112
FNet提取每幀人臉的128維特征
FO R 每張人臉 DO
計(jì)算與上一幀圖像中所有人臉特征的相
似度,并取最大值
IF? 最大相似度 > 0.6 DO
匹配相應(yīng)的兩張人臉為同一目標(biāo)
EL SE DO
將當(dāng)前人臉作為新目標(biāo)
程序后
2.3 ARM平臺(tái)下使用ResNet提取人臉特征
標(biāo)準(zhǔn)的深度網(wǎng)絡(luò)一般需要部署在高性能服務(wù)器或者桌面級(jí)計(jì)算機(jī)上,而對(duì)于計(jì)算能力弱的嵌入式設(shè)備,通常使用輕量化的深度網(wǎng)絡(luò),例如MobileNet、ShuffleNet等。輕量化的網(wǎng)絡(luò)雖然對(duì)設(shè)備性能要求更低,但識(shí)別精度也比較低。為了使ARM平臺(tái)上人臉識(shí)別精度得到更高層次的提升,本文將ResNet應(yīng)用到嵌入式設(shè)備上。
本文中使用了三個(gè)具有不同網(wǎng)絡(luò)深度的ResNet進(jìn)行對(duì)比實(shí)驗(yàn),其網(wǎng)絡(luò)結(jié)構(gòu)如表2所示。
2.4 使用Mali-GPU實(shí)現(xiàn)網(wǎng)絡(luò)加速
Mali-GPU是ARM平臺(tái)下專門用于圖形和數(shù)字計(jì)算的處理器,與ARM CPU相比,Mali-GPU的數(shù)值計(jì)算能力更強(qiáng)。本文基于TVM進(jìn)行開(kāi)發(fā),使用Mali-GPU來(lái)完成ResNet復(fù)雜的網(wǎng)絡(luò)運(yùn)算,速度比使用ARM CPU更快,同時(shí)不再占用CPU,CPU可以更好地用來(lái)檢測(cè)和追蹤人臉,系統(tǒng)整體運(yùn)行速度更快。
為了利用Mali-GPU,TVM底層基開(kāi)放運(yùn)算語(yǔ)言(Open Computing Language,OpenCL)進(jìn)行編譯,并使用開(kāi)放基礎(chǔ)線性代數(shù)子程序庫(kù)(Open Basic Linear Algebra Subprograms,OpenBLAS)進(jìn)行網(wǎng)絡(luò)運(yùn)算??蚣軐?duì)外提供統(tǒng)一的Python API,方便編程開(kāi)發(fā)。
3 實(shí)驗(yàn)結(jié)果分析
3.1 實(shí)驗(yàn)設(shè)置及數(shù)據(jù)
本實(shí)驗(yàn)訓(xùn)練模型的服務(wù)器運(yùn)行64位的CentOS系統(tǒng),版本為7.5,配備了Intel Xeon E5 2620 v4 處理器,64GB內(nèi)存,4張Tesla V100顯卡,每張顯卡顯存32GB。
本文系統(tǒng)最終運(yùn)行在ARM平臺(tái)上,設(shè)備為瑞芯微RK3399開(kāi)發(fā)板,開(kāi)發(fā)板配置如表3所示。
訓(xùn)練數(shù)據(jù)集為經(jīng)過(guò)人臉對(duì)齊以及降噪處理[20]之后的微軟名人數(shù)據(jù)集MS-Celeb-1M(MicroSoft One Million Celebrities in the Real World)[28],處理之后的訓(xùn)練集包含了85164個(gè)不同個(gè)體,共計(jì)約380萬(wàn)張人臉圖像。
數(shù)據(jù)的校驗(yàn)即判斷每?jī)蓮埲四槇D像是否為同一人。本文使用的校驗(yàn)數(shù)據(jù)集為L(zhǎng)FW、CFP(Celebrities in Frontal Profile)[29]和AgeDB(Age Database)[30]。其中,LFW校驗(yàn)集包含了6000對(duì)人臉圖像;CFP使用包含正面和側(cè)面的校驗(yàn)數(shù)據(jù)CFP-FP(CFP with Frontal-Profile),共計(jì)7000對(duì)人臉圖像,同一人和不同人圖像的分別有3500對(duì);AgeDB使用年齡差距為30歲的數(shù)據(jù)組(AgeDB-30),分別包含3000對(duì)相同人臉和不同人臉圖像,共計(jì)6000對(duì)。
測(cè)試數(shù)據(jù)集為MegaFace Challenge 1。MegeFace的測(cè)試分為干擾數(shù)據(jù)集Distractors和測(cè)試數(shù)據(jù)集FaceScrub:
干擾數(shù)據(jù)集包含了690572個(gè)不同個(gè)體約100萬(wàn)張人臉圖像,測(cè)試數(shù)據(jù)集包含了530個(gè)不同個(gè)體約10萬(wàn)張人臉圖像。
為了得到MegaFace最終測(cè)試結(jié)果,需要用待測(cè)試的模型提取所有干擾集和測(cè)試集人臉圖像的特征,然后由MegaFace工具包根據(jù)所有測(cè)試人臉圖像特征數(shù)據(jù)得到最終測(cè)試精度。
本實(shí)驗(yàn)參數(shù)設(shè)置如下:使用ArcFace算法訓(xùn)練ResNet模型,縮放系數(shù)s設(shè)置為64,附加角度m設(shè)置為0.5;ResNet輸出特征維度設(shè)置為512。
3.2 結(jié)果分析
在人臉追蹤當(dāng)中,為了驗(yàn)證FNet的有效性,本文使用Softmax損失函數(shù)訓(xùn)練MobileFaceNet和FNet各14萬(wàn)次,訓(xùn)練過(guò)程中初始學(xué)習(xí)率設(shè)置為0.1,batch size設(shè)置為256,使用兩張顯卡訓(xùn)練。其效果對(duì)比如表4所示。
通過(guò)兩個(gè)網(wǎng)絡(luò)的對(duì)比分析可以看到,F(xiàn)Net在精度上要比MobileFaceNet略低,但差距較小;與MobileFaceNet相比,F(xiàn)Net的模型大小減小了45%,速度提升了75%,有較大提升。由于人臉追蹤實(shí)時(shí)性強(qiáng),對(duì)FNet速度要求高。FNet在速度上滿足實(shí)時(shí)要求,同時(shí)在精度上也接近MobileFaceNet。
為了說(shuō)明人臉追蹤的效果,本文對(duì)算法在單目標(biāo)和多目標(biāo)條件下進(jìn)行了測(cè)試,測(cè)試數(shù)據(jù)為網(wǎng)絡(luò)上采集的包含人臉的視頻圖像,然后每隔2s抽取一張圖像作為效果圖,如圖5、6所示。算法每檢測(cè)到一個(gè)新目標(biāo),會(huì)對(duì)其從0開(kāi)始編號(hào)。
從圖4和圖5中可以看到,在單目標(biāo)和多目標(biāo)條件下,同一目標(biāo)的序號(hào)一直保持不變,說(shuō)明算法準(zhǔn)確地追蹤到了該目標(biāo)。算法在單目標(biāo)和多目標(biāo)的條件下具有良好的追蹤效果。
本文通過(guò)實(shí)驗(yàn)對(duì)MobileFaceNet和具有不同深度的ResNet的識(shí)別效果進(jìn)行了對(duì)比,訓(xùn)練中batch size統(tǒng)一設(shè)置為128,使用4塊GPU訓(xùn)練,初始學(xué)習(xí)率設(shè)置為0.1。ResNet均使用ArcFace算法訓(xùn)練14萬(wàn)次。由于MobileFaceNet直接使用ArcFace算法訓(xùn)練難以收斂,所以MobileFaceNet先使用Softmax損失函數(shù)訓(xùn)練14萬(wàn)次,然后使用ArcFace算法訓(xùn)練20萬(wàn)次,效果對(duì)比如表5所示。
分別在Rockchip 3399 ARM CPU和Mali T860 GPU上測(cè)試四個(gè)網(wǎng)絡(luò)模型的運(yùn)行耗時(shí),表6為2000張人臉圖像下的平均耗時(shí)。
通過(guò)對(duì)四個(gè)網(wǎng)絡(luò)模型的精度和耗時(shí)對(duì)比可以看到,得益于輕量化的網(wǎng)絡(luò)結(jié)構(gòu),MobileFaceNet在模型大小和耗時(shí)均優(yōu)于ResNet,但在識(shí)別精度上,ResNet要優(yōu)于MobileFaceNet;隨著網(wǎng)絡(luò)的加深,ResNet的識(shí)別精度有明顯提高;四個(gè)網(wǎng)絡(luò)在ARM GPU上的耗時(shí)都比ARM CPU上低,說(shuō)明使用ARM GPU加速人臉特征提取行之有效。
為了說(shuō)明整套算法的實(shí)時(shí)性,本文在ARM平臺(tái)上對(duì)不同算法組合進(jìn)行了速度測(cè)試。人臉特征提取采用ResNet-50,結(jié)果如表7所示。
從表7可以看出,MTCNN算法中, 最小檢測(cè)尺度min size設(shè)置為20px(pixel),本文中設(shè)置為100px,通過(guò)增大最小檢測(cè)尺度后,算法速度得到了大幅提升;同時(shí),算法過(guò)濾掉了容易被誤檢和不易識(shí)別的小目標(biāo),增強(qiáng)了算法的魯棒性。MTCNN檢測(cè)完圖像后,直接使用ResNet提取人臉特征速度會(huì)很慢,原因是提取人臉特征過(guò)程比較耗時(shí),頻繁地提取人臉特征會(huì)消耗大量時(shí)間和計(jì)算資源,使算法變慢。MTCNN加上人臉追蹤后,人臉被識(shí)別后會(huì)轉(zhuǎn)為追蹤,不需要頻繁地提取人臉特征,算法的速度有很大程度的提高,特別是使用GPU加速后,特征提取在GPU上運(yùn)行更快,而且不再占用CPU,CPU可以全部用來(lái)檢測(cè)人臉,最終速度能接近實(shí)時(shí)水平。
4 結(jié)語(yǔ)
本文基于瑞芯微開(kāi)發(fā)板設(shè)計(jì)和實(shí)現(xiàn)了實(shí)時(shí)人臉識(shí)別系統(tǒng),使用深度學(xué)習(xí)的方法來(lái)檢測(cè)人臉和提取人臉特征。首先,在MTCNN算法的基礎(chǔ)上添加了一個(gè)輕量化的CNN——FNet來(lái)分辨每個(gè)目標(biāo),實(shí)現(xiàn)了對(duì)每個(gè)目標(biāo)的實(shí)時(shí)追蹤;其次,在嵌入式系統(tǒng)上采用ResNet進(jìn)行更深層的特征提取,提高了算法的識(shí)別率;最后,在開(kāi)發(fā)板上使用Mali-GPU對(duì)人臉特征提取進(jìn)行加速,并實(shí)現(xiàn)了CPU和GPU的負(fù)載均衡。實(shí)驗(yàn)結(jié)果表明,本文方法在嵌入式系統(tǒng)上達(dá)到了較快的運(yùn)行速度,并取得了比使用MobileFaceNet更高的識(shí)別率。
參考文獻(xiàn)
[1]?劉飛,張俊然,楊豪.基于深度學(xué)習(xí)的糖尿病患者的分類識(shí)別[J].計(jì)算機(jī)應(yīng)用,2018,38(S1):39-43. (LIU F, ZHANG J R, YANG H. Classification and recognition of diabetes mellitus based on deep learning [J]. Journal of Computer Applications, 2018, 38(S1): 39-43.)
[2]?熊詠平,丁勝,鄧春華,等.基于深度學(xué)習(xí)的復(fù)雜氣象條件下海上船只檢測(cè)[J].計(jì)算機(jī)應(yīng)用,2018,38(12):3631-3637. (XIONG Y P, DING S, DENG C H, et al. Ship detection under complex sea and weather conditions based on deep learning [J]. Journal of Computer Applications, 2018, 38(12): 3631-3637.)
[3]?孫勁光,孟凡宇.基于深度神經(jīng)網(wǎng)絡(luò)的特征加權(quán)融合人臉識(shí)別方法[J].計(jì)算機(jī)應(yīng)用,2016,36(2):437-443. (SUN J G, MENG F Y. Face recognition based on deep neural network and weighted fusion of face features [J]. Journal of Computer Applications, 2016, 36(2):437-443.)
[4]?KAZEMI V, SULLIVAN J. One millisecond face alignment with an ensemble of regression trees [C]// Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC: IEEE Computer Society, 2014: 1867-1874.
[5]?DASHORE G, Dr. RAJ V C. An efficient method for face recognition using Principal Component Analysis (PCA) [J]. International Journal of Advanced Technology and Engineering Research, 2012, 2(2): 23-29.
[6]?CHAN L, SALLEH S, TING C. Face biometrics based on principal component analysis and linear discriminant analysis [J]. Journal of Computer Science, 2010, 6(7): 693-699.
[7]?PENEV P S, ATICK J J. Local feature analysis: a general statistical theory for object representation [J]. Network Computation in Neural Systems, 1996, 7(3): 477-500.
[8]?楊天明,陳志,岳文靜.基于視頻深度學(xué)習(xí)的時(shí)空雙流人物動(dòng)作識(shí)別模型[J]. 計(jì)算機(jī)應(yīng)用,2018,38(3):895-899. (YANG T M, CHEN Z, YUE W J. Spatio-temporal two-stream human action recognition model based on video deep learning [J]. Journal of Computer Applications, 2018, 38(3): 895-899.)
[9]?LECUN Y L, BOTTOU L, BENGIO Y,et al. Gradient-based learning applied to document recognition [J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.
[10]?TAIGMAN Y, YANG M, RANZATO M, et al. DeepFace: closing the gap to human-level performance in face verification [C]// Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC: IEEE Computer Society, 2014: 1701-1708.
[11]?HUANG G B, RAMESH M, BERG T, et al. Labeled faces in the wild: a database for studying face recognition in unconstrained environments [EB/OL]. [2018-12-05]. http://cs.umass.edu/~elm/papers/lfw.pdf.
[12]?HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition [C]// Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC: IEEE Computer Society, 2016: 770-778.
[13]?SIMONVAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition [J]. arXiv E-print, 2015: arXiv:1409.1556.?[EB/OL]. [2019-01-06]. https://arxiv.org/pdf/1409.1556.pdf.
[14]?SZEGEDY C, LIU W, JIA Y, et al. Going deeper with convolutions [C]// Proceedings of the 2015 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC: IEEE Computer Society, 2015:1-9.
[15]?ZHANG K, ZHANG Z, LI Z, et al. Joint face detection and alignment using multitask cascaded convolutional networks [J]. IEEE Signal Processing Letters, 2016, 23(10): 1499-1503.
[16]?LIU W, WEN Y, YU Z, et al. SphereFace: deep hypersphere embedding for face recognition [C]// Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC: IEEE Computer Society, 2017:6738-6746.
[17]?KEMELMACHER-SHLIZERMAN I, SEITZ S M, MILLER D,et al. The MegaFace benchmark: 1 million faces for recognition at scale [C]// Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC: IEEE Computer Society, 2016: 4873-4882.
[18]???WANG F, XIANG X, CHENG J, et al. NormFace: L2 hypersphere embedding for face verification [J]. arXiv E-print, 2017: arXiv:1704.06369.?[EB/OL]. [2018-11-20]. https://arxiv.org/pdf/1704.06369.pdf.
[19]?WANG F, LIU W, LIU H, et al. Additive margin softmax for face verification [J]. arXiv E-print, 2018: arXiv:1801.05599.?[EB/OL]. [2019-01-08]. https://arxiv.org/pdf/1801.05599.pdf.
[20]?DENG J, GUO J, XUE N, et al. ArcFace: additive angular margin loss for deep face recognition [J]. arXiv E-print, 2019: arXiv:1801.07698.?[EB/OL]. [2018-10-28]. https://arxiv.org/pdf/1801.07698.pdf.
[21]?GRASSO I, RADOJKOVIC P, RAJOVIC N, et al. Energy efficient HPC on embedded SoCs: Optimization techniques for mali GPU [C]// Proceedings of the 2014 IEEE International Parallel and Distributed Processing Symposium. Washington, DC:IEEE Computer Society, 2014: 123-132.
[22]?HOWARD A G, ZHU M, CHEN B, et al. MobileNets: efficient convolutional neural networks for mobile vision applications [J]. arXiv E-print, 2017: arXiv:1704.04861.?[EB/OL]. [2019-01-15]. https://arxiv.org/pdf/1704.04861.pdf.
[23]?ZHANG X, ZHOU X, LIN M, et al. ShuffleNet: an extremely efficient convolutional neural network for mobile devices [J]. arXiv E-print, 2017: arXiv:1707.01083v1.?[EB/OL]. [2018-11-15]. https://arxiv.org/pdf/1707.01083v1.pdf.
[24]?? CHEN T, MOREAU T, JIANG Z, et al. TVM: an automated end-to-end optimizing compiler for deep learning [J]. arXiv E-print, 2018: arXiv:1802.04799.?[2019-01-20]. https://arxiv.org/pdf/1802.04799.pdf.
[25]?CHEN S, LIU Y, GAO X, et al. MobileFaceNets: efficient CNNs for accurate real-time face verification on mobile devices [J]. arXiv E-print, 2018: arXiv:1804.07573.?[EB/OL]. [2019-01-09]. https://arxiv.org/ftp/arxiv/papers/1804/1804.07573.pdf.
[26]?CHOLLET F. Xception: deep learning with depthwise separable convolutions [J]. arXiv E-print, 2016: arXiv:1610.02357v2.?[EB/OL]. [2018-12-29]. https://arxiv.org/pdf/1610.02357v2.pdf.
[27]?SANDLER M, HOWARD A, ZHU M, et al. MobileNetV2: inverted residuals and linear bottlenecks [J]. arXiv E-print, 2019: arXiv:1801.04381.?[EB/OL]. [2019-01-20]. https://arxiv.org/pdf/1801.04381.pdf.
[28]?GUO Y, ZHANG L, HU Y, et al. MS-Celeb-1M: a dataset and benchmark for large-scale face recognition [J]. arXiv E-print, 2016: arXiv:1607.08221.?[EB/OL]. [2019-01-20]. https://arxiv.org/pdf/1607.08221.pdf.
[29]?SENGUPTA S, CHEN J, CASTILLO C, et al. Frontal to profile face verification in the wild [C]// Proceedings of the 2016 IEEE Winter Conference on Applications of Computer Vision. Washington, DC: IEEE Computer Society, 2016: 1-9.
[30]??MOSCHOGLOU S, PAPAIOANNOU A, SAGONAS C, et al. ?AgeDB: the first manually collected, in-the-wild age database [C]// Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition Workshops. Washington, DC: IEEE Computer Society, 2017: 1997-2005.