李 亞,張雨楠,彭 程,楊俊欽,劉 淼
(廣州大學(xué) 計(jì)算機(jī)科學(xué)與網(wǎng)絡(luò)工程學(xué)院,廣州 510006)
人臉具有豐富的屬性信息,如性別、年齡、膚質(zhì)、是否戴眼鏡等。這些屬性特征在人機(jī)交互、嫌犯識(shí)別、視頻監(jiān)控、精準(zhǔn)廣告投放[1-3]等方面都有廣泛應(yīng)用。
傳統(tǒng)人臉屬性識(shí)別方法主要包括3個(gè)階段:人臉檢測、特征提取和識(shí)別分類器訓(xùn)練。其中,常見的特征提取方法有局部二值模式(Local Binary Pattern,LBP)[4]和方向梯度直方圖(Histogram of Oriented Gradient,HOG)[5]。在現(xiàn)實(shí)應(yīng)用中,傳統(tǒng)方法易受非限定條件下復(fù)雜環(huán)境的影響,導(dǎo)致錯(cuò)誤率升高。近來出現(xiàn)了多個(gè)基于深度學(xué)習(xí)的屬性識(shí)別方法,不但降低了非限定條件下的識(shí)別錯(cuò)誤率,還能識(shí)別更加精細(xì)的人臉屬性。如文獻(xiàn)[6]提出的LNet+ANet網(wǎng)絡(luò)以及相關(guān)改進(jìn)[7-8]。隨著神經(jīng)網(wǎng)絡(luò)的加深,屬性識(shí)別效果逐步提升,但同時(shí)也帶來了應(yīng)用部署時(shí)計(jì)算資源要求高,以及難以實(shí)時(shí)識(shí)別處理的問題,限制了模型在資源有限的嵌入式和便攜式設(shè)備上的應(yīng)用。
為解決上述問題,本文提出一種輕量高效的人臉屬性識(shí)別方法。通過輕量化的殘差模塊構(gòu)建基礎(chǔ)網(wǎng)絡(luò),極大減少了模型參數(shù),同時(shí)可以加快訓(xùn)練和預(yù)測過程速度。根據(jù)屬性類間的關(guān)聯(lián)關(guān)系設(shè)計(jì)共享分支網(wǎng)絡(luò),與每個(gè)屬性一個(gè)分支相比進(jìn)一步減少模型參數(shù)。為了改善正負(fù)樣本數(shù)不均衡問題,采用帶權(quán)重的交叉熵作為損失函數(shù)訓(xùn)練網(wǎng)絡(luò)。
常用的卷積神經(jīng)網(wǎng)絡(luò)由LECUN提出[9],通常由卷積層、池化層和全連接層組成,通過反向傳播算法[10]對模型參數(shù)進(jìn)行更新。
卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心,用多個(gè)卷積核和上一層輸出的特征圖進(jìn)行卷積。卷積層公式如下:
(1)
由式(1)可知,要得到當(dāng)前層某通道的特征圖需融合上一層所有通道的特征圖,計(jì)算過程包括濾波和融合。假設(shè)卷積層輸入尺寸為hi×wi×ci,即上一層輸出的特征圖大小為hi×wi,通道數(shù)為ci。若卷積核大小統(tǒng)一為d×d,步長為1,輸出尺寸為hi×wi×ci+1。計(jì)算過程即ci+1個(gè)d×d卷積核遍歷ci個(gè)特征圖進(jìn)行濾波,產(chǎn)生ci+1×ci個(gè)中間特征圖,再疊加每個(gè)輸入通道對應(yīng)的特征圖產(chǎn)生ci+1個(gè)特征圖。一個(gè)卷積層的計(jì)算量如式(2)所示:
cost(i+1)=hi×wi×d×d×ci×ci+1
(2)
隨著網(wǎng)絡(luò)深度的增加,卷積層的計(jì)算量將成倍增加,而所需要存儲(chǔ)的參數(shù)個(gè)數(shù),即空間花銷亦成倍增加。一個(gè)通道的特征圖需要對上一層所有通道的特征圖進(jìn)行過濾與融合才能獲得,卷積層的這種計(jì)算方式存在著大量的計(jì)算冗余,需進(jìn)一步優(yōu)化。
針對計(jì)算冗余問題,深度可分離卷積對傳統(tǒng)卷積過程進(jìn)行改進(jìn),將完整的卷積運(yùn)算分解為完全解耦的兩步進(jìn)行,網(wǎng)絡(luò)上用獨(dú)立的兩層來實(shí)現(xiàn),第一層是逐通道卷積層,第二層是逐點(diǎn)卷積層。
基于1.1節(jié)假設(shè),卷積層輸入尺寸為hi×wi×ci,輸出尺寸為hi×wi×ci+1。逐通道卷積層對輸入的每個(gè)通道用單個(gè)卷積核進(jìn)行過濾,從而得到與輸入通道數(shù)相同的中間輸出。與傳統(tǒng)卷積不同,該層只產(chǎn)生ci個(gè)中間特征圖,計(jì)算量為hi×wi×d×d×ci。第二層是逐點(diǎn)卷積層,用ci+1個(gè)1×1的卷積核遍歷第一層輸出的ci個(gè)特征圖,然后對同一輸出通道的特征進(jìn)行融合,最后輸出ci+1個(gè)特征圖,計(jì)算量為hi×wi×ci×ci+1。因此,采用深度可分離卷積結(jié)構(gòu)的卷積層計(jì)算量為:
hi×wi×ci×(d2+ci+1)
(3)
跨層連接是指將網(wǎng)絡(luò)中的前后層連通,使網(wǎng)絡(luò)中的每一層都接受它前面層的特征作為輸入。隨著網(wǎng)絡(luò)層數(shù)的加深,網(wǎng)絡(luò)在訓(xùn)練過程中的前傳信號(hào)和梯度信號(hào)會(huì)逐漸消失??鐚舆B接可使信號(hào)在輸入層和輸出層之間高速流通,有效抑制梯度丟失和梯度爆炸等問題,在圖像分類和分割等問題上表現(xiàn)出了良好的性能??鐚舆B接的網(wǎng)絡(luò)單元結(jié)構(gòu)如圖1所示。
圖1 跨層連接模塊示意圖
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)原本擬合的是y=F(x),而跨層連接將網(wǎng)絡(luò)的擬合目標(biāo)轉(zhuǎn)變?yōu)閥=F(x)+x。Resnet[14]的實(shí)驗(yàn)證明了這種擬合的轉(zhuǎn)變能夠保留輸入的原始結(jié)構(gòu)信息,不但能有效防止過擬合,而且使網(wǎng)絡(luò)更易優(yōu)化。受Resnet啟發(fā),本文采用跨層連接來設(shè)計(jì)網(wǎng)絡(luò)模塊。
本文設(shè)計(jì)了一個(gè)面向豐富人臉屬性識(shí)別的輕量化多任務(wù)學(xué)習(xí)網(wǎng)絡(luò)LFaceA。整體網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,包括特征學(xué)習(xí)共享網(wǎng)和屬性識(shí)別分支網(wǎng)兩部分。
圖2 整體網(wǎng)絡(luò)結(jié)構(gòu)
特征學(xué)習(xí)共享網(wǎng)絡(luò)基于Resnet進(jìn)行改進(jìn),由多個(gè)輕量殘差模塊(Light Residual Module,LightRM)構(gòu)成。模塊由一對深度可分離卷積結(jié)構(gòu)組成,模塊間采用跨層連接。這種輕量化的設(shè)計(jì)大大減少了參數(shù)量,加快了訓(xùn)練和預(yù)測的速度。此外,本文采用小卷積核來改進(jìn)傳統(tǒng)卷積。與大卷積核相比,小卷積核所需要的參數(shù)更少,并且可通過堆疊多個(gè)小卷積核達(dá)到與大卷積核一樣的感受野[15]。本文網(wǎng)絡(luò)均采用了3×3和1×1的小卷積核,進(jìn)一步減少網(wǎng)絡(luò)的參數(shù)和計(jì)算量。
網(wǎng)絡(luò)各層參數(shù)大小及詳細(xì)網(wǎng)絡(luò)設(shè)計(jì)結(jié)構(gòu)如表1所示,輸入是三通道的224×224大小的圖像。特征學(xué)習(xí)共享部分首先是一個(gè)普通的3×3卷積,然后連接16個(gè)輕量化殘差模塊進(jìn)行特征學(xué)習(xí)。屬性識(shí)別分支網(wǎng)以學(xué)到的特征為輸入,多個(gè)關(guān)聯(lián)屬性共享一個(gè)分支網(wǎng)。屬性識(shí)別分支先通過一個(gè)輕量化殘差模塊和一個(gè)大小為1×1的卷積層提取與該屬性組相關(guān)的精細(xì)特征;再連接一個(gè)7×7的平均池化層進(jìn)行降維;然后為預(yù)防過擬合,連接了一個(gè)dropout層,以0.5的比率丟棄部分神經(jīng)元;最后通過一個(gè)全連接層進(jìn)行屬性識(shí)別并輸出。
輕量化殘差模塊詳細(xì)設(shè)計(jì)如圖3所示。深度可分離卷積結(jié)構(gòu)第一層的卷積核尺寸為3×3,卷積輸出先經(jīng)過批歸一化處理(Batch Normalization,BN),然后進(jìn)行非線性化處理。非線性化處理采用ReLU6激活函數(shù),該函數(shù)是ReLU[16]的變種。ReLU的處理方法是將卷積結(jié)果小于零的部分置零,大于零的部分保持不變。而ReLU6除了保持小于零的部分置零外,大于零的部分設(shè)置上限為6。深度可分離卷積結(jié)構(gòu)第二層的卷積核尺寸為1×1,對第一層的中間輸出進(jìn)行融合,最終經(jīng)過批歸一化處理后輸出滿足目標(biāo)通道數(shù)的卷積結(jié)果。輕量化殘差模塊間采用跨層連接的模式,使信號(hào)在前后層之間高速流通,可有效抑制梯度消失。
圖3 輕量化殘差模塊
人臉具有豐富的屬性,而部分屬性間往往具有較強(qiáng)的關(guān)聯(lián)性[8,17-19]。例如,“山羊胡子”“光頭”等屬性與“性別是男”這一屬性有極強(qiáng)的關(guān)聯(lián)度,而與“直發(fā)”“灰發(fā)”“卷發(fā)”等屬性幾乎沒有關(guān)聯(lián)關(guān)系。由此,本文構(gòu)建了可共享的屬性識(shí)別子網(wǎng)絡(luò)。為確定屬性間的關(guān)聯(lián)關(guān)系,本文對CelebA數(shù)據(jù)集中的圖像進(jìn)行了統(tǒng)計(jì),各屬性對通過構(gòu)建關(guān)聯(lián)矩陣得到關(guān)聯(lián)關(guān)系圖。如圖4所示,不同顏色表征屬性對間的關(guān)聯(lián)程度,紅色表示關(guān)聯(lián)程度最高,藍(lán)色表示關(guān)聯(lián)程度最低(本刊為黑白印刷,彩色效果請至《計(jì)算機(jī)工程》官網(wǎng)查看電子文檔)。
圖4 CelebA數(shù)據(jù)集中人臉屬性關(guān)聯(lián)關(guān)系圖
與每個(gè)屬性都單獨(dú)設(shè)計(jì)一個(gè)識(shí)別分支相比,多屬性共享識(shí)別分支網(wǎng)絡(luò)的方法可進(jìn)一步減少網(wǎng)絡(luò)參數(shù),加快識(shí)別速度。受文獻(xiàn)[8]的啟發(fā),本文把CelebA數(shù)據(jù)集上的40種屬性分成9組(如表2所示),分別設(shè)計(jì)了9個(gè)共享的子網(wǎng)絡(luò)來進(jìn)行屬性識(shí)別。子網(wǎng)絡(luò)首先通過一個(gè)輕量殘差模塊提取與本屬性組相關(guān)的精細(xì)特征,然后再進(jìn)行相應(yīng)的識(shí)別。這種設(shè)計(jì)不僅避免了大量屬性分支的計(jì)算與空間花銷,而且更好地利用了關(guān)聯(lián)屬性間的共同特征,具有更好的識(shí)別效果。
表2 屬性分組表Table 2 Attribute grouping table
實(shí)驗(yàn)采用了CelebA[6]人臉屬性數(shù)據(jù)集,如圖5所示。該數(shù)據(jù)集由香港中文大學(xué)發(fā)布,提供了人臉對齊和自然場景下近20萬張人臉圖像,標(biāo)注了40種人臉屬性。本文按照8∶1∶1的比例劃分?jǐn)?shù)據(jù)集,分別用于模型的訓(xùn)練、驗(yàn)證和測試,采用屬性識(shí)別錯(cuò)誤率對模型進(jìn)行評價(jià),與當(dāng)前較先進(jìn)的人臉屬性識(shí)別方法進(jìn)行了比較。
圖5 CelebA數(shù)據(jù)集部分圖像展示
和文獻(xiàn)[20]一樣,本文也采用了交叉熵?fù)p失函數(shù)對模型進(jìn)行訓(xùn)練,其一般形式如下:
(4)
與發(fā)酵前荷葉上清液相比,2株腸球菌荷葉發(fā)酵上清液的3種抗氧化酶活力均顯著提高(P<0.001)(圖3)。其中,WEHI01發(fā)酵上清的SOD、CAT酶活力均極顯著高于WEFA23發(fā)酵上清(P<0.001),而WEFA23發(fā)酵上清的GSH-Px酶活力顯著高于WEHI01發(fā)酵上清(P<0.01)。
(5)
(6)
結(jié)合權(quán)重式(5)、式(6),本文在模型訓(xùn)練中采用的損失函數(shù)如式(7)所示:
(7)
為了便于與現(xiàn)有研究比較,本文采用了識(shí)別錯(cuò)誤率(ERR)和多屬性平均識(shí)別錯(cuò)誤率(mERR)作為評價(jià)指標(biāo)。
將本文方法與的人臉屬性識(shí)別方法文獻(xiàn)[6]方法,Moon[7]和Mcnn[8]在識(shí)別錯(cuò)誤率上進(jìn)行了比較。文獻(xiàn)[6]首次采用深度神經(jīng)網(wǎng)絡(luò)方法,超越了傳統(tǒng)方法。Moon和Mcnn在文獻(xiàn)[6]的基礎(chǔ)上,分別通過改進(jìn)損失函數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)的方式,進(jìn)一步降低了識(shí)別錯(cuò)誤率。詳細(xì)實(shí)驗(yàn)結(jié)果見表3,其中Mcnn-AUX是Mcnn的變體。結(jié)果表明,本文方法在大部分屬性上的識(shí)別錯(cuò)誤率表現(xiàn)良好,在平均識(shí)別錯(cuò)誤率上的效果最好。此外,本文用自然場景下的人臉圖像進(jìn)行網(wǎng)絡(luò)訓(xùn)練和測試,mERR指標(biāo)僅僅上升0.2%。實(shí)驗(yàn)證明本文提出的網(wǎng)絡(luò)模型具有很強(qiáng)的抗噪聲能力,在復(fù)雜自然環(huán)境下依然保持較好的識(shí)別效果。
表3 屬性識(shí)別錯(cuò)誤率比較Table 3 Comparison of attribute recognition error rates %
為了衡量模型效率,本文分別從模型參數(shù)量、空間開銷和運(yùn)算速度三方面進(jìn)行評價(jià),與當(dāng)前最新的屬性識(shí)別方法文獻(xiàn)[6]方法,Moon和Mcnn,以及主流的深度模型進(jìn)行比較。在運(yùn)算速度方面,分別比較了基于GPU(單塊Nvidia 1080Ti 顯卡)和基于CPU(Intel i7-8700k 3.7 GHz)的處理速度。詳細(xì)的比較結(jié)果如表4所示,第2、3列分別表示GPU和CPU環(huán)境下處理一幅圖需要的時(shí)間。其中,Moon和Mcnn沒有公布源碼,標(biāo)號(hào)*表示該結(jié)果由復(fù)現(xiàn)所得。
表4 網(wǎng)絡(luò)模型計(jì)算與空間開銷對比
Table 4 Comparison of calculation and space cost of network models
網(wǎng)絡(luò)模型GPU/msCPU/ms參數(shù)量/107模型大小/MBResnet-181.1840.0711.7745.0Resnet-502.85112.2425.6498.0VGG-162.92283.30138.44528.0Moon2.86*282.18*135.00528.0*Mcnn0.65*19.50*15.0052.5*LFaceA0.6212.970.662.7
由表4可知,本文設(shè)計(jì)的網(wǎng)絡(luò)模型與其他網(wǎng)絡(luò)模型相比,運(yùn)行速度大大提升,尤其是在計(jì)算能力弱的CPU上,與現(xiàn)有的深度學(xué)習(xí)模型拉開了較大的距離。在模型參數(shù)量上,本文方法僅為其他方法的幾十分之一,模型的空間開銷非常小,能方便地部署在資源受限的移動(dòng)和嵌入式設(shè)備中。
本文提出的網(wǎng)絡(luò)模型基于輕量化殘差模塊構(gòu)建,而輕量化殘差模塊由2個(gè)深度可分離卷積結(jié)構(gòu)組合而成,模塊間通過跨層連接的方式堆疊。此外考慮到屬性間的關(guān)聯(lián)關(guān)系,本文還設(shè)計(jì)了共享的屬性識(shí)別分支網(wǎng)絡(luò)。為了驗(yàn)證網(wǎng)絡(luò)設(shè)計(jì)的有效性,本節(jié)設(shè)計(jì)了一系列實(shí)驗(yàn)進(jìn)行驗(yàn)證。
首先定義需要驗(yàn)證的網(wǎng)絡(luò)變體。為了驗(yàn)證跨層連接和深度可分離卷積結(jié)構(gòu)的有效性,本文在原LFaceA網(wǎng)絡(luò)的基礎(chǔ)上分別構(gòu)建了去掉跨層連接的模型LFaceA-Ⅰ和去掉深度可分離卷積結(jié)構(gòu)的模型LFaceA-Ⅱ。LFaceA-Ⅰ和LFaceA-Ⅱ的模型中仍包含共享的屬性識(shí)別分支網(wǎng)。其次,為了驗(yàn)證共享屬性分支網(wǎng)絡(luò)的有效性,在原LFaceA網(wǎng)絡(luò)的基礎(chǔ)上構(gòu)建了完全去掉屬性識(shí)別分支網(wǎng)絡(luò)的LFaceA-Ⅲ和每個(gè)屬性一個(gè)分支網(wǎng)絡(luò)的LFaceA-Ⅳ。LFaceA-Ⅲ和LFaceA-Ⅳ的模型中共享的特征學(xué)習(xí)網(wǎng)絡(luò)部分保持不變,仍基于輕量化殘差模塊構(gòu)建,模塊間通過跨層連接的方式堆疊。
實(shí)驗(yàn)結(jié)果如表5所示。LFaceA和LFaceA-Ⅰ相比參數(shù)量一樣,但跨層連接結(jié)構(gòu)下平均識(shí)別錯(cuò)誤率和處理速度均優(yōu)于LFaceA-Ⅰ。LFaceA和LFaceA-Ⅱ相比雖然網(wǎng)絡(luò)層數(shù)完全一樣,但采用了深度可分離卷積結(jié)構(gòu)后,參數(shù)量僅是LFaceA-Ⅱ的1/5,而且參數(shù)的減少對識(shí)別錯(cuò)誤率和處理速度影響不大。LFaceA-Ⅲ因?yàn)槿コ藢傩宰R(shí)別分支,其參數(shù)量最少,但識(shí)別的速度和錯(cuò)誤率與LFaceA相比有所降低。LFaceA-Ⅳ模型的參數(shù)量最大,但每個(gè)屬性都有獨(dú)立的識(shí)別分支,并未降低識(shí)別錯(cuò)誤率。
表5 消融實(shí)驗(yàn)結(jié)果Table 5 Results of ablation experiment
由實(shí)驗(yàn)結(jié)果可以看出,模型LFaceA的識(shí)別錯(cuò)誤率最低,雖然在參數(shù)量上高于去除了屬性識(shí)別分支的LFaceA-Ⅲ,但其大小僅2.7 MB,完全可以部署于資源有限的移動(dòng)或便攜式設(shè)備上。分析LFaceA模型特點(diǎn)可得出以下3點(diǎn)結(jié)論:
1)輕量化殘差模塊中采用的可分離卷積結(jié)構(gòu)對模型輕量化效果提升明顯,同時(shí)對識(shí)別錯(cuò)誤率的影響不大,可廣泛應(yīng)用于需要輕量化的網(wǎng)絡(luò)模型中。
2)輕量化殘差模塊間的跨層連接方式對模型識(shí)別錯(cuò)誤率的影響較大,未采用跨層連接的網(wǎng)絡(luò)錯(cuò)誤率有大幅上升。隨著深度的增加,跨層連接有利于特征在層間的保持,因此提升了識(shí)別效果。
3)關(guān)聯(lián)屬性共享識(shí)別網(wǎng)絡(luò)的方法,有效利用了關(guān)聯(lián)屬性的共享特征,提升了關(guān)聯(lián)屬性的識(shí)別效果。
本文提出的網(wǎng)絡(luò)模型在CelebA上用接近20萬張圖片進(jìn)行了測試,平均錯(cuò)誤率降低至8.45%。數(shù)據(jù)集中的所有圖像均標(biāo)注了40種人臉屬性,其中75%的圖像都能正確識(shí)別出35個(gè)以上的屬性,而單張圖像能正確識(shí)別的最低屬性個(gè)數(shù)是27,且只有2張,正確識(shí)別屬性數(shù)在30~35之間的占總圖像數(shù)的24%,正確識(shí)別屬性數(shù)在27~30的圖片僅有19張。
從上述統(tǒng)計(jì)數(shù)據(jù)可以看出,99%的圖像都能正確識(shí)別30個(gè)以上的人臉屬性。本文將屬性識(shí)別個(gè)數(shù)達(dá)到最高值40的和屬性識(shí)別個(gè)數(shù)較少的圖像進(jìn)行了可視化。如圖6所示,圖中數(shù)字比值為人臉屬性識(shí)別正確個(gè)數(shù)與屬性總數(shù)之比。圖像分為2組,圖6(a)組為識(shí)別效果好的人臉圖像組,圖6(b)組為識(shí)別效果差的人臉圖像組。從可視化結(jié)果上可以觀察到,識(shí)別效果差的人臉圖像受背景復(fù)雜、非常規(guī)眼鏡配戴方式等因素的影響較大。
圖6 人臉圖像屬性識(shí)別結(jié)果
本文設(shè)計(jì)了一個(gè)面向人臉屬性識(shí)別的輕量化多任務(wù)學(xué)習(xí)網(wǎng)絡(luò)。網(wǎng)絡(luò)基于輕量化殘差模塊進(jìn)行構(gòu)建,包括特征學(xué)習(xí)共享網(wǎng)和屬性識(shí)別分支網(wǎng)兩部分。輕量化殘差模塊由兩個(gè)深度可分離卷積結(jié)構(gòu)組合而成,模塊間采用跨層連接。屬性識(shí)別分支網(wǎng)基于屬性類間的關(guān)聯(lián)關(guān)系進(jìn)行分組,相互間關(guān)聯(lián)程度大的屬性共享一個(gè)識(shí)別分支。實(shí)驗(yàn)結(jié)果表明,本文提出的網(wǎng)絡(luò)模型降低了空間開銷,提升了預(yù)測速度,同時(shí)未引起識(shí)別錯(cuò)誤率的升高,達(dá)到了實(shí)時(shí)應(yīng)用的要求,可以方便地部署在資源有限的移動(dòng)便攜式設(shè)備上。下一步將結(jié)合時(shí)空信息將算法擴(kuò)展到視頻人臉屬性識(shí)別任務(wù)中。