范文杰,田秀云
(廣東海洋大學(xué) 電子與信息工程學(xué)院,廣東 湛江 524088)
人臉表情是人類個體行為心理信息以及個體面部特征在大量的面部肌肉共同作用下完成的,是在眼神接觸、肢體接觸、聽說交流之外最重要的情感交流途徑,且這些人類面部表情中透露出的信息與人的精神狀況、健康狀況、情感狀況等信息高度相關(guān)。人臉表情識別可以廣泛地應(yīng)用到駕駛監(jiān)督、醫(yī)療、安全、刑偵、教育等領(lǐng)域,若能夠在這些領(lǐng)域中有效地提取人類面部表情表露出的信息,將給這些領(lǐng)域帶來極大的便利。如表情識別應(yīng)用到教育行業(yè)當(dāng)中,能夠幫助老師了解學(xué)生的心理狀況或?qū)W生對老師授課內(nèi)容的接受程度,信息的及時反饋能讓老師們更好地調(diào)整自己的教學(xué)方式,從而更好地解決學(xué)生的疑惑或?qū)W生的心理矛盾等問題,且隨著近年來疫情的影響,網(wǎng)絡(luò)課堂已成為了一種新的常態(tài),讓老師或家長及時的獲知孩子們的狀態(tài),對保護(hù)孩子們的身體、心理健康起著重要作用。因此人臉表情識別展現(xiàn)出了其獨(dú)特而重要的研究價值和應(yīng)用價值,從而成為了一個熱門研究課題。
在研究方法上,深度學(xué)習(xí)的興起為人工智能的研究提供了更強(qiáng)有力的工具,人臉表情識別與深度學(xué)習(xí)結(jié)合能夠在人臉表情識別的速率、準(zhǔn)確率、魯棒性上獲得很好的提升,有重要的實(shí)踐意義。
以ResNet18 作為表情分類器,以YOLO5Face 作為人臉定位器(如圖1所示),最左側(cè)的輸入圖像通過定位器確定人臉位置信息,根據(jù)位置信息提取人臉圖像區(qū)域,統(tǒng)一縮放至48×48,送入分類器進(jìn)行人臉表情分類,最后根據(jù)位置信息繪制人臉邊界框并標(biāo)注對應(yīng)的表情分類結(jié)果,得到最右側(cè)的輸出圖像。
圖1 人臉表情識別系統(tǒng)框架
YOLOv5(如圖2所示)是單階段目標(biāo)檢測算法YOLO[1]系列的最新版本,是在YOLOv4[2]的基礎(chǔ)上添加了一些新的改進(jìn)思路,如:靈活控制模型大小,加入hardswish 激活函數(shù)[3],以及多種新型數(shù)據(jù)增強(qiáng)方案,使得模型速度與精度都得到了極大的性能提升。
圖2 YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)
ResNet18[4]是針對大小為224×224輸入圖像進(jìn)行設(shè)計的,因此Conv1 中7×7 的卷積層能有效提取圖像的淺層特征,結(jié)合3×3 最大池化層還會快速降低輸入圖像的分辨率,降低后續(xù)計算復(fù)雜度。但7×7 大小的卷積核,若直接在FER2013 數(shù)據(jù)集中48×48 大小的圖像上運(yùn)算,會使分辨率下降過快,丟失大量信息;若直接將圖像縮放為224×224,縮放過程中要生成的像素量過多。因此不論采用哪種方式,都會影響圖片原有信息。本文將第一個Conv 層卷積核尺寸改為3×3,并去掉其后的MaxPooling 層(如表1所示)。
表1 修改前后ResNet18 網(wǎng)絡(luò)結(jié)構(gòu)
Facial Expression Recognition 2013 是由微軟研究員負(fù)責(zé)收集并公開的人臉表情數(shù)據(jù)集[5]。該數(shù)據(jù)集由35886 張人臉表情圖片及其表情標(biāo)簽組成,其中測試用圖片共28 708張(約占80%),驗證用圖片和測試用各3 589 張(各占10%),每張圖片都是大小固定為48×48 的灰度圖像,數(shù)據(jù)集中共7 種表情標(biāo)簽,分別為:憤怒(Angry)、厭惡(Disgust)、恐懼(Fear)、高興(Happy)、悲傷(Sad)、驚訝(Surprise)、中性(Neutral)。在FER2013 數(shù)據(jù)集中部分圖片展示中選取了數(shù)據(jù)集的部分?jǐn)?shù)據(jù)進(jìn)行展示(如圖3所示)。
圖3 FER2013 數(shù)據(jù)集中部分圖片展示
2.2.1 數(shù)據(jù)增強(qiáng)
在研究中,將常見的變換組合在一起,以一定概率P施加到圖像上,實(shí)現(xiàn)數(shù)據(jù)量擴(kuò)增,并減少模型過擬合情況的發(fā)生。具體組合形式如表2所示。
表2 變換組合
2.2.2 Mixup
Mixup[6]是一種非常規(guī)的數(shù)據(jù)增強(qiáng)方法,通過隨機(jī)選取輸入數(shù)據(jù)進(jìn)行疊加,可以增加模型泛化能力,還能提高模型應(yīng)對對抗攻擊(AdversialAttack)的魯棒性。Mixup 原理如下所示,非常簡單但又超出一般的增強(qiáng)策略。
其中(xi,yi),(xj,yj)是數(shù)據(jù)集中的數(shù)據(jù)對(訓(xùn)練樣本,標(biāo)簽),而λ則是隨機(jī)數(shù),有λ~Beta(α,α),且α∈[0,+∞],Mixup 采用Beta 分布是為了通過控制超參數(shù)α能獲得多樣化的分布。在本次研究中,有α≡1.0。
2.2.3 LabelSmoothing
機(jī)器學(xué)習(xí)領(lǐng)域的正則化方法除了常見的L1、L2 和Dropout 外,還有標(biāo)簽平滑[7](Label Smoothing)。標(biāo)簽平滑通常用于分類問題,防止模型對自身預(yù)測出的標(biāo)簽過于自信,改善模型泛化能力差的問題。
一般對于分類問題而言,通常認(rèn)為真實(shí)標(biāo)簽的向量中真實(shí)類別的概率應(yīng)為1,非目標(biāo)類別概率應(yīng)為0,也就是傳統(tǒng)的獨(dú)熱編碼,其形式如下:
在傳統(tǒng)獨(dú)熱編碼標(biāo)簽下進(jìn)行學(xué)習(xí)的過程中,梯度下降法會鼓勵模型預(yù)測目標(biāo)類別概率盡可能地趨近1,非目標(biāo)類別的概率趨近0,即使得模型向著盡可能使正確與錯誤類別預(yù)測間差值最大化的方向?qū)W習(xí),使它在訓(xùn)練數(shù)據(jù)上過于自信。在訓(xùn)練數(shù)據(jù)不足以覆蓋所有情況下,也是最常見的情況下,就會導(dǎo)致網(wǎng)絡(luò)過擬合、網(wǎng)絡(luò)泛化能力差。
標(biāo)簽平滑結(jié)合了均勻分布,使用如下的預(yù)測向量來代替原始預(yù)測向量:
其中K為類別總數(shù),α是一個超參數(shù),即
實(shí)際上在完成標(biāo)簽平滑后,相當(dāng)于真實(shí)分布中加入了一定噪聲,防止模型的預(yù)測中正負(fù)類別輸出值差距無限增大,從而避免過擬合,提高模型的泛化能力。
本文采用的訓(xùn)練環(huán)境如下:
GPU:NVIDIA Tesla T4
環(huán)境:Ubuntu 18.04LTS,CUDA v10.0.130,Python 3.6.13
框架:PyTorch 1.4.0+cu100,Torchvision 0.5.0
本文采取的訓(xùn)練參數(shù)如下:
(1)使用SGDM 優(yōu)化器,初始學(xué)習(xí)率為0.1,動量為0.9,權(quán)重衰減為0.000 1;
(2)訓(xùn)練時,驗證集精度連續(xù)5 個epoch 以上未能提升,則學(xué)習(xí)率衰減為先前的0.75。
(3)批量大小為128,訓(xùn)練epochs 為300。
從表3可以看到在NVIDIA RTX 3060 上,ResNet18 能夠在每輪訓(xùn)練耗時63 秒的情況下,取得0.720 9 的Top-1 準(zhǔn)確率。
表3 R esNet18 在FER2013 測試集上的top1 及top3 準(zhǔn)確率
通過對ResNet18 模型在測試集上得出的混淆矩陣(如圖4所示)進(jìn)行分析,可見模型對“高興”“驚訝”“中性”表情的識別水平較高,而“憤怒”“厭惡”“恐懼”“傷心”的表情識別率水平較低,且模型較難區(qū)分開“憤怒”與“厭惡”,“恐懼”與“傷心”。
圖 4 ResNet18 在FER2013 測試集上取得的混淆矩陣
引起此問題的原因是數(shù)據(jù)集樣本不均衡。對FER2013測試集圖片類別統(tǒng)計如圖5所示,“高興”以外的表情圖片數(shù)量都遠(yuǎn)低于“高興”表情圖片數(shù)量。而且“厭惡”表情數(shù)量最少,不到500 張,是測試結(jié)果中模型對于“厭惡”表情的識別準(zhǔn)確率最低的原因。
圖5 數(shù)據(jù)集中各表情數(shù)量占比
本文從分類錯誤的樣本抽取一部分展示(如圖6所示)。能發(fā)現(xiàn)數(shù)據(jù)集中存在表情標(biāo)簽標(biāo)注不合理的情況,一定程度上導(dǎo)致了模型準(zhǔn)確率下降。此外,由于表情解讀是相對主觀的,不同個體對同一表情的評價可能并不一致。最后,單個表情僅帶有一個標(biāo)簽,使數(shù)據(jù)集標(biāo)簽粒度過粗,模型在其上訓(xùn)練后難以將學(xué)習(xí)到的細(xì)膩特征映射為單獨(dú)的表情。
圖6 分類錯誤的樣本展示(數(shù)據(jù)標(biāo)簽→模型預(yù)測)
本文結(jié)合ResNet 及YOLO 模型,參考R-CNN 框架設(shè)計出的人臉表情識別系統(tǒng),基于微軟公開的FER2013 數(shù)據(jù)集,采取數(shù)據(jù)增強(qiáng)、mixup、label smoothing 等輔助策略訓(xùn)練ResNet18,且最終在測試集中取得了72.09% Top-1準(zhǔn)確率。
在未來的研究工作中,可以從以下4 個方面進(jìn)一步開展研究:
(1)從信息量的角度出發(fā),可以為系統(tǒng)加入人臉關(guān)鍵點(diǎn)識別、面部動作單元識別,提升表情分類的準(zhǔn)確率與魯棒性。
(2)從數(shù)據(jù)集的角度出發(fā),可以考慮在已有數(shù)據(jù)集上標(biāo)注缺失的數(shù)據(jù)標(biāo)簽,或重新收集大量數(shù)據(jù)進(jìn)行標(biāo)注,且可將分類標(biāo)簽改進(jìn)為多維度的,使模型能夠?qū)Ρ砬檩p重程度做出預(yù)測。
(3)從實(shí)際部署的角度出發(fā),目前人工智能業(yè)界已經(jīng)提出了諸如模型剪枝、模型量化等加速模型推理的方案,能夠在盡量減少準(zhǔn)確率下跌的情況,同時提供更高的推理速率。
(4)從系統(tǒng)設(shè)計的角度出發(fā),可以采取知識蒸餾方法將已有框架學(xué)習(xí)到的信息蒸餾給小模型,或直接將信息蒸餾給一階段檢測模型,從而大幅提升性能。