羅洪偉,劉 波,姚 虎,王建博,袁華清,劉桂華
(1.深圳市朗馳欣創科技股份有限公司,廣東 深圳 518000;2.天津大學電氣自動化與信息工程學院,河北 天津 300072;3.西南科技大學信息工程學院,四川 綿陽 621010)
基于人臉圖像的性別識別和年齡估計技術在輔助人口統計、社會學研究、醫學等眾多領域有著廣泛的應用,具有極其重要的研究意義和價值[1]。傳統的性別識別方法和年齡估計主要通過手工提取面部特征來實現,性別識別主要通過人臉圖像的幾何結構[2]或外觀紋路[3]作為識別依據;年齡估計則主要通過對人臉圖像表觀進行建模來實現,建模可分為主動表觀模型[4]和主動形狀模型[5]。中期人們將機器學習技術和手工特征相結合[6,7],使得算法具有更好的魯棒性。
由于缺乏足夠精度與效率,在人臉圖像上進行性別、年齡等生物學特征提取并沒有獲得顯著的應用型發展。深度學習的崛起使人臉屬性分析技術精確穩健地走向應用化成為可能[8]。卷積神經網絡(convolutional neural network,CNN)作為深度學習領域最具有代表性的算法之一,被學者們廣泛運用于人臉圖像屬性分析任務[9~12]。隨著殘差網絡的提出,CNN進入了網絡層不斷加深、性能不斷優化的輝煌時代,但同時也帶來了計算量大,難以滿足實際應用的問題,因此,涌現出了大量輕量級CNN 立志于達到精度與速度的相對平衡[13,14]。其中,以EfficientNet-B0 為基線模型的擴展而成的EfficientNet 系列模型在效率和準確性上戰勝了當時所有的CNN模型。
本文通過對EfficientNet-B0 基線模型進行改進,將其應用于基于人臉圖像的性別識別和年齡估計任務,在保證網絡輕量化的同時,進一步提升了算法的魯棒性和檢測效率。
EfficientNet-B0為谷歌大腦團隊通過強化學習算法生成的基線模型。如圖1 所示,該網絡主要由移動倒置瓶頸卷積(mobile inverted bottleneck convolution,MBConv)模塊堆疊而成,共有16個,另有卷積(Conv)層2個,還包括1個全局平均池化層和最后的分類層。

圖1 EfficientNet-B0 網絡結構
該模型與同階段常用CNN模型在ImageNet上識別效果對比如表1 所示。可知相比傳統網絡,EfficientNet 系列網絡在準確率和內存占用上均有較大提升,可視為深度學習領域劃時代的里程碑。

表1 EfficientNet系列模型性能對比
相比其他輕量級CNN 算法,EfficientNet-B0 在模型內存、檢測速度、識別準確率都有大幅優勢,只需近1/3 的內存占用量卻達到了幾乎同樣的識別準確率,證明Efficient-Net-B0可作為一種優秀的輕量級卷積特征提取網絡。
基于人臉圖像進行性別識別和年齡段估計任務的本質為圖像分類和識別問題,選擇性能優良的基準算法可以提高系統運行的速度與準確度,減少漏檢和誤檢。本文選取輕量化CNN EfficientNet-B0 算法為特征提取框架,構建人臉圖像性別識別與年齡分類模型系統。
多任務學習(multi-task learning,MTL)是指2 個或2 個以上的任務共同學習且聯合訓練的過程,旨在通過各任務間的信息共享提升每個任務的性能和泛化能力。現有的大多只能處理單一任務的CNN,當面對多屬性分析問題時,常常需要多個深度模型的協同作用,嚴重增加系統的復雜度與額外時間開銷的方法,相比之下多任務學習無疑具有更低的學習成本和魯棒性。
在多任務學習中,有2種參數共享方式,分別為硬參數共享和軟參數共享。軟參數共享適用于任務間的相關性不高的情況,硬參數要求任務間具有強相關。硬參數共享通過在所有任務底層共享淺層卷積特征層,各任務頂層參數獨立的方式實現多任務學習,其優點在于當學習的任務越多,原始任務過擬合可能性越小。
本文將性別識別和年齡段估計問題視為目標分類問題,并且二者采用的數據集相同,任務間具有強相關性:年齡和性別的淺層特征一致,輸入數據一致,均為64 ×64 對齊后的灰度圖像,因此,選擇硬參數共享的方式,基于EfficientNet-B0網絡構建多任務學習CNN模型,實現多任務學習,提高學習效率和魯棒性。
將EfficientNet-B0網絡分為Front(前)和Back(后)兩部分,EfficientNet Front作為人臉圖像淺層卷積特征提取,其輸出結果被性別識別通道和年齡識別通道所共享。EfficientNet Back作為年齡識別通道深層卷積特征提取,網絡結構示意如圖2所示。

