王高升
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京 100083)
人臉的屬性包含了人的面部相關(guān)重要的信息,如人的年齡、性別、種族等屬性信息。人臉屬性的識(shí)別就是借助提取出的人臉面部的屬性信息然后再進(jìn)行識(shí)別的過(guò)程。最近的幾年來(lái),隨著計(jì)算機(jī)視覺(jué)技術(shù)、深度學(xué)習(xí)及卷積神經(jīng)網(wǎng)絡(luò)的飛速發(fā)展與應(yīng)用,出現(xiàn)了許多人臉檢測(cè)與識(shí)別相關(guān)的應(yīng)用,其中常見(jiàn)的一些應(yīng)用場(chǎng)景包括:道路上的行人監(jiān)控系統(tǒng)(如檢測(cè)道路上的行人是否佩戴墨鏡或者口罩等)、人臉識(shí)別的門(mén)禁系統(tǒng)[1]以及采用人臉識(shí)別的打卡簽到系統(tǒng)等。雖然目前在人臉檢測(cè)與人臉屬性識(shí)別的方面得到了非常大的發(fā)展,不過(guò)很多的之前的研究?jī)H僅局限于預(yù)測(cè)單個(gè)的人臉的屬性(例如性別或者年齡)或者為每個(gè)的人臉屬性信息都通過(guò)學(xué)習(xí)得到一個(gè)單獨(dú)的用于進(jìn)行識(shí)別的模型。
相比于基于HOG-多尺度LBP 特征的人臉性別識(shí)別[2]的93.0%準(zhǔn)確率,本文采用的人臉屬性識(shí)別網(wǎng)絡(luò)在性別屬性識(shí)別的準(zhǔn)確率上有了4.32%的提升。文獻(xiàn)[2]提出了一種方向梯度直方圖和多尺度局部二值模式多特征融合的人臉性別識(shí)別算法。首先,對(duì)輸入圖像進(jìn)行裁剪和縮放得到多個(gè)分辨率的人臉圖像,再分別提取LBP 統(tǒng)計(jì)直方圖并合成一個(gè)特征向量;然后提取目標(biāo)圖像頭肩模型的HOG 特征得到HOG 特征向量;最后,將LBP 特征向量與HOG 特征向量合成一個(gè)新的特征向量,應(yīng)用支持向量機(jī)進(jìn)行訓(xùn)練。而相比于本文提出的采用深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行人臉檢測(cè)及人臉屬性的識(shí)別,本文的網(wǎng)絡(luò)結(jié)構(gòu)在性別屬性識(shí)別上有著更好的效果。
同時(shí)本文采用的網(wǎng)絡(luò)結(jié)構(gòu)相比于DEPGHAN A[3]提出的基于MTL 的DCNN 網(wǎng)絡(luò)去識(shí)別人臉的屬性,其網(wǎng)絡(luò)是基于不同的任務(wù)采用不同的數(shù)據(jù)集去訓(xùn)練該DCNN網(wǎng)絡(luò),本文通過(guò)采用Resnet50 深度殘差卷積神經(jīng)網(wǎng)絡(luò)同時(shí)進(jìn)行人臉多屬性的識(shí)別,使用一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)多個(gè)人臉屬性的識(shí)別而非單一人臉屬性識(shí)別,同時(shí)本文人臉多屬性識(shí)別的準(zhǔn)確率相比于基于MTL 的DCNN 網(wǎng)絡(luò)在年齡屬性識(shí)別及性別屬性識(shí)別上分別有7.64% 和6.32%的提升,提升顯著。
人臉屬性的識(shí)別整體過(guò)程主要能夠分成2 個(gè)階段:人臉的檢測(cè)階段和人臉屬性信息的識(shí)別階段。由于深度學(xué)習(xí)當(dāng)前在圖像處理中具有較強(qiáng)的特征提取能力,在學(xué)習(xí)高層的語(yǔ)義特征方面具有著先天的優(yōu)越性能。因此,本文主要是應(yīng)用深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行人臉的檢測(cè)及人臉屬性信息的分類(lèi)識(shí)別。
本文在進(jìn)行人臉檢測(cè)操作的階段采用的是經(jīng)過(guò)修改后的MTCNN(Multi-task Cascaded Convolutional Networks)網(wǎng)絡(luò)[4]進(jìn)行人臉檢測(cè),其由3 個(gè)級(jí)聯(lián)的輕量級(jí)CNN 完成:Proposal Network(P-Net)、Refine Network(R-Net)和Output Network(O-Net)。
MTCNN 為了兼顧性能和準(zhǔn)確率,避免滑動(dòng)窗口加分類(lèi)器等傳統(tǒng)思路帶來(lái)的巨大的性能消耗,先使用小模型生成有一定可能性的目標(biāo)區(qū)域候選框,然后再使用更復(fù)雜的模型進(jìn)行細(xì)分類(lèi)和更高精度的區(qū)域框回歸,并且讓這一步遞歸執(zhí)行,以此思想構(gòu)成3 層網(wǎng)絡(luò),分別為P-Net、R-Net、O-Net,實(shí)現(xiàn)快速高效的人臉檢測(cè)。在輸入層使用圖像金字塔進(jìn)行初始圖像的尺度變換,并使用P-Net生成大量的候選目標(biāo)區(qū)域框,之后使用R-Net 對(duì)這些目標(biāo)區(qū)域框進(jìn)行第一次精選和邊框回歸,排除大部分的負(fù)例,然后再用更復(fù)雜的、精度更高的網(wǎng)絡(luò)O-Net 對(duì)剩余的目標(biāo)區(qū)域框進(jìn)行判別和區(qū)域邊框回歸。圖像數(shù)據(jù)先后經(jīng)過(guò)以上3 個(gè)網(wǎng)絡(luò)的處理,最終得到人臉檢測(cè)結(jié)果,也即是得到了人臉區(qū)域框的左上角像素以及右下角像素在輸入圖像中的坐標(biāo)信息。
通過(guò)使用WIDERFace 人臉數(shù)據(jù)集[5]對(duì)經(jīng)過(guò)改進(jìn)后的MTCNN 網(wǎng)絡(luò)進(jìn)行有監(jiān)督的訓(xùn)練,并且在網(wǎng)絡(luò)訓(xùn)練過(guò)程中僅進(jìn)行邊框回歸操作,不對(duì)關(guān)鍵點(diǎn)信息檢測(cè)進(jìn)行訓(xùn)練,因?yàn)槿四槍傩宰R(shí)別過(guò)程不需要關(guān)鍵點(diǎn)的位置信息,可以進(jìn)一步加快網(wǎng)絡(luò)訓(xùn)練與推理的速度。通過(guò)訓(xùn)練獲得邊框預(yù)測(cè)準(zhǔn)確度比較好的深度卷積神經(jīng)網(wǎng)絡(luò)模型,最后采用這個(gè)深度卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行人臉的檢測(cè)操作過(guò)程[6]。
人臉檢測(cè)階段中改進(jìn)后的MTCNN 網(wǎng)絡(luò)的推理過(guò)程如圖1 所示。
人臉屬性信息的識(shí)別階段主要是利用人臉檢測(cè)階段檢測(cè)網(wǎng)絡(luò)獲得的人臉區(qū)域的圖像,對(duì)這個(gè)獲得圖像通過(guò)深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行信息提取并輸出性別、年齡及種族人臉屬性信息。
圖1 改進(jìn)后的MTCNN 網(wǎng)絡(luò)的推理過(guò)程
在Renset 網(wǎng)絡(luò)之前,卷積神經(jīng)網(wǎng)絡(luò)主要采用將卷積進(jìn)行堆疊的方式增加網(wǎng)絡(luò)結(jié)構(gòu)的深度,以使得網(wǎng)絡(luò)模型的表現(xiàn)性能具有更好的效果。但是由于在網(wǎng)絡(luò)深度的增加的同時(shí),就會(huì)出現(xiàn)網(wǎng)絡(luò)模型的訓(xùn)練過(guò)程中梯度進(jìn)行反向傳播比較困難的現(xiàn)象,較容易出現(xiàn)梯度消失或者梯度爆炸的問(wèn)題,由此,Resnet 網(wǎng)絡(luò)引入了殘差網(wǎng)絡(luò)結(jié)構(gòu)。這種網(wǎng)絡(luò)結(jié)構(gòu)極大地簡(jiǎn)化了網(wǎng)絡(luò)的學(xué)習(xí)目標(biāo)和學(xué)習(xí)的難度,使得網(wǎng)絡(luò)具有更強(qiáng)的恒等映射的能力,從而在拓展了網(wǎng)絡(luò)深度的同時(shí)也提升了網(wǎng)絡(luò)模型的性能。殘差結(jié)構(gòu)使用跳躍連接的方式實(shí)現(xiàn),通過(guò)引入殘差結(jié)構(gòu),可以對(duì)更深的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,同時(shí)不會(huì)出現(xiàn)梯度消失或者梯段爆炸的問(wèn)題。
由于深度卷積神經(jīng)網(wǎng)絡(luò)能夠通過(guò)使用一系列的卷積層操作、池化操作層操作等自動(dòng)地提取出輸入的圖像的特征,更深的網(wǎng)絡(luò)能夠得到更具有表達(dá)能力的特征信息,因此當(dāng)前應(yīng)用于特征提取的并且取得較好效果的是一些深度卷積神經(jīng)網(wǎng)絡(luò)。因此本文在人臉屬性識(shí)別階段采用改進(jìn)的Resnet50 網(wǎng)絡(luò)[7],由于Resnet50 具有較深的卷積結(jié)構(gòu),能夠很好地提取圖像特征信息,因此,改進(jìn)的Resnet50 網(wǎng)絡(luò)的全連接層修改成108 個(gè)神經(jīng)元,也即是108 維的張量輸出,其中0~100 代表年齡,101~102 代表性別(101:Male,102:Female),103~107 代表種族(對(duì)應(yīng)的依次分別為白人、黑人、亞洲人、印第安人、其他類(lèi)型(如拉丁人、西班牙人等)。
通過(guò)使用UTKFace 人臉數(shù)據(jù)集[8](其中包含性別、年齡及種族信息)及Resnet50 的預(yù)訓(xùn)練模型,采用交叉熵?fù)p失函數(shù)[9],對(duì)修改后的網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,對(duì)數(shù)據(jù)集中的年齡、性別及種族都采用one-hot 編碼[10],3 種屬性在訓(xùn)練時(shí)都是采用分類(lèi)的方法。
使用交叉熵?fù)p失函數(shù)能夠更好地度量出來(lái)兩個(gè)概率分布之間存在的差異性,交叉熵的公式如式(1)所示:
其中,p、q 分別表示一種概率分布,x 為隨機(jī)變量。
交叉熵能夠度量出來(lái)相同的一個(gè)隨機(jī)變量中的兩個(gè)存在差異的概率分布之間的差別的程度,交叉熵的值越小,兩個(gè)不同的概率分布之間的差別越小。在進(jìn)行網(wǎng)絡(luò)訓(xùn)練時(shí),輸入網(wǎng)絡(luò)的數(shù)據(jù)與標(biāo)簽信息已經(jīng)完全確定,而且目標(biāo)的標(biāo)簽信息采用了獨(dú)熱編碼的形式,一次可以把輸入網(wǎng)絡(luò)的標(biāo)簽信息看作為真實(shí)的概率的分布P(x),而Q(x)即是網(wǎng)絡(luò)預(yù)測(cè)的概率的分布,而網(wǎng)絡(luò)模型的訓(xùn)練過(guò)程其實(shí)就是不斷地把網(wǎng)絡(luò)預(yù)測(cè)的概率與真實(shí)分布的概率之間的差異減小的過(guò)程,所以采用交叉熵?fù)p失函數(shù)來(lái)計(jì)算網(wǎng)絡(luò)的損失,通過(guò)不斷地更新網(wǎng)絡(luò)參數(shù),來(lái)減小網(wǎng)絡(luò)預(yù)測(cè)損失的大小,提高網(wǎng)絡(luò)模型預(yù)測(cè)的精度。
在使用訓(xùn)練好的網(wǎng)絡(luò)模型時(shí),性別、種族和年齡屬性均采用分類(lèi)的方法得到結(jié)果,如年齡屬性多分類(lèi)使用的方法主要是對(duì)全連接網(wǎng)絡(luò)層的0~100 的輸出張量首先使用Softmax 對(duì)網(wǎng)絡(luò)輸出的數(shù)據(jù)進(jìn)行歸一化的操作,得到對(duì)應(yīng)人臉年齡的概率大小,根據(jù)概率的大小排序,得到人臉的年齡屬性結(jié)果信息。
人臉屬性識(shí)別階段的Resnet50 網(wǎng)絡(luò)推理過(guò)程如圖2所示。人臉檢測(cè)網(wǎng)絡(luò)訓(xùn)練過(guò)程的損失變化如圖3 所示。進(jìn)行人臉屬性分類(lèi)識(shí)別的Resnet50 網(wǎng)絡(luò)的訓(xùn)練過(guò)程中損失變化如圖4 所示。
通過(guò)人臉檢測(cè)階段及人臉屬性識(shí)別階段,可以得到人臉的性別、年齡及種族屬性信息,整個(gè)人臉屬性識(shí)別過(guò)程采用端到端的方式,進(jìn)一步使得網(wǎng)絡(luò)的精度得到提升,并且能夠預(yù)測(cè)多種人臉的屬性信息[11]。
圖2 改進(jìn)后的Resnet50 網(wǎng)絡(luò)模型的推理過(guò)程
圖3 人臉檢測(cè)網(wǎng)絡(luò)訓(xùn)練過(guò)程損失變化
圖4 Resnet50 網(wǎng)絡(luò)訓(xùn)練過(guò)程中損失變化
實(shí)驗(yàn)中采用的數(shù)據(jù)集由WIDERFace 和UTKFace 人臉數(shù)據(jù)集組成,其中測(cè)試集的占比約為5%。
人臉檢測(cè)階段采用的是WIDERFace 人臉數(shù)據(jù)集進(jìn)行網(wǎng)絡(luò)的訓(xùn)練,由于人臉屬性識(shí)別過(guò)程不需要人臉的關(guān)鍵點(diǎn)位置信息,因此人臉屬性識(shí)別系統(tǒng)中人臉檢測(cè)階段改進(jìn)后的MTCNN 網(wǎng)絡(luò)只使用了數(shù)據(jù)集中人臉的邊框位置信息進(jìn)行網(wǎng)絡(luò)模型的訓(xùn)練,訓(xùn)練后的人臉檢測(cè)網(wǎng)絡(luò)模型推理結(jié)果得出的只有人臉的邊框位置信息[12]。
人臉屬性識(shí)別階段采用的是UTKFace 人臉數(shù)據(jù)集對(duì)改進(jìn)后的Resnet50 網(wǎng)絡(luò)進(jìn)行網(wǎng)絡(luò)的訓(xùn)練,改進(jìn)后的Resnet50 網(wǎng)絡(luò)采用了UTKFace 數(shù)據(jù)集中的age、gender、race 信息,并對(duì)這些數(shù)據(jù)進(jìn)行了數(shù)據(jù)清洗、one-hot 編碼等數(shù)據(jù)預(yù)處理過(guò)程,然后加載Resnet50 網(wǎng)絡(luò)的預(yù)訓(xùn)練模型進(jìn)行遷移學(xué)習(xí)訓(xùn)練,采用預(yù)訓(xùn)練模型可以加速網(wǎng)絡(luò)收斂,大幅度減少網(wǎng)絡(luò)訓(xùn)練所需要耗費(fèi)的時(shí)間。訓(xùn)練后的網(wǎng)絡(luò)模型在推理過(guò)程中輸出的是108 維的特征向量,這個(gè)結(jié)果分別代表年齡、性別及種族信息。人臉屬性識(shí)別中,性別、種族及年齡均采用分類(lèi)方法,性別是二分類(lèi),種族是多分類(lèi)(識(shí)別的種族包含5 種),年齡屬性同樣是多分類(lèi)任務(wù)。
人臉屬性識(shí)別網(wǎng)絡(luò)經(jīng)過(guò)端到端的訓(xùn)練之后,各屬性識(shí)別的準(zhǔn)確度如表1 所示。
從表1 中可以看出,網(wǎng)絡(luò)模型在性別屬性的識(shí)別預(yù)測(cè)的精度最高,達(dá)到97.32%;種族識(shí)別預(yù)測(cè)的準(zhǔn)確度為92.13%;年齡識(shí)別預(yù)測(cè)的準(zhǔn)確度則達(dá)到了71.64%。改進(jìn)后的網(wǎng)絡(luò)模型進(jìn)一步提高了人臉各屬性信息識(shí)別的準(zhǔn)確率,得到了更好的識(shí)別效果。
在實(shí)際的場(chǎng)景中,種族及年齡的識(shí)別預(yù)測(cè)受到光線(xiàn)及角度的影響較為嚴(yán)重,光照對(duì)種族識(shí)別預(yù)測(cè)的影響比較嚴(yán)重,主要原因是在采用的種族識(shí)別預(yù)測(cè)的數(shù)據(jù)集中,種族的識(shí)別預(yù)測(cè)更多地是根據(jù)膚色來(lái)進(jìn)行,因此光照會(huì)造成結(jié)果有很大的偏差[13]。同時(shí)人臉的不同角度對(duì)于人臉屬性的識(shí)別也有一定的影響,所以通過(guò)加入人臉矯正過(guò)程可能對(duì)人臉屬性識(shí)別的準(zhǔn)確率有一定的提升。光照及角度對(duì)識(shí)別的影響需要進(jìn)一步通過(guò)預(yù)先進(jìn)行圖像處理等方式來(lái)降低對(duì)識(shí)別網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)產(chǎn)生的影響[14]。
表1 驗(yàn)證集各屬性識(shí)別的準(zhǔn)確度
人臉屬性識(shí)別系統(tǒng)主要是采用Python 及其Tkinter庫(kù)進(jìn)行系統(tǒng)的開(kāi)發(fā)與實(shí)現(xiàn),并把人臉屬性識(shí)別網(wǎng)絡(luò)及訓(xùn)練好的網(wǎng)絡(luò)模型加入到系統(tǒng)中,最后通過(guò)Pyinstaller 把整個(gè)系統(tǒng)程序打包成在Windows 操作系統(tǒng)下能夠直接運(yùn)行的可執(zhí)行程序(人臉屬性識(shí)別系統(tǒng).exe)[15]。
人臉屬性識(shí)別應(yīng)用系統(tǒng)的主界面如圖5 所示,界面功能主要有攝像頭的選取功能,通過(guò)下拉列表可選取系統(tǒng)運(yùn)行時(shí)采用電腦自帶的攝像頭或者使用外接的攝像頭設(shè)備,在開(kāi)啟攝像頭時(shí)該設(shè)置不可進(jìn)行修改,可在關(guān)閉攝像頭之后再次進(jìn)行選取。通過(guò)開(kāi)啟攝像頭或者關(guān)閉攝像頭功能按鈕,可以對(duì)指定的攝像頭設(shè)備進(jìn)行數(shù)據(jù)讀取或者關(guān)閉攝像頭設(shè)備。右側(cè)為對(duì)識(shí)別到的人臉采用網(wǎng)絡(luò)模型進(jìn)行運(yùn)算后輸出的人臉屬性信息進(jìn)行詳細(xì)的顯示以及檢測(cè)到的人臉圖片顯示。系統(tǒng)程序采用多線(xiàn)程方式進(jìn)行人臉屬性識(shí)別與界面信息顯示。系統(tǒng)在進(jìn)行人臉屬性識(shí)別時(shí)未檢測(cè)到人臉時(shí)的系統(tǒng)界面如圖6 所示,識(shí)別成功時(shí)的系統(tǒng)界面如圖7 所示(注:人像圖片來(lái)自公開(kāi)人臉數(shù)據(jù)集LFW),當(dāng)視頻中出現(xiàn)多個(gè)人臉時(shí)只對(duì)其中面積最大的人臉進(jìn)行屬性識(shí)別。系統(tǒng)在進(jìn)行人臉屬性識(shí)別時(shí)網(wǎng)絡(luò)模型的運(yùn)算速度能夠達(dá)到約20 f/s,系統(tǒng)整體運(yùn)行速度較快,操作簡(jiǎn)單,運(yùn)行狀態(tài)穩(wěn)定。
圖5 人臉屬性識(shí)別系統(tǒng)主界面
圖6 未檢測(cè)到人臉時(shí)系統(tǒng)界面
圖7 識(shí)別成功時(shí)的系統(tǒng)界面
本文詳細(xì)論述了人臉屬性識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)以及網(wǎng)絡(luò)改進(jìn)方法,相比于傳統(tǒng)的識(shí)別方法,文中所提出的基于深度學(xué)習(xí)的人臉屬性識(shí)別方法采用了端到端的網(wǎng)絡(luò)訓(xùn)練方法,進(jìn)一步地提高了人臉屬性識(shí)別的準(zhǔn)確度;本文的網(wǎng)絡(luò)采用了較深的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)深度卷積神經(jīng)網(wǎng)絡(luò)能夠更好地提取出人臉圖像中的人臉特征信息,采用交叉熵?fù)p失函數(shù)訓(xùn)練網(wǎng)絡(luò)模型,提高了人臉屬性的識(shí)別準(zhǔn)確率[16],使得人臉屬性識(shí)別系統(tǒng)能夠很好地進(jìn)行人臉屬性的識(shí)別。但是該識(shí)別方法會(huì)受到一定程度上的光照及角度的影響,因此,后續(xù)研究可在該方法的基礎(chǔ)上加入圖像預(yù)處理方法來(lái)減少光照及人臉角度問(wèn)題產(chǎn)生的影響。同時(shí)通過(guò)更多的數(shù)據(jù)集的收集,后續(xù)可以加入更多的人臉屬性信息進(jìn)行識(shí)別。而對(duì)于人臉屬性識(shí)別系統(tǒng),后續(xù)可以對(duì)系統(tǒng)界面進(jìn)行美化以及進(jìn)一步增加各種相關(guān)功能,使得人臉屬性識(shí)別系統(tǒng)能夠?qū)Ω嗟膶傩赃M(jìn)行識(shí)別[17]。
本文的網(wǎng)絡(luò)結(jié)構(gòu)及系統(tǒng)設(shè)計(jì)方面還有許多可以改進(jìn)和優(yōu)化的地方,隨著深度學(xué)習(xí)及計(jì)算機(jī)視覺(jué)的快速發(fā)展,將會(huì)出現(xiàn)更多計(jì)算機(jī)視覺(jué)相關(guān)成果的產(chǎn)品。