趙 洋,許 軍
(沈陽(yáng)化工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,沈陽(yáng) 110142)
自2006年,LeCun 等發(fā)現(xiàn)通過(guò)逐層預(yù)訓(xùn)練的方式可以較好的訓(xùn)練多層神經(jīng)網(wǎng)絡(luò),提出了深度學(xué)習(xí)(deep learning)的概念[1].從此,人臉識(shí)別技術(shù)得到了快速的發(fā)展,并且已經(jīng)普遍應(yīng)用到人們的日常生活中.文獻(xiàn)[2]提出基于ARM 進(jìn)行人臉識(shí)別的方法.該方法首先通過(guò)ViBe 算法提取監(jiān)控區(qū)域內(nèi)的運(yùn)動(dòng)目標(biāo),然后再用局部二值模式 (Local Binary Pattern,LBP) 算法對(duì)人臉進(jìn)行檢測(cè)和識(shí)別.該方法雖然能識(shí)別較遠(yuǎn)距離的人臉,但是識(shí)別準(zhǔn)確率不高.文獻(xiàn)[3]提出基于達(dá)芬奇平臺(tái)OMAP3530 進(jìn)行人臉識(shí)別的方法.該方法首先進(jìn)行可見(jiàn)光圖像和近紅外圖像的雙路圖像采集,然后通過(guò)Harr-like 特征的AdaBoost 算法進(jìn)行人臉目標(biāo)的檢測(cè),最后利用LBP 算法進(jìn)行特征提取.該方法只克服了光照環(huán)境對(duì)識(shí)別精度的影響,然而在復(fù)雜環(huán)境下,識(shí)別效果欠佳.文獻(xiàn)[4]提出了一種利用云計(jì)算平臺(tái)實(shí)現(xiàn)人臉識(shí)別的方法.該方法首先將采集的圖像傳入嵌入式平臺(tái),然后和FaceCore 人臉識(shí)別云計(jì)算平臺(tái)交互,利用云計(jì)算平臺(tái)進(jìn)行人臉的檢測(cè)和識(shí)別.該方法在一定程度上減少了嵌入式設(shè)備的計(jì)算量,但是需要通過(guò)網(wǎng)絡(luò)和云計(jì)算平臺(tái)進(jìn)行數(shù)據(jù)傳輸,增加了等待的時(shí)間,實(shí)效性差.文獻(xiàn)[5]首先把采集的圖像傳入互聯(lián)網(wǎng)端,利用Dlib 官方自帶的人臉檢測(cè)功能定位出人臉圖像,然后使用Dlib 官方訓(xùn)練好的深度殘差網(wǎng)絡(luò)模型識(shí)別人臉.該方法雖然很大程度上簡(jiǎn)化了開(kāi)發(fā)的復(fù)雜度,但無(wú)法同時(shí)對(duì)多張人臉檢測(cè).由以上分析可知,在嵌入式設(shè)備或者移動(dòng)端部署人臉識(shí)別系統(tǒng)還需要進(jìn)一步的研究,特別是在保證成本低廉,易用性的前提下,如何提高識(shí)別速度仍是亟待解決的問(wèn)題.
文獻(xiàn)[6]提出了LBP,KNN和BP 神經(jīng)網(wǎng)絡(luò)相結(jié)合的人臉識(shí)別方法.首先將圖像分為局部區(qū)域并提取每個(gè)局部區(qū)域的特征紋理,然后將提取的特征圖傳入神經(jīng)網(wǎng)絡(luò).LBP和KNN 這種相結(jié)合的方式減小了原始訓(xùn)練圖像之間的相關(guān)性.傳統(tǒng)的人臉識(shí)別算法[7]雖然在人臉特征提取方面取得了很好的效果,但是這些方法在光照,表情,識(shí)別速度,準(zhǔn)確率等方面還存在著一些不足.文獻(xiàn)[8]提出了一種Adacos的人臉損失函數(shù),使用自適應(yīng)動(dòng)態(tài)縮放參數(shù)來(lái)解決模型在訓(xùn)練過(guò)程中超參數(shù)的選擇問(wèn)題,但是模型在訓(xùn)練過(guò)程中參數(shù)比較多,模型的收斂速度比較慢.文獻(xiàn)[9]提出了一種引進(jìn)感知模型的人臉識(shí)別方法,該方法通過(guò)在孿生卷積神經(jīng)網(wǎng)絡(luò)上引入感知模型,使得網(wǎng)絡(luò)能夠?qū)W習(xí)到更加詳細(xì)的特征,解決了在非限定條件下人臉識(shí)別困難的問(wèn)題.文獻(xiàn)[10]提出了一種基于空間注意力機(jī)制的3D 人臉識(shí)別方法,該方法采用類(lèi)間正則化損失函數(shù),降低了不同人臉之間的特征相似度.雖然在一定程度上解決了低質(zhì)量人臉圖像的問(wèn)題,但是其中的超參數(shù)設(shè)定只能根據(jù)經(jīng)驗(yàn)設(shè)定,沒(méi)有固定的計(jì)算公式.一些大型的深度學(xué)習(xí)網(wǎng)絡(luò)模型[11]集成了特征提取和圖像分類(lèi)方法,采用自學(xué)習(xí)的方式進(jìn)行訓(xùn)練,在準(zhǔn)確率和速度方面得到了很大的提升,但是運(yùn)行在計(jì)算能力有限的嵌入式設(shè)備或者移動(dòng)設(shè)備上還有些困難.本文以MobileNetV2網(wǎng)絡(luò)模型為研究對(duì)象,提出了一種基于Raspberry Pi的人臉識(shí)別方法.該方法首先對(duì)圖庫(kù)中的圖像進(jìn)行預(yù)處理,利用OpenCV 庫(kù)中的Haar 級(jí)聯(lián)方法對(duì)圖像中的人臉進(jìn)行定位,然后把數(shù)據(jù)送入MobileNetV2 網(wǎng)進(jìn)絡(luò)進(jìn)行遷移學(xué)習(xí),通過(guò)訓(xùn)練得到一個(gè)健壯的模型,最后將模型移植到Raspberry Pi,利用Raspberry Pi 完成人臉識(shí)別的任務(wù).
考慮到成本、算力、功耗等各方面的原因,本系統(tǒng)選用Raspberry Pi 作為主控制器[12].整個(gè)系統(tǒng)由圖像采集模塊,供電模塊,圖像處理模塊以及圖像顯示模塊組成.圖像采集模塊負(fù)責(zé)人臉圖像的讀入;供電模塊為系統(tǒng)的正常運(yùn)行提供穩(wěn)定的電源;圖像處理模塊對(duì)讀入的圖像進(jìn)行預(yù)處理,然后經(jīng)過(guò)特征提取,對(duì)人臉進(jìn)行識(shí)別;顯示模塊主要對(duì)讀入的圖像進(jìn)行顯示,將識(shí)別的結(jié)果顯示出來(lái).Raspberry Pi 作為硬件和軟件的核心部分,連接各個(gè)功能模塊,搭載1.4 GHz的64 位四核處理器,10/100 以太網(wǎng)接口,雙頻802.11ac 無(wú)線局域網(wǎng),藍(lán)牙4.2,HDMI 結(jié)構(gòu),4 個(gè)USB2.0 接口D-SI 顯示連接器,RCA av 端口音頻輸出,USB 電源接口.
系統(tǒng)的數(shù)據(jù)集是本研究室自己采集的.在不同的環(huán)境下,對(duì)每名成員采集1000 張圖片,以姓名命名,以JPG的格式存放在本地.MobileNetV2 網(wǎng)絡(luò)屬于輕量級(jí)的神經(jīng)網(wǎng)絡(luò),擁有更少的參數(shù),更高的準(zhǔn)確率,更快的速度,所以選擇該網(wǎng)絡(luò)結(jié)構(gòu)作為我們的模型.模型采用遷移學(xué)習(xí)的方式進(jìn)行訓(xùn)練,加載MobileNetV2 網(wǎng)絡(luò)的初始化參數(shù),這樣能夠提高模型訓(xùn)練的速度,讓模型更快的收斂.然后通過(guò)添加輔助層和修改Softmax 層的分類(lèi)類(lèi)別,調(diào)整超參數(shù),得到訓(xùn)練的模型.由于訓(xùn)練模型產(chǎn)生大量的參數(shù),對(duì)設(shè)備的硬件資源和算力要求比較高,因此選用離線的方式在PC 端訓(xùn)練模型,通過(guò)訓(xùn)練得到一個(gè)性能優(yōu)越的模型.模型訓(xùn)練過(guò)程如圖1所示.
圖1 模型訓(xùn)練過(guò)程
人臉識(shí)別技術(shù)是基于人的臉部信息進(jìn)行識(shí)別的一種生物技術(shù),而人臉是保證人臉識(shí)別算法性能的重要因素之一.在人臉圖像的采集過(guò)程中,攝像頭的像素,拍攝的角度,光照強(qiáng)度等因素會(huì)影響整個(gè)系統(tǒng)的識(shí)別效果.為了增強(qiáng)系統(tǒng)的魯棒性,避免光照強(qiáng)度對(duì)圖像的影響,首先對(duì)圖像進(jìn)行歸一化;然后利用Haar 級(jí)聯(lián)方法對(duì)人臉進(jìn)行定位[13],篩選出定位錯(cuò)誤或者不滿(mǎn)足條件的圖像,最后把圖庫(kù)中的圖像統(tǒng)一調(diào)整為224×224的大小.
MobileNet 網(wǎng)絡(luò)是Google 團(tuán)隊(duì)在2017年提出的,專(zhuān)注于移動(dòng)端或者嵌入式設(shè)備的輕量級(jí)網(wǎng)絡(luò),相比于傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò),在準(zhǔn)確率小幅度降低的前提下大大減少了模型參數(shù)和運(yùn)算量.MobileNetV2 網(wǎng)絡(luò)結(jié)構(gòu)如表1所示.
表1 MobileNetV2 網(wǎng)絡(luò)結(jié)構(gòu)
表1中Input為輸入特征圖的大小,bottleneck為倒殘差網(wǎng)絡(luò)結(jié)構(gòu),t為擴(kuò)展因子,c是輸出特征矩陣的深度,n是bottleneck 重復(fù)的次數(shù),s是步長(zhǎng).
MobileNetV2 網(wǎng)絡(luò)不但借鑒了MobileNetV1[14]網(wǎng)絡(luò)的深度可分離卷積[15,16],還借鑒了ResNet 網(wǎng)絡(luò)結(jié)構(gòu).深度可分離卷積可分成DW (DepthWise) 卷積和PW (PointWise)卷積.如圖2所示,DW 卷積是圖像一個(gè)通道對(duì)應(yīng)一個(gè)卷積核,卷積核的深度為1,輸入特征矩陣的通道數(shù)等于卷積核個(gè)數(shù)等于輸出特征矩陣的個(gè)數(shù).
圖2 DW 卷積
相對(duì)于傳統(tǒng)的卷積運(yùn)算,DW 卷積它只對(duì)每個(gè)通道進(jìn)行了獨(dú)立的卷積運(yùn)算,沒(méi)有很好的利用空間上的特征信息,不能得到表達(dá)能力較強(qiáng)的Feature Map,所以還要經(jīng)過(guò)PW 卷積(如圖3所示).PW 卷積主要是利用1×1×M(上一層的Maps 深度)的卷積核對(duì)上一層的Maps 逐點(diǎn)進(jìn)行卷積,這樣就能很好的對(duì)空間位置上的特征信息進(jìn)行融合,得到表達(dá)能力較強(qiáng)的特征信息.
圖3 PW 卷積
深度可分離卷積大大減少了運(yùn)算量,提高了運(yùn)算速度.如圖4所示,DF表示輸入圖像的大小,DK表示卷積核的大小,M表示輸入圖像的深度,N表示輸出特征矩陣的深度.傳統(tǒng)卷積計(jì)算量為DF×DF×DK×DK×M×N,而深度可分離卷積的計(jì)算量為DF×DF×DK×DK×M+DF×DF×1×1×M×N.兩者相比可以明顯的發(fā)現(xiàn),深度可分離卷積的計(jì)算量遠(yuǎn)遠(yuǎn)小于傳統(tǒng)卷積的計(jì)算量.
圖4 傳統(tǒng)卷積
倒殘差網(wǎng)絡(luò)結(jié)構(gòu)相比于殘差網(wǎng)絡(luò)結(jié)構(gòu),它先經(jīng)過(guò)1×1的卷積進(jìn)行升維,然后再通過(guò)3×3的DW 卷積,最后再通過(guò)1×1的卷積進(jìn)行降維.結(jié)構(gòu)中的Shortcut 操作只有當(dāng)步距為1 且輸入特征矩陣和輸出特征矩陣的形狀相同時(shí),才會(huì)執(zhí)行剪枝操作.如圖5所示.
圖5 倒殘差網(wǎng)絡(luò)結(jié)構(gòu)
本研究室自己制作的數(shù)據(jù)集主要通過(guò)攝像機(jī)拍攝的視頻,將采集的視頻分幀,取出不同時(shí)段的圖像作為訓(xùn)練樣本.數(shù)據(jù)集共有5000 張圖片,5 個(gè)類(lèi)別.每個(gè)類(lèi)別的圖像都各不相同,包含不同的姿勢(shì),不同的表情,不同的年齡.圖像的尺寸都是512×512,按7:3的比例把數(shù)據(jù)集分為訓(xùn)練集和驗(yàn)證集.實(shí)驗(yàn)環(huán)境為Windows 10 操作系統(tǒng),8 GB 內(nèi)存,NVIDIA GTX1660 Ti 顯卡,在Tensorflow[17]深度學(xué)習(xí)框架上實(shí)現(xiàn)本文的Mobile-NetV2 模型并完成對(duì)模型的訓(xùn)練.
在Tensorflow 深度學(xué)習(xí)框架上使用Adam 方法訓(xùn)練模型,學(xué)習(xí)率為0.01,迭代次數(shù)為50 次,得到如圖6所示的模型訓(xùn)練結(jié)果.模型的準(zhǔn)確率為98.3%.
圖6 模型訓(xùn)練結(jié)果
由圖6的訓(xùn)練和驗(yàn)證損失曲線可知,模型在前10 次迭代過(guò)程中損失不斷下降,說(shuō)明模型在不斷學(xué)習(xí).模型訓(xùn)練次數(shù)到達(dá)40 次的時(shí)候,交叉熵?fù)p失下降緩慢,基本保持水平,說(shuō)明模型達(dá)到局部最優(yōu).但是驗(yàn)證集的損失明顯大于訓(xùn)練集的損失,導(dǎo)致模型在訓(xùn)練的過(guò)程中效果比較好,驗(yàn)證的過(guò)程中效果比較差,這是一種過(guò)擬合現(xiàn)象.綜合分析,模型的過(guò)擬合問(wèn)題主要原因是我們的數(shù)據(jù)集只有5 個(gè)類(lèi),全連接層的更改導(dǎo)致模型從1×1×1280 logits 回歸到1×1×5的全連接層的過(guò)程中有很大的信息特征突變.為了解決模型過(guò)擬合問(wèn)題,采用正則化的方法對(duì)模型進(jìn)行優(yōu)化,通過(guò)添加 Dropout 層[18]的方式,得到訓(xùn)練后的特征.不但在一定程度上避免模型過(guò)擬合問(wèn)題,也能提高模型的泛化能力.
由圖7訓(xùn)練損失和驗(yàn)證損失曲線可以看出,通過(guò)將學(xué)習(xí)率修改為0.001和添加Dropout 層得到優(yōu)化的模型,在一定程度上降低了模型的過(guò)擬合問(wèn)題.由圖可知訓(xùn)練損失和驗(yàn)證損失慢慢趨向于持平,并且準(zhǔn)確率相比優(yōu)化前提高了1.1%.優(yōu)化后的模型就可以移植到樹(shù)莓派設(shè)備,從而在實(shí)際的場(chǎng)景下進(jìn)行測(cè)試.
圖7 優(yōu)化后的模型
測(cè)試平臺(tái)是Raspberry Pi-3B+,運(yùn)行Linux 操作系統(tǒng).搭載圖像處理庫(kù)OpenCV3.4.6,Tensorflow2.0.0 深度學(xué)習(xí)框架.具體參數(shù)如下:
CPU:1.4 GHz 64 位4 核 ARM Cortex-A53 處理器.
GPU:Broadcom VideoCoreIV,OPenGL Es2.0.
內(nèi)存:1 GB LPDDR2,擴(kuò)展儲(chǔ)存卡:16 GB.
人臉識(shí)別系統(tǒng)的具體識(shí)別過(guò)程如下:
(1)讀入攝像頭前的圖像.
(2)圖像預(yù)處理,首先對(duì)圖像進(jìn)行歸一化操作,去除光照對(duì)圖像的干擾.
(3)利用OpenCV 計(jì)算機(jī)視覺(jué)庫(kù)中的Haar 級(jí)方法對(duì)圖像進(jìn)行人臉的定位,并將圖像大調(diào)整為224×224.
(4)把圖像傳入訓(xùn)練好的MobileNetV2 網(wǎng)絡(luò),對(duì)圖像進(jìn)行特征提取并且分類(lèi).
(5)通過(guò)和圖庫(kù)中圖像進(jìn)行相似度比較,相似度達(dá)到設(shè)定的閾值就認(rèn)為識(shí)別成功,否則識(shí)別失敗.
為了驗(yàn)證系統(tǒng)對(duì)人臉識(shí)別的準(zhǔn)確率,對(duì)圖庫(kù)中圖像和非圖庫(kù)中圖像進(jìn)行測(cè)試.圖8(a)表示對(duì)圖庫(kù)中的人進(jìn)行測(cè)試,圖8(b)表示對(duì)非圖庫(kù)中的人進(jìn)行測(cè)試,分別在不同的表情,不同的光照條件下進(jìn)行人臉辨別.其中沒(méi)有任何標(biāo)識(shí)的表示識(shí)別成功,出現(xiàn)標(biāo)識(shí)Input error表示識(shí)別結(jié)果為非圖庫(kù)中的人.
圖8 準(zhǔn)確率測(cè)試
從圖8(a)中可以看出,該系統(tǒng)對(duì)圖庫(kù)中的人臉整體測(cè)試結(jié)果良好,偶爾出現(xiàn)誤判,但這并不影響系統(tǒng)的性能.因?yàn)閿z像頭前的人可以在屏幕中看到自己的識(shí)別結(jié)果,當(dāng)出現(xiàn)誤判現(xiàn)象,可以通過(guò)矯正身姿,調(diào)整檢測(cè)距離等方法重新進(jìn)行識(shí)別.圖8(b)結(jié)果顯示,對(duì)于陌生面孔很容易出現(xiàn)誤判.造成這種現(xiàn)象的發(fā)生一方面可能是因?yàn)橛?xùn)練數(shù)據(jù)集不足,實(shí)驗(yàn)類(lèi)別比較少,Mobile-NetV2 網(wǎng)絡(luò)會(huì)將陌生人歸為其中的一類(lèi);另一方面,網(wǎng)絡(luò)結(jié)構(gòu)過(guò)于復(fù)雜,導(dǎo)致網(wǎng)絡(luò)退化.多次測(cè)試表明,通過(guò)修改預(yù)測(cè)圖像和實(shí)際圖庫(kù)中圖像的相似度閾值,可以在一定程度上提高準(zhǔn)確率.經(jīng)過(guò)多次實(shí)驗(yàn)發(fā)現(xiàn),將相似度閾值設(shè)置為0.9,不但能夠提高對(duì)圖庫(kù)中圖像識(shí)別的準(zhǔn)確率,而且對(duì)陌生人識(shí)別的準(zhǔn)確率也得到了提高.
為了進(jìn)一步對(duì)系統(tǒng)進(jìn)行穩(wěn)定性測(cè)試,在自制數(shù)據(jù)集和FERET 數(shù)據(jù)集上分別進(jìn)行測(cè)試.分別記錄識(shí)別類(lèi)型,識(shí)別成功,識(shí)別失敗的次數(shù)和識(shí)別準(zhǔn)確率.成功次數(shù)表示的是識(shí)別人物和識(shí)別類(lèi)型匹配成功的次數(shù),準(zhǔn)確率=成功次數(shù)/(成功次數(shù)+失敗次數(shù)).自制數(shù)據(jù)集包含的對(duì)象比較少,在復(fù)雜環(huán)境下只對(duì)4 名成員進(jìn)行20 次測(cè)試,分別標(biāo)號(hào)為1~4 號(hào).1~3 號(hào)為圖庫(kù)中人,4 號(hào)為陌生人.每名成員在不同的環(huán)境下進(jìn)20 次人臉識(shí)別實(shí)驗(yàn),結(jié)果見(jiàn)表2.FERET 數(shù)據(jù)集包含200 個(gè)類(lèi),共1400 張圖片.將數(shù)據(jù)分為7 組,5 組為圖庫(kù)中人,每組分別為10 人,50 人,100 人,150 人,200 人;2 組為陌生人,每組分別為10 人,50 人.每人進(jìn)行10 次人臉識(shí)別實(shí)驗(yàn).結(jié)果見(jiàn)表3.不同的網(wǎng)絡(luò)對(duì)數(shù)據(jù)集上的測(cè)試結(jié)果見(jiàn)表4.
從表4中可以看出,雖然ShuffleNetV2 網(wǎng)絡(luò)在數(shù)據(jù)集上的準(zhǔn)確率略高于其它網(wǎng)絡(luò)結(jié)構(gòu),但是模型大于其它網(wǎng)絡(luò)結(jié)構(gòu),系統(tǒng)的識(shí)別速度會(huì)較慢.結(jié)合表2和表3可以明顯看出,MobileNetV2 網(wǎng)絡(luò)整體識(shí)別準(zhǔn)確率也比較高,性能比較優(yōu)良,對(duì)于圖庫(kù)中的人識(shí)別準(zhǔn)確率達(dá)到95%以上,對(duì)于陌生人,識(shí)別準(zhǔn)確率達(dá)到80%以上.針對(duì)于個(gè)別識(shí)別失敗的現(xiàn)象,主要的原因在于模型的過(guò)擬合,因此下一步還要提高模型的泛化能力.
表2 自制數(shù)據(jù)集人臉識(shí)別測(cè)試
表3 FERET 數(shù)據(jù)集人臉識(shí)別測(cè)試
表4 輕量化神經(jīng)網(wǎng)絡(luò)模型在數(shù)據(jù)集上的對(duì)比
針對(duì)目前人臉識(shí)別系統(tǒng)成本高,移植性低的情況,提出基于MobileNetV2與Raspberry Pi的人臉識(shí)別系統(tǒng)方案.首先對(duì)圖庫(kù)中的圖像進(jìn)行歸一化,然后通過(guò)不斷的調(diào)整參數(shù),多次訓(xùn)練MobileNetV2 網(wǎng)絡(luò),使損失降到最低,從而得到一個(gè)最優(yōu)模型,最后將模型移植到Raspberry Pi,利用Raspberry Pi對(duì)未知人臉圖像進(jìn)行檢測(cè)和分類(lèi).實(shí)驗(yàn)表明該系統(tǒng)性能穩(wěn)定,能滿(mǎn)足用戶(hù)的基本需求,應(yīng)用范圍廣,可應(yīng)用于門(mén)禁,考勤等應(yīng)用場(chǎng)景.
本文主要是以MobileNetV2 網(wǎng)絡(luò)結(jié)構(gòu)為研究對(duì)象,基于Raspberry Pi 進(jìn)行嵌入式開(kāi)發(fā),實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別.然而,由于MobileNetV2 網(wǎng)絡(luò)結(jié)構(gòu)比較深,對(duì)人臉進(jìn)行特征提取的過(guò)程中會(huì)發(fā)生特征突變,容易對(duì)陌生的面孔造成誤判.因此,如何提高準(zhǔn)確率,避免特征突變對(duì)識(shí)別結(jié)果所帶來(lái)的影響,是以后重點(diǎn)研究的問(wèn)題.
計(jì)算機(jī)系統(tǒng)應(yīng)用2021年8期