圖2 基于多任務學習的年齡與性別識別網絡結構
模型輸入通過EfficientNet Front特征提取網絡提取年齡和性別識別任務中的共同特征,該部分首先經過一個標準的3 ×3 Conv塊后,進入到6 個串聯的MBConvBlock中,實現多維通道內的信息融合和深層特征提取。后續網絡針對性別識別和年齡段估計兩種任務間的特殊性而作了不同區分。
根據前人研究,性別識別任務往往不需要過深的CNN就能達到比較優秀的識別率,相反,當網絡層不斷加深,其性能反而降低。因此,在經歷過共享淺層卷積層后,性別通道只需簡單的經過一個3 ×3 的Conv 塊以實現信息的提取,就能直接通過全局平均池化降到一維,為實現SoftMax的激活做準備。
年齡段識別任務往往相比性別識別要復雜的多,這在網絡設計上也有體現。除了共有的淺層特征提取外,年齡通道還需6個串聯的MBConv 模塊,以實現更加豐富的語義理解和深層卷積特征提取。其中,1 ×1 Conv通過極少的參數量實現了對不同通道信息的加權以融合多種特征。最后同樣使用全局平均池化層替代FC層以實現模型運算量的下降,后續處理考慮年齡序數問題,也不同于性別識別通道,具體實現可參考下文。
由于年齡網絡通道的輸出結果為序數,并不適用于交叉熵損失。為了直接利用經過充分研究的分類算法,本文將有序回歸轉換為一系列二元分類子問題。
具體來講,對k=Cls分類的序數回歸問題轉換為k-1個簡單的二元分類子問題。每個子問題rk∈{r1,r2,…,rk-1}內部,通過一個二元分類器來預測樣本的yi值是否大于rk
式中為第k類預測值,rk為第k類子任務所屬標簽(如r1代表1)。則真實年齡預測值Predict_Age 為每個二分類子問題預測結果之和
式中fk(x)為第k個子任務的輸出值。
由于每個子問題內部是相互獨立的二分類問題,因此內部可使用交叉熵損失進行計算,則N張輸入圖像的年齡損失為
式中 1{·}如內部為真,輸出1,否則為0;oi為第i張圖像的年齡輸出值;yi為第i張圖像的年齡真實值(對于每個子任務yi∈{0,1});wi為第i張圖像的權重;W為網絡模型參數。
對于年齡識別而言,其損失函數為二分類的交叉熵損失如式(4)所示
考慮年齡和性別兩種任務訓練難度不同,所以需要增加額外參數去平衡其訓練參數,經測試,在lossAge占用70%的訓練權重時,兩種任務能達到相對均衡的識別準確率與訓練效果。綜上,該多任務學習的總損失如式(5)所示
本文選擇最貼近現實環境且樣本量豐富的Adience作為性別識別和年齡段估計算法的數據集。相比于其他數據集,該數據集更加貼合現實意義,獲取于智能手機和其他智能設備并且未經任何人工處理。數據集中共采集了2 284個人物的26 580張照片,每張照片都標有性別和分為0~2,4~6,8~13,15~20,25~32,38~43,48~53,60~100 等8類的年齡段。
數據集部分樣例在圖像采集時不可避免地存在光線太明或太暗、模糊以及各種噪聲等問題,如果在訓練之前能夠把某些復雜的噪聲處理掉,將會大大提高訓練模型的準確率,同時由于數據集背景復雜,在訓練過程中會增加過多無用參數和計算量,因此在圖像特征提取前,需要進行預處理。本文采取灰度圖轉換、Haar 人臉檢測和對齊、圖像標準化和利用仿射變換(affine transformation)進行數據增強等步驟以提升后續網絡的訓練效果。其中,灰度圖的轉換原理如心理學式(6)
其本質是將人眼對于彩色的感知轉換為對亮度的感知。為了節省計算時間,考慮將浮點數轉為整數,通過移位實現對公式的優化
實驗的深度神經網絡搭建在Pytorch深度學習框架上,運用Python語言編程實現,操作系統為Ubuntu 16.04TLS,顯卡為NVIDIA TITAN XP,并同時安裝了CUDA11.1 以支持GPU的使用。
對于人臉檢測,測試了LFFD、Centerface、Ultraface三種輕量級人臉檢測算法在WIDER FACE 數據集上的性能。Ultraface檢測測試圖片僅耗時17 ms,不僅低于OpenCV 的1 821 ms,也優于LFFD(164 ms)、Centerface(322 ms)等先進算法。結合表2可知,Centerface網絡在準確度指標上表現最好,漏檢率在日常使用中小于10%,LFFD其次,而Ultraface漏檢率為30%左右,雖然高于其他算法,但也滿足了一般情況下的使用需求。由于本文更加看重算法的檢測速率的原則,可以看到只有Ultraface達到了實時標準(FPS >25),而Ultraface在復雜背景下對小目標的輕微漏檢現象也減輕了后續人臉屬性信息提取網絡的工作量,因此,本文選擇Ultraface作為最終的人臉檢測算法,基于檢測到的人臉圖像進行表情識別與年齡估計,使系統實時性運行成為了可能。

