盧 晉
(深圳職業技術學院 職業教育大數據智能廣東省重點實驗室,廣東 深圳 518055)
人臉表情是人類情緒最主要的輸出通道,對于互相交流具有極其重要的意義,準確的表情識別有助于有效地交換信息.文獻[1]通過大量的跨文化研究定義了6類基礎表情:憤怒(Angry)、悲傷(Sad)、高興(Happy)、恐懼(Fear)、厭惡(Disgust)、驚訝(Surprise).因此,行業大都基于以上定義的6類基礎表情作為表情分類的標準進行人臉表情識別(Facial expression recognition,FER)的探索.人臉表情識別技術應用廣泛,包括課堂教學效果識別,服務業顧客滿意度識別,電影分類,個人性格研究,抑郁自殺傾向分析等,一直是最近10幾年機器學習與深度學習研究的熱點問題[2,3].
自A. Krizhevsky等提出AlexNet[4]以來,深度學習迅猛發展,大量應用任務受益于深度學習取得了重大突破.深度學習的突破依賴于計算機計算能力的摩爾定律以及互聯網的廣泛普及讓大數據成為可能.人臉表情識別任務同樣也受惠于深度學習,近年來很多相關研究取得了不錯成績[5-8],但是采用深度學習的人臉表情識別方法面臨數據集嚴重不足的問題.人臉表情識別目前運用較成熟的數據集有日本 Advanced Telecommunications Research Institute International(ATR)的專門用于表情識別研究的基本表情數據庫JAFFE[9]和Cohn-kanade表情數據庫(CK),以及Lucey[10]等人在2010改進的數據集CK+.這類采集自實驗室的人臉數據集雖然質量高,但是成本高且數量極少,比如JAFFE總量只213張,這與深度學習的識別方法對數據的需求量比是遠遠不足的.針對這個問題,一些方法提出采集互聯網的人臉數據代替實驗室拍攝比如 ExpW[11],ExpW 具有91793張采集自互聯網的人臉,使用人工標注好表情分類.使用爬蟲采集數據可以解決實驗室拍攝數據量不足的問題,但是采集自互聯網的數據受到用戶上傳的偏置影響,也受到爬蟲關鍵詞的影響,往往會導致極嚴重的類別不平衡問題.互聯網上存在很中性或者積極情緒的人臉圖片,但是很少消極情緒的人臉,導致爬蟲最后爬取的人臉數據標注清理后在分類極其不平衡.
針對以上問題,本文提出一個基于融合開源人臉表情數據集和網絡爬取數據集的方法,通過降采樣平衡不同分類,去除噪聲數據構建了當前最大的人臉表情識別數據集;在此數據集基礎上,通過修改網絡結構,實驗不同的神經網絡基礎模型,并調節各個分類在損失目標函數的權重,以有效提高表情識別準確率.
為了構建表情數據集,首先收集了行業現有的人臉表情公開數據集.開源人臉表情數據集分2大類:一類是實驗室聘請人員表演對應的表情;第二類是從互聯網上爬取的人臉圖片,清洗后,使用人工標注給人臉打上對應的表情標簽.前者創建的表情數據質量高,分類均衡平等,但是成本相當高,數量少.后者能比較容易獲得大量數據,但是數據分類嚴重不平衡,也有可能出現錯誤標注的數據.我們分別收集了2個類別的代表性數據集.然后在百度和谷歌等搜索引擎中,使用7個表情分類(即憤怒、中性、厭惡、恐懼、快樂、悲傷、驚訝,及其對應近義詞)作為關鍵詞進行圖片搜索,與現有公開數據集合并得到初始表情圖像數據集;在解決了數據集的類別不平衡和數據集合噪聲問題后,得到總量586712張的人臉表情數據集.
共收集包含以下7個來源的公開數據集,得到180255張人臉表情數據集:包括ExpW(91793張,來源網絡,包含6個基礎表情和中性表情)、Fer2013(35887張,來源網絡,包含6個基礎表情和中性表情[12])、Raf(29672張,來源網絡,,包含6個基礎表情和中性表情數據[13])、KDEF(4900張,來源實驗室,包含6個基礎表情和中性表情[14])、AffectNet(450000張,來源網絡,包含6個基礎表情和中性表情[15])、CK+(327張,來源實驗室,包含6個基礎表情和中性表情[16])、MMI(740張,來源實驗室,包含6個基礎表情和中性表情[17]).
使用憤怒、中性、厭惡、恐懼、快樂、悲傷、驚訝七個表情以及他們的近義詞以及關聯詞作為關鍵詞,在百度和谷歌搜索引擎爬取圖片.
對爬取的人臉圖片使用人臉檢測模型檢測是否存在人臉,并把人臉使用檢測出來的關鍵點對齊,把人臉保存至對應的分類.
人工檢查,移除與文件夾分類不匹配的人臉圖片,最終創建了一個272842總量的人臉表情數據集.
1.3.1 類別不平衡問題
幾乎所有數據集均存在類別嚴重不平衡,數量多的類別和數量少的類別的比例甚至超過了20,如圖1所示.

圖1 數據集類別嚴重不平衡統計
解決方案:
1)對數量多的類別采取降采樣,對數量少的按照類別間的目標比例重復采樣,使用圖像增強技術增加數據[18];
2)對類別目標函數配置不同的系數,給予數量少的類別更高的損失,讓其學習更多.
1.3.2 數據集合噪聲問題
幾個公開數據集存在噪聲多的問題,比如affectnet存在非人臉的圖片數據,存在大量錯誤標注表情類別數據.解決方案:
1)使用人臉檢測模型檢測圖片是否存在人臉,拋棄不存在人臉圖片.
2)使用基準人臉表情識別模型判斷表情分類是否正確,如發現錯誤人工確認.
3)在解決了數據集的類別不平衡和數據集合噪聲問題后,得到總量586712張的人臉表情數據集,見表1.

