陳濟楠,李少波,2,高 宗,李政杰,楊 靜
CHEN Jinan1,LI Shaobo1,2,GAO Zong1,LI Zhengjie1,YANG Jing1
1.貴州大學 現(xiàn)代制造技術教育部重點實驗室,貴陽 550025
2.貴州大學 機械工程學院,貴陽 550025
1.Key Laboratory of Advanced Manufacturing Technology of Ministry of Education,Guizhou University,Guiyang 550025,China
2.School of Mechanical Engineering,Guizhou University,Guiyang 550025,China
年齡和性別作為人重要的生物特征,可以應用于多種場景,如基于年齡的人機交互系統(tǒng)、電子商務中個性營銷、刑事案件偵察中的年齡過濾等。然而基于圖像的年齡分類和性別檢測在真實場景下受很多因素影響,如后天的生活工作環(huán)境等,并且人臉圖像中的復雜光線環(huán)境、姿態(tài)、表情以及圖片本身的質量等因素都會給識別造成困難。
目前的研究主要是利用傳統(tǒng)的圖像分類模式進行年齡分類和性別識別,即手工提取圖像特征,建立特征分類模型。常用于人臉年齡估計的特征有BIF(Bioinspired Features)、AAM(Active Appearance Model)特征、LBF(Local Binary Feature)特征、SIFT(Scale-Invariant Feature Transform)特征和Gobar特征以及一些顏色特征。Kwon和Lobo[1]首先提出年齡分類問題。Lanitis等[2]采用主動外觀模型(AAM),耿新等[3]提出了年齡成長模式子空間(Aging Pattern Subspace,AGES),Gunay等[4]將LBP特征應用于基于人臉圖像的年齡估計中,也取得了很好的效果。但LBP特征只是局部紋理特征,不具有描述人臉形狀的能力。在性別檢測上,文獻[5]采用Webers Local Texture Descriptor方法,文獻[6]采用先通過LZM和LBP進行特征提取再利用AdaBoost或SVM算法分類,都在FERET數(shù)據集上表現(xiàn)優(yōu)異。但是人為設計的特征通常不能應對多變的復雜環(huán)境,也無法捕獲不同任務的高層語義信息,而在第一個步驟中所挑選的特征可能無法與第二個步驟中的分類算法很好匹配,從而造成人臉分析方法性能的下降。以上所述的方法都不能滿足復雜多變環(huán)境下的人臉圖像,往往在經過過濾和嚴格對齊的數(shù)據集上表現(xiàn)良好,這些數(shù)據集都是正面人臉,光照和姿態(tài)都有限制,并且背景單一,比如FG-NET、MORPH等數(shù)據集。對于Adience數(shù)據集(如圖1所示),往往難以達到滿足要求的精度,很難將其應用于自然條件下光照多變、姿態(tài)各異和圖片質量欠佳等現(xiàn)實場景。
圖1 Adience數(shù)據集示例
自從Hinton提出了深度學習(多層神經網絡),并且在圖像分類任務中首次驗證了CNN的有效性后,基于CNN的人臉檢測方法研究又開始得到重視。近年來,Levi等[7]結合Hinton的方法[8]提出了利用CNN分別進行人臉性別識別和人臉年齡分類,顯著提高了人臉性別和年齡的識別率。Levi采用3個卷積層和2個全連接層的網絡在Adience數(shù)據集上表現(xiàn)良好,但是受限于過擬合的問題,該網絡層數(shù)不夠深,無法更進一步地學習更加充分的圖像特征,達到更高的識別精度。
針對復雜多變的應用場景,本文提出一種深度卷積神經網絡模型(CNN-CNiN),首層使用級聯(lián)3×3卷積核提取更豐富的空間結構信息,利于提取人臉更豐富的紋理特征,提高識別精度;跨連卷積層既考慮了高層次特征,又考慮了低層次特征;加入Batch Normalization(BN)層取消局部歸一化層(Local Response Normalization,LRN),設置較高的學習率和較小的Dropout比率,有效提高訓練的收斂速度,防止過擬合;采用1×1卷積核與全局平均池化(Global Average Pooling)取代全連接層能解決數(shù)據集小而訓練層數(shù)多帶來的過擬合問題。
1986年,Rumelhart提出 Backpropagation(BP)算法[9]。1998年LeCun等將BP算法應用在LeNet-5中取得成功[10-11]。2006年,Hinton等提出“逐層初始化”的方法,解決深度網絡無法訓練的問題[12]。
使用不同的卷積核對上一層中不同組合的特征圖進行卷積,同一卷積核權值共享,加上偏置得到當前層的特征圖。卷積計算過程如下式:
若對矩陣M進行不重疊的分塊,設每塊的大小恰為p和q,第ij塊用矩陣表示,其構造如下:
式中,s∈[(i-1)×p+1,i×p],t∈[(j-1)×p+1,j×p],的下采樣定義為:
用大小為p×q的不重疊塊對矩陣M的下采樣定義為:
對矩陣A進行倍數(shù)為p×q的不重疊上采樣定義為:
式中,Ep×q為元素全1的矩陣;?為克羅內克積。
隨機梯度下降算法是訓練深度網絡的主流算法,優(yōu)點是簡單高效,缺點是需要人工選擇參數(shù)(如學習率、參數(shù)初始化、權重衰減系數(shù)和Dropout率等),而這些參數(shù)對訓練結果有很大影響。Batch Normalization(BN)算法[13]可以免去人工參數(shù)選擇的隨機性,有效提高收斂速度,具有一定正則化的作用,可以減少Dropout的使用,取消LRN層。因為BN使得訓練過程更快,能夠檢測的樣本次數(shù)變少,能減少圖像的扭曲,使得網絡學習更真實的圖像特征。BN前向傳導過程如圖2所示。
圖2 BN算法前向傳導
BN實現(xiàn)方法是在每一層輸入時,插入一個歸一化層,將輸入數(shù)據歸一化為均值0、方差1。圖2中μB為mini-batch均值,σB為mini-batch標準差,圖2中階段①實現(xiàn)輸入樣本歸一化,由于層與層之間歸一化處理將改變數(shù)據分布,破壞學習特征。所以利用圖2中的階段②實現(xiàn)變換重構,以恢復某層學習的特征。其中γ、β是需要學習的參數(shù)。
訓練階段用每個mini-batch中的方差和均值替代整體訓練集的方差和均值,作為對整體的估計。測試階段,均值和方差不是針對某一個batch,而是對整個數(shù)據集而言的。因此在訓練中除了正常的前向傳播和反向求導之外,還需要記錄每一個batch的方差和均值,以便訓練完成后按如下計算整體的均值和方差:
式中,E[x]為整體均值;Var[x]為整體方差。
使用BP算法和梯度下降算法更新權值和偏置,表1給出網絡結構信息,在學習權值中特別注意的是L7層跨過3層直接與L11層連接,因此L7層的反饋誤差應為兩部分反饋誤差之和。梯度下降算法需要計算損失函數(shù)對節(jié)點權值和偏置的導數(shù)。
表1CNN-CNiN網絡結構
式中,nl為最終輸出層;為第l層i節(jié)點殘差;為輸入到第l層i節(jié)點的值;為第nl層i節(jié)點激活值;sl+1為第l+1層節(jié)點數(shù)。L7層的反饋誤差為:
其余各層反饋誤差計算方式與CNN計算方式相同。
本文提出的網絡結構針對于人臉數(shù)據集Adience,該數(shù)據集為非約束評測集,滿足實際環(huán)境情況要求。年齡和性別識別采用同一個網絡結構,復用網絡結構減少訓練的時間空間開銷。
輸入數(shù)據采用3顏色通道,原始圖片816×816大小重新調整為256×256,然后對重新調整大小的圖片隨機剪裁為224×224,并將其作為網絡的輸入。網絡結構具體配置由表1給出。CNN-CNiN采用級聯(lián)的3×3卷積核作為底層特征提取,為保證輸出尺寸不變,采用邊緣擴充(Pad設置為1);3個級聯(lián)的3×3卷積核(stride設置為1)感受野為7×7,但是需訓練權值參數(shù)將成倍減少,7×7卷積核權值參數(shù)為7×7×64=49×64,級聯(lián)小尺寸卷積核權值參數(shù)為3×3×3×64=27×64。在分類時,底層的特征對分類也有一定幫助,因此融合多層次抽象特征有利于提高分類準確率,CNN-CNiN網絡結構借鑒Deep ID[14-16]的思想并結合具體應用進行了改進,通過跨越卷積層實現(xiàn)中層特征和高層特征的融合。表1中L11層后不需要使用ReLU層,因為ReLU會將負數(shù)信息刪除,而存在于這一層的負數(shù)特征對分類有幫助。L9層和L10層在每個局部感受野進行復雜計算,提取各種潛在的非線性特征,L11_a采用全局平均池化,有效減少因盡可能多提取潛在特征造成過多的參數(shù)。L7層跨越L8~L10層直接與最后一個隱層全連接,加入BN層起到歸一化的作用。
年齡與性別估計模型網絡的前幾層皆可以共用,不同的是年齡模型的輸出層為8個類別,而性別模型的輸出層為2個類別。最后采用softmax loss作為損失函數(shù),多分類器采用softmax。模型結構如圖3所示。
圖3 本文網絡模型(CNN-CNiN)結構
Adience數(shù)據集由志愿者使用智能手機拍攝上傳,故其圖像的光照、噪聲、姿態(tài)和遮擋等條件都是多變的。數(shù)據集共26580張圖片,對象共2284個,年齡標簽分為8類(0~2,4~6,8~13,15~20,25~32,38~43,48~53,60~),性別分為兩類。本文采用5折交叉驗證,其中4折用于訓練,1折用于測試。表2和表3給出研究中訓練測試的數(shù)據分布。
表2 性別標記數(shù)據分布
表3 年齡標記數(shù)據分布
設計5組對比實驗:第1組實驗采用AlexNet訓練測試;第2組實驗采用文獻[7]的網絡訓練測試;第3組為CNN-CNiN網絡實驗;第4組實驗將CNN-CNiN級聯(lián)小尺寸卷積核替換為單個7×7卷積核(CNN-CNiN-a);第5組將CNN-CNiN跨連卷積層取消(CNN-CNiN-b);第6組將CNN-CNiN中L9、L10和L11_a替換為卷積池化和全連接層(CNN-CNiN-c)。實驗評價標準為訓練收斂速度、損失函數(shù)的loss和識別準確率。
(1)訓練
所有層的權值采用0均值的高斯函數(shù)初始化,損失率為0.01。由于數(shù)據集小,為防止過擬合,使用BN層和Dropout層(隨機設置神經元輸出為0),傳統(tǒng)網絡在設置Dropout比率時一般比較大(50%),由于本文網絡結構采用BN層,可以將Dropout比率設置為0.2~0.5之間的值。第二種防止過擬合的方法是:在數(shù)據輸入層對數(shù)據進行隨機剪裁和翻轉處理,將原始圖像調整為256×256,再隨機抽取224×224的5個切片(中間和四角),訓練數(shù)據集擴展為原來的10倍。標準神經網絡最大池化層步長(stride)s和池化核(kernel_size)k大小相等,不會重疊采樣,本文網絡設置為s=3,k=2,重疊采樣能減少過擬合風險,同時能保持空間不變性。學習率的調整采用multistep策略,總迭代次數(shù)為30000,初始學習率設置為0.01,調整的“stepvalue”設置為5000、15000、25000。
在訓練時,因為BN層根據每個mini-batch更新權值,所以將“use_global_stats”設置為“false”,而在測試階段和新樣本預測時,將其設置為“true”。
(2)預測
將新的數(shù)據應用在訓練完成的模型上,采用重疊取樣方法可以提高識別精度,對新的人臉圖像數(shù)據隨機取5個切片,并求取5個切片的平均值作為預測數(shù)據輸入。
圖4為AlexNet對年齡和性別識別的訓練損失(loss)與迭代次數(shù)的函數(shù),圖5為本文網絡結構對年齡和性別識別的訓練損失(loss)與迭代次數(shù)的函數(shù)。實驗表明本文采用Batch Normalization層后,網絡的收斂速度更快,訓練的loss更穩(wěn)定,有效避免過擬合問題。最終所需的迭代次數(shù)由50000步減少為30000步,減少訓練時間。
表4顯示,增加跨連卷積層后,性別識別率增加1.4%,年齡識別率增加1.5%,因為加入跨連卷積層后融合了不同尺度的圖像信息,所以獲得了更好的分類性能。級聯(lián)小尺寸卷積核替換單個7×7卷積核實驗結果不低于直接使用7×7卷積核的方法,底層特征存在冗余,兩種方法的感受野相同,在分類性能上相仿。使用1×1卷積核和全局平均池化的方法不低于直接使用全連接層的方法。
圖4 AlexNet年齡loss曲線
圖5 本文CNN網絡年齡loss曲線
表4 不同方法結果對比
表5和表6為各種方法在Adience數(shù)據集上的性別年齡識別精度結果。實驗表明,使用CNN自動提取特征并進行分類的方法識別率普遍高于手工特征提取的識別率。在年齡識別上,CNN-CNiN識別準確率比AlexNet高4.5%,比文獻[7]方法高5.1%;在性別估計上,CNN-CNiN網絡識別準確率比AlexNet高3.6%,比文獻[7]方法高6.5%。圖6為本文網絡、文獻[7]和AlexNet方法識別精度對比圖,本文網絡具有更高的識別精度,收斂速度更快,最終迭代次數(shù)減少20000步。
表5 性別檢測結果
表6 年齡檢測結果
圖6 年齡識別準確率對比圖
本文提出一種改進CNN的年齡與性別檢測模型CNN-CNiN,該模型使用級聯(lián)3×3卷積核降低參數(shù)數(shù)量防止過擬合,采用跨連卷積層和使用1×1卷積核的方法,融合不同尺度圖像特征,獲得更好的識別性能。實驗結果表明,與現(xiàn)有的主流年齡性別識別方法相比,本文方法在Adience數(shù)據集上具有較高的識別正確率。下一步將研究結合目標檢測方法,完成多目標條件下年齡與性別的識別任務,并將模型應用到具體的生產環(huán)境中。