表2 多種人臉檢測框架準確率對比%
模型訓練開始時,將原始EfficientNet 算法權重設為初始權重,新加模塊初始權重為0~1 的隨機數,以減少訓練時間成本并加快模型收斂速度。采用批量隨機梯度下降算法優化損失函數,學習率設為0. 001,權重衰減值設為0.000 5,批量大小設為32,動量系數設為0. 9,共迭代60次。
模型改進前后在訓練集損失值變化如圖3所示,其中,虛線為模型改進前,實線為模型改進后,可知,模型在約30次迭代后收斂,改進后模型明顯包圍改進前,證明改進后模型的優越性。

圖3 模型改進前后訓練集損失值對比
實驗采用各類別均值平均精度(mean average precision,mAP)和F1分數作為模型檢測精度的評價標準[15],二者可表示為
式中 Presion為查準率,Recall為召回率,N為所有類別樣本數,N(c)為C類別樣本數,APc為C類別準確度。使用模型內存、平均檢測幀耗時作為檢測速度的評價標準。
測試集樣本共2 521 張圖像,其中,嬰幼兒占了5%左右,男性與女性占了剩余95 %,男性數量比女性數量多20%。由于Adience數據集本身并不是均勻分布的原因,隨機選取的測試集也在各年齡段上的分布不同,年齡段(25~32歲)中的樣本數量占了整個測試集的32.4%,年齡大于48周歲的樣本占10%,年齡段(0~2 歲)的同樣占了5%,其余年齡段平分剩余的53%左右。
表3給出了該測試集在查準率、召回率、F1 三大評價指標體系下的性別分類的詳細數值。可知相對來說,算法對嬰幼兒預測效果最好,其次是女性。男性預測情況低于前兩種,但召回率卻是最高的,由此可知算法在男性類別中錯檢問題比漏檢問題更加嚴重。

表3 性別任務中各指標體系下算法性能%
表4則是算法在各年齡段上的性能體現。整體表現情況稍微不如算法在性別任務中的表現,這也符合固有認知。算法在年齡段(48~53 歲)漏檢率和錯檢率都高于其他年齡段,本文推測其原因是該年齡段特征更加偏向相近年齡段,造成算法識別混淆。該原因也導致了年齡段(15 ~20歲)和年齡段(38~43 歲)的識別效果較低于其他年齡段。總體來講,算法在低齡年齡段中識別成功率高達92%,在其他年齡段識別效果與各類別類外間距成正比。

表4 年齡任務中各指標體系下算法性能%
針對測試數據集分別使用EfficientNet-B0 模型與改進后模型進行對比,結果如表5所示。由該表可得,本文所設計的基于多任務學習的性別識別與年齡段估計網絡相比其他傳統算法具有一定的性能優勢。

表5 模型改進前后測試集性能對比(性別/年齡)
首先在平均準確率上提高了7.95%,對于性別任務,算法準確率達92%,優于當前最優網絡EfficientNet-B0 的86.5%,提高了5.5%;對于年齡段識別任務,算法準確率達87.4%,比當前最優網絡高10.4%。其次憑借多任務學習的性能優勢,在模型內存和檢測速度上也遠遠優于傳統算法,改進算法由人臉圖像預測性別和年齡段任務在TX2平均檢測幀耗時只需2 s,比以檢測效率為優勢的Efficient-Net節省了51.7%的時間,同樣在該指標上遠遠領先于傳統機器學習算法和殘差網絡,分別為它們的34. 6 %和29.4%,算法模型內存占用只占EfficientNet的54.68%,為實現嵌入式端實時的性別和年齡檢測奠定了堅實基礎。
就本文改進算法的優缺點而言,召回率明顯低于查準率,對實際應用產生的影響是漏檢現象高于錯檢。
圖4 給出了算法在自建數據集上的識別效果,可知性別與年齡段基本識別正確,與人眼觀測結果相當,這證明了算法可運用于日常生活和輔助智能檢測領域。

圖4 算法識別效果樣例
本文以研究性別識別與年齡段估計算法為中心,利用性別識別和年齡估計任務的共通性,提出了一種共享淺層卷積特征的多任務學習網絡,網絡以裁剪后的EfficientNet-B0為卷積特征提取層,并將年齡判別中的序數回歸問題轉換為多個二分類子問題以優化損失函數,改進后的網絡在實現協同訓練減少運算開銷的同時,識別準確率提高了7.95%。