胡佳玲, 施一萍, 謝思雅, 陳 藩, 劉 瑾
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201620)
隨著深度學(xué)習(xí)的不斷發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)[1](convolution neural network,CNN)模型得到了廣泛應(yīng)用,圖像分類的準(zhǔn)確率也獲得了很大的提升。如今,采用CNN算法的人臉識(shí)別[2]準(zhǔn)確率已經(jīng)不斷地向100 %靠近。Facebook團(tuán)隊(duì)便采用深度學(xué)習(xí)算法在LFW人臉數(shù)據(jù)庫(kù)上達(dá)到了97.35 %的準(zhǔn)確率[3];2014年,香港中文大學(xué)的團(tuán)隊(duì)[4]取得了97.45 %的成績(jī);2015年,Google采用的FaceNet模型準(zhǔn)確率竟達(dá)到了驚人的99.63 %[5]。準(zhǔn)確率的提升往往伴隨著CNN深度和復(fù)雜度的增加,在提高精確度的同時(shí),網(wǎng)絡(luò)的計(jì)算量和參數(shù)大大增加,訓(xùn)練時(shí)間也相對(duì)延長(zhǎng)。例如,Alexnet[6]網(wǎng)絡(luò)有8層,Google Inception Net有22層,ResNet[7]達(dá)到了152層。在追求精度的同時(shí)也要考慮運(yùn)行的時(shí)間成本。而本文采用改進(jìn)的MobileNet模型,減少了網(wǎng)絡(luò)參數(shù),降低了訓(xùn)練時(shí)間。MobileNet[8]模型是輕量級(jí)神經(jīng)網(wǎng)絡(luò)模型,與之類似的輕量級(jí)網(wǎng)絡(luò)還有SqueezeNet[9],ShuffleNet[10]等。
本文對(duì)MobileNet網(wǎng)絡(luò)模型的SoftMax進(jìn)行改進(jìn),隨后將訓(xùn)練好的模型用于Jetson nano上,與硬件結(jié)合。Jetson nano設(shè)備體積小性能高,設(shè)備布置上也十分便利。
基于Jetson nano的改進(jìn)MobileNet人臉識(shí)別系統(tǒng)如圖1所示,由Jetson nano、顯示屏、攝像頭、操作面板和后臺(tái)服務(wù)器組成。其中,攝像頭采用USB高清攝像頭連接到Jetson nano的USB接口,用來(lái)捕捉到訪者人臉圖像;操作面板連接到Jetson nano的GPIO引腳,用來(lái)提示到訪者進(jìn)行身份驗(yàn)證操作;顯示屏與Jetson nano的HDMI接口相連,用來(lái)顯示到訪者人臉圖像及后臺(tái)服務(wù)器反饋信號(hào);后臺(tái)服務(wù)器與Jetson nano遠(yuǎn)程連接,及時(shí)反饋驗(yàn)證結(jié)果。 Jetson nano作為主控制器,將訓(xùn)練好的改進(jìn)MobileNet人臉識(shí)別算法移植其中,構(gòu)成人臉識(shí)別主控設(shè)備。
圖1 系統(tǒng)結(jié)構(gòu)框圖
Google于2017年4月提出MobileNet深度學(xué)習(xí)網(wǎng)絡(luò),MobileNet的基本單元是深度可分離卷積(depthwise separable convolution)。深度可分離卷積從原理上看就是把傳統(tǒng)的卷積分解成深度卷積(depthwise convolution)和逐點(diǎn)卷積(pointwise convolution)。深度可分離卷積可以在保證網(wǎng)絡(luò)在不損失大量精確度的情況下大大降低網(wǎng)絡(luò)參數(shù)和計(jì)算量,具體分解過(guò)程如圖2所示。
圖2 深度可分離卷積分解過(guò)程
1×1的卷積核在深度可分離卷積中被稱為逐點(diǎn)卷積。這里輸入的c特征映射F的大小為(DF,DF,M),K為(DK,DK,M,N),如上圖2中傳統(tǒng)卷積所示。其輸出的特征映射G大小為(DG,DG,N)。傳統(tǒng)卷積的卷積計(jì)算公式如下
(1)
輸入的通道數(shù)為M,輸出的通道數(shù)為N。因此,傳統(tǒng)卷積的計(jì)算量為DK·DK·M·N·DF·DF?,F(xiàn)在,將傳統(tǒng)卷積(DK,DK,M,N)進(jìn)行拆分,拆分為深度卷積和逐點(diǎn)卷積:1)濾波由深度卷積負(fù)責(zé),尺寸為(DK,DK,1,M),如上圖2中的深度卷積所示。輸出的特征為(DG,DG,M);2)轉(zhuǎn)換通道由逐點(diǎn)卷積負(fù)責(zé),尺寸為(1,1,M,N),如上圖2中的逐點(diǎn)卷積所示。得到最終的輸出為(DG,DG,M)。
深度卷積的卷積公式為
(2)
DK·DK·M·DF·DF+M·N·DF·DF
(3)
相比于傳統(tǒng)卷積的計(jì)算量減少了
(4)
一般情況下,N的取值較大。若采用3×3的卷積核,深度可分離卷機(jī)相較傳統(tǒng)卷積可以降低大約9倍的計(jì)算量,訓(xùn)練網(wǎng)絡(luò)的時(shí)間也大大縮短。
MobileNet在ImageNet上訓(xùn)練使用的網(wǎng)絡(luò)框架中分類器使用的是最傳統(tǒng)的SoftMax,本文在做了許多對(duì)比實(shí)驗(yàn)后發(fā)現(xiàn),針對(duì)MobileNet算法,A-SoftMax的分類效果比SoftMax分類效果更好。因此,本文采用A-SoftMax分類器替換原始的SoftMax分類器。
SoftMax[11]的定義如下,首先定義輸入特征為xi,標(biāo)簽yi,原始的Softmax損失函數(shù)為
(5)
(6)
式中θ為向量Wj和xi之間的角度。如上分析,先令‖Wj‖=1,?j在每次迭代中,將偏置置零,損失函數(shù)修改如下
(7)
雖然可以學(xué)習(xí)到角邊界特征,但是這些特征仍然不具有一定的識(shí)別性。A-SoftMax提出了一種新的結(jié)合角邊界的方法。
A-SoftMax[10]的基本思想是通過(guò)決策邊界來(lái)產(chǎn)生角邊緣。其表達(dá)式如下
(8)
定義
ψ(θyi,i)=(-1)kcos(mθyi,i)-2k,θyi,i∈[kπ/m,(k+1)π/m],且k∈[0,m-1]。m是一個(gè)大于等于1的整數(shù),用來(lái)控制角邊的大小。
A-SoftMax[12]在原始SoftMax的基礎(chǔ)上不僅對(duì)角度添加m倍數(shù)的限制,還對(duì)A-SoftMax上一層全連接層的W和b做出W=1和b=0兩個(gè)限制。由此以來(lái),A-SoftMax的分類過(guò)程僅依賴于W和x之間的角度。
本次實(shí)驗(yàn)采用的人臉數(shù)據(jù)庫(kù)為L(zhǎng)FW(labeled faces in the wild),本數(shù)據(jù)集中的圖片均來(lái)自網(wǎng)絡(luò),LFW主要是為了研究非限制環(huán)境下的人臉識(shí)別準(zhǔn)確率而誕生的人臉識(shí)別數(shù)據(jù)集,這個(gè)集合包含13 233張人臉圖片,數(shù)據(jù)庫(kù)中包含5 749位名人,每一位名人都被標(biāo)注了姓名和編號(hào),其中大約有1 680個(gè)人包含兩個(gè)以上的人臉。如圖3所示為L(zhǎng)FW人臉數(shù)據(jù)庫(kù)中的人臉示例。
圖3 LFW人臉數(shù)據(jù)庫(kù)圖片
人臉圖片預(yù)處理部分采用的是傳統(tǒng)的圖片預(yù)處理方法,包括圖像灰度化[13]、直方圖均衡化[14]。采用MATLAB 2018進(jìn)行預(yù)處理操作。
本實(shí)驗(yàn)采用的訓(xùn)練集和測(cè)試集均來(lái)源于LFW數(shù)據(jù)庫(kù),其中,選取10 000張用于訓(xùn)練集,3 000張用于驗(yàn)證集。除此之外,本文還準(zhǔn)備了1 000張測(cè)試集,測(cè)試集來(lái)源于網(wǎng)絡(luò)人臉和現(xiàn)實(shí)拍照,包括身邊的同學(xué)、老師、朋友。
Jetson Nano支持的系統(tǒng)為Ubuntu系統(tǒng),本次安裝的版本為較新的Ubuntu 18.04.2 LTS。因此本次實(shí)驗(yàn)便是在Ubuntu系統(tǒng)下進(jìn)行,軟件部分采用Python3.6版本下的Anaconda,在Anaconda的Environment下安裝Tensorflow[15]框架。網(wǎng)絡(luò)訓(xùn)練參數(shù)的設(shè)置如下:初始學(xué)習(xí)率為0.001,學(xué)習(xí)策略采用Multistep,權(quán)重衰減為0.000 5。本文比較了三種網(wǎng)絡(luò)模型:CNN,MobileNet,MobileNet(A-SoftMax)。
圖4所示為三種模型迭代10 000次的準(zhǔn)確率折線圖,從圖中可以看出:采用CNN在迭代9 000~10 000次時(shí),準(zhǔn)確率才趨于收斂,而MobileNet在迭代4 000左右便趨于收斂,采用改進(jìn)的MobileNet模型也是在迭代4 000次左右趨于收斂。從速度上看,顯然采用MobileNet網(wǎng)絡(luò)要快很多。再來(lái)看準(zhǔn)確率,CNN準(zhǔn)確率最終穩(wěn)定在0.989,即采用CNN進(jìn)行人臉識(shí)別的準(zhǔn)確率在98.9 %,而采用MobileNet準(zhǔn)確率穩(wěn)定在96.5 %,采用改進(jìn)的MobileNet的準(zhǔn)確率穩(wěn)定在97.4 %。在準(zhǔn)確率上MobileNet相比于傳統(tǒng)的CNN有大約2個(gè)百分點(diǎn)的損失,采用改進(jìn)的MobileNet網(wǎng)絡(luò)相比于CNN有大約1個(gè)百分點(diǎn)的損失,而較傳統(tǒng)的MobileNet有大約1個(gè)百分點(diǎn)的提升。因此,本文提出的改進(jìn)MobileNet切實(shí)可行,且在準(zhǔn)確率上有提升。雖然沒(méi)有達(dá)到和傳統(tǒng)CNN一樣或者更高的精確度,但這對(duì)于大大提升計(jì)算速度和大大降低網(wǎng)絡(luò)參數(shù)而言,在性能上有了很大的提升。
圖4 三種模型準(zhǔn)確率比較折線圖
三個(gè)模型對(duì)比實(shí)驗(yàn)結(jié)果如表1所示,由表1可以看出,本文提出的模型在降低網(wǎng)絡(luò)參數(shù)和訓(xùn)練時(shí)間的同時(shí),識(shí)別率也得到了提升。實(shí)驗(yàn)表明,本文提出的模型切實(shí)有效。
表1 三種模型收斂速度識(shí)別準(zhǔn)確率比較
測(cè)試集結(jié)果如圖5所示。
圖5 測(cè)試集準(zhǔn)確率
測(cè)試集的準(zhǔn)確率最終穩(wěn)定在96.5 %,較訓(xùn)練集和驗(yàn)證集的結(jié)果低,原因在于拍照過(guò)程中光線,角度等問(wèn)題影響。
建立人臉數(shù)據(jù)庫(kù):打開(kāi)攝像頭,采集圖像如圖6(a)所示;加載人臉?lè)诸惼?;人臉檢測(cè),框出人臉部分并顯示圖像;在檢測(cè)到人臉條件下,一鍵拍照;對(duì)人臉部分,調(diào)整大小并寫成指定目錄下的圖像文件。數(shù)據(jù)庫(kù)建立好后,開(kāi)啟人臉識(shí)別系統(tǒng),識(shí)別到人臉后,對(duì)比數(shù)據(jù)庫(kù),顯示人物圖像及姓名,如圖6(b)所示。若不在數(shù)據(jù)庫(kù)內(nèi)則顯示識(shí)別失敗,并做人工處理。
圖6 人臉檢測(cè)與識(shí)別結(jié)果
本文中,為了減少傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算量,采用了改進(jìn)的MobileNet模型,在大大降低計(jì)算時(shí)間和計(jì)算參數(shù)基礎(chǔ)上,將網(wǎng)絡(luò)性能提高。并通過(guò)與傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)和原始的MobileNet對(duì)比發(fā)現(xiàn),本文提出的模型性能更好。在LFW數(shù)據(jù)庫(kù)上訓(xùn)練的人臉識(shí)別準(zhǔn)確率達(dá)到了97.4 %,在自己準(zhǔn)備的測(cè)試集上準(zhǔn)確率也達(dá)到了96.5 %。同時(shí),本文將改進(jìn)的MobileNet人臉識(shí)別運(yùn)用到具體的Jetson nano設(shè)備上,構(gòu)成完整的人臉識(shí)別系統(tǒng),可運(yùn)用于多個(gè)現(xiàn)實(shí)場(chǎng)景。如室外安防、打卡系統(tǒng)、查寢系統(tǒng)等。Jetson nano設(shè)備體積小,布置上也非常便利。