趙 衛 劉 淵
1(無錫商業職業學院 江蘇 無錫 214153) 2(江南大學 江蘇 無錫 214122)
年齡估計,旨在判別輸入人臉圖像的年齡值或者年齡組別。雖然基于人臉圖像的年齡自動估計是多媒體應用、公安刑偵和人機交互等許多實際應用中涉及的一項重要技術,但從人臉圖像中估計年齡仍然是一個具有挑戰性的問題。由于不同的人衰老的方式不同,衰老的過程不僅取決于人的基因,還取決于許多外部因素,如身體狀況、生活方式、居住地點和天氣狀況等。此外由于使用化妝品和配飾的程度不同,男性和女性的年齡也可能不同。如何在降低個體差異的負面影響的同時,提取出一般的判別性老化特征仍然是一個有待解決的問題。
在基于經典機器學習的年齡估計方法中,通常包含特征提取與年齡判別兩步驟,其中特征提取通常利用主動外觀模型[1]、局部二值模式[2]、流形學習[3]或者仿生特征[4]等淺層表征方法,此后再采用K近鄰法[4]、二次回歸函數[5]或者支持向量回歸[6]等機器學習方法進行最終的年齡判別。
近些年在研究年齡估計時,常常采用深度學習的方法。文獻[6]利用CNN網絡的第2到5層特征圖作為特征向量,然后對其進行非線性降維處理,最終利用支持向量分類、支持向量回歸、偏最小二乘法與典型性相關分析進行年齡預測。文獻[7]采用一個類AlexNet的CNN模型進行年齡估計。文獻[8]首先將人臉圖像分為不同的大小,再在其中劃出多個局部對齊塊,最終將其輸入進4層的網絡,此種方法通過增加樣本容量來增強CNN的泛化能力。文獻[9]通過將年齡標簽看作實數,使得輸出層含有一個神經元,因此本質上進行的是年齡回歸。
在上述基于傳統機器學習或者深度學習的方法中通常只采用一種特定的生成式模型、判別式模型、分類CNN或者回歸CNN進行年齡估計,這樣做的弊端為樣本容量、迭代次數等超參數設置一旦不合理或者參數沒有完全收斂,便毫無容錯率可言,以至于對最終的年齡估計精度產生決定性影響。
針對此種不足之處且為了進一步提高年齡估計的精度,將經典的機器學習方法與深度學習方法進行結合,提出一種由粗到細,全局到局部的局部調整年齡估計方法(Local Adjusted Age Estimation,LAAE)。如圖1所示,在訓練階段,首先將經過VGGFace2數據集預訓練的SE-ResNet-50網絡進行微調,待到收斂時提取出全連接層,將其首尾相連形成的向量作為表征并訓練出多個One-Versus-One SVM;在測試階段,先將待估計人臉圖像送入SE-ResNet-50以得到一個較為粗略的年齡估計值,然后設定具體鄰域并將訓練而成的SVM組合為一個有向無環圖SVM以進行精準的年齡估計。

圖1 年齡估計的總體流程
在VGG中,其卷積神經網絡達到了19層,在GoogleNet中,網絡的層數史無前例地達到了22層,但是在深度學習中,網絡層數增多一般會伴隨著幾個問題:計算資源的消耗,模型容易過擬合且容易產生梯度消失與梯度爆炸問題。計算資源的不足對企業或者科研經費充足的高校來說,只需要通過GPU集群就可以解決;過擬合也可通過大量采集有效樣本數據并配合Dropout等正則化方法來解決;而梯度方面的問題通過批量歸一化也可以很好地解決。貌似只要一直增加神經網絡的層數,就可以獲得收益,但是實驗數據卻不能有效地支撐此觀點[10],即隨著網絡層數的增加,網絡發生了退化的現象。隨著神經網絡層數的增多,訓練誤差逐漸下降,然后趨于飽和。再增加網絡深度的話,訓練誤差反而會增大。當網絡退化時,淺層網絡能夠達到比深層網絡更好的訓練效果,這時如果將低層的特征傳到高層,那么效果應該至少不比淺層的網絡效果差。例如,如果一個VGG100網絡在第99層使用的是和VGG16第15層一模一樣的表征,那么VGG100的性能應該會和VGG16的性能相同。因此可以在VGG-100的99層和15層之間添加一條恒等映射來達到此效果。從信息論的角度講,由于數據處理不等式的存在,在前向傳輸的過程中,隨著層數的加深,特征圖譜包含的原圖像信息會逐層減少,而恒等映射的加入,保證了網絡后一層一定比前一層包含更多的圖像信息。基于這種快捷映射的思想,便有了殘差神經網絡。
殘差網絡是在原先的神經網絡中加入一系列殘差模塊而形成的,如圖2所示。

