王高升
(華北計算機系統(tǒng)工程研究所,北京 100083)
人臉的屬性包含了人的面部相關重要的信息,如人的年齡、性別、種族等屬性信息。人臉屬性的識別就是借助提取出的人臉面部的屬性信息然后再進行識別的過程。最近的幾年來,隨著計算機視覺技術、深度學習及卷積神經網(wǎng)絡的飛速發(fā)展與應用,出現(xiàn)了許多人臉檢測與識別相關的應用,其中常見的一些應用場景包括:道路上的行人監(jiān)控系統(tǒng)(如檢測道路上的行人是否佩戴墨鏡或者口罩等)、人臉識別的門禁系統(tǒng)[1]以及采用人臉識別的打卡簽到系統(tǒng)等。雖然目前在人臉檢測與人臉屬性識別的方面得到了非常大的發(fā)展,不過很多的之前的研究僅僅局限于預測單個的人臉的屬性(例如性別或者年齡)或者為每個的人臉屬性信息都通過學習得到一個單獨的用于進行識別的模型。
相比于基于HOG-多尺度LBP 特征的人臉性別識別[2]的93.0%準確率,本文采用的人臉屬性識別網(wǎng)絡在性別屬性識別的準確率上有了4.32%的提升。文獻[2]提出了一種方向梯度直方圖和多尺度局部二值模式多特征融合的人臉性別識別算法。首先,對輸入圖像進行裁剪和縮放得到多個分辨率的人臉圖像,再分別提取LBP 統(tǒng)計直方圖并合成一個特征向量;然后提取目標圖像頭肩模型的HOG 特征得到HOG 特征向量;最后,將LBP 特征向量與HOG 特征向量合成一個新的特征向量,應用支持向量機進行訓練。而相比于本文提出的采用深度卷積神經網(wǎng)絡進行人臉檢測及人臉屬性的識別,本文的網(wǎng)絡結構在性別屬性識別上有著更好的效果。
同時本文采用的網(wǎng)絡結構相比于DEPGHAN A[3]提出的基于MTL 的DCNN 網(wǎng)絡去識別人臉的屬性,其網(wǎng)絡是基于不同的任務采用不同的數(shù)據(jù)集去訓練該DCNN網(wǎng)絡,本文通過采用Resnet50 深度殘差卷積神經網(wǎng)絡同時進行人臉多屬性的識別,使用一個網(wǎng)絡結構實現(xiàn)多個人臉屬性的識別而非單一人臉屬性識別,同時本文人臉多屬性識別的準確率相比于基于MTL 的DCNN 網(wǎng)絡在年齡屬性識別及性別屬性識別上分別有7.64% 和6.32%的提升,提升顯著。
人臉屬性的識別整體過程主要能夠分成2 個階段:人臉的檢測階段和人臉屬性信息的識別階段。由于深度學習當前在圖像處理中具有較強的特征提取能力,在學習高層的語義特征方面具有著先天的優(yōu)越性能。因此,本文主要是應用深度卷積神經網(wǎng)絡進行人臉的檢測及人臉屬性信息的分類識別。
本文在進行人臉檢測操作的階段采用的是經過修改后的MTCNN(Multi-task Cascaded Convolutional Networks)網(wǎng)絡[4]進行人臉檢測,其由3 個級聯(lián)的輕量級CNN 完成:Proposal Network(P-Net)、Refine Network(R-Net)和Output Network(O-Net)。
MTCNN 為了兼顧性能和準確率,避免滑動窗口加分類器等傳統(tǒng)思路帶來的巨大的性能消耗,先使用小模型生成有一定可能性的目標區(qū)域候選框,然后再使用更復雜的模型進行細分類和更高精度的區(qū)域框回歸,并且讓這一步遞歸執(zhí)行,以此思想構成3 層網(wǎng)絡,分別為P-Net、R-Net、O-Net,實現(xiàn)快速高效的人臉檢測。在輸入層使用圖像金字塔進行初始圖像的尺度變換,并使用P-Net生成大量的候選目標區(qū)域框,之后使用R-Net 對這些目標區(qū)域框進行第一次精選和邊框回歸,排除大部分的負例,然后再用更復雜的、精度更高的網(wǎng)絡O-Net 對剩余的目標區(qū)域框進行判別和區(qū)域邊框回歸。圖像數(shù)據(jù)先后經過以上3 個網(wǎng)絡的處理,最終得到人臉檢測結果,也即是得到了人臉區(qū)域框的左上角像素以及右下角像素在輸入圖像中的坐標信息。
通過使用WIDERFace 人臉數(shù)據(jù)集[5]對經過改進后的MTCNN 網(wǎng)絡進行有監(jiān)督的訓練,并且在網(wǎng)絡訓練過程中僅進行邊框回歸操作,不對關鍵點信息檢測進行訓練,因為人臉屬性識別過程不需要關鍵點的位置信息,可以進一步加快網(wǎng)絡訓練與推理的速度。通過訓練獲得邊框預測準確度比較好的深度卷積神經網(wǎng)絡模型,最后采用這個深度卷積神經網(wǎng)絡模型進行人臉的檢測操作過程[6]。
人臉檢測階段中改進后的MTCNN 網(wǎng)絡的推理過程如圖1 所示。
人臉屬性信息的識別階段主要是利用人臉檢測階段檢測網(wǎng)絡獲得的人臉區(qū)域的圖像,對這個獲得圖像通過深度卷積神經網(wǎng)絡進行信息提取并輸出性別、年齡及種族人臉屬性信息。

