人臉表情識別綜述
這篇文章主要參考論文 《Deep Facial Expression Recognition:A Survey》。
論文連結:arxiv.org/abs/1804.08…
這篇文章[1]是北郵的鄧偉洪教授關於深度人臉表情識別(Deep Facial Expression Recognition,DFER) (情感識別)的一篇綜述性文章,該文章被計算機視覺頂會CVPR收錄。對於像我這樣對情感識別感興趣,但又沒做過具體應用的小白來說研讀這篇文章再合適不過了。
介紹
表情可以說是一門世界語,不分國界、種族以及性別,可以說所有人都有著通用的表情。FEP在機器人、醫療、駕駛員駕駛疲勞檢測和人機互動系統中都有廣泛應用,最早在20世紀,Ekman和Friesen通過跨文化研究,定義了6種基礎表情:生氣、害怕、厭惡、開心、悲傷和吃驚,隨後又加入了“蔑視” 這一表情。開創性的工作和直觀的定義,使該模型在自動人臉表情識別(automatic facial expression analysis, AFEA)中依然很流行。
根據特徵表示,FER系統可以劃分為圖片FER和視訊FER兩類。圖片FER只提取當前圖片的特徵,而視訊需要考慮相鄰幀之間的關係。實際上所有計算機視覺的任務的處理物件都可以劃分為圖片和視訊兩類。
FER傳統的方式使用手工提取的特徵和淺層學習,這種方式的弊端就不多贅述了。得益於深度學習的發展和更具有挑戰性的資料集FER2013的出現,越來越多的研究者將深度學習技術運用到FER中。
深度人臉表情識別
預處理
人臉對齊
給定一個數據集,第一步是移除與人臉不相關的背景和非人臉區域。ViolaJones(V&J)人臉檢測器[2] (在OpenCV和Matlab中都有實現),該檢測器能將原始圖片裁剪以獲得人臉區域, 第二步是面對齊,這一步至關重要,因為可以減少人臉尺度改變和旋轉產生的影響。最常用的面部對齊的實現是IntraFace[3],IntraFace採用SDM演算法,定位出49個面部特徵點(雙眼、兩個眉毛、鼻子和嘴巴)
資料增強
資料增強包括線上和離線兩種方式:
離線方式:隨機擾動,影象變換(旋轉、評議、翻轉、縮放和對齊),新增噪聲(椒鹽噪聲和斑點噪聲),以及調整亮度和飽和度,以及在眼睛之間新增2維高斯分佈的噪聲。此外,還有用對抗神經網路GAN[4]生成臉,3DCNN輔助AUs生成表情。使用GAN生成臉對網路效能是否有提升還沒有驗證過。線上方式:包含在訓練時,裁剪圖片,水平翻轉。主要是通過隨機擾動訓練模型。人臉歸一化
人臉的光照和頭部姿勢變化會削弱訓練模型的效能,有兩種臉部歸一化的策略削弱影響,分別是亮度歸一化和姿態歸一化。
亮度歸一化:Inface 工具箱[5]是最常用的光照不變人臉檢測箱。除了直觀的調整亮度以外,還有對比度調整。常見的對比度調整方法有直方圖歸一化、DCT歸一化、Dog歸一化。姿態歸一化:這是一個棘手的問題,目前的方法都不太理想。有2D的landmark對齊,3Dlandmark對齊,有通過影象和相機引數估計,也有通過深度感測器測量然後計算出來。比較新的模型都是基於GAN的,有FF-GAN、TP-GAN和DR-GAN。深度特徵學習
這一部分主要講的是使用深度學習模型提取特徵,包括卷積神經網路(Convolutional neural network,CNN)、深度置信網路(Deep belief network ,DBN)、深度自動編碼器(Deep autoencoder,DAN)和遞迴神經網路(Recurrent neural network,RNN)。深度人臉表情識別的流程如下,下圖可以看出,深度網路模型部分有四種常用的模型。作者只是簡單的介紹了幾種網路模型,在這裡我也不過多的贅述。CNN模型在我前幾篇博文卷積神經網路的結構與相關演算法和卷積神經網路模型解讀彙總——LeNet5,AlexNet、ZFNet、VGG16、GoogLeNet和ResNet有詳細介紹。其餘的網路模型以後有時間會逐一整理。
人臉表情分類
完成了特徵提取後,最後一步對其進行分類。在傳統FER系統中,特徵提取和特徵分類是獨立的。而深度學習的FER是端到端的模型,可以在網路的末端新增損失層調節反向傳播的誤差,預測概率可以由網路直接輸出。也可以將兩者結合,即用深度學習提取特徵,再用SVM等分類器分類。
面部表情資料庫
該部分總結了FER可用的公開資料集。
CK+:包括123個subjects, 593 個 image sequence。該資料庫由118名受試者錄製,在這593個image sequence中,有327個sequence 有 emotion的 label。除了中性外包含7種表情:憤怒、蔑視、厭惡、恐懼、高興、悲傷和驚訝。MMI:包括32個subjects,326個image sequence。213個sequence 有 emotion的 label。包含6中表情(相比較於CK+沒有蔑視),MMI更具挑戰性,因為很多人都戴有配飾。JAFFE:包含213副(每幅影象解析度為256*256)日本女性的臉部影象,包含7種表情。該資料庫均為正面臉相,且對原始影象進行了調整和修剪,光照均為正面光源,但光照強度有差異。TFD:改資料庫是幾個面部表情資料集的集合,TFD包含112234張圖片(每張圖片被調整到48*48大小),所有實驗物件的眼睛都是相同的距離。其中4189張有標註,包含7種表情。FER2013:改資料庫通過谷歌圖片API自動收集,資料庫中所有圖片都修正了標籤,將圖片調整到48*48大小。包含28709張訓練影象,3589張測試影象,包含7種表情。AFEW:AFEW資料集為Emotion Recognition In The Wild Challenge (EmotiW)系列情感識別挑戰賽使用的資料集,該比賽從2013開始每年舉辦一次。 該資料集的內容是從電影中剪輯的包含表情的視訊片段,包含7類表情。訓練集、驗證集和測試集分別包含773、383和653sample。SFEW:該資料集是從AFEW資料集中抽取的有表情的靜態幀,包含7類表情。訓練集、驗證集和測試集分別包含958、436和372sample。Multi-PIE:包含4個場景9種光照條件15個視角下337個subject,總計有755370張圖片。包含6種表情(沒有蔑視)BU-3DFE:從100個人獲取的606個面部表情sequence,包含6種表情(沒有蔑視),多用於三維面部表情分析。Oulu-CASIA:80個沒被標記的subject收集了2880個image sequence。包含6種表情(沒有蔑視)。有紅外(NIR)和可見光(VIS)兩種攝像頭在3種不同光照條件下拍攝。RaFD:包含67個subject的1608張圖片,眼睛有不同的三種注視方向,包括前、左和右。包含7種表情。KDEF:最初用於醫學和心理學研究。資料集來自70個演員從5個角度的6種表情。EmotioNet:包含從網上收集到的接近100萬張面部表情圖片。RAF-DB:包含從網上收集的29672張面部影象,包含7中基本表情和11種複合表情。AffectNet:包含從網上收集的100多萬張面部影象,其中45萬張圖片手工標註為7種表情。FER目前發展水平
總結了基於靜態影象和動態影象序列(視訊)的FER進展。
靜態影象FER進展
對於每一個數據集,下表顯示了目前最優異的方法,在該資料集上取得的效果。
預訓練和微調
在相對較小的資料集上直接訓練深度網路很容易導致過擬合。為了緩解這個問題,許多研究會在大資料集上先預訓練網路,或者對已經訓練好的網路進行微調。
如上圖所示,先在ImageNet資料集上訓練,然後再在具體的人臉表情資料集上微調。微調有較好的效果,人臉表情識別有各種微調方式,比如分級、固定某些曾,不同網路層用不同資料集微調,具體可以看看原文中所引用的論文。 此外,文獻[6]指出FR和FER資料集存在巨大差異,人臉似乎別模型弱化了人臉表情的差異,提出了FaceNet2ExpNet網路消除這種影響。該模型分為兩個階段,首先用人臉識別模型提取特徵,然後用表情識別網路消除人臉識別模型帶來的情緒差異弱化。如下圖所示。
多樣化網路輸入
傳統的做法是使用原始的RGB影象作為網路的輸入,然而原始資料缺乏重要的資訊,如紋理資訊,以及影象縮放、旋轉、遮擋和光照等方面的不變性。因此可以藉助一些手工設計的特徵。如SIFT、LBP、MBP、AGEhe NCDV等。PCA可以裁剪出五官進行特徵學習而不是整個臉部等。
輔助塊與層改進
基於經典的CNN架構,有些研究設計了良好的輔助模組或者改進了網路層,這部分文中有列舉幾個例子,感興趣可以找出相關論文翻看。 值得注意的是,Softmax在表情識別領域的表現不太理想。這是由於表情的類間區分度較低。作者整理了幾種針對表情分類層的改進。
網路整合
之前的研究表明,多個網路的集合可以比單個網路表現的更好。在網路整合時,要考慮兩點:
網路模型要有充分的多樣性,以確保網路之間具有互補性要有可靠的整合演算法關於第一點,網路的多樣性產生有很多方法,不同的訓練資料、不同的預處理方式、不同的網路模型、不同的引數都能產生不同的網路。
關於第二點整合演算法。這其中也主要有兩點,一個是特徵整合,另一個是輸出的決策整合。特徵整合最常見的做法是將不同網路模型的特徵直接連結,還有如下圖的方式
關於決策整合採用投票的機制,不同網路有不同的權重。關於決策整合的幾種策略如下表所示。
多工網路
目前許多網路都是單一任務的輸出,但在現實中,往往需要考慮其他多種因素的作用。多工模型能從其他任務中學習到額外的資訊有助於提高網路的泛化能力。關於多工模型的好處,可以參考這篇博文。如下如所示,在MSCNN[9]模型中將臉部驗證與表情識別兩個任務整合在一個網路中。
網路級聯
在級聯網路中,將不同模組處理不同的任務組合在一起設計一個更深層的網路,前一個模組的輸出被後一個模組使用。如下圖所示,在AUDN網路中,該網路由三部分組成。
動態影象序列FER進展
基於動態的表情識別相比靜態圖片能更全面,這裡指的動態影象序列,即在視訊中。
幀聚合
考慮到表情在不同時刻有不同的變化,但又不可能單獨的統計每幀的結果作為輸出,因此需要對一段幀序列給出一個識別結果,這就需要用到幀聚合。即用一個特徵向量表示這一段時間序列。與整合演算法類似,幀聚合有有兩類,分別是決策級幀聚合和特徵級幀聚合。這兩部分感興趣的可以參看論文。
強度表達網路
在視訊中表情會有微妙的變化,而強度是指在視訊中,所有幀表現某個表情的程度。一般在中間位置最能表達某個表情,即為強度峰值。大多數方法,都關注峰值附近而忽略了開始和結束時的低谷幀。這部分,主要介紹幾個深度網路,輸入是具有一定強度資訊的樣本序列,輸出是某一個類表情中不同強度幀之間的相關性結果。如PPDN(peak-piloted),用以內在表情序列裡幀之間相關性識別,還有基於PPDN的級聯PPDN網路DCPN,具有更深更強的識別能力。雖然,這些網路,都考慮了一段序列裡的表情變換,甚至為了計算表情的變化趨勢,設計了不同的損失函式,但是,真心覺得,這種代價,對於工程來說,其實是沒有意義的。有興趣的,可以看看論文裡對應的方法,這裡不再贅述了。
深度時空FER網路
前面介紹的幀聚合和強度表達網路都屬於傳統的結構化流程,而在視訊中將一些列幀作為單獨的影象序列輸入,輸出某一類表情的分類結果。而RNN網路能利用"序列資訊",所以視訊FER模型用RNN網路,還有C#D:
RNN: 從理論上講,它可以利用任意長序列的資訊,RNN呢能對時間序列上的變化建模。C3D: 在通常影象上的2D空間卷積的基礎上,沿著時間軸加了一個時間維度,就形成了3D時空卷積。例如3DCNN-DAP[10],網路模型如下圖所示。還有種“暴力”做法,不考慮時間維度,將幀序列拼接成大向量,再進行CNN分類,如DTAN[11]。
面部landmark運動軌跡:通過研究五官的變化軌跡,進而分析表情的變化,如深度幾何空間網路(deep temporal geometry network,DTGN)。該方法聯合每幀landmark的x,y座標值,歸一化處理後,將landmark作為一個運動軌跡維度,或者或者計算landmark特徵點的成對L2距離特徵,以及基於PHRNN用於獲取幀內的空間變化資訊。還有根據五官將landmark點分成4塊,輸入到BRNNs,定位區域性特徵,如下圖:級聯網路:跟之前靜態影象的級聯網路思路一樣,主要是CNN提取特徵,級聯RNN做序列特徵分類。如LRCN,級聯CNN與LSTM,類似的,還有級聯DAE作為特徵提取,LSTM進行分類,還有ResNet-LSTM,即在低階CNN層,直接用LSTM連線序列之間的低階CNN特徵,3DIR用LSTM作為一個單元構建了一個3D Inception-ResNet特徵層,其他還有很多類似的級聯網路,包括,用CRFs代替了LSTM等等。網路整合:如兩路CNN網路模型用於行為識別,一路用多幀資料的稠密光流訓練獲取時間資訊,一路用於單幀影象特徵學習,最後融合兩路CNN的輸出。還有多通道訓練,如一通道用於自然臉和表情臉之間的光流資訊訓練,一路用於臉部表情特徵訓練,然後用三種融合策略,平均融合,基於SVM融合,基於DNN融合。也有基於PHRNN時間網路和MSCNN空間網路相結合來提取區域性整體關係,幾何變化以及靜動態資訊。除了融合,也有聯合訓練的,如DTAN和DTGN聯合fineturn訓練。目前各個資料集上,動態序列的表情識別的最佳效果如下表所示:
最後整理不易,點一波關注吧,或者去我的個人部落格逛逛沖弱's Blog。
參考文獻
[1]: Li S, Deng W. Deep Facial Expression Recognition: A Survey[J]. 2018.
[2]: Viola P, Jones M. Rapid object detection using a boosted cascade of simple features[J]. Proc Cvpr, 2001, 1:511.
[3]: Torre F D L, Chu W S, Xiong X, et al. IntraFace[C]// IEEE International Conference and Workshops on Automatic Face and Gesture Recognition. IEEE, 2015:1-8.
[4]: Goodfellow I J, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[C]// International Conference on Neural Information Processing Systems. MIT Press, 2014:2672-2680.
[5]: [http://luks.fe.uni-lj.si/sl/osebje/vitomir/face tools/INFace/](http://luks.fe.uni-lj.si/sl/osebje/vitomir/face tools/INFace/)
[6]: Ding H, Zhou S K, Chellappa R. FaceNet2ExpNet: Regularizing a Deep Face Recognition Net for Expression Recognition[J]. 2016:118-126.
[7]: Cai J, Meng Z, Khan A S, et al. Island Loss for Learning Discriminative Features in Facial Expression Recognition[J]. 2017.
[8]: Li S, Deng W, Du J P. Reliable Crowdsourcing and Deep Locality-Preserving Learning for Expression Recognition in the Wild[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2017:2584-2593.
[9]: Zhang K, Huang Y, Du Y, et al. Facial Expression Recognition Based on Deep Evolutional Spatial-Temporal Networks[J]. IEEE Transactions on Image Processing A Publication of the IEEE Signal Processing Society, 2017, PP(99):1-1.
[10]: Liu M, Li S, Shan S, et al. Deeply Learning Deformable Facial Action Parts Model for Dynamic Expression Analysis[M]// Computer Vision -- ACCV 2014. Springer International Publishing, 2014:143-157.
[11]: Jung H, Lee S, Yim J, et al. Joint Fine-Tuning in Deep Neural Networks for Facial Expression Recognition[C]// IEEE International Conference on Computer Vision. IEEE, 2016:2983-2991.