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