圖1 改進后的MTCNN 網(wǎng)絡的推理過程
在Renset 網(wǎng)絡之前,卷積神經網(wǎng)絡主要采用將卷積進行堆疊的方式增加網(wǎng)絡結構的深度,以使得網(wǎng)絡模型的表現(xiàn)性能具有更好的效果。但是由于在網(wǎng)絡深度的增加的同時,就會出現(xiàn)網(wǎng)絡模型的訓練過程中梯度進行反向傳播比較困難的現(xiàn)象,較容易出現(xiàn)梯度消失或者梯度爆炸的問題,由此,Resnet 網(wǎng)絡引入了殘差網(wǎng)絡結構。這種網(wǎng)絡結構極大地簡化了網(wǎng)絡的學習目標和學習的難度,使得網(wǎng)絡具有更強的恒等映射的能力,從而在拓展了網(wǎng)絡深度的同時也提升了網(wǎng)絡模型的性能。殘差結構使用跳躍連接的方式實現(xiàn),通過引入殘差結構,可以對更深的網(wǎng)絡進行訓練,同時不會出現(xiàn)梯度消失或者梯段爆炸的問題。
由于深度卷積神經網(wǎng)絡能夠通過使用一系列的卷積層操作、池化操作層操作等自動地提取出輸入的圖像的特征,更深的網(wǎng)絡能夠得到更具有表達能力的特征信息,因此當前應用于特征提取的并且取得較好效果的是一些深度卷積神經網(wǎng)絡。因此本文在人臉屬性識別階段采用改進的Resnet50 網(wǎng)絡[7],由于Resnet50 具有較深的卷積結構,能夠很好地提取圖像特征信息,因此,改進的Resnet50 網(wǎng)絡的全連接層修改成108 個神經元,也即是108 維的張量輸出,其中0~100 代表年齡,101~102 代表性別(101:Male,102:Female),103~107 代表種族(對應的依次分別為白人、黑人、亞洲人、印第安人、其他類型(如拉丁人、西班牙人等)。
通過使用UTKFace 人臉數(shù)據(jù)集[8](其中包含性別、年齡及種族信息)及Resnet50 的預訓練模型,采用交叉熵損失函數(shù)[9],對修改后的網(wǎng)絡模型進行訓練,對數(shù)據(jù)集中的年齡、性別及種族都采用one-hot 編碼[10],3 種屬性在訓練時都是采用分類的方法。
使用交叉熵損失函數(shù)能夠更好地度量出來兩個概率分布之間存在的差異性,交叉熵的公式如式(1)所示:

其中,p、q 分別表示一種概率分布,x 為隨機變量。
交叉熵能夠度量出來相同的一個隨機變量中的兩個存在差異的概率分布之間的差別的程度,交叉熵的值越小,兩個不同的概率分布之間的差別越小。在進行網(wǎng)絡訓練時,輸入網(wǎng)絡的數(shù)據(jù)與標簽信息已經完全確定,而且目標的標簽信息采用了獨熱編碼的形式,一次可以把輸入網(wǎng)絡的標簽信息看作為真實的概率的分布P(x),而Q(x)即是網(wǎng)絡預測的概率的分布,而網(wǎng)絡模型的訓練過程其實就是不斷地把網(wǎng)絡預測的概率與真實分布的概率之間的差異減小的過程,所以采用交叉熵損失函數(shù)來計算網(wǎng)絡的損失,通過不斷地更新網(wǎng)絡參數(shù),來減小網(wǎng)絡預測損失的大小,提高網(wǎng)絡模型預測的精度。
在使用訓練好的網(wǎng)絡模型時,性別、種族和年齡屬性均采用分類的方法得到結果,如年齡屬性多分類使用的方法主要是對全連接網(wǎng)絡層的0~100 的輸出張量首先使用Softmax 對網(wǎng)絡輸出的數(shù)據(jù)進行歸一化的操作,得到對應人臉年齡的概率大小,根據(jù)概率的大小排序,得到人臉的年齡屬性結果信息。
人臉屬性識別階段的Resnet50 網(wǎng)絡推理過程如圖2所示。人臉檢測網(wǎng)絡訓練過程的損失變化如圖3 所示。進行人臉屬性分類識別的Resnet50 網(wǎng)絡的訓練過程中損失變化如圖4 所示。
通過人臉檢測階段及人臉屬性識別階段,可以得到人臉的性別、年齡及種族屬性信息,整個人臉屬性識別過程采用端到端的方式,進一步使得網(wǎng)絡的精度得到提升,并且能夠預測多種人臉的屬性信息[11]。

圖2 改進后的Resnet50 網(wǎng)絡模型的推理過程

圖3 人臉檢測網(wǎng)絡訓練過程損失變化

圖4 Resnet50 網(wǎng)絡訓練過程中損失變化
實驗中采用的數(shù)據(jù)集由WIDERFace 和UTKFace 人臉數(shù)據(jù)集組成,其中測試集的占比約為5%。
人臉檢測階段采用的是WIDERFace 人臉數(shù)據(jù)集進行網(wǎng)絡的訓練,由于人臉屬性識別過程不需要人臉的關鍵點位置信息,因此人臉屬性識別系統(tǒng)中人臉檢測階段改進后的MTCNN 網(wǎng)絡只使用了數(shù)據(jù)集中人臉的邊框位置信息進行網(wǎng)絡模型的訓練,訓練后的人臉檢測網(wǎng)絡模型推理結果得出的只有人臉的邊框位置信息[12]。
人臉屬性識別階段采用的是UTKFace 人臉數(shù)據(jù)集對改進后的Resnet50 網(wǎng)絡進行網(wǎng)絡的訓練,改進后的Resnet50 網(wǎng)絡采用了UTKFace 數(shù)據(jù)集中的age、gender、race 信息,并對這些數(shù)據(jù)進行了數(shù)據(jù)清洗、one-hot 編碼等數(shù)據(jù)預處理過程,然后加載Resnet50 網(wǎng)絡的預訓練模型進行遷移學習訓練,采用預訓練模型可以加速網(wǎng)絡收斂,大幅度減少網(wǎng)絡訓練所需要耗費的時間。訓練后的網(wǎng)絡模型在推理過程中輸出的是108 維的特征向量,這個結果分別代表年齡、性別及種族信息。人臉屬性識別中,性別、種族及年齡均采用分類方法,性別是二分類,種族是多分類(識別的種族包含5 種),年齡屬性同樣是多分類任務。
人臉屬性識別網(wǎng)絡經過端到端的訓練之后,各屬性識別的準確度如表1 所示。
從表1 中可以看出,網(wǎng)絡模型在性別屬性的識別預測的精度最高,達到97.32%;種族識別預測的準確度為92.13%;年齡識別預測的準確度則達到了71.64%。改進后的網(wǎng)絡模型進一步提高了人臉各屬性信息識別的準確率,得到了更好的識別效果。
在實際的場景中,種族及年齡的識別預測受到光線及角度的影響較為嚴重,光照對種族識別預測的影響比較嚴重,主要原因是在采用的種族識別預測的數(shù)據(jù)集中,種族的識別預測更多地是根據(jù)膚色來進行,因此光照會造成結果有很大的偏差[13]。同時人臉的不同角度對于人臉屬性的識別也有一定的影響,所以通過加入人臉矯正過程可能對人臉屬性識別的準確率有一定的提升。光照及角度對識別的影響需要進一步通過預先進行圖像處理等方式來降低對識別網(wǎng)絡進行預測產生的影響[14]。

表1 驗證集各屬性識別的準確度
人臉屬性識別系統(tǒng)主要是采用Python 及其Tkinter庫進行系統(tǒng)的開發(fā)與實現(xiàn),并把人臉屬性識別網(wǎng)絡及訓練好的網(wǎng)絡模型加入到系統(tǒng)中,最后通過Pyinstaller 把整個系統(tǒng)程序打包成在Windows 操作系統(tǒng)下能夠直接運行的可執(zhí)行程序(人臉屬性識別系統(tǒng).exe)[15]。
人臉屬性識別應用系統(tǒng)的主界面如圖5 所示,界面功能主要有攝像頭的選取功能,通過下拉列表可選取系統(tǒng)運行時采用電腦自帶的攝像頭或者使用外接的攝像頭設備,在開啟攝像頭時該設置不可進行修改,可在關閉攝像頭之后再次進行選取。通過開啟攝像頭或者關閉攝像頭功能按鈕,可以對指定的攝像頭設備進行數(shù)據(jù)讀取或者關閉攝像頭設備。右側為對識別到的人臉采用網(wǎng)絡模型進行運算后輸出的人臉屬性信息進行詳細的顯示以及檢測到的人臉圖片顯示。系統(tǒng)程序采用多線程方式進行人臉屬性識別與界面信息顯示。系統(tǒng)在進行人臉屬性識別時未檢測到人臉時的系統(tǒng)界面如圖6 所示,識別成功時的系統(tǒng)界面如圖7 所示(注:人像圖片來自公開人臉數(shù)據(jù)集LFW),當視頻中出現(xiàn)多個人臉時只對其中面積最大的人臉進行屬性識別。系統(tǒng)在進行人臉屬性識別時網(wǎng)絡模型的運算速度能夠達到約20 f/s,系統(tǒng)整體運行速度較快,操作簡單,運行狀態(tài)穩(wěn)定。

圖5 人臉屬性識別系統(tǒng)主界面

圖6 未檢測到人臉時系統(tǒng)界面

圖7 識別成功時的系統(tǒng)界面
本文詳細論述了人臉屬性識別系統(tǒng)設計與實現(xiàn)以及網(wǎng)絡改進方法,相比于傳統(tǒng)的識別方法,文中所提出的基于深度學習的人臉屬性識別方法采用了端到端的網(wǎng)絡訓練方法,進一步地提高了人臉屬性識別的準確度;本文的網(wǎng)絡采用了較深的卷積神經網(wǎng)絡結構,通過深度卷積神經網(wǎng)絡能夠更好地提取出人臉圖像中的人臉特征信息,采用交叉熵損失函數(shù)訓練網(wǎng)絡模型,提高了人臉屬性的識別準確率[16],使得人臉屬性識別系統(tǒng)能夠很好地進行人臉屬性的識別。但是該識別方法會受到一定程度上的光照及角度的影響,因此,后續(xù)研究可在該方法的基礎上加入圖像預處理方法來減少光照及人臉角度問題產生的影響。同時通過更多的數(shù)據(jù)集的收集,后續(xù)可以加入更多的人臉屬性信息進行識別。而對于人臉屬性識別系統(tǒng),后續(xù)可以對系統(tǒng)界面進行美化以及進一步增加各種相關功能,使得人臉屬性識別系統(tǒng)能夠對更多的屬性進行識別[17]。
本文的網(wǎng)絡結構及系統(tǒng)設計方面還有許多可以改進和優(yōu)化的地方,隨著深度學習及計算機視覺的快速發(fā)展,將會出現(xiàn)更多計算機視覺相關成果的產品。