摘 ?要: 為了解決目前流行的人臉識別系統(tǒng)存在問題(如:面部遮擋,姿態(tài)改變,光線扭曲等),根據(jù)人的表情做出準(zhǔn)確情感判斷,提出了如下的卷積神經(jīng)網(wǎng)絡(luò)的分布式訓(xùn)練識別系統(tǒng):由兩部分構(gòu)成:第一部分借鑒YOLO(You Only Look Once)算法實現(xiàn)目標(biāo)檢測,準(zhǔn)確定位復(fù)雜背景圖像中人臉的位置;第二部分使用基于VGGnet的改良結(jié)構(gòu),對已定位到的面部表情進(jìn)行分類。相比于端到端的模型,可以引入更多的可控的人類學(xué)習(xí)經(jīng)驗與有效訓(xùn)練數(shù)據(jù),從而得到更優(yōu)秀的分類結(jié)果。實驗結(jié)果表明該系統(tǒng)的可行性,在FER 2013數(shù)據(jù)集上產(chǎn)生了較優(yōu)異的結(jié)果,總正確率達(dá)69.83%。相對于現(xiàn)有算法,具有容易訓(xùn)練、準(zhǔn)確度高、實時性強(qiáng)、魯棒性好與易增添后續(xù)功能等優(yōu)點,未來有很大提升空間。
關(guān)鍵詞: 表情識別;卷積神經(jīng)網(wǎng)絡(luò);分布式訓(xùn)練;YOLO算法;VGGNet結(jié)構(gòu)
中圖分類號: TP391.41 ? ?文獻(xiàn)標(biāo)識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.01.035
本文著錄格式:董飛艷. 卷積神經(jīng)網(wǎng)絡(luò)的分布式訓(xùn)練在表情識別中的應(yīng)用[J]. 軟件,2020,41(01):160164
【Abstract】: To solve the problems of the current popular face recognition system, such as: facial occlusion, posture change, light distortion, etc. According to the expression of person to make accurate emotional judgment, the following Distributed Training recognition system of convolutional neural network is proposed. It consists of two parts: the first part uses YOLO (You Only Look Once) Algorithm to achieve target detection and precisely locates the position of face in complex background images; the second part refers to the structure of improved VGGnet structure to classify the positioned facial expressions. Compared to the end-to-end model, this model can introduce more controllable human learning experience and obtain more effective training data to obtain better classification consequences. The feasibility of the system can be verified in experimental consequences that has shown the total correct rate at 69.83%, testing on the FER 2013 dataset. Compared with the existing algorithms, it has the merits including easily trained, high accuracy, strong real-time performance, good robustness, easy to add subsequent functions and so on. Thus, there is much room for improvement in the future.
【Key words】: Expression recognition; Convolutional neural network; Distributed training; YOLO algorithm; VGGNet Structure
0 ?引言
隨著計算機(jī)技術(shù)及其相關(guān)學(xué)科的快速發(fā)展,人們對人機(jī)交互的需求日益增加,而面部表情作為計算機(jī)理解人類情感的前提,對人機(jī)互動技術(shù)發(fā)展具有重大意義。國內(nèi)外很多研究機(jī)構(gòu)及學(xué)者致力于這方面的研究,并己取得了一些成果:20世紀(jì)70年代美國心理學(xué)家Ekman和Friesen[1]對現(xiàn)代人臉表情
識別做出了開創(chuàng)性的工作。Ekman定義了人類的6種基本表情:高興、生氣、吃驚、恐懼、厭惡和悲傷,確定了識別對象的類別;其次是建立了面部動作編碼系統(tǒng)(Facial Action Coding System,F(xiàn)ACS),使研究者按照系統(tǒng)劃分的一系列人臉動作單元(Action Unit,AU)來描述人臉面部動作;1978年,Suwa[2]等人對一段人臉視頻動畫進(jìn)行了人臉表情識別的最初嘗試,一系列的研究在人臉表情視頻序列上展開;20世紀(jì)90年代,Mase和Pentland [3] 使用光流來判斷肌肉運(yùn)動的主要方向,然后提取局部空間中的光流值,組成表情特征向量,最后利用表情特征向量構(gòu)建人臉表情識別系統(tǒng),該系統(tǒng)可以識別高興、生氣、厭惡和驚奇4種表情,識別率接近80%。
近年來,F(xiàn)ER(Facial Expression Recognition,面部表情識別)技術(shù)正逐漸從實驗室數(shù)據(jù)集測試走向挑戰(zhàn)真實場景下的識別。盡管深度學(xué)習(xí)具有強(qiáng)大的特征學(xué)習(xí)能力,它在FER中應(yīng)用還有一些問題。首先,深度神經(jīng)網(wǎng)絡(luò)需要大量訓(xùn)練數(shù)據(jù)來避免過擬合。然而,現(xiàn)存的面部表情數(shù)據(jù)庫不足以訓(xùn)練出性能完美的深度網(wǎng)絡(luò)。除此之外,由于不同人物屬性,例如年齡、性別、宗教背景和表達(dá)能力,主體間具有高變化性,姿態(tài)、光照和遮擋在不受限的表情場景也十分常見。這些因素和表情之間是非線性關(guān)系,因此需要增強(qiáng)深度網(wǎng)絡(luò)對類內(nèi)變化的健壯性,以及學(xué)習(xí)有效的表情特征表示。
因此本文提出了在深度學(xué)習(xí)基礎(chǔ)上,結(jié)合分布式神經(jīng)網(wǎng)絡(luò)的特點來設(shè)計克服以上的缺點的系統(tǒng)并進(jìn)行相關(guān)學(xué)習(xí)與測試。
本文主要創(chuàng)新點有。
(1)使用分布式訓(xùn)練結(jié)構(gòu)(如圖1所示):將表情識別系統(tǒng)分為人臉監(jiān)測與表情識別2個步驟,從而各自步驟可以引入更多人類先驗知識,降低訓(xùn)練難度,獲取更高魯棒性。
(2)復(fù)現(xiàn)并改進(jìn)了YOLO和VVGNet算法,并將其運(yùn)用于人臉識別任務(wù)。
(3)確定完整的模型體系結(jié)構(gòu)和數(shù)據(jù)處理方法,利用FER2013數(shù)據(jù)集中28709個樣本進(jìn)行了實驗測試,總準(zhǔn)確率達(dá)到69.83%。
本文安排內(nèi)容如下:第一部分引言,第二部分介紹人臉識別模塊的構(gòu)成原理,第三部分介紹表情分類模塊的構(gòu)成原理,第三部分介紹實驗結(jié)果并進(jìn)行對比分析,第四部分對本文方法進(jìn)行總結(jié)。
1 ?目標(biāo)定位:基于YOLO的改進(jìn)算法
受到Y(jié)OLO[4]模型的啟發(fā),利用多層卷積層加上兩個全連接層來做人臉位置檢測,前面網(wǎng)絡(luò)的卷積層用于從圖像中提取特質(zhì),后面的全連接層用于輸出概率以及坐標(biāo)點。在特征提取部分更多受到了ResNet[5]的啟發(fā),用到了3*3和1*1卷積組合的方式,3*3卷積層用于提取各部分特征,而1*1卷積層用于跨通道的信息整合。最終網(wǎng)絡(luò)輸出7*7*30的向量作為預(yù)測。具體網(wǎng)絡(luò)如圖2所示。
S.Ren[6]等人的工作中證明對網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練可以提高最終的預(yù)測表現(xiàn)。將這個復(fù)雜的模型在ImageNet 1000-classcompetition dataset上進(jìn)行預(yù)訓(xùn)練。在預(yù)訓(xùn)練時,網(wǎng)絡(luò)的最后兩層用一個Average- pooling layer(平均池化層)和一個Fully connected layer(完全連接層)作為替代。從處理分類問題轉(zhuǎn)化成探測問題,產(chǎn)生不同的處理輸出,同時大量的數(shù)據(jù)被用于訓(xùn)練卷積層的特征提取能力。
最終的算法輸出既包含了概率,也包含了邊界框定的寬與高,并且用圖像的原始尺寸來對其進(jìn)行歸一化,使得邊界高與寬均在0~1以內(nèi)。
2 ?表情識別:基于VGGNet網(wǎng)絡(luò)的殘差支路
在VGGNet[7]結(jié)構(gòu)上,采用殘差單元(Residual unit)訓(xùn)練超深層次的神經(jīng)網(wǎng)絡(luò)(如圖3所示):用3*3、1*1組合的網(wǎng)絡(luò)結(jié)構(gòu),用以高效得提取特征,實驗證明這種網(wǎng)絡(luò)結(jié)構(gòu)可以高效的提取圖片信息中的特征很有利于后續(xù)的表情分類。
采用Bottleneck Block支路,比傳統(tǒng)的卷積結(jié)構(gòu)多了一個short-cut支路,用于傳遞低層的信息,使得網(wǎng)絡(luò)能夠深度訓(xùn)練。殘差支路上先通過一個1×1的卷積使得中間卷積的通道數(shù)減少為1/4;中間的普通卷積做完卷積后輸出通道數(shù)等于輸入通道數(shù);第三個卷積用于增加(恢復(fù))通道數(shù),使得Bottleneck的輸出通道數(shù)等于Bottleneck的輸入通道數(shù)。這兩個1×1卷積有效地較少了卷積的參數(shù)個數(shù)和計算量。
人臉圖像是高度密集的數(shù)據(jù)信息,內(nèi)部包含了很多細(xì)微的表情如:眼睛睜大,眼皮拉緊,嘴角上揚(yáng),出現(xiàn)褶皺等眾多信息,就是人心情的具象表征,需要先通過卷積神經(jīng)網(wǎng)絡(luò)把這些特征分類提取出來,然后通過訓(xùn)練線性分類器得到最終的分類結(jié)果。具體的網(wǎng)絡(luò)設(shè)計如圖4所示。
3 ?結(jié)果與分析
本章在第2與第3章的原理基礎(chǔ)上對本文設(shè)計的檢測算法進(jìn)行實現(xiàn)測試,并進(jìn)行評估。從數(shù)據(jù)的收集,模型參數(shù)的選取以及結(jié)構(gòu)優(yōu)化等方面對算法進(jìn)行了分析,同時也與同類型的算法進(jìn)行比較,分析本文算法的優(yōu)勢和不足。
進(jìn)行訓(xùn)練時,沒有直接采用表情數(shù)據(jù)集,而是先采用通用性更強(qiáng)的圖像分割數(shù)據(jù)集分別進(jìn)行預(yù)訓(xùn)練并將兩部分模型分塊調(diào)試再組合使用,最終在模型的訓(xùn)練階段,通過多次的誤差分析進(jìn)行參數(shù)調(diào)整,最終得到了較好的效果。
實驗配置如下:硬件平臺:中央處理器(Center Processing Unit,CPU):Intel(R)Xeon(R)E5- 2687V3,主頻為:2.5 GHz,內(nèi)存為128 GB;圖像處理器(Graphic Processing Unit,GPU)CUDA加速實現(xiàn):四路NVIDIA GeForce GTC1080 Ti。軟件平臺:采用PyTorch1.1.0版深度學(xué)習(xí)框架進(jìn)行算法 實現(xiàn)。
3.1 ?訓(xùn)練、測試數(shù)據(jù)集
(1)表情識別
首先在ImageNet 1000-classcompetition dataset上進(jìn)行預(yù)訓(xùn)練。最終在測試中,采用WIDER FACE的medium數(shù)據(jù)集進(jìn)行測試,learning rate策略如下。
在完成預(yù)訓(xùn)練之后,把模型轉(zhuǎn)換為目標(biāo)檢測輸出,采用了難度最大,各種難點比較全面的WIDER FACE數(shù)據(jù)集再次進(jìn)行訓(xùn)練120輪次,將batch設(shè)為64,momentum(動量)設(shè)為0.9,衰減設(shè)為0.005。為了防止過擬合,在最后兩層,利用N Srivastava[8]等人提出的隨機(jī)失活(dropout)正則化來提高系統(tǒng)提高泛化能力,將dropout設(shè)為0.1,其余層設(shè)為0.4。前5輪采用warmup策略,使其在0.0001~0.001之間波動,此后采用0.05的學(xué)習(xí)率繼續(xù)訓(xùn)練,并用隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD)[9-10]優(yōu)化方式進(jìn)一步自由優(yōu)化。
預(yù)訓(xùn)練具有以下特點:圖像分辨率普遍偏高;每張圖像的人臉數(shù)據(jù)偏多;分訓(xùn)練集train/驗證集val/測試集test,分別占40%/10%/50%;測試集非常大,結(jié)果可靠性極高,而且測試集的標(biāo)注結(jié)果(ground truth)沒有公開,需要提交結(jié)果給官方比較,更加公平公正,適合訓(xùn)練。
(2)表情分類
采用Kaggle Facial Expression Recognition Challenge Database對表情識別網(wǎng)絡(luò)進(jìn)行訓(xùn)練。任務(wù)是根據(jù)面部表情中顯示的情緒將每個面部分類為七個類別之一(0=憤怒,1=厭惡,2=恐懼,3=快樂,4=悲傷,5=驚喜,6=中立)。訓(xùn)練集包含兩列,“情感”和“像素”,共包含28 709個示例。對于圖像中存在的情緒。
本文系統(tǒng)的最終輸出也以七類表情判別為基準(zhǔn),通過閾值法進(jìn)行面部表情的最終判定。
(3)結(jié)合訓(xùn)練
關(guān)于兩部分模型配合使用方面,在選擇檢測并標(biāo)定人臉后,將輸出圖像存儲在本地后,再作為第二個表情識別網(wǎng)絡(luò)的輸入而不是對兩個網(wǎng)絡(luò)直接級聯(lián)。這樣操作的優(yōu)點:1. 是防止級聯(lián)模型過大難以訓(xùn)練;2. 兩部分模型需要提取的特征傾向性不同,非級聯(lián)組合可以更好的發(fā)揮各部分不同的、經(jīng)過改進(jìn)的Loss函數(shù)的特點;3. 方便調(diào)試,方便接入其它功能以及后續(xù)開發(fā)。
3.2 ?訓(xùn)練結(jié)果及分析
(1)人臉識別部分
網(wǎng)絡(luò)訓(xùn)練結(jié)果。
首先對于訓(xùn)練集訓(xùn)練部分,圖中行坐標(biāo)為迭代次數(shù),縱坐標(biāo)為訓(xùn)練集Loss函數(shù)值,圖7中可以看出Loss函數(shù)值一直在穩(wěn)定下降,說明本文采取的新的Loss函數(shù)在數(shù)據(jù)集上有較好的表征特性,且采用的殘差策略可以很好的讓模型快速訓(xùn)練擬合數(shù)據(jù)集特征。
數(shù)據(jù)集訓(xùn)練結(jié)束之后,計算了模型的Precision Rate(精確率)和Recal(召回率),被廣泛用于信息檢索和統(tǒng)計學(xué)分類領(lǐng)域的指標(biāo),來對人臉目標(biāo)檢測結(jié)果質(zhì)量進(jìn)行評價。
可以看到本文方法較好的預(yù)測了人臉的位置并做出精準(zhǔn)的框定,同L. Bourdev[11](圖中Poselets)與N.Dalal[12](圖中D&T)等人的工作進(jìn)行橫向?qū)Ρ?,均有較好的檢測效果。檢測完成后,本文算法將利用輸出結(jié)果變形映射為相同大小的圖片,為下一部分神經(jīng)網(wǎng)絡(luò)做人臉表情識別做準(zhǔn)備。
(2)模型級聯(lián)訓(xùn)練結(jié)果
擇在FER2013(Kaggle Facial Expression Recognition Challenge Dataset)中的testset內(nèi)進(jìn)行測試。完成200輪訓(xùn)練之后,在共28709張測試數(shù)據(jù)中,正確預(yù)測了其中20047張表情,總準(zhǔn)確率達(dá)到了69.83%,其中對于高興、驚訝表情的識別準(zhǔn)確率較高,而對于恐懼表情識別準(zhǔn)確率較低。具體各表情識別結(jié)果準(zhǔn)確率如下,列標(biāo)表示實際表情,行標(biāo)表示本文算法預(yù)測表情結(jié)果。
由表格可以看出該模型對happy,surprise兩類表情識別準(zhǔn)確率相對較高,而對angry,fear,sad類表情識別準(zhǔn)確率較低。主要原因為。
①在訓(xùn)練集中,各類表情數(shù)據(jù)量占比不統(tǒng)一,導(dǎo)致模型對數(shù)據(jù)量大的表情類型更有傾向性。
②angry,fear,sad等表情相似點較多,如皺眉,嘴角緊張,眼睛微瞪等等,不利于相互之間做明顯區(qū)分。
針對以上兩點,做出以下對策:(1)考慮對數(shù)據(jù)集進(jìn)行刪減,讓各個表情的訓(xùn)練數(shù)據(jù)保持一致;(2)例如在表情分類模塊采用非標(biāo)準(zhǔn)Loss函數(shù),對相似度大的表情進(jìn)行針對性優(yōu)化區(qū)分,引入Jiankang Deng[13]等人提出的利用更多角度空間信息的Arcface Loss函數(shù)完成進(jìn)一步的優(yōu)化。
除了標(biāo)準(zhǔn)數(shù)據(jù)集外,也利用網(wǎng)上搜索到的表情包進(jìn)行識別,測試該算法在更貼近生活情況下的識別效果。
結(jié)果圖中橫軸7個坐標(biāo)為本算法可以識別的7種表情:Angry、Disgust、Fear、Happy、Sad、Surprise、Neutral,縱軸值則為判定為該表情的可能性,最終挑選最高可能性的結(jié)果進(jìn)行輸出。由案例可以看出,對于人臉在圖像中占據(jù)不同比例、臉部不同朝向、對臉部的遮擋、較濃的妝容、不同光照等情況,均有較好的表情識別效果。
4 ?結(jié)論
本文將識別系統(tǒng)網(wǎng)絡(luò)分為兩部分,第一部分準(zhǔn)確定位復(fù)雜背景圖像中的人臉的位置,將實時性高,魯棒性強(qiáng)的YOLO模型做出針對性改進(jìn)應(yīng)用于人臉監(jiān)測;第二部分進(jìn)行表情分類,利用簡化后的VGGnet結(jié)構(gòu)對定位后的人臉照片的情感表達(dá)進(jìn)行高效率地分類,同時引入新型的附加角度邊緣損失函數(shù),改進(jìn)網(wǎng)絡(luò)的特征提取效率。與直接輸入圖片到輸出分類的簡單端對端模型相比,引入更多先驗知識,獲得更有效的數(shù)據(jù),產(chǎn)生了可應(yīng)用于復(fù)雜環(huán)境的更優(yōu)秀的分類系統(tǒng)。
總之,本文中描述的新型人臉表情識別算法,能較好地完成計算機(jī)人臉表情識別任務(wù),克服傳統(tǒng)算法的部分缺陷,引入較多的人類知識可控因素,從而達(dá)到網(wǎng)絡(luò)容易訓(xùn)練,識別準(zhǔn)確度高,系統(tǒng)事實性強(qiáng),魯棒性好等特優(yōu)點??梢詰?yīng)用于較多人際交互場景,對計算機(jī)系統(tǒng)的人機(jī)交互做出高層次的指導(dǎo)。同時,該系統(tǒng)算法也有繼續(xù)研究、改進(jìn)的意義,有較大的提升空間。
參考文獻(xiàn)
[1] Ekman P, Friesen W V. Contacts across cultures in the face and emotion[J]. Journal of personality and social psychology, 1971, 17(2): 124-129.
[2] Suwa M, Sugie N, Fujimora K. A Preliminary Note on Pattern Recognition of Human Emotional Expression[M]. [S.n]. Proceeding of the Fourth International Joint Conference on Pattern Recognition.1978, 408-410.
[3] Mase K, Pentland A. Automatic lipreading by optical-flow analysis[J]. Systems and Computers in Japan, 1991, 22(6): 67-76.
[4] Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2016. IEEE, Las Vegas, 2016: 779-788.
[5] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]//Computer Vision and Pattern Recognition. CVPR, Las Vegas: 2016: 770-778.
[6] Ren S, He K, Girshick R, et al. Object Detection Networks on Convolutional Feature Maps[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2015, 39(7): 1476-1481.
[7] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[C]//International Conference on Learning Representations. San Diego, USA: ICLR, 2015: 1-5.
[8] Srivastava N, Hinton G E, Krizhevsky A, et al. Dropout: a simple way to prevent neural networks from overfitting[J]. Journal of machine learning research, 2014, 15(1): 1929-1958.
[9] Rie Johnson Tong Z. Accelerating Stochastic Gradient Descent using Predictive Variance Reduction[C]//International Conference on Neural Information Processing Systems. Currant Associates Inc. 2013: 315-323.
[10] Shalev-Shwartz S, Singer Y, Srebro N. Pegasos: Primal estimated sub-GrAdient sOlver for SVM. [C]//Machine Learning, Proceedings of the Twenty-Fourth International Conference (ICML 2007), Corvallis, Oregon, USA, June 20-24, 2007. ACM, 2007.
[11] Bourdev L D, Malik J. Poselets: Body Part Detectors Trained Using 3D Human Pose Annotations[C]//IEEE 12th International Conference on Computer Vision, ICCV 2009, Kyoto, Japan, September 27-October 4, 2009. IEEE, 2009.
[12] Dalal N, Triggs B. Histograms of Oriented Gradients for Human Detection[C]//2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05). IEEE, 2005.
[13] Deng J, Guo J, Zafeiriou S. Arcface:Additive angular margin Loss for deep face recognition[J]. arXiv preprintarXiv: 1801. 07698, 2018.