王志磊,顧梅花,陳文浩
(西安工程大學(xué) 電子信息學(xué)院,陜西 西安 710048)
隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,信息擴(kuò)散速度爆炸式增長,個人信息的安全性和私密性逐漸受到重視[1]。與傳統(tǒng)的身份驗(yàn)證方法[2]相比,人臉識別技術(shù)具有自然性、非接觸性、非強(qiáng)制性和識別精度高的優(yōu)點(diǎn),得到專家學(xué)者的研究和關(guān)注[3]。傳統(tǒng)的人臉識別系統(tǒng)大多都是基于PC機(jī)的,無法滿足日常生活中各個場景的需要。汽車兵培訓(xùn)管理系統(tǒng)就是其中的一個應(yīng)用場景。較于PC機(jī)人臉識別系統(tǒng),嵌入式人臉識別系統(tǒng)具有價格低廉、占用空間小、擴(kuò)展能力強(qiáng)、響應(yīng)速度快和操作簡便等優(yōu)點(diǎn)[4-5],大幅提高汽車兵管理系統(tǒng)的效率。但是由于傳統(tǒng)的Adaboost人臉檢測算法存在過訓(xùn)練的問題,導(dǎo)致算法性能的下降。本文提出了一種基于改進(jìn)的Adaboost算法的人臉識別系統(tǒng),改進(jìn)的Adaboost算法新的權(quán)重更新規(guī)則可以有效避免算法性能下降,同時提高檢測正確率,滿足汽車兵培訓(xùn)管理系統(tǒng)實(shí)際需求。
系統(tǒng)采用JZ2440開發(fā)板,是以S3C2440作為微處理器芯片,ARM920T為內(nèi)核的操作平臺[6],由存儲器、I/O單元電路、通信模塊、人機(jī)交互模塊、采集模塊和外圍接口組成,系統(tǒng)總體結(jié)構(gòu)由圖1所示。攝像頭采集模塊:通過預(yù)留的20pin插座連接數(shù)字?jǐn)z像頭,將采集到的圖像畫面?zhèn)鬏斀o微處理器進(jìn)行數(shù)據(jù)交互;微處理器模塊:整個系統(tǒng)的處理中樞;存儲模塊:閃存256 M NAND 閃存,內(nèi)存64 M SDRAM;人機(jī)交互模塊:用戶通過LCD觸摸屏實(shí)現(xiàn)與系統(tǒng)的人機(jī)交互,使操作簡便。
圖 1 系統(tǒng)硬件總體框圖Fig.1 General block diagram of system hardware
系統(tǒng)進(jìn)行嵌入式開發(fā)步驟:①主機(jī)選用Ubuntu12.04操作系統(tǒng),配置交叉編譯環(huán)境及移植BootLoader[7],系統(tǒng)中選取U-Boot作為BootLoader的程序,可支持多種操作系統(tǒng)和燒寫 YAFFS2、JFFS2根文件系統(tǒng),同時提供了大量的指令集;②在官網(wǎng)下載 Linux 內(nèi)核源碼[8],進(jìn)行裁剪和移植;③選擇YAFFS2作為根文件系統(tǒng),并配置編譯Busybox[9];④移植系統(tǒng)硬件設(shè)備所需的驅(qū)動程序,如:USB攝像頭驅(qū)動、LCD觸摸屏驅(qū)動、串口驅(qū)動和Nand 閃存驅(qū)動。
人機(jī)交互界面采用Qt Creator進(jìn)行開發(fā),QT支持跨平臺運(yùn)行,開發(fā)嵌入式產(chǎn)品時更加方便高效。從官網(wǎng)下載Qt Creator的Linux版本安裝,搭建ARM版本的編譯環(huán)境[10]。
系統(tǒng)設(shè)計(jì)的人機(jī)交互界面有注冊、訓(xùn)練和識別等3個按鈕。注冊的信息包括汽車駕駛員的姓名、編號和身份圖像,并保存在本地數(shù)據(jù)庫中[11]。訓(xùn)練是調(diào)取系統(tǒng)數(shù)據(jù)庫中的所有汽車駕駛員圖像信息進(jìn)行人臉特征提取。識別是將訓(xùn)練過程中提取到的汽車駕駛員的人臉特征與系統(tǒng)數(shù)據(jù)庫中的人臉特征進(jìn)行比對,同時根據(jù)設(shè)定的閾值輸出比對結(jié)果[12]。
在汽車駕駛員駕駛培訓(xùn)中,首先通過固定在儀表盤上的攝像頭拍攝學(xué)員照片。接著采用Adaboost人臉檢測算法提取輸入圖像中的人臉,然后再將人臉信息傳入VIPLFaceNet做人臉特征提取,最后與本地數(shù)據(jù)庫進(jìn)行比對,顯示對應(yīng)學(xué)員身份;若本地數(shù)據(jù)庫中沒有匹配的,重新進(jìn)行圖像采集進(jìn)行比對[13]。在重復(fù)3次身份驗(yàn)證后,若在本地數(shù)據(jù)庫還是沒有匹配的學(xué)員,退出驗(yàn)證系統(tǒng)并彈出警告窗口通知管理員進(jìn)行處理。系統(tǒng)算法總流程如圖2所示。
圖 2 系統(tǒng)算法總流程Fig.2 System algorithm process
人臉檢測[14]是系統(tǒng)中算法的起始步驟,在輸入圖像中找出人臉并進(jìn)行標(biāo)記。系統(tǒng)中的人臉檢測算法是基于Adaboost算法訓(xùn)練出的級聯(lián)分類器實(shí)現(xiàn)的,Adaboost算法是一種自適應(yīng)的分類方法[15],自適應(yīng)性在于前一分類器分錯的樣本會被用來訓(xùn)練下一個分類器[16]。算法的特點(diǎn)是使用“積分圖像”快速計(jì)算Haar-like特征[17],再由Haar特征組成的弱分類器組合成強(qiáng)分類器,最后將多個強(qiáng)分類器級聯(lián)形成更強(qiáng)的分類器用于人臉檢測。
但是Adaboost算法容易產(chǎn)生過訓(xùn)練的問題,使得算法性能下降。針對這個問題,提出以下的改進(jìn)辦法,對權(quán)值的更新設(shè)定限制條件,在算法每一輪的更新中都設(shè)定一個閾值Wm。
(1)
em=P(Gm(xi)≠yi)=
(2)
式中:Wm,i是算法在進(jìn)行第m輪迭代運(yùn)算時的權(quán)重值;Wm是設(shè)定第m輪的閾值,它的大小為本輪訓(xùn)練全部樣本權(quán)重的均值(N為樣本數(shù))。由式(2)可得,Gm(x)在訓(xùn)練集上的誤差em就是被Gm(x)誤分類樣本總和。
(3)
(4)
式中:β為基本分類器在最終分類器中所占的權(quán)重。由式(3)可得,em<1/2時,β>0,β隨著em的減小而增大,分類誤差越小的基本分類器在最終分類的作用越大。從式(4)可知,當(dāng)?shù)\(yùn)算得到的權(quán)重系數(shù)小于本輪設(shè)定的閾值時,下一輪迭代的權(quán)重才會增加,否則就保持不變。這樣就可以在一定程度上避免因樣本權(quán)重不斷增加而造成算法性能退化的現(xiàn)象。
人臉檢測算法標(biāo)記出輸入圖像的人臉,人臉識別過程就是進(jìn)行特征提取,與本地數(shù)據(jù)庫中的保存的人臉特征進(jìn)行比對。通過計(jì)算輸入圖片和數(shù)據(jù)庫中的人臉特征的“距離”比較兩者之間的相似度:當(dāng)兩者間的相似度小于設(shè)定的閾值時,則是一個人;否則,不是一個人。
系統(tǒng)中選取的人臉識別算法是卷積神經(jīng)網(wǎng)絡(luò)VIPLFaceNet[18],包含了7個卷積層和2個全連接層的DCNN。直接修改于Hinton教授的學(xué)生Alex Krizhevsky在2012年設(shè)計(jì)的AlexNet[19]。與 AlexNet 相比,VIPLFaceNet有6個主要特點(diǎn):
1) 第一層卷積層的卷積核大小由11×11轉(zhuǎn)化為9×9,降低計(jì)算量;
2) 由于對初始化參數(shù)的幫助有限,移除了局部響應(yīng)歸一化(LRN)層;
3) 將AlxNet第2層 5×5 的卷積核分解成兩層3×3的卷積核,增加網(wǎng)絡(luò)深度的同時沒有增加計(jì)算量;
4) 移除AlxNet的所有分組結(jié)構(gòu),利用異步隨機(jī)梯度下降進(jìn)行并行訓(xùn)練;
5) 減少了每層的特征圖的數(shù)量并且增加一個卷積層,增加網(wǎng)絡(luò)深度[20];
6) 網(wǎng)絡(luò)結(jié)構(gòu)的末端,全連接層第2層從4 096維降低到2 048維。
系統(tǒng)應(yīng)用于汽車駕駛培訓(xùn)管理,而采集圖像的攝像頭裝置固定在汽車儀表盤上,與駕駛員形成一定的夾角,采集的人臉圖像不會全是正臉,難免存在側(cè)臉。為了驗(yàn)證系統(tǒng)中算法的正確率和識別率,需要大量的各種形態(tài)的人臉進(jìn)行測試,但是實(shí)際汽車駕駛員訓(xùn)練中難以找到大量的人臉圖像保證實(shí)驗(yàn)效果,所以人臉檢測算法實(shí)驗(yàn)和系統(tǒng)性能測試實(shí)驗(yàn)采用人臉數(shù)據(jù)庫進(jìn)行測試[16]。
實(shí)驗(yàn)中選用CMU_PIE人臉數(shù)據(jù)庫進(jìn)行檢測實(shí)驗(yàn)。該數(shù)據(jù)庫是由卡耐基梅隆大學(xué)在2000年11月所建立,包括來自68個人的41 368張照片,其中包括了每個人的13種姿態(tài)條件,43種光照條件和4種表情下的照片。選取其中的500張照片,實(shí)驗(yàn)結(jié)果對比如圖3~4所示。
圖 3 Adaboost算法檢測效果圖Fig.3 Detection result graph of Adaboost algorithm
圖 4 改進(jìn)的Adaboost算法檢測效果圖Fig.4 Detection effect of improved Adaboost algorithm
圖3中,Adaboost人臉檢測算法的正確率為68.4%,漏檢率為31.6%;圖4中,改進(jìn)后的Adaboost算法檢測正確率為75.2%,漏檢率為24.8%。并且2種算法在各個數(shù)目實(shí)驗(yàn)測試集的正確率保持平穩(wěn),說明新提出的權(quán)重更新規(guī)則可以有效地抑制 Adaboost算法的過訓(xùn)練現(xiàn)象,提高了算法的檢測正確率。而出現(xiàn)漏檢的圖像有共同的特征,即在逆光條件下拍攝,圖像存在嚴(yán)重曝光。
為了進(jìn)一步驗(yàn)證改進(jìn)的Adaboost算法的性能,實(shí)驗(yàn)采用FDDB人臉數(shù)據(jù)庫,此數(shù)據(jù)庫包含了2 845張圖像(包含5 171張人臉),選擇其中的150張照片,對人臉檢測算法進(jìn)行測試。改進(jìn)前的Adaboost算法檢測效果如圖5所示,改進(jìn)后的Adaboost算法檢測效果如圖6所示。Adaboost算法和改進(jìn)的Adaboost算法的檢測正確率分別為80.5%和87.1%,漏檢率分別為19.5%和12.9%。
圖 5 AdaBoost算法檢測效果圖Fig.5 Detection result graph of Adaboost algorithm
圖 6 改進(jìn)后AdaBoost算法的檢測效果圖Fig.6 Detection result graph of the improved Adaboost algorithm
改進(jìn)后的Adaboost算法的檢測正確率高于原Adaboost算法,達(dá)到87.1%,漏檢率低于原Adaboost算法,達(dá)到12.9%。說明系統(tǒng)可以從大部分照片中檢測到人臉,對于面部表情、人體姿態(tài)和是否佩戴眼鏡沒有嚴(yán)格的要求,并且對于一些偏轉(zhuǎn)角度大的人臉和較小臉也有良好的檢測效果,即改進(jìn)后權(quán)重更新規(guī)則可以有效抑制算法的過訓(xùn)練現(xiàn)象。實(shí)驗(yàn)表明,改進(jìn)后的Adaboost人臉檢測算法可以應(yīng)用于汽車兵培訓(xùn)管理系統(tǒng)。
系統(tǒng)實(shí)現(xiàn)后,接下來在ARM平臺上測試系統(tǒng)的正確率和實(shí)時率。實(shí)驗(yàn)中采用IMM人臉數(shù)據(jù)庫,選出左右偏轉(zhuǎn)共計(jì)80張圖像進(jìn)行測試。測試結(jié)果中,有78張圖像比對成功,識別率為97.5%。同時有2張照片比對錯誤,則是因?yàn)槿四樀钠D(zhuǎn)角度過大、表情過于夸張。
分別采用訓(xùn)練8,30,60張圖像進(jìn)行識別響應(yīng)時間的測試,平均識別響應(yīng)時間分別為3.26,5.73,11.5 s??梢钥闯?,系統(tǒng)的識別響應(yīng)時間和訓(xùn)練圖像的數(shù)目有關(guān),訓(xùn)練的圖像數(shù)目越多,需要的識別時間就會越長。
采集汽車駕駛員圖像的攝像頭位于儀表盤,采集到的人臉圖像不會存在過大的偏轉(zhuǎn)角度,駕駛訓(xùn)練中,學(xué)員需要集中精神完成課程,也不宜做出過于夸張的表情。同時,在同期參加培訓(xùn)的學(xué)員數(shù)目不會很大,并且在訓(xùn)練過程中,不要求識別的實(shí)時性。所以,該系統(tǒng)可以應(yīng)用于汽車駕駛培訓(xùn)管理系統(tǒng)。
基于ARM9的嵌入式人臉識別系統(tǒng),經(jīng)大量實(shí)驗(yàn)測試可以保持較高的識別率,可以應(yīng)用于汽車駕駛培訓(xùn)管理中,有效避免了駕駛訓(xùn)練時虛假身份和虛假學(xué)時的問題,保證訓(xùn)練效果。同時因?yàn)橄到y(tǒng)的模塊化思想以及系統(tǒng)擴(kuò)展性,可以根據(jù)不同場景的需求在系統(tǒng)上增加更多的模塊,豐富系統(tǒng)的功能,滿足更多更復(fù)雜場景的需求。