馮 桑, 方淦杰, 嚴(yán)楷淳, 歐陽潔榆
(廣東工業(yè)大學(xué) 機(jī)電工程學(xué)院,廣東 廣州 510006)
虛擬現(xiàn)實駕駛培訓(xùn)系統(tǒng)己經(jīng)被廣泛應(yīng)用到駕駛技能培訓(xùn)以及交通安全教育領(lǐng)域,這種駕駛培訓(xùn)方式能夠以逼真的駕駛場景高度還原真實訓(xùn)練場地,有效提升學(xué)員學(xué)習(xí)駕駛技能的效率與體驗。
但是,現(xiàn)有面向車輛駕駛培訓(xùn)的虛擬現(xiàn)實系統(tǒng)存在較為明顯的缺點。首先,學(xué)員在訓(xùn)練時得不到教練員隨車指導(dǎo),系統(tǒng)主要是通過傳感器和學(xué)員的操作信息來判斷學(xué)員的駕駛表現(xiàn),但是這種判斷僅限于是否符合駕駛考試規(guī)則,并不能準(zhǔn)確反映學(xué)員的真實駕駛水平,缺乏有效的訓(xùn)練指導(dǎo)功能。其次,系統(tǒng)的訓(xùn)練內(nèi)容是針對駕駛考試進(jìn)行設(shè)置的,功能單一,不能根據(jù)學(xué)員的表現(xiàn)來制定個性化的訓(xùn)練方案,訓(xùn)練效果達(dá)不到預(yù)期。
表情識別是實現(xiàn)人機(jī)交互的有效手段,人與人之間交流,有55 %的信息是通過表情來傳遞。面對復(fù)雜多變的虛擬場景,情緒會嚴(yán)重影響學(xué)員的認(rèn)知行為,通過實時檢測并準(zhǔn)確識別出學(xué)員的表情變化,可以掌握學(xué)員在培訓(xùn)過程中的情緒狀態(tài),對提升訓(xùn)練效率以及促進(jìn)學(xué)員個性化培訓(xùn)發(fā)展顯得尤為重要。因此,可以把表情識別算法嵌入虛擬現(xiàn)實駕駛培訓(xùn)系統(tǒng)來解決這個問題。
傳統(tǒng)的表情識別方法,如局部二值模式、Gobar特征、定向梯度直方圖、非負(fù)矩陣分解和尺度不變特征變換等,在一定程度上可能會丟失原有的表情特征,難以提取到深層次的本質(zhì)特征。隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)被廣泛應(yīng)用到表情識別領(lǐng)域[1,2],AlexNet,VGGNet,GoogleNet和ResNet等神經(jīng)網(wǎng)絡(luò)模型的出現(xiàn),極大促進(jìn)了表情識別的進(jìn)展。
神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)量的要求高,訓(xùn)練時需要大量數(shù)據(jù)。如果數(shù)據(jù)量不足,容易使網(wǎng)絡(luò)訓(xùn)練過擬合,導(dǎo)致訓(xùn)練的模型對新數(shù)據(jù)的表現(xiàn)較差。而圖像底層元素具有相似性,遷移學(xué)習(xí)可以將標(biāo)注數(shù)據(jù)集的訓(xùn)練結(jié)果,應(yīng)用到一個全新的領(lǐng)域數(shù)據(jù)上,從而改善過擬合[3]。
此外,為獲得更好的識別精度,需要具有更寬、更深或更高的圖像分辨率,導(dǎo)致模型參數(shù)增多,訓(xùn)練時間增長。在此背景下,研究者提出了各種緊湊型CNN,以平衡模型精度與計算成本。EfficientNet[4]網(wǎng)絡(luò)采用復(fù)合系數(shù)的縮放方法,來平衡網(wǎng)絡(luò)的深度、寬度和圖像分辨率,可大幅減少模型參數(shù)量,實現(xiàn)模型輕量化。
本文針對智能駕培系統(tǒng)的應(yīng)用,提出一種改進(jìn)型的EfficientNet(modified-EfficicentNet,M-EfficientNet)構(gòu)建人臉表情圖像的自動識別模型,同時為避免圖像樣本過少帶來的模型過擬合問題,采用遷移學(xué)習(xí)及數(shù)據(jù)增強(qiáng)的方法來提高模型的準(zhǔn)確率,以更好地滿足實際檢測的需要。
系統(tǒng)(圖1)先通過圖像采集模塊標(biāo)出人臉位置,將含有表情特征的圖片集提取出來。然后將經(jīng)過預(yù)處理的圖像通過深度學(xué)習(xí)網(wǎng)絡(luò)模型進(jìn)行表情分類,評估學(xué)員狀態(tài),并以此為依據(jù)智能切換虛擬現(xiàn)實場景,有針對性地調(diào)整訓(xùn)練方案。同時,對可能涉及負(fù)面情緒影響的駕駛狀況進(jìn)行標(biāo)記,方便教練員查看、及時介入。
圖1 系統(tǒng)框架設(shè)計
一個簡單卷積神經(jīng)網(wǎng)絡(luò),可以定義如式(1)
(1)
式中Fi為i層的卷積運算,Li為Fi在第i階段重復(fù)Li次,(Hi,Wi,Ci)為第i層輸入的維度。
本文的EfficientNet網(wǎng)絡(luò)結(jié)構(gòu)以MnasNet[5]為基礎(chǔ),使用AutoML[6]方法進(jìn)行搜索,得出使所有卷積層可以按相同比例拓展的系數(shù)。相關(guān)數(shù)學(xué)表達(dá)式如式(2)
(2)
式中d,w和r分別為網(wǎng)絡(luò)深度、寬度和分辨率。Fi,Li,Hi,Wi,Ci分別為基線網(wǎng)絡(luò)預(yù)定義的參數(shù)。而搜索出來的相關(guān)系數(shù)調(diào)整如式(3)
d=αΦ,w=βΦ,r=γΦ
s.t.α·β2·γ2≈2
α≥1,β≥1,γ≥1
(3)
式中α,β,γ為使用網(wǎng)格搜索出來的常量,代表調(diào)整網(wǎng)格的深度、寬度和分辨率;Φ為控制模型擴(kuò)增的自定義的相關(guān)系數(shù)。
EfficientNet使用了MobileNet V2[7]中的MBConv層作為模型的主干網(wǎng)絡(luò),同時使用SENet[8]中的Squeeze和Excitation方法進(jìn)行優(yōu)化。本文對EfficientNet-B0網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了改進(jìn),獲得的M-EfficientNet如表1所示。
表1 M-EfficientNet網(wǎng)絡(luò)結(jié)構(gòu)
ReLU的定義式如(4)
(4)
改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)由輸入層、1個3×3卷積層、7個卷積核為3×3的MBConv層、9個卷積核為5×5的MBConv層、1個1×1卷積層、1個池化層、1個ReLU激活層、1個Dropout層和1個全連接層組成。
本文沿用EfficientNet-B0網(wǎng)絡(luò)結(jié)構(gòu),保留了其原有優(yōu)勢,同時為了增大網(wǎng)絡(luò)的稀疏性加入ReLU激活函數(shù),使提取的特征更具代表性,再加入Dropout函數(shù)防止網(wǎng)絡(luò)陷入過擬合的狀態(tài)。
本文使用交叉熵?fù)p失函數(shù)來計算網(wǎng)絡(luò)輸出的損失。交叉熵能夠衡量同一個隨機(jī)變量中的兩個不同概率分布的差異程度,在機(jī)器學(xué)習(xí)中表示為真實概率分布與預(yù)測概率分布之間的差異,如式(5)
(5)
式中p(xi)為樣本的真實分布概率,q(xi)為預(yù)測樣本的分布概率。
本文在模型訓(xùn)練過程中使用Adam優(yōu)化器動態(tài)調(diào)整學(xué)習(xí)率。Adam是一種對隨機(jī)目標(biāo)函數(shù)執(zhí)行一階梯度優(yōu)化的算法,適合處理含有大量參數(shù)的問題,在訓(xùn)練過程中可以自動調(diào)整參數(shù)。參數(shù)的更新公式如式(6)
(6)
實驗硬件環(huán)境為:Ubuntu 16.04系統(tǒng),NVIDIA GeForce GTX1080Ti GPU,16 G運行內(nèi)存;軟件環(huán)境為:Python 3.7.4,Pytorch 1.4.0深度學(xué)習(xí)框架。
使用的數(shù)據(jù)集有Fer2013和CK+數(shù)據(jù)集。針對兩個數(shù)據(jù)集中數(shù)據(jù)樣本不平衡、數(shù)據(jù)分類不明確等問題,首先對數(shù)據(jù)進(jìn)行圖像歸一化處理,然后對樣本不平衡的類別進(jìn)行隨機(jī)旋轉(zhuǎn)±5°、水平翻轉(zhuǎn)等操作擴(kuò)充訓(xùn)練數(shù)據(jù)集。
首先,在ImageNet數(shù)據(jù)集中預(yù)訓(xùn)練M-EfficientNet,初始學(xué)習(xí)率為0.01,batchsize為256,得到預(yù)訓(xùn)練模型。然后,凍結(jié)低層網(wǎng)絡(luò)結(jié)構(gòu),只訓(xùn)練全連接層進(jìn)行微調(diào),學(xué)習(xí)率為0.000 5,batchsize為64,迭代次數(shù)100。
Fer2013數(shù)據(jù)集是由35 887張含有憤怒、厭惡、恐懼、高興、悲傷、驚訝和中性7種表情圖片組成,如圖2所示。數(shù)據(jù)集一共分為了三個部分:訓(xùn)練集28 709張、公共測試集3 589張和私有測試集3 589張。
圖2 Fer2013數(shù)據(jù)集7類表情樣本示例
本文實驗與主流網(wǎng)絡(luò)ResNet—18進(jìn)行對比,實驗記錄了在使用不同網(wǎng)絡(luò)的訓(xùn)練過程中模型準(zhǔn)確率的變化情況。圖3為EfficientNet網(wǎng)絡(luò)與ResNet網(wǎng)絡(luò)識別準(zhǔn)確率隨著迭代次數(shù)的變化情況。
圖3 EfficientNet網(wǎng)絡(luò)模型準(zhǔn)確率變化對比
ResNet_T,EfficientNet_T,M-EfficientNet_T曲線分別為經(jīng)過遷移學(xué)習(xí)各網(wǎng)絡(luò)準(zhǔn)確率變化情況,EfficientNet曲線為未經(jīng)過遷移學(xué)習(xí)識別準(zhǔn)確率變化情況。從圖3中可以得出,網(wǎng)絡(luò)模型的識別準(zhǔn)確率隨著迭代次數(shù)的增多而趨于穩(wěn)定狀態(tài),未經(jīng)過遷移學(xué)習(xí)的EfficientNet準(zhǔn)確率達(dá)到穩(wěn)定狀態(tài)時最低的,經(jīng)過遷移學(xué)習(xí)的ResNet的識別準(zhǔn)確率比EfficientNet略高,經(jīng)過遷移學(xué)習(xí)的M-EfficientNet識別準(zhǔn)確率最高。
實驗中,M-EfficientNet_T識別的最高準(zhǔn)確率為72.6 %。另外,EfficientNet和M-EfficientNet的網(wǎng)絡(luò)參數(shù)大小均為15.5 MB,而ResNet為42.7 MB,減少了64 %。本文提出的M-EfficientNet算法不僅在識別準(zhǔn)確率上高于ResNet,并且在參數(shù)量上也大大減少;比起EfficientNet雖然參數(shù)大小一樣,但識別的準(zhǔn)確率提高了,在一定程度上說明了遷移學(xué)習(xí)在表情識別應(yīng)用和EfficientNet網(wǎng)絡(luò)改進(jìn)的有效性。
混淆矩陣[9]是機(jī)器學(xué)習(xí)中總結(jié)分類模型預(yù)測結(jié)果的情形分析表,為了比較本文所提出的M-EfficientNet方法與其他方法的不同點,編制了在Fer2013數(shù)據(jù)集上驗證的混淆矩陣,如表2所示。
表2 M-EfficientNet在Fer2013數(shù)據(jù)集驗證的混淆矩陣
由混淆矩陣可以看出,本文的識別模型對于高興類表情識別的準(zhǔn)確率是最高的,達(dá)到89 %,對于驚訝類表情和厭惡類的識別準(zhǔn)確率分別為81 %和78 %,而憤怒類、恐懼類、悲傷類和中性類的表情識別準(zhǔn)確率都在總體識別正確率72 %之下。
經(jīng)分析,高興類的識別率相對較高的原因是由于訓(xùn)練樣本中,類別的數(shù)量比較多,并且高興類的高層特征可能在網(wǎng)絡(luò)中得到好的反饋。而驚訝類和厭惡類中的訓(xùn)練樣本雖然數(shù)量也足夠多,但是相對于高興類的高層特征沒那么容易提取,驚訝類易混淆的類別是恐懼類,厭惡類易混淆的類別是生氣類。其他低于總體識別率的四個類別,容易混淆的類都有多個,是因為訓(xùn)練樣本中這幾個類別的數(shù)量相對其他類較少,類內(nèi)之間特別分界不明顯。
模型總體的識別率在Fer2013數(shù)據(jù)集中各類表情都不算太高,主要原因是因為數(shù)據(jù)集的來源主要是通過網(wǎng)絡(luò)爬取的,數(shù)據(jù)集中且存在大量未經(jīng)過清洗的圖片,有包括漫畫人臉、非人臉、側(cè)臉和類內(nèi)分類不正確等情況。
為了驗證本文識別算法在Fer2013數(shù)據(jù)集上與其他算法的不同點,還與其他算法進(jìn)行了準(zhǔn)確率的對比,如表3所示。目前在Fer2013數(shù)據(jù)集上的人工識別準(zhǔn)確率為65 %±5 %,本文算法的準(zhǔn)確率為72.6 %,已達(dá)到人工識別的效果。與其他學(xué)者所研究的算法[10~13]相比,本文算法在準(zhǔn)確率上也有一定的優(yōu)勢。
表3 M-EfficientNet與其他方法在Fer2013準(zhǔn)確率上的對比
CK+數(shù)據(jù)集是由123名不同人的面部表情圖像組成。實驗為了對比與其他方法的不同點,只取憤怒、厭惡、恐懼、高興、悲傷、驚訝和中性七類表情進(jìn)行實驗,實驗步驟如Fer2013步驟一樣。CK+數(shù)據(jù)集七種表情如圖4所示。
圖4 CK+數(shù)據(jù)集7類表情樣本示例
本文算法在CK+數(shù)據(jù)集上驗證的混淆矩陣如表4所示。
表4 M-EfficientNet在CK+數(shù)據(jù)集上驗證的混淆矩陣
在CK+表情識別的混淆矩陣中,恐懼類和高興類的識別準(zhǔn)確率達(dá)到100 %,其他類別的識別率基本上都在95 %左右。與Fer2013數(shù)據(jù)集的識別效果對比,在CK+數(shù)據(jù)集的識別準(zhǔn)確率高很多,主要原因是CK+數(shù)據(jù)集獲取的訓(xùn)練樣本更嚴(yán)格,相對Fer2013數(shù)據(jù)集雜質(zhì)偏多以及類內(nèi)誤分較多的情況,在CK+數(shù)據(jù)集上獲得較高的識別準(zhǔn)確率是有據(jù)可循的。
本文算法在CK+數(shù)據(jù)集的識別率與其他方法[14~16]的識別準(zhǔn)確率對比情況如表5所示。在CK+的準(zhǔn)確率與其他的算法的比較中,本文算法的準(zhǔn)確率達(dá)到了96.7 %,實驗識別效果較目前算法有優(yōu)勢。
表5 M-EfficientNet與其他方法在CK+準(zhǔn)確率上的對比
本文提出了一種基于改進(jìn)型的Efficienet表情識別方法,通過在網(wǎng)絡(luò)層加入ReLu激活函數(shù),使網(wǎng)絡(luò)模型提取更具代表性的網(wǎng)絡(luò)特征,同時加入Dropout使網(wǎng)絡(luò)不容易陷入過擬合狀態(tài)。加入幾何歸一化和灰度歸一化和數(shù)據(jù)增強(qiáng)平衡分類中內(nèi)類數(shù)據(jù)不平衡情況,使用M-EfficientNet通過遷移學(xué)習(xí)得到圖像底層相似特征,再對預(yù)訓(xùn)練的網(wǎng)絡(luò)進(jìn)行提取表情圖像的高級特征,從而提高表情識別準(zhǔn)確率。在Fer2013和CK+兩個數(shù)據(jù)集上分別取得72.6 %和96.7 %的結(jié)果,并且識別模型的參數(shù)大小比主流的ResNet—18減小了64 %。
基于本文研究的表情識別算法可準(zhǔn)確識別學(xué)員的面部表情,且參數(shù)量較小,易于實現(xiàn)輕量化,方便后續(xù)在智能駕培系統(tǒng)端部署,從而實現(xiàn)智能培訓(xùn)。在未來工作中,將在保證模型準(zhǔn)確率的同時繼續(xù)改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),增大模型的泛化能力。