徐培超,陳雯柏,陳祥鳳,韓 琥
1(北京信息科技大學,自動化學院,北京 100101)2(中國科學院計算技術研究所,北京 100190)
人臉多屬性識別是人臉認證、識別和搜索任務中的關鍵技術,由于人臉屬性具有豐富的信息,人臉多屬性識別也被廣泛的應用在人機交互、公安系統、火車站等諸多領域.人臉屬性具有微笑、棕色發、是否佩戴帽子等具體屬性特征,人臉多屬性識別是指當檢測一張人臉的圖像時,對圖像信息進行分析,返回人臉表情、發色、配飾等多種信息.
多任務學習[1]是一種歸納遷移機制,利用相關任務中的領域特定信息來提高模型的泛化能力,采用共享特征和并行訓練的方法學習多個任務.Li[2]等人提出一種基于深度卷積神經網絡的單目圖像人體姿態估計異構多任務學習框架,同時學習姿態回歸器和滑動窗口身體部分檢測器.對于圖像質量評估,由于訓練任務的樣本少,可能導致過度訓練的問題,Xu[3]等人引入多任務學習采用共享特征同時訓練過多個IQA模型.在近10年中,目標屬性識別取得了重要進展,傳統的目標屬性識別大多依賴手工設計的特征,如SIFT[4]、Gabor[5]、HOG[6],考慮到深度卷積神經網絡(DCN)在圖像分類等任務的出色表現,Razavian等[7]and Donahueet等[8]利用ImageNet[9]學習到的特征表示來訓練屬性分類器,在特征學習中,稀疏編碼能夠有效學習數據表示的結構[18].由于深度模型的計算代價[17],以機器學習算法為主構建基于單靜態圖像的感知模型.針對復雜環境的人臉屬性識別問題,Liu[10]等人提出一個新的深度學習框架,通過級聯兩CNN——LNet和ANet,利用目標類別預訓練LNet得到面部局部化,同時采用臉部特征預訓練ANet實現屬性預測.同時輸入的圖片質量會直接影響模型的預測結果,圖像超分辨率重建技術[16]也已經成為計算機視覺領域的熱點方向.
上述方法通過加深CNN解決人臉的多屬性識別,增強模型的泛化能力,但是也增加了訓練網絡的復雜性,并且只能學習一個任務,在屬性分類過程中,屬性之間的相關性容易被忽略,降低模型的工作效率.而多任務學習可以聯合學習目標的多個屬性[11],充分挖掘了屬性之間的相關性,降低了計算的復雜度.結合2015年He等人[11]提出的殘差網絡(Residual Network)的優勢,本文提出基于多任務ResNet的人臉多屬性識別.
基于多任務ResNet的人臉多屬性識別方法分為兩部分,如圖1所示,首先通過ResNet網絡對輸入的人臉圖片進行特征提取,在底層卷積時學習的是邊緣、紋理和顏色底層特征,隨著層數加深學習抽象的高層特征,在ResNet網絡最后一層全連接層后,采用共享特征[12]同時完成40個屬性的多任務學習[13].

圖1 基于多任務ResNet人臉多屬性識別方法框圖Fig.1 Face multi-attribute based on ResNet block diagram
屬性是指在人臉圖像中觀察到的特征,例如,發色、微笑和眉毛.在基于屬性學習的圖像分類方法研究工作中,最有影響力的是由Lampert等人在文獻[14]中提出的間接屬性預測模型(IAP)和直接屬性預測模型(DAP),根據屬性的有無,可以判斷樣本在屬性空間中的位置,最終可以確定樣本的標簽.屬性又分為相對屬性和二值屬性,前者的值是連續的,后者是離散的.考慮到二值屬性能夠簡化建模并且能夠準確描述物體目標本的優勢,本文利用二值屬性進行監督學習.如果人臉圖像含有該屬性,對應的標簽為1,否則為0.在本設計中,每副圖像具有的40個面部屬性見表1,其中典型的8個特征見圖2.將每個圖片的屬性標簽定義為40維向量A=[a1,a2,…,a40],ai表示第i個屬性的真值,且ai={0,1}。把訓練數據和標簽向量同時輸入訓練網絡,這樣將多個二分類問題轉化成一個向量回歸問題,可以對原網絡模型微調,最后實現多個屬性識別任務.

圖2 人臉典型特征Fig.2 Typical features of the face
其他網絡訓練需要存儲200M以上參數,ResNet只需要100M的存儲空間,但是效果卻一樣很好,在2015年ImageNet比賽中錯誤率降低至3.57%,所以選擇在ResNet結構的基礎上進行fine-tuning.ResNet網絡結構主要是殘差模塊堆疊而成,每個殘差模塊如圖3所示.
包含兩個3*3卷積層,用σ表示ReLU激活函數,有如下表示:
F(X)=W2σ(W1X)
(1)
在第二層中,將殘差F(X)與上層輸出X線性疊加,得到映射輸出y,保證了本結構模塊輸出和上個結構塊輸出的向量維度相同,網絡最終輸出表示為:
y=F(X,{Wi})+WsX
(2)

