張文濤,陳嬋娟,王澤荔
(陜西科技大學(xué)機(jī)電工程學(xué)院,西安710000)
隨著人工智能技術(shù)的發(fā)展,基于深度學(xué)習(xí)的人臉識(shí)別算法愈加成熟。該類(lèi)算法在現(xiàn)有人臉標(biāo)準(zhǔn)數(shù)據(jù)集上的正確識(shí)別率已經(jīng)接近人類(lèi)水平。然而,在實(shí)際視頻監(jiān)控場(chǎng)景下,由于人體位置的移動(dòng)和人臉角度的變化,導(dǎo)致監(jiān)控?cái)z像機(jī)采集到的人臉數(shù)據(jù)呈現(xiàn)多角度、多尺度的特點(diǎn)。當(dāng)人臉與攝像機(jī)間的距離不確定時(shí),人臉在單幀畫(huà)面中的尺寸也不確定。距攝像機(jī)越近,人臉尺寸越大。距攝像機(jī)越遠(yuǎn),人臉尺寸越小。
現(xiàn)有基于深度學(xué)習(xí)的人臉識(shí)別算法,其網(wǎng)絡(luò)模型的輸入尺寸往往是固定的。例如,在人臉識(shí)別算法FaceNet[1]中,其 NN1 模型的輸入尺寸為 220×220(單位:像素);其N(xiāo)N2模型的輸入尺寸為224×224;其N(xiāo)N3模型的輸入尺寸為160×160。在人臉識(shí)別算法LCNN[2]中,其Light CNN-29模型的輸入尺寸為144×144。
為了適應(yīng)于已有基于深度學(xué)習(xí)的人臉識(shí)別算法模型的輸入尺寸,只能對(duì)視頻監(jiān)控場(chǎng)景下采集到的人臉數(shù)據(jù)進(jìn)行尺寸放縮(如圖1所表示)。圖像尺寸的放縮對(duì)圖像質(zhì)量產(chǎn)生一定的損失。特別是在人臉識(shí)別任務(wù)中,放縮后的人臉圖像,其人臉特征信息會(huì)大量丟失,其不利于人臉識(shí)別算法在視頻監(jiān)控場(chǎng)景下的應(yīng)用。
圖1 不同距離下的人臉尺寸
針對(duì)這一實(shí)際問(wèn)題,本文提出了一種基于深度學(xué)習(xí)的多尺度輕量化的人臉識(shí)別算法。首先,構(gòu)建基于深度學(xué)習(xí)的人臉識(shí)別算法模型,實(shí)現(xiàn)端對(duì)端的人臉特征提取、分類(lèi)。其次,借鑒空間金字塔池化思想,設(shè)計(jì)空間金字塔池化層,實(shí)現(xiàn)模型的多尺度輸入。再次,選用激活函數(shù)Maxout[3]優(yōu)化模型,實(shí)現(xiàn)模型的輕量化。同時(shí),鑒于現(xiàn)有人臉數(shù)據(jù)集的同一樣本單一尺度的局限性,本文提出一種多尺度的人臉數(shù)據(jù)集。首先,建立距攝像機(jī)不同距離下的三個(gè)采集點(diǎn)。然后在每個(gè)采集點(diǎn)上采集不同角度的人臉圖像,最后對(duì)采集到的人臉圖像進(jìn)行數(shù)據(jù)預(yù)處理和分類(lèi)整理。
本文提出的多尺度輕量化人臉識(shí)別算法模型不需要將人臉尺寸放縮到同一尺寸,因而可以解決由圖像尺寸縮放所導(dǎo)致的人臉特征信息丟失問(wèn)題。此外,整個(gè)模型的參數(shù)量只有1906K,較少的參數(shù)量使得該算法對(duì)硬件要求更低,可遷移性更高,運(yùn)行速度更快。本文提出多尺度的人臉數(shù)據(jù)集填補(bǔ)了現(xiàn)有人臉數(shù)據(jù)集單個(gè)樣本多個(gè)尺度的空缺,對(duì)現(xiàn)有基于深度學(xué)習(xí)的人臉識(shí)別算法的實(shí)現(xiàn)提供了更優(yōu)的測(cè)試平臺(tái)。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[4]是一種專(zhuān)門(mén)用來(lái)處理具有相似網(wǎng)絡(luò)結(jié)構(gòu)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)。該網(wǎng)絡(luò)一般由輸入層、卷積層、池化層、全連接層組成。輸入層是整個(gè)神經(jīng)網(wǎng)絡(luò)的輸入,在處理圖像的卷積神經(jīng)網(wǎng)絡(luò)中,它一般代表一張圖片的像素矩陣。卷積層的作用是對(duì)整個(gè)神經(jīng)網(wǎng)絡(luò)的特征進(jìn)行提取。卷積層可以看作是由若干個(gè)節(jié)點(diǎn)(神經(jīng)元)組成的特征矩陣。每個(gè)節(jié)點(diǎn)可看作是一個(gè)濾波器。每個(gè)濾波器對(duì)上一層圖像進(jìn)行卷積操作,從而實(shí)現(xiàn)對(duì)上一層圖像的特征提取。池化層通過(guò)池化函數(shù)使用某一位置的相鄰輸出的總體統(tǒng)計(jì)特征來(lái)代替網(wǎng)絡(luò)在該位置的輸出。池化層以卷積層為操作對(duì)象,其作用是有效提取卷積層特征,實(shí)現(xiàn)模型參數(shù)量的壓縮,進(jìn)而防止網(wǎng)絡(luò)模型的過(guò)擬合。全連接層的每一個(gè)結(jié)點(diǎn)都與上一層的所有結(jié)點(diǎn)相連,用來(lái)把前邊提取到的特征綜合起來(lái)。由于其全相連的特性,一般全連接層的參數(shù)也是最多的。卷積神經(jīng)網(wǎng)絡(luò)已被證明可用于各種高級(jí)視覺(jué)任務(wù)[5-7]以及各種圖形處理問(wèn)題[8-10]中,并都取得了不錯(cuò)的成績(jī)。
空間金字塔池化(Spatial Pyramid Pooling,SPP)[11]是作用于卷積層與全連接層之間的一種并行池化結(jié)構(gòu)。該結(jié)構(gòu)由三種不同大小的池化滑動(dòng)窗口以不同大小的步長(zhǎng)并行組成,并輸出一個(gè)固定的數(shù)據(jù)維度。固定大小的輸出維度使得網(wǎng)絡(luò)模型不再受限于輸入圖像的尺寸或比例。此外,空間金字塔池化通過(guò)對(duì)上層特征圖從不同的尺寸大小進(jìn)行特征提取,再對(duì)提取到的特征進(jìn)行聚合,從而可以有效的提取不同尺度的圖像特征信息。
卷積神經(jīng)網(wǎng)絡(luò)在處理分類(lèi)問(wèn)題時(shí),若為線性可分問(wèn)題,則采用線性模型即可對(duì)目標(biāo)類(lèi)別做出很好的區(qū)分;若為線性不可分問(wèn)題,就需要使用激活函數(shù)實(shí)現(xiàn)模型的去線性化。常用的激活函數(shù)有:Sigmoid函數(shù)、tanh函數(shù)、ReLU函數(shù)以及Maxout函數(shù)。其中,激活函數(shù)Maxout可以憑借更少的參數(shù)獲得一些統(tǒng)計(jì)和計(jì)算上的優(yōu)勢(shì)。例如,如果由n個(gè)不同的線性過(guò)濾器描述的特征可以在不損失信息的情況下,用每一組K個(gè)特征的最大值來(lái)概括的話,那么下一層就可獲得K倍更少的參數(shù)量。
在模型設(shè)計(jì)過(guò)程中,由于卷積層、池化層對(duì)輸入圖像尺寸沒(méi)有限制,只有在最后的全連接層對(duì)輸入特征圖尺寸大小有要求。因此,借鑒空間金字塔池化思想,在網(wǎng)絡(luò)模型(圖2所示)第四個(gè)Maxout層之后加入一個(gè)SPP層,從而可以實(shí)現(xiàn)模型的多尺度輸入。在本文實(shí)驗(yàn)部分中,三種不同尺度(80×80、120×120、240×240(單位:像素))的人臉圖像在輸入模型后,其Maxout 4層的特征圖大小分別為:8×8×192、13×13×192、28×28×192。對(duì)于特征圖 8×8×192,其SPP層的計(jì)算步驟如下:
(1)計(jì)算池化滑動(dòng)窗口的大小和步長(zhǎng),具體計(jì)算公式如下:
其中Kernel_size表示池化滑動(dòng)窗口的大小,Stride表示池化滑動(dòng)窗口的步長(zhǎng);W、h分別為Maxout 4層特征圖的寬度和高度;n表示輸出池化層滑動(dòng)窗口的大??;表示求取大于的最小整數(shù)表示求取小于的最大整數(shù)。
圖2 輕量化多尺度人臉識(shí)別算法模型
(2)按照步驟(1),依次計(jì)算出當(dāng)n取1時(shí),n取2時(shí),n取4時(shí),Kernel_size和Stride的值。
(3)按照步驟(2)中計(jì)算出的結(jié)果依次對(duì)Maxout 4層進(jìn)行三次池化操作,池化后的特征圖分別為四維矩陣[N,1,1,192]、[N,2,2,192]、[N,4,4,192]。其中 N 表示單次輸入模型的樣本數(shù)。
(4)分別對(duì)步驟(3)中的特征圖進(jìn)行維度變換,即將一個(gè)四維矩陣轉(zhuǎn)為一個(gè)二維矩陣。轉(zhuǎn)換后的特征矩陣分別為:[N,1×1×192]、[N,2×2×192]、[N,4×4×192]。
(5)對(duì)步驟(4)中的特征矩陣進(jìn)行特征合并,即可得到一個(gè)固定維度的二維矩陣[N,(1×1+2×2×4×4)×192]。
特征圖 13×13×192、28×28×192 的計(jì)算方法與之類(lèi)似。通過(guò)以上步驟即可完成多尺度輕量化人臉識(shí)別模型的SPP層結(jié)構(gòu)運(yùn)算,從而解決模型的多尺度輸入問(wèn)題。多尺度池化層運(yùn)算流程如圖3所示。
在模型設(shè)計(jì)過(guò)程中,考慮到現(xiàn)有基于CNN人臉識(shí)別算法模型,具有層數(shù)多、參數(shù)量大、所需訓(xùn)練數(shù)據(jù)量多等特點(diǎn),由此導(dǎo)致算法在實(shí)際應(yīng)用中受限于計(jì)算機(jī)的處理能力。針對(duì)該問(wèn)題,本文在模型設(shè)計(jì)過(guò)程中,選用Maxout作為激活函數(shù),從而可以在網(wǎng)絡(luò)模型性能不變的基礎(chǔ)上實(shí)現(xiàn)模型的輕量化。具體設(shè)計(jì)方法如下:
(1)對(duì)于卷積層之后的激活函數(shù),這里將其設(shè)定為Maxout層(O=conv,K=2)。其中參數(shù) O=conv,表示激活函數(shù)Maxout所作用對(duì)象為卷積層,參數(shù)K=2表示激活函數(shù)Maxout作用后的卷積層通道數(shù)為原來(lái)的1/2。具體計(jì)算步驟如下:
①設(shè)當(dāng)前卷積層為一個(gè)四維張量A=[N,w,h,c],其中N表示每一次輸入網(wǎng)絡(luò)模型的樣本個(gè)數(shù),w表示當(dāng)前卷積核的寬度,h表示當(dāng)前卷積核的高度,c表示當(dāng)前卷積核的通道數(shù)。
②按照四維張量A第四維度上卷積層的特征加權(quán)和的大小,取其前c/K個(gè)最大值所對(duì)應(yīng)的通道數(shù)作為輸出。即輸出四維張量B=[N,w,h,c/K]。
圖3 多尺度池化層運(yùn)算流程圖
(2)對(duì)于全連接層之后的激活函數(shù),這里將其設(shè)定為 Maxout層(O=FC,K=2)。其中參數(shù) O=FC,表示激活函數(shù)Maxout所作用對(duì)象為全連接層,參數(shù)K表示激活函數(shù)Maxout作用后的全連接層的維度為原來(lái)的1/2。具體計(jì)算步驟如下:
①設(shè)當(dāng)前全連接層為一個(gè)二維張量C=[N,c],其中N表示每一次輸入網(wǎng)絡(luò)模型的樣本個(gè)數(shù),c表示當(dāng)前全連接層的維度。
②按照二維張量C第二維度上全連接層上的節(jié)點(diǎn)(神經(jīng)元)值的大小,取其前c/K個(gè)最大值所對(duì)應(yīng)的通道數(shù)作為輸出。即輸出二維張量D=[N,c/K]。
目前國(guó)內(nèi)外現(xiàn)有人臉數(shù)據(jù)庫(kù)按照其數(shù)據(jù)來(lái)源可分為實(shí)際環(huán)境下的人臉數(shù)據(jù)和模擬實(shí)際環(huán)境下的人臉數(shù)據(jù)。西安交通大學(xué)人工智能與機(jī)器人研究所的東方人臉數(shù)據(jù)庫(kù)(XJTU人臉庫(kù))[12]就是一種在室內(nèi)環(huán)境下模擬部分實(shí)際場(chǎng)景(不同光照條件、不同拍攝角度)進(jìn)行人臉圖像采集的數(shù)據(jù)庫(kù)。Labeled Faces in the Wild(LFW)[13]人臉數(shù)據(jù)庫(kù)中的人臉圖像主要來(lái)自實(shí)際復(fù)雜環(huán)境下采集的人臉數(shù)據(jù)(主要來(lái)源于新聞圖片)。然而,現(xiàn)有人臉數(shù)據(jù)庫(kù)均沒(méi)有針對(duì)實(shí)際視頻監(jiān)控下人臉距攝像機(jī)不同距離下所產(chǎn)生不同尺度人臉圖像的問(wèn)題建立數(shù)據(jù)集。
針對(duì)上述問(wèn)題,本文提出了一種多尺度人臉數(shù)據(jù)集。該數(shù)據(jù)集共采集并整理了50位志愿者的45000幅人臉圖像,每位志愿者拍攝900張不同距離不同角度的人臉圖像。該數(shù)據(jù)集設(shè)定的拍攝距離分別為3米、6米、9米。具體的采集方式如圖4所示。每個(gè)采集點(diǎn)距攝像機(jī)的距離固定且采集角度不同。攝像機(jī)采集到的數(shù)據(jù)為視頻信息,需要對(duì)其進(jìn)行數(shù)據(jù)預(yù)處理。具體流程如下:(1)通過(guò)視頻分幀代碼對(duì)采集到的視頻按照每秒30幀的幀率進(jìn)行分幀處理。(2)采用人臉檢測(cè)算法MTCNN[14]對(duì)每幀圖像進(jìn)行人臉檢測(cè)、人臉對(duì)齊(具體過(guò)程如圖5所示)。(3)對(duì)采集到的人臉圖像進(jìn)行歸一化處理。本文采用分而治之的思想,對(duì)3米的人臉圖像尺寸歸一化到240×240(單位:像素),6米的人臉圖像尺寸歸一化到120×120,9米的人臉圖像尺寸歸一化到80×80。人臉數(shù)據(jù)集的示例樣本如圖6所示。根據(jù)本文實(shí)驗(yàn)要求將多尺度人臉數(shù)據(jù)集按照一定比例分為訓(xùn)練集和測(cè)試集,如表1所示。
圖4 采集方式
圖5 數(shù)據(jù)預(yù)處理
圖6 數(shù)據(jù)集示例樣本
表1 多尺度人臉數(shù)據(jù)集的組成
(1)前期準(zhǔn)備
針對(duì)算法驗(yàn)證要求,本文針對(duì)所提算法模型、所提多尺度人臉數(shù)據(jù)集設(shè)計(jì)了兩種人臉識(shí)別模型。分別為多尺度輕量化模型(Pyramid Lightweight-CNN model,PLC)和單一尺度輕量化模型(Single Lightweight-CNN model,SLC)。其模型的具體結(jié)構(gòu)參數(shù)分別如表2、3所示。
(2)模型訓(xùn)練方法設(shè)計(jì)
本文分別采用三種不同尺度的人臉數(shù)據(jù)集對(duì)設(shè)計(jì)好的模型進(jìn)行交叉訓(xùn)練。在第一個(gè)batch(單次輸入模型的樣本個(gè)數(shù))中,選用80×80的人臉數(shù)據(jù)進(jìn)行模型訓(xùn)練,在第二個(gè)batch中,選用120×120的人臉數(shù)據(jù)進(jìn)行模型訓(xùn)練,在第三個(gè)batch中,選用240×240的人臉數(shù)據(jù)進(jìn)行模型訓(xùn)練,依次交叉往復(fù)訓(xùn)練。
表2 多尺度輕量化CNN模型結(jié)構(gòu)
表3 單一尺度輕量化CNN模型結(jié)構(gòu)
本文實(shí)驗(yàn)平臺(tái)的配置包括Intel i7-6700(8×3.40GHz處理器)、16GB 內(nèi)存、GTX1080Ti顯卡以及Windows 10操作系統(tǒng),并使用基于Python編程語(yǔ)言的TensorFlow[15]深度學(xué)習(xí)開(kāi)源框架。
(1)訓(xùn)練樣本
本文使用的訓(xùn)練樣本是上文提到的多尺度人臉數(shù)據(jù)集,它包含50個(gè)人,約43500張不同角度、不同距離的人臉照片,本文使用此數(shù)據(jù)集用于模型訓(xùn)練。
(2)測(cè)試樣本
本文使用的訓(xùn)練樣本是上文提到的多尺度人臉數(shù)據(jù)集,它包含50個(gè)人,約1500張不同角度、不同距離的人臉照片,本文使用此數(shù)據(jù)集用于模型測(cè)試。
(3)實(shí)驗(yàn)細(xì)節(jié)
針對(duì)本實(shí)驗(yàn)數(shù)據(jù)集的特殊性,本文設(shè)計(jì)了6組實(shí)驗(yàn)來(lái)對(duì)設(shè)計(jì)的多尺度輕量化CNN模型進(jìn)行測(cè)試。這里需要提出的是,單一尺度輕量化CNN模型,在輸入不同尺度的圖片時(shí),需要將其輸入尺寸統(tǒng)一縮放到80×80的尺寸大小。
建立好兩組模型之后,分別用3m、6m、9m的訓(xùn)練樣本訓(xùn)練兩組模型,實(shí)驗(yàn)發(fā)現(xiàn),在模型訓(xùn)練過(guò)程中,多尺度輕量化模型收斂的速度更快(如圖7所示)。
以3m人臉數(shù)據(jù)集分別訓(xùn)練單一尺度輕量化模型(Model-SLC)、多尺度輕量化模型(Model-PLC),對(duì)訓(xùn)練完的模型進(jìn)行保存,并分別用3m、6m、9m的人臉測(cè)試集對(duì)其測(cè)試,測(cè)試結(jié)果如表4所示。
圖7 兩組模型在同一數(shù)據(jù)集下的訓(xùn)練效果圖
表4 不同測(cè)試集下的識(shí)別率
以6m人臉數(shù)據(jù)集分別訓(xùn)練單一尺度輕量化模型(Model-SLC)、多尺度輕量化模型(Model-PLC),對(duì)訓(xùn)練完的模型進(jìn)行保存,并分別用3m、6m、9m的人臉測(cè)試集對(duì)其測(cè)試,測(cè)試結(jié)果如表5所示。
表5 不同測(cè)試集下的識(shí)別率
以9m人臉數(shù)據(jù)集分別訓(xùn)練單一尺度輕量化模型(Model-SLC)、多尺度輕量化模型(Model-PLC),對(duì)訓(xùn)練完的模型進(jìn)行保存,并分別用3m、6m、9m的人臉測(cè)試集對(duì)其測(cè)試,測(cè)試結(jié)果如表6所示。
表6 不同測(cè)試集下的識(shí)別率
以3m、6m、9m人臉數(shù)據(jù)集分別訓(xùn)練單一尺度輕量化模型(Model-SLC)、多尺度輕量化模型(Model-PLC),對(duì)訓(xùn)練完的模型進(jìn)行保存,并分別用3m、6m、9m的人臉測(cè)試集對(duì)其測(cè)試,測(cè)試結(jié)果如表7所示。
表7 不同測(cè)試集下的識(shí)別率
綜上,通過(guò)多組比對(duì)實(shí)驗(yàn),我們可以發(fā)現(xiàn):在不同尺度下的人臉圖像測(cè)試集下,多尺度輕量化模型(Mod?el-PLC)要比單一尺度輕量化模型(Model-SLC)的識(shí)別率高。值得一提的是,輕量化多尺度網(wǎng)絡(luò)模型的參數(shù)量和輕量化單一尺度網(wǎng)絡(luò)模型的參數(shù)量一樣多。
本文提出的多尺度輕量化人臉識(shí)別算法模型不需要將人臉尺寸放縮到同一尺寸,因而可以解決由圖像尺寸縮放所導(dǎo)致的人臉特征信息丟失問(wèn)題。此外,整個(gè)模型的參數(shù)量只有1906K,較少的參數(shù)量使得該算法對(duì)硬件要求更低,可遷移性更高,運(yùn)行速度更快。本文提出多尺度的人臉數(shù)據(jù)集填補(bǔ)了現(xiàn)有人臉數(shù)據(jù)集單個(gè)樣本多個(gè)尺度的空缺,對(duì)現(xiàn)有基于深度學(xué)習(xí)的人臉識(shí)別算法的實(shí)現(xiàn)提供了更優(yōu)的測(cè)試平臺(tái)。實(shí)驗(yàn)結(jié)果表明,本文所提算法在距離條件變化的情況下取得較好的性能。