圖2 殘差模塊

在卷積神經網絡的卷積層當中,一系列卷積核的集合可看作是輸入通道上的鄰域空間連接模式,它將空間維度上的信息和通道信息融合在局部感受野內[11]。卷積神經網絡通過將一系列卷積層,非線性激活函數與池化操作進行堆疊以此產生魯棒的表征,從而捕獲層次模式并獲得理論上的全局感受野。有很多研究工作從空間維度信息層面來提高網絡的性能,如Inception結構中嵌入了多尺度信息,依次聚合多種感受野上的特征;Inside-Outside中考慮了空間的鄰域信息。擠壓-激勵模塊(Squeeze-and-Excitation Module,SE)通過考慮特征通道中的關系來提升網絡性能,其方法是自動學習每個特征通道的重要程度,然后依照此重要程度去提升有用的特征同時抑制對當前任務用處不大的特征。
以下分別對擠壓激勵模塊中的操作進行解釋:
(1) 卷積(Convolution)操作。同一般卷積神經網絡中的卷積操作類似,擠壓激勵模塊中的卷積層讓每個可學習的濾波器都在輸入數據的高度與寬度上進行滑動并求內積,最終生成激活圖譜(Feature Map)并送入下一層。
(2) 擠壓(Squeeze)操作。我們順著空間維度來進行特征壓縮,使得輸出的維度和輸入的特征通道數相匹配。此外將每個二維的特征通道變成一個標量,此標量在某種程度上具有全局的感受野,它表征著在特征通道上響應的全局分布,而且使得靠近輸入的層也可以獲得全局感受野。
(3) 激勵(Excitation)操作。它是一個類似于循環神經網絡中門的機制,通過學習用來顯式地建模特征通道間的相關性參數來為每個特征通道生成對應權重。
(4) 重賦值(Scale)操作。將激勵輸出的權重視為經過特征選擇后的每個特征通道的重要性,然后逐通道相乘到先前的特征上,完成在通道維度上的對原始特征的重標定(Feature Recalibration)。
擠壓-激勵模塊可集成到諸如Inception或者殘差網絡中,本課題便使用的是SE-ResNet-50作為主干網絡,如圖3所示。

圖3 SE-ResNet示意圖
首先經過一個殘差模塊,然后使用全局平均池化操作進行“擠壓”,緊接著以兩個全連接層去顯式建模通道間的相關性:首先將特征維度降為原來的1/r(r一般取16),然后經過再通過一個全連接操作升回到原維度。這種“瓶頸”模塊具有更強非線性且極大減少了參數量與運算量。然后通過Sigmoid將特征權重歸一化為0到1間的值,最后通過Scale操作來對各通道特征進行加權。
LAAE的思想是將CNN估計到的年齡值在局部鄰域內盡可能靠近真實年齡。具體的示意圖可參見圖4。

圖4 局部調整示意圖
假設對于輸入數據y,對應的CNN輸出為f(y),即圖4中的空心小圓。也許f(y)離圖中實心小圓的實際年齡值L仍有一段距離,局部調整的年齡估計的思想便是在鄰域范圍2d內左右滑動(即為增大或者減小)估計值f(y),使其更接近于實際年齡值L,以公式可表示為L∈[f(y)-d,f(y)+d]。
基于上述想法,局部調整年齡估計可分為兩步來進行:① 利用CNN網絡對所有訓練數據進行年齡分類。此步驟可看作是粗估計或全局估計。② 以第1步的結果作為中心在小范圍內的鄰域中進行局部調整。對應地,此步驟可看作是細調或者局部估計。
此時問題的關鍵在于如何在一定范圍內驗證不同的年齡值,以便進行局部調整。我們的目標是通過全局回歸將最初估計的年齡值盡可能向真實年齡靠攏。我們將每個年齡標簽看作是一個類,并采用分類的方法對不同的年齡值進行局部調整或者驗證。因為只有少量的年齡標簽用于每個局部調整,因此回歸方法不能正常工作。對于基于分類方法的局部調整,在分類器方法有許多可選項,但是這里采用線性SVM用于局部調整。主要的原因是SVM對于訓練樣本較少的情況仍具有較好的魯棒性。這在之前的小樣本案例學習中已經被論證過,如人臉識別[12-13]、圖像檢索[14]、音頻分類與檢索[15]和人臉表情識別[16]。
給定分屬兩類的訓練向量(y1,z1),(y2,z2),…,(yn,zn),其中yi∈Rd,zi∈{-1,1},線性SVM可以學習一個最優分類超平面wy+b=0以最大化兩類之間的間隔(margin)[17-18]。SVM的學習本質為求下列拉格朗日泛函的鞍點:
(1)
式中:αi為拉格朗日乘子。它的優化目標可以被轉化為如下的對偶問題:

