徐培超,陳雯柏,陳祥鳳,韓 琥
1(北京信息科技大學(xué),自動化學(xué)院,北京 100101)2(中國科學(xué)院計算技術(shù)研究所,北京 100190)
人臉多屬性識別是人臉認(rèn)證、識別和搜索任務(wù)中的關(guān)鍵技術(shù),由于人臉屬性具有豐富的信息,人臉多屬性識別也被廣泛的應(yīng)用在人機(jī)交互、公安系統(tǒng)、火車站等諸多領(lǐng)域.人臉屬性具有微笑、棕色發(fā)、是否佩戴帽子等具體屬性特征,人臉多屬性識別是指當(dāng)檢測一張人臉的圖像時,對圖像信息進(jìn)行分析,返回人臉表情、發(fā)色、配飾等多種信息.
多任務(wù)學(xué)習(xí)[1]是一種歸納遷移機(jī)制,利用相關(guān)任務(wù)中的領(lǐng)域特定信息來提高模型的泛化能力,采用共享特征和并行訓(xùn)練的方法學(xué)習(xí)多個任務(wù).Li[2]等人提出一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的單目圖像人體姿態(tài)估計異構(gòu)多任務(wù)學(xué)習(xí)框架,同時學(xué)習(xí)姿態(tài)回歸器和滑動窗口身體部分檢測器.對于圖像質(zhì)量評估,由于訓(xùn)練任務(wù)的樣本少,可能導(dǎo)致過度訓(xùn)練的問題,Xu[3]等人引入多任務(wù)學(xué)習(xí)采用共享特征同時訓(xùn)練過多個IQA模型.在近10年中,目標(biāo)屬性識別取得了重要進(jìn)展,傳統(tǒng)的目標(biāo)屬性識別大多依賴手工設(shè)計的特征,如SIFT[4]、Gabor[5]、HOG[6],考慮到深度卷積神經(jīng)網(wǎng)絡(luò)(DCN)在圖像分類等任務(wù)的出色表現(xiàn),Razavian等[7]and Donahueet等[8]利用ImageNet[9]學(xué)習(xí)到的特征表示來訓(xùn)練屬性分類器,在特征學(xué)習(xí)中,稀疏編碼能夠有效學(xué)習(xí)數(shù)據(jù)表示的結(jié)構(gòu)[18].由于深度模型的計算代價[17],以機(jī)器學(xué)習(xí)算法為主構(gòu)建基于單靜態(tài)圖像的感知模型.針對復(fù)雜環(huán)境的人臉屬性識別問題,Liu[10]等人提出一個新的深度學(xué)習(xí)框架,通過級聯(lián)兩CNN——LNet和ANet,利用目標(biāo)類別預(yù)訓(xùn)練LNet得到面部局部化,同時采用臉部特征預(yù)訓(xùn)練ANet實現(xiàn)屬性預(yù)測.同時輸入的圖片質(zhì)量會直接影響模型的預(yù)測結(jié)果,圖像超分辨率重建技術(shù)[16]也已經(jīng)成為計算機(jī)視覺領(lǐng)域的熱點方向.
上述方法通過加深CNN解決人臉的多屬性識別,增強(qiáng)模型的泛化能力,但是也增加了訓(xùn)練網(wǎng)絡(luò)的復(fù)雜性,并且只能學(xué)習(xí)一個任務(wù),在屬性分類過程中,屬性之間的相關(guān)性容易被忽略,降低模型的工作效率.而多任務(wù)學(xué)習(xí)可以聯(lián)合學(xué)習(xí)目標(biāo)的多個屬性[11],充分挖掘了屬性之間的相關(guān)性,降低了計算的復(fù)雜度.結(jié)合2015年He等人[11]提出的殘差網(wǎng)絡(luò)(Residual Network)的優(yōu)勢,本文提出基于多任務(wù)ResNet的人臉多屬性識別.
基于多任務(wù)ResNet的人臉多屬性識別方法分為兩部分,如圖1所示,首先通過ResNet網(wǎng)絡(luò)對輸入的人臉圖片進(jìn)行特征提取,在底層卷積時學(xué)習(xí)的是邊緣、紋理和顏色底層特征,隨著層數(shù)加深學(xué)習(xí)抽象的高層特征,在ResNet網(wǎng)絡(luò)最后一層全連接層后,采用共享特征[12]同時完成40個屬性的多任務(wù)學(xué)習(xí)[13].
圖1 基于多任務(wù)ResNet人臉多屬性識別方法框圖Fig.1 Face multi-attribute based on ResNet block diagram
屬性是指在人臉圖像中觀察到的特征,例如,發(fā)色、微笑和眉毛.在基于屬性學(xué)習(xí)的圖像分類方法研究工作中,最有影響力的是由Lampert等人在文獻(xiàn)[14]中提出的間接屬性預(yù)測模型(IAP)和直接屬性預(yù)測模型(DAP),根據(jù)屬性的有無,可以判斷樣本在屬性空間中的位置,最終可以確定樣本的標(biāo)簽.屬性又分為相對屬性和二值屬性,前者的值是連續(xù)的,后者是離散的.考慮到二值屬性能夠簡化建模并且能夠準(zhǔn)確描述物體目標(biāo)本的優(yōu)勢,本文利用二值屬性進(jìn)行監(jiān)督學(xué)習(xí).如果人臉圖像含有該屬性,對應(yīng)的標(biāo)簽為1,否則為0.在本設(shè)計中,每副圖像具有的40個面部屬性見表1,其中典型的8個特征見圖2.將每個圖片的屬性標(biāo)簽定義為40維向量A=[a1,a2,…,a40],ai表示第i個屬性的真值,且ai={0,1}。把訓(xùn)練數(shù)據(jù)和標(biāo)簽向量同時輸入訓(xùn)練網(wǎng)絡(luò),這樣將多個二分類問題轉(zhuǎn)化成一個向量回歸問題,可以對原網(wǎng)絡(luò)模型微調(diào),最后實現(xiàn)多個屬性識別任務(wù).
圖2 人臉典型特征Fig.2 Typical features of the face
其他網(wǎng)絡(luò)訓(xùn)練需要存儲200M以上參數(shù),ResNet只需要100M的存儲空間,但是效果卻一樣很好,在2015年ImageNet比賽中錯誤率降低至3.57%,所以選擇在ResNet結(jié)構(gòu)的基礎(chǔ)上進(jìn)行fine-tuning.ResNet網(wǎng)絡(luò)結(jié)構(gòu)主要是殘差模塊堆疊而成,每個殘差模塊如圖3所示.
包含兩個3*3卷積層,用σ表示ReLU激活函數(shù),有如下表示:
F(X)=W2σ(W1X)
(1)
在第二層中,將殘差F(X)與上層輸出X線性疊加,得到映射輸出y,保證了本結(jié)構(gòu)模塊輸出和上個結(jié)構(gòu)塊輸出的向量維度相同,網(wǎng)絡(luò)最終輸出表示為:
y=F(X,{Wi})+WsX
(2)
圖3 ResNet的基本結(jié)構(gòu)典型特征Fig.3 ResNet basic structure typical features
ResNet原始模型的全連接層輸出是1000維向量,因為人臉圖片涵蓋40個屬性特征,微調(diào)成40維1*1向量,如圖4所示.將二分類問題轉(zhuǎn)換成回歸問題,利用共享特征數(shù)據(jù)同時學(xué)習(xí)多個屬性任務(wù).
圖4 訓(xùn)練模型網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Training model network structure
該網(wǎng)絡(luò)利用歐氏距離[15]損失函數(shù)EuclideanLoss作為目標(biāo)函數(shù),如式(3)所示.
(3)
屬性預(yù)測網(wǎng)絡(luò)整體由5個大的卷積層組成:
1)第一層卷積conv1:64個7*7卷積核,步幅為2,輸出64個(112,112);
2)最大池化層pool1:步幅為2,池化區(qū)域(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,池化區(qū)域(7,7),輸出2048個(1,1);
8)全連接層fc40:輸入2048個神經(jīng)元節(jié)點,輸出40維向量;
9)損失函數(shù)層:歐式距離回歸函數(shù).
當(dāng)訓(xùn)練網(wǎng)絡(luò)通過多次迭代,預(yù)測值不斷向標(biāo)簽誤差方向進(jìn)行收斂,然后反向傳播根據(jù)鏈?zhǔn)椒▌t將參數(shù)更新到每一層中.每次迭代都會根據(jù)梯度下降的優(yōu)化方向,盡可能減少傳播誤差,最終實現(xiàn)屬性預(yù)測.
表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
目前的深度網(wǎng)絡(luò)框架多數(shù)是單任務(wù)學(xué)習(xí),當(dāng)對同一個目標(biāo)的不同屬性進(jìn)行識別時,由于輸入的數(shù)據(jù)源是相同的,針對每個屬性單獨訓(xùn)練一個分類器,耗費計算資源,所以采用共享特征表示,同時進(jìn)行40個屬性的多任務(wù)學(xué)習(xí),多任務(wù)學(xué)習(xí)模型見圖5.
圖5 多任務(wù)模型Fig.5 Multit-asking model
實驗選取公開人臉數(shù)據(jù)集(CelebA),該數(shù)據(jù)提供超過20萬幅圖片以及40個人臉屬性,例如頭發(fā)顏色、微笑與否、性別和是否戴眼鏡等,其中屬性在數(shù)據(jù)集中的分布見表2.可以有效的作為屬性分類的監(jiān)督信息,使網(wǎng)絡(luò)充分的學(xué)習(xí)屬性分類任務(wù).
數(shù)據(jù)預(yù)處理在深度學(xué)習(xí)中占據(jù)重要位置,要同時保證數(shù)據(jù)的多樣性和數(shù)據(jù)的數(shù)量,避免數(shù)據(jù)單一性造成網(wǎng)絡(luò)模型泛化能力差,可以利用隨機(jī)旋轉(zhuǎn)和水平翻轉(zhuǎn)增加數(shù)據(jù)的多樣性.CalebA中的圖片已經(jīng)通2d仿射變換將人臉對齊,直接對圖像進(jìn)行resize,再經(jīng)過lmdb格式數(shù)據(jù)庫,將三通道BGR圖像以矩陣的形式輸入網(wǎng)絡(luò),圖像處理結(jié)果如圖6所示.
為加快模型的收斂速度,利用fine-tuning方法對ResNet-50的預(yù)訓(xùn)練模型進(jìn)行微調(diào).在訓(xùn)練之前對初始化模型進(jìn)行可視化,卷積核可視化結(jié)果見圖7,圖像經(jīng)過多層卷積處理的結(jié)果如圖8所示,參考該結(jié)果可以調(diào)整初始化參數(shù)達(dá)到實驗結(jié)果.
表2 20萬樣本集屬性分布
Table 2 20 million sample set attribute distribution
屬性陰影月眉魅力眼袋禿頭訓(xùn)練2224153328102526409204475驗證22035419103034122473屬性模糊棕發(fā)濃眉豐滿雙顎訓(xùn)練101744106828450115349352驗證1067406628691160921屬性性別張嘴胡子細(xì)眼無胡訓(xùn)練8345696730831122940166952驗證83419608818237816700屬性濃胡微笑直發(fā)卷發(fā)耳環(huán)訓(xùn)練1133896375416686380137744驗證11339614412065143729屬性劉海厚唇大鼻黑發(fā)金發(fā)訓(xùn)練3029647915469714778629618驗證30164766470448962929屬性眼鏡尖胡白發(fā)濃妝高頰訓(xùn)練130231258784167734390991驗證1308124984177949109屬性尖臉膚白尖鼻發(fā)線紅臉訓(xùn)練567818590554561595813117驗證5723908546515891326屬性帽子口紅項鏈領(lǐng)帶年輕訓(xùn)練9720943432454814537154739驗證96994332487141815525
圖6 圖像預(yù)處理結(jié)果Fig.6 Image preprocessing results
在Caffe中,常見的優(yōu)化方法有隨機(jī)梯度下降(Stochastic Gradient Descent,SGD)、AdaDelta、AdaGrad、Adam、Nesterov、
圖7 卷積核可視化圖8 Feature MapFig.7 Convolution visualizationFig.8 Feature Map
RMSProp等.每次迭代,通過前向傳播計算網(wǎng)絡(luò)的輸出和Loss,經(jīng)過反向傳播計算網(wǎng)絡(luò)梯度,根據(jù)學(xué)習(xí)率和學(xué)習(xí)方法對各層參數(shù)進(jìn)行更新.在該實驗中針對相同的訓(xùn)練集,選取不同個優(yōu)化方式訓(xùn)練,損失值變化曲線見圖9.
對比圖9中的四種優(yōu)化方法,可見自適應(yīng)梯度下降方法(AdaGrad)的收斂速度更快,但是隨機(jī)梯度下降法(SGD)的準(zhǔn)確率稍高于其他優(yōu)化方式.與此同時,為了提高模型訓(xùn)練效率,選20萬張圖片作為訓(xùn)練集,2萬張作為驗證集.設(shè)置Batch_Size為2,即模型每次輸入2張圖片用于訓(xùn)練.
圖9 不同優(yōu)化方法與loss值變化曲線Fig.9 Different optimization methods and loss curves
圖10 最終損失與迭代曲線Fig.10 Final loss and iterative curve
通過梯度下降方式實驗對比,選擇隨機(jī)梯度下降(SGD)作為優(yōu)化方法,學(xué)習(xí)率策略(lr_policy)為step,且學(xué)習(xí)率成梯度3次下降,設(shè)置Gamma為0.1,間隔為10417,學(xué)習(xí)率的變化曲線如圖11所示.設(shè)置模型的基礎(chǔ)學(xué)習(xí)率 (Base_lr) 為0.0001,其中動量Momentum設(shè)置為0.9,權(quán)值衰減Weight Decay設(shè)置為0.0005,每進(jìn)行3125次完成一次迭代,需要完成10次,所以最大迭代次數(shù)為31250.
在訓(xùn)練階段,采用回歸方法,將輸入人臉圖片的40個二值屬性向量化為1*40的矩陣,將其輸入訓(xùn)練的模型,使用歐氏距離損失函數(shù)作為模型的目標(biāo)函數(shù),通過SGD不斷地更新參數(shù),最后獲得優(yōu)化模型,模型的損失值隨迭代次數(shù)的變化曲線見圖10.
當(dāng)最大迭代次數(shù)為31250時,收斂速度很快,Loss值從4.3直接降為2左右,通過繼續(xù)學(xué)習(xí),loss最后降到1.2左右且不斷震蕩,通過實驗發(fā)現(xiàn)在迭代5000次左右達(dá)到收斂.
在驗證集中隨意抽取人臉圖片進(jìn)行多屬性預(yù)測,經(jīng)過多次實驗,結(jié)果如圖11所示,當(dāng)分別輸入六張不同人臉圖片,選擇其中輸出的概率值最大的5種屬性,例如以第一張圖片作為輸入,通過模型可以預(yù)測出該圖片具有亞麻色頭發(fā)屬性的得分為1.13417和具有微笑的屬性是0.50670,觀察圖片確實具有以上屬性,同時第四個圖片人臉具有微笑的屬性得分為0.184828,觀察圖片無微笑屬性,所以可以驗證該模型能夠正確的預(yù)測人臉多屬性.最后,對比實驗結(jié)果,一般的設(shè)置屬性概率閾值為0.5,當(dāng)屬性的預(yù)測概率值大于0.5時,說明該人臉圖片含有該屬性.根據(jù)該標(biāo)準(zhǔn),利用訓(xùn)練模型對5000張測試集進(jìn)行測試,數(shù)據(jù)集的屬性預(yù)測結(jié)果見表3.
圖11 人臉屬性預(yù)測結(jié)果Fig.11 Face attribute prediction results
表3 基于數(shù)據(jù)集的每個屬性識別準(zhǔn)確率
Table 3 Recognition accuracy of each attribute based on dataset
屬性陰影月眉魅力眼袋禿頭正確46314138398041924883占比%92.6282.7679.6083.8497.66屬性模糊棕發(fā)濃眉豐滿雙顎正確48103928444747234768占比%96.2078.5688.9494.4695.36屬性性別張嘴胡子細(xì)眼無胡正確48194412480944424703占比%96.3888.2496.1888.8494.06屬性濃胡微笑直發(fā)卷發(fā)耳環(huán)正確48444558409841504449占比%96.8891.1681.9683.0088.98屬性劉海厚唇金發(fā)大鼻黑發(fā)正確47463898428841333294占比%94.9277.9685.7682.6665.88屬性眼鏡尖胡高頰白發(fā)濃妝正確49404796425748604504占比%98.8095.9285.1497.2090.08屬性尖臉膚白紅臉尖鼻發(fā)線正確37604156465337634625占比%75.2083.1293.0675.2692.50屬性帽子口紅年輕項鏈領(lǐng)帶正確49374615432443974783占比%98.7492.3086.4887.9495.66
本文在公開celeba人臉數(shù)據(jù)集上,利用基于多任務(wù)ResNet的人臉多屬性識別方法,提高了模型的泛化能力和識別精確度,通過實驗可得屬性的精確度可以達(dá)到95%左右,但是個別屬性的準(zhǔn)確率只有78%,部分原因是由于數(shù)集屬性分布不均,因此可以增加數(shù)據(jù)集的數(shù)量改善結(jié)果.
該網(wǎng)絡(luò)結(jié)構(gòu)不僅限于做人臉屬性的識別,可以推廣至其他具有屬性特點的目標(biāo).但當(dāng)前的屬性學(xué)習(xí)都是基于二值屬性,限制了屬性的表示能力,接下來的工作可利用相對屬性進(jìn)一步改善屬性預(yù)測模型,從而提高人臉多屬性識別的精度.