圖3 ResNet的基本結構典型特征Fig.3 ResNet basic structure typical features
ResNet原始模型的全連接層輸出是1000維向量,因為人臉圖片涵蓋40個屬性特征,微調成40維1*1向量,如圖4所示.將二分類問題轉換成回歸問題,利用共享特征數據同時學習多個屬性任務.

圖4 訓練模型網絡結構Fig.4 Training model network structure
該網絡利用歐氏距離[15]損失函數EuclideanLoss作為目標函數,如式(3)所示.
(3)

屬性預測網絡整體由5個大的卷積層組成:
1)第一層卷積conv1:64個7*7卷積核,步幅為2,輸出64個(112,112);
2)最大池化層pool1:步幅為2,池化區域(3,3),輸出64個(5,5);
3)第二大層卷積conv2_x:(64,1,1),(64,3,3),(256,1,1)的卷積核各3個;
4)第三大層卷積conv3_x:(128,1,1),(128,3,3),(512,1,1)的卷積核各4個;
5)第四大層卷積conv4_x:(256,1,1),(256,3,3),(1024,1,1)的卷積核各6個;
6)第五大層卷積conv5_x:(512,1,1),(512,3,3),(2048,1,1)的卷積核各3個;
7)平均池化層:pool5:步幅為1,池化區域(7,7),輸出2048個(1,1);
8)全連接層fc40:輸入2048個神經元節點,輸出40維向量;
9)損失函數層:歐式距離回歸函數.
當訓練網絡通過多次迭代,預測值不斷向標簽誤差方向進行收斂,然后反向傳播根據鏈式法則將參數更新到每一層中.每次迭代都會根據梯度下降的優化方向,盡可能減少傳播誤差,最終實現屬性預測.
表1 40個面部屬性
Table 1 40 face attributes

5_o_Clock_ShadowArched_EyebrowsAttractiveBags_Under_EyesBangsBig_LipsBig_NoseBlack_HairBlurryBrown_HairBushy_EyebrowsChubbyEyeglassesGoateeGray_HairHeavy_MakeupMaleMouth_Slightly_OpenMustacheNarrow_EyesOval_FacePale_SkinPointy_NoseReceding_HairlineSideburnsSmilingSmilingWavy_HairWearing_HatWearing_LipstickWearing_NecklaceWearing_NecktieBaldDouble_ChinNo_BeardWearing_EarringsBlond_HairHigh_CheekbonesRosy_CheeksYoung
目前的深度網絡框架多數是單任務學習,當對同一個目標的不同屬性進行識別時,由于輸入的數據源是相同的,針對每個屬性單獨訓練一個分類器,耗費計算資源,所以采用共享特征表示,同時進行40個屬性的多任務學習,多任務學習模型見圖5.

圖5 多任務模型Fig.5 Multit-asking model
實驗選取公開人臉數據集(CelebA),該數據提供超過20萬幅圖片以及40個人臉屬性,例如頭發顏色、微笑與否、性別和是否戴眼鏡等,其中屬性在數據集中的分布見表2.可以有效的作為屬性分類的監督信息,使網絡充分的學習屬性分類任務.
數據預處理在深度學習中占據重要位置,要同時保證數據的多樣性和數據的數量,避免數據單一性造成網絡模型泛化能力差,可以利用隨機旋轉和水平翻轉增加數據的多樣性.CalebA中的圖片已經通2d仿射變換將人臉對齊,直接對圖像進行resize,再經過lmdb格式數據庫,將三通道BGR圖像以矩陣的形式輸入網絡,圖像處理結果如圖6所示.
為加快模型的收斂速度,利用fine-tuning方法對ResNet-50的預訓練模型進行微調.在訓練之前對初始化模型進行可視化,卷積核可視化結果見圖7,圖像經過多層卷積處理的結果如圖8所示,參考該結果可以調整初始化參數達到實驗結果.
表2 20萬樣本集屬性分布
Table 2 20 million sample set attribute distribution

屬性陰影月眉魅力眼袋禿頭訓練2224153328102526409204475驗證22035419103034122473屬性模糊棕發濃眉豐滿雙顎訓練101744106828450115349352驗證1067406628691160921屬性性別張嘴胡子細眼無胡訓練8345696730831122940166952驗證83419608818237816700屬性濃胡微笑直發卷發耳環訓練1133896375416686380137744驗證11339614412065143729屬性劉海厚唇大鼻黑發金發訓練3029647915469714778629618驗證30164766470448962929屬性眼鏡尖胡白發濃妝高頰訓練130231258784167734390991驗證1308124984177949109屬性尖臉膚白尖鼻發線紅臉訓練567818590554561595813117驗證5723908546515891326屬性帽子口紅項鏈領帶年輕訓練9720943432454814537154739驗證96994332487141815525