(2)
此時最優超平面可表示為對偶解:
(3)
而b的值可被代入原方程wy+b=0中進行求解。
當測試時,對于任意數據點y,分類結果可由下列函數給出:
f(y)=sign(w·y+b)
(4)
若訓練數據不可分,則可引入松弛變量ξi,關于這部分的詳細介紹可參考文獻[17]。
經典SVM的設計之初是為了解決二分類問題,當它被拓展到多分類問題時有下列幾種方法:① one-versus-one:為每兩類學習一個分類器。② one-versus-many:為每一類與剩余的其他類訓練出多個SVM。③ many-versus-many:為所有類同時訓練SVM。最后的兩種方法顯然不適合于本算法,因為在進行局部調整時只有少量的部分樣本包含在內。若采用后面兩種方法則SVM將會在每次局部調整時動態地重新訓練,這毫無疑問地會增加訓練復雜度。第一種方法在本次任務中是可行的,原因在于它不需要在線地訓練SVM,即所有成對SVM分類器都會被離線訓練。


圖5 有向無環圖SVM
由圖5可見,有向無環圖的頂層只含有一個節點,即根節點,第二層有2個節點,以此類推,第i層含有i個節點,直到最底層即將n類分類完畢。若輸入一個樣本,有向無環圖由根節點開始,計算每個節點的符號函數sign(w·y+b)決策值(見式(4)),若為-1則進入左子節點,若為1則轉入右子節點。依次類推,在最后一層葉節點的輸出就可以表示樣本的類別。從這點來看,有向無環圖實際相當于一個表格運算:初始時表格中包含所有類,此后每次的節點運算中對表格中的首尾兩類進行比較,排除樣本中最不可能屬于的類別,并刪除表中的一個類,到最后表格中剩下的唯一一類即為樣本所屬的類別。
通常來講,對于一個n分類問題,在測試階段只需要進行n-1次比較。這里,成對比較的次數被限制到了m-1次,因為在局部調整時只有m類涉及到了(m 理論上設計局部調整時的鄰域U(f(y),d)={x|f(y)-d 為了對年齡估計進行局部調整與滿足有向無環圖SVM的特殊拓撲結構,本文嘗試了2的冪次方的不同的局部搜索范圍:2(d=1),4(d=2),8(d=4),16(d=8)。理論上其實可以將搜索范圍延展到數據集的樣本容量大小一樣,但是這樣一來便不滿足“局部調整”的策略,因此本文最多將搜索范圍設置到16。 為了驗證本方法的有效性與普適性,選擇由黃種人組成的AFAD數據集[9]和白人與黑人組成的MORPH數據集[20]進行消融實驗與對比實驗。 (1) AFAD數據集:AFAD包括來自社交網路上的164 432幅圖像,年齡范圍由15歲到40歲。它不但是目前最大的用以年齡估計的開源數據集,而且對于研究無約束環境下的人臉年齡來說也相當有意義。由于官方沒有提供對AFAD中訓練集與測試集的劃分標準,因此為了能與其他的年齡方法進行對照,隨機地將AFAD劃分為80%的訓練集與20%的測試集。AFAD數據集中的一些示例如圖6所示。 圖6 AFAD示例圖像 (2) MORPH數據集:MORPH包括13 015個人的55 608幅人臉圖像,且年齡范圍由16到77歲。MORPH數據集中的一些示例如圖7所示。其劃分標準與AFAD類似。 圖7 MORPH示例圖像 在進行年齡估計之前,首先對原始的人臉圖像做以下預處理:采用級聯VJ檢測器[21]進行人臉檢測,其次采用主動外觀模型[1]對人臉基準點進行定位,最后將人臉圖像縮放為224×224進行實驗。本次實驗在Caffe[22]的GPU開源框架下進行,且所用SE-ResNet-50模型來源于文獻[23]。在此權重基礎上,本文在MORPH與AFAD上進行微調。實驗的超參數設置如下:基礎學習率為0.001 5,且以指數形式衰減;權重衰減系數為0.000 5;采用隨機梯度下降,且mini-batch的大小為64;動量值為默認的0.9。損失層LossLayer采用的是交叉熵損失函數,即SoftmaxLossLayer。 為了驗證LAAE的有效性,本文指定了不同的領域范圍,并演示了不同局部搜索范圍對于結果的影響。作為對比,還加入了只用SE-ResNet和只用SVM(此時的特征提取采用的是圖像三通道像素與線性降維-主成分分析)進行的年齡估計。消融實驗的結果如表1所示。 表1 不同鄰域設置下的MAE對比 由表1可以得出以下結論: (1) 在MORPH中表現得總比AFAD要好。究其原因,在于MORPH中的圖像是官方進行的拍攝,因此光照條件,攝像機性能等相當良好;而AFAD中的圖像是從人人網中進行爬取而獲得的,因此在分辨率上參差不齊,這便造成了性能上的差異。 (2) 深度學習的方法在兩個數據集中的表現均勝過經典的機器學習方法,這也進一步論證了深度學習的優越性。 (3) 局部調整的效果總是要勝過單純的機器學習方法或者單純的深度學習方法,但是不同的鄰域所造就的性能有所差異,且兩個數據集上表現最好的鄰域設置是不一樣的。究其原因,在于MORPH與AFAD樣本容量的差異,即MORPH的類別數較多,因此它的搜索范圍越大表現得越好。但這一點在AFAD中卻截然相反,因為它的最好表現是在d=4中,在此之后鄰域越大效果反而越差。這里只將鄰域取到了d=8,除了上文所說的鄰域越大不滿足局部調整的先驗條件之外,還有一個重要原因,即若往大取到了d=16,則局部調整的范圍就擴大到了32,而AFAD中的類別為40-15+1=36,這樣一來便相當于年齡的二次估計。 為了進一步驗證方法的有效性,將所得結果與其他的基于深度學習的年齡估計方法進行對比。其結果如表2、圖8和圖9所示。 表2 與其他方法的MAE對比 圖8 局部調整年齡估計與其他方法的對比 圖9 局部調整年齡估計與其他方法的對比 表2關于對Deeply learned feature,Multi-scale與MR-CNN的描述可參見引言。OH-ranker與OR-CNN通過在年齡估計中引入標簽的排序信息來進行一系列的二分類,不同之處在于前者采用SVM而后者采用CNN模型。CNN-ELM采用CNN進行特征提取,而后采用極限學習機(Extreme Learning Machine,ELM)進行年齡分類。由表中也可以看出深度學習的方法優于機器學習方法并且年齡標簽問題看起來也是年齡估計方法中不得不考慮的問題。此外,我們的方法在MORPH與AFAD中分別達到了3.04與3.17的平均絕對誤差,很明顯超出了之前方法的性能。相比于對比算法中的最好方法OR-CNN,本文方法在平均情況下的性能提升了大約6%。 在與其他方法的累計分數指標對比上,分別選取了在MORPH上表現最好的LAAE(d=8)和在AFAD上表現最好的LAAE(d=4),具體對比實驗結果可參見圖8與圖9。由圖10可以看出,當可允許的誤差年齡范圍大于4之后,本文方法領先于其他對比方法。在圖9中,本文方法更是一直優于OR-CNN。 此外,為了更加直觀地反映局部調整年齡估計的有效性,還比較了每個年齡段中只使用深度學習方法和LAAE的準確率,結果如圖10與圖11所示。 圖11 在AFAD中各個年齡段的準確率對比 由圖10與圖11可看出,本文方法在絕大多數年齡段均取得了領先。這一結果說明了在局部進行年齡估計調整的有效性。 本文提出一種局部調整的年齡估計方法LAAE。具體來講,首先利用深度學習進行年齡全局的粗估計,然后通過設定鄰域而在有向無環圖SVM上再進行局部的細估計。通過實驗結果可以看出LAAE的性能好于純深度學習與純機器學習方法,與其他方法的對比也能進一步說明LAAE的有效性。在其他的模式識別問題上,LAAE也是理論上可行的。此外,未來的研究方向可以是以數據驅動鄰域搜索范圍而不是人為機械地進行設置。2.4 鄰域的設計
3 實驗與結果分析
3.1 所用數據集


3.2 預處理、實驗設置與評價指標

3.3 消融實驗

3.4 對比實驗




4 結 語