表1 自建人臉表情數據集
對上述數據清洗,剔除錯誤無效人臉,修改錯誤標注后獲得總量586712的數據集,各個分類上的數量(表2).

表2 最終數據集在各個分類上的數量
本文訓練使用的人臉檢測算法是MTCNN模型[19],該模型主要采用了3個級聯的卷積神經網絡架構:P-Net、R-Net和O-Net網絡結構.P-Net作為級聯網絡的第一層負責產生初步的候選框,中間層次R-Net甄別存在的誤識別的候選框,將檢測的候選框和篩選的候選框輸送到最終的網絡結構O-Net中,生成最終邊界框與輸出最終的人臉特征關鍵點.
本文針對2類基礎網絡:ResNet和DenseNet進行了實驗(圖2,圖3).ResNet通過引入殘差連接,使信息能直接流動到后面的層次,在進行逆向梯度求導時候,誤差信息能直接傳遞到早期的層次,這種方法使更深的網絡訓練成為了可能,解決了網絡的退化問題.這種神經網絡被稱為殘差網絡(ResNets),ResNet引入了residual結構(殘差結構)來減輕退化問題,residual結構使用了一種shortcut的連接方式,也可理解為捷徑.讓特征矩陣隔層相加,注意F(X)和X形狀要相同,所謂相加是特征矩陣相同位置上的數字進行相加[20].

圖2 ResNet基礎網絡

圖3 DenseNet基礎網絡
相對ResNet,DenseNet引入了密度更大的殘差連接,把殘差的思想發揮到了極致,只需要更少的參數即可達到相同的分類準確率,也能更穩定地訓練更深的網絡[21].
1)調節超參數訓練.本文使用SGD優化算法對2種基礎模型進行訓練,分別嘗試了0.001,0.0003,0.0005的學習率進行訓練.
2)調節數據增強方法訓練.本文分別使用了隨機水平翻轉、隨機角度旋轉(5°以內)、隨機色彩抖動、隨機微調亮度4種方法增強人臉表情數據,在兩組模型上使用控制變量法測試不同增強方法對實驗結果的影響[22].
所有實驗均在聯想工作站上進行,該工作站配備intel I9-10900k,64GB內存,2*RTX3090,1T pcie3.0 SSD.所有實驗都在Tensorflow平臺上進行.
測試數據集Fer2013,CK+,MMI,3個數據集均處理靜態人臉圖片并打上對應的標簽.將訓練模型在這3個數據集上進行推理打上標簽后,與數據集的ground truth進行比對得到準確率,準確率越高則模型越好.
目前在靜態圖片表情上,在CK+表現最好的是以下2個模型:
1)Facial Expression Recognition by De-Expression Residue Learning (thecvf.com)[23],最高準確率 97.3%.
2)Joint Fine-Tuning in Deep Neural Networks for Facial Expression Recognition[24],最高準確率97.25.
本文對模型的超參數進行探索,使用不同組合的超參數訓練模型,控制變量包括學習率,正則化Regularization系數等.結果見表3,4.

表3 Resnet超參數結果

表4 Densenet超參數結果
從測試結果來看,使用SGD的優化方法,采用萬分之一的學習率,千分之一的正則化參數獲得最穩定的模型訓練效果.
本文在2種類型模型(Resnet,Densenet)上探索了4種數據增強方法,每次實驗只啟動一個增強方法,其它全部關閉,以測試哪種增強方法表現更有影響,結果見表5,6從測試結果來看,使用SGD的優化方法,采用萬分之一的學習率,千分之一的正則化參數獲得最穩定的模型訓練效果.

表5 Resent數據增強實驗結果

表6 Densenet數據增強實驗結果
本文在2種類型模型(Resnet,Densenet)上探索了4種數據增強方法,每次實驗只啟動一個增強方法,其它全部關閉,以測試哪種增強方法表現更有影響,結果見表5,6.
實驗結果發現采用水平翻轉以及隨機角度旋轉能比較好提高模型的穩定性,其它2種方法影響不大.
我們觀察到在訓練Resnet模型時候,學習率為0.0001,正則化因子為0.003,采用隨機水平翻轉的數據增強方式能獲得最好的表情識別準確率,在MMI測試集上達到了75.2%的成績.訓練更高殘差連接密度的 Densenet,我們觀察到采用同樣的學習率0.0001,正則化率設為0.001,只采用水平映射數據增強方法獲,在MMI測試集上獲得75.17%的準確率,超過了文獻[24]在MMI上的73.23%,見表7.

表7 本研究方法和SOTA識別準確率對比結果(%)
人臉表情識別是人類情感識別的基礎,是近年模式識別與人工智能領域研究的熱點問題.本文介紹了表情識別常用的數據集與存在的問題,并針對這些問題提出了一種自建表情數據集和深度網絡結構改進相結合的方法,解決了表情數據集存在的類別不平衡和數據集合噪聲問題;然后通過修改網絡結構,實驗不同的神經網絡基礎模型,并調節各個分類在損失目標函數的權重,在CK+數據集上的驗證實驗表明,所提出的數據集和基于此數據集訓練的模型獲得超過SOTA的人臉表情識別準確率,達到97.5%.