圖6 圖像預處理結果Fig.6 Image preprocessing results
在Caffe中,常見的優化方法有隨機梯度下降(Stochastic Gradient Descent,SGD)、AdaDelta、AdaGrad、Adam、Nesterov、

圖7 卷積核可視化圖8 Feature MapFig.7 Convolution visualizationFig.8 Feature Map
RMSProp等.每次迭代,通過前向傳播計算網絡的輸出和Loss,經過反向傳播計算網絡梯度,根據學習率和學習方法對各層參數進行更新.在該實驗中針對相同的訓練集,選取不同個優化方式訓練,損失值變化曲線見圖9.
對比圖9中的四種優化方法,可見自適應梯度下降方法(AdaGrad)的收斂速度更快,但是隨機梯度下降法(SGD)的準確率稍高于其他優化方式.與此同時,為了提高模型訓練效率,選20萬張圖片作為訓練集,2萬張作為驗證集.設置Batch_Size為2,即模型每次輸入2張圖片用于訓練.

圖9 不同優化方法與loss值變化曲線Fig.9 Different optimization methods and loss curves

圖10 最終損失與迭代曲線Fig.10 Final loss and iterative curve
通過梯度下降方式實驗對比,選擇隨機梯度下降(SGD)作為優化方法,學習率策略(lr_policy)為step,且學習率成梯度3次下降,設置Gamma為0.1,間隔為10417,學習率的變化曲線如圖11所示.設置模型的基礎學習率 (Base_lr) 為0.0001,其中動量Momentum設置為0.9,權值衰減Weight Decay設置為0.0005,每進行3125次完成一次迭代,需要完成10次,所以最大迭代次數為31250.
在訓練階段,采用回歸方法,將輸入人臉圖片的40個二值屬性向量化為1*40的矩陣,將其輸入訓練的模型,使用歐氏距離損失函數作為模型的目標函數,通過SGD不斷地更新參數,最后獲得優化模型,模型的損失值隨迭代次數的變化曲線見圖10.
當最大迭代次數為31250時,收斂速度很快,Loss值從4.3直接降為2左右,通過繼續學習,loss最后降到1.2左右且不斷震蕩,通過實驗發現在迭代5000次左右達到收斂.
在驗證集中隨意抽取人臉圖片進行多屬性預測,經過多次實驗,結果如圖11所示,當分別輸入六張不同人臉圖片,選擇其中輸出的概率值最大的5種屬性,例如以第一張圖片作為輸入,通過模型可以預測出該圖片具有亞麻色頭發屬性的得分為1.13417和具有微笑的屬性是0.50670,觀察圖片確實具有以上屬性,同時第四個圖片人臉具有微笑的屬性得分為0.184828,觀察圖片無微笑屬性,所以可以驗證該模型能夠正確的預測人臉多屬性.最后,對比實驗結果,一般的設置屬性概率閾值為0.5,當屬性的預測概率值大于0.5時,說明該人臉圖片含有該屬性.根據該標準,利用訓練模型對5000張測試集進行測試,數據集的屬性預測結果見表3.

圖11 人臉屬性預測結果Fig.11 Face attribute prediction results
表3 基于數據集的每個屬性識別準確率
Table 3 Recognition accuracy of each attribute based on dataset

屬性陰影月眉魅力眼袋禿頭正確46314138398041924883占比%92.6282.7679.6083.8497.66屬性模糊棕發濃眉豐滿雙顎正確48103928444747234768占比%96.2078.5688.9494.4695.36屬性性別張嘴胡子細眼無胡正確48194412480944424703占比%96.3888.2496.1888.8494.06屬性濃胡微笑直發卷發耳環正確48444558409841504449占比%96.8891.1681.9683.0088.98屬性劉海厚唇金發大鼻黑發正確47463898428841333294占比%94.9277.9685.7682.6665.88屬性眼鏡尖胡高頰白發濃妝正確49404796425748604504占比%98.8095.9285.1497.2090.08屬性尖臉膚白紅臉尖鼻發線正確37604156465337634625占比%75.2083.1293.0675.2692.50屬性帽子口紅年輕項鏈領帶正確49374615432443974783占比%98.7492.3086.4887.9495.66
本文在公開celeba人臉數據集上,利用基于多任務ResNet的人臉多屬性識別方法,提高了模型的泛化能力和識別精確度,通過實驗可得屬性的精確度可以達到95%左右,但是個別屬性的準確率只有78%,部分原因是由于數集屬性分布不均,因此可以增加數據集的數量改善結果.
該網絡結構不僅限于做人臉屬性的識別,可以推廣至其他具有屬性特點的目標.但當前的屬性學習都是基于二值屬性,限制了屬性的表示能力,接下來的工作可利用相對屬性進一步改善屬性預測模型,從而提高人臉多屬性識別的精度.