戴沁璇,羅曉曙,蒙志明,黃苑琴
(1.廣西師范大學 電子工程學院,廣西 桂林 541000;2.廣西師范大學 創(chuàng)新創(chuàng)業(yè)學院,廣西 桂林 541000)
人臉表情識別(Facial Expression Recognition,F(xiàn)ER)是指從給定的靜態(tài)圖像或動態(tài)視頻序列中分離特定的表情狀態(tài),以確定所識別對象的心理狀態(tài)與情感。文獻[1]的研究結(jié)果表明,人們?nèi)粘=涣髦?5%的信息是通過不同的人臉表情傳達的,而只有7%的信息是通過語言傳達的。人臉表情是傳達人類情感和意圖最有效、最自然和最常見的信號之一。
隨著科學研究的蓬勃發(fā)展,特別是近年來人工智能的快速發(fā)展,人們希望機器能夠相對準確地識別人臉表情。隨著近年來計算機和網(wǎng)絡(luò)技術(shù)的發(fā)展,海量圖像數(shù)據(jù)可以通過計算機更好地存儲、傳輸和處理,為人臉的表情識別提供了基礎(chǔ)。人臉表情識別技術(shù)應(yīng)用廣泛,例如疲勞駕駛檢測、安全監(jiān)控器、教學監(jiān)視和測謊儀檢測等。
人臉表情識別包括三個部分:人臉檢測、特征提取和表情識別。人臉檢測是通過諸如眼睛、鼻子和嘴巴等關(guān)鍵點定位圖像中人臉的位置,例如文獻[11]提出的類似Haar 特征提取的AdaBoost 級聯(lián)分類器。在機器學習算法中有手工提取特征的方法,例如:局部二進制模式和Gabor等。在特征提取后應(yīng)采用分類方法進行人臉表情識別,例如支持向量機(SVM)、隨機森林、稀疏編碼、神經(jīng)網(wǎng)絡(luò)等。盡管這些方法在特定領(lǐng)域取得了巨大成功,但是大多數(shù)方法只能獲得底層的功能,而不能獲得高級語義。
為了克服上述缺點,采用卷積神經(jīng)網(wǎng)絡(luò)(Convolu?tional Neural Network,CNN)是識別人臉表情的一種非常有效的方法。因為卷積神經(jīng)網(wǎng)絡(luò)可以同時執(zhí)行特征提取和分類過程,并且可以從數(shù)據(jù)中自動發(fā)現(xiàn)多級表示。因此,近年來提出了一些性能優(yōu)異的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)用于表情識別。例如文獻[16]提出一種深度神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)來解決面部表情識別問題,并通過多個標準面部數(shù)據(jù)集驗證所提出的結(jié)構(gòu)。文獻[17]提出了一種基于三個最先進的面部檢測器的集成方法。文獻[18]提出了一種基于輕量級卷積神經(jīng)網(wǎng)絡(luò)的表情識別方法。
在上述研究工作的啟發(fā)下,本文提出了一種基于改進的稠密卷積神經(jīng)網(wǎng)絡(luò)的表情識別方法,改進了卷積層的初始化方法,并且在激活層中提出了一種新型激活函數(shù),同時改進了稠密CNN 框架,最后在表情識別系統(tǒng)上得到驗證。
本文首先預先設(shè)計了一個基于Gabor 的改進濾波器庫,然后在訓練網(wǎng)絡(luò)模型之前,使用該庫中的Gabor濾波器初始化改進神經(jīng)網(wǎng)絡(luò)基本屬性的第一層。Gabor函數(shù)是一個用于邊緣提取的線性濾波器,用于各種計算機視覺應(yīng)用,例如邊緣檢測和紋理分析。類似于人類視覺系統(tǒng),從Gabor 濾波器中創(chuàng)建一個濾波器組,如果發(fā)生變化,它會響應(yīng)頻率和方向。空間域中的Gabor 濾波器是由復雜的兩分量Gabor 函數(shù)產(chǎn)生的,這兩個分量是高斯函數(shù)和正弦平面波函數(shù)。式(1)給出了這種Gabor函數(shù)的計算公式:
式中:w(,)和(,)分別是高斯函數(shù)和正弦函數(shù)。要將式(1)中的Gabor 函數(shù)轉(zhuǎn)換為二維濾波器,可以按照式(2)重新構(gòu)建Gabor 函數(shù):
式中:是高斯函數(shù)的標準偏差;是Gabor 濾波器方向;是余弦函數(shù)的波長參數(shù);是空間視圖比率因子;是余弦函數(shù)的相位參數(shù)。
在本文提出的方法中,為第一層卷積層創(chuàng)建了一個Gabor 濾波器庫,它代表了改進卷積神經(jīng)網(wǎng)絡(luò)的基本級別屬性,庫中創(chuàng)建的Gabor 濾波器的總數(shù)等于改進卷積神經(jīng)網(wǎng)絡(luò)第一層卷積層中的通道數(shù)(即特征圖數(shù))。由于本文使用的改進卷積神經(jīng)網(wǎng)絡(luò)的第一層卷積層具有24 個特征圖,因此在庫中總共生成了24 個Gabor 濾波器。創(chuàng)建的Gabor 濾波器所需的核心參數(shù)由表1 給出的取值范圍確定,圖1 是Gabor 濾波器的部分示例。
表1 Gabor 參數(shù)范圍
圖1 濾波的部分樣例
在神經(jīng)網(wǎng)絡(luò)中對圖像進行訓練時,它們都傾向于學習第一層的特征,這些特征類似于Gabor 濾波器或色塊。因此,在本文提出的方法中,使用預先生成的Gabor 濾波器對網(wǎng)絡(luò)進行初始化,然后在改進模型中,用CK+、FER2013 和FER2013Plus 三個數(shù)據(jù)集進行訓練。
卷積神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù)包括Sigmoid、ReLU 函數(shù)等。Sigmoid 函數(shù)雖然處處連續(xù)便于求導,而且便于數(shù)據(jù)前向傳輸,但是在其趨向無窮大時,函數(shù)值變化很小,容易缺失梯度,不利于深層神經(jīng)網(wǎng)絡(luò)的誤差反向傳播,所以Sigmoid 函數(shù)梯度下降法訓練網(wǎng)絡(luò)時容易出現(xiàn)梯度消失現(xiàn)象。ReLU 函數(shù)計算復雜度低,不需要進行指數(shù)運算,而且適合用于誤差反向傳播,但是ReLU 函數(shù)的輸出不是零中心的,而且在<0 時梯度為0,這樣就會導致負的梯度被置零,那么這個神經(jīng)元就有可能不會被激活。
因此,基于上述問題,本文提出了一種對數(shù)線性函數(shù)(Logarithmic Linear Unit,LLU),其表達式如式(3)所示,函數(shù)曲線如圖2 所示。
圖2 對數(shù)線性函數(shù)曲線
根據(jù)LLU()表達式和圖2a)可知,LLU()滿足激活函數(shù)的五個基本屬性:
1)非線性。LLU()函數(shù)是非線性的,可以在CNN中的非線性映射中發(fā)揮很好的作用。
2)可微性。此屬性是必需的,LLU()的一階導數(shù)如式(4)所示,因此可以使用基于梯度的訓練方法。
3)單調(diào)性。從LLU()>0 可以看出,LLU()是單調(diào)遞增的函數(shù),可以保證CNN 中每一層網(wǎng)絡(luò)都是凸函數(shù)。
4)≈。當>0 時,LLU()滿足此條件,參數(shù)的初始化是一個很小的隨機值,對神經(jīng)網(wǎng)絡(luò)的訓練將是有效的。
5)輸出值是無限的。LLU()的輸出值是無限的。當以較小的學習速度訓練模型時,可以獲得較高的訓練效率。
對LLU′()函數(shù)求極限可知,當趨于負無窮大和正無窮大時,極限分別為0.4 和1.4。從圖2b)所示的LLU′()圖像可以看出,當太小時,它將不會為0;而當太大時,其值將接近1.4。因此在CNN 中采用LLU()激活函數(shù)可以進行有效的梯度下降訓練。
稠密卷積神經(jīng)網(wǎng)絡(luò)(DenseNet)具有獨特架構(gòu),它通過密集的連接模式和許多降維層最大限度地使訓練參數(shù)最小化。密集連接主要由密集塊和過渡層組成,前者定義輸入和輸出之間的連接關(guān)系,后者控制通道數(shù)。
稠密神經(jīng)網(wǎng)絡(luò)中有兩個關(guān)鍵的超參數(shù):增長率和稠密塊數(shù)。增長率表示卷積層過濾器的數(shù)量,它決定了特征圖的增長速率,例如,框架中有個卷積層,當具有個通道的數(shù)據(jù)進入這些卷積層時,則第個卷積層將具有+(-1)個輸入特征圖。為了更好地理解稠密網(wǎng)絡(luò)結(jié)構(gòu),并且能夠靈活地調(diào)整超參數(shù),本文在稠密卷積神經(jīng)網(wǎng)絡(luò)中設(shè)立了另一個超參數(shù)密集塊。
本文使用的稠密卷積神經(jīng)網(wǎng)絡(luò)包含49 個卷積層、4 個池化層和1 個Softmax 層。輸入為48×48 的灰度圖像,然后經(jīng)過3×3 卷積層,3×3 卷積層采用1.1 節(jié)所述的Gabor 濾波器實現(xiàn)卷積層初始化。隨后設(shè)計了4 個密集塊,每個塊包含12 個卷積層。過渡層連接在每個密集塊的末端,由平均池化層、瓶頸層和壓縮層組成。最后,根據(jù)不同的目標類別,連接7 類Softmax 層或10 類Softmax 層作為最終輸出層,輸出識別結(jié)果如圖3 所示。
圖3 改進的稠密面部表情神經(jīng)網(wǎng)絡(luò)模型
激活函數(shù)和批量歸一化也包括在卷積層中,其中激活函數(shù)為式(3)的LLU()。與ReLU 和Sigmoid 相比,LLU()不會屏蔽軸負半軸的信號,信號按一定比例保留,不會造成信號為負值時某些特征損失,并且不會像Sigmoid 函數(shù)一樣出現(xiàn)梯度消失。批量歸一化的目的是確保每一層的輸入均具有零均值和單位方差,它加快了網(wǎng)絡(luò)的訓練速度。
卷積層中的廣義計算如式(5)~式(8)所示:
式中:(x)是本文提出的對數(shù)線性函數(shù)LLU();(x)是卷積計算函數(shù),卷積核為3×3 大小;(x)是批量歸一化函數(shù),x是輸入圖像中每個像素的值;Conv 表示卷積;是期望值;var 是方差;[]中的數(shù)據(jù)是三維矩陣。
由于在模型訓練中需要進行卷積計算,相對于CPU而言,GPU 的運用將極大地縮短訓練時間,加快訓練速度。本實驗中使用的計算機配置是雙E5?2637 v4 CPU,操作系統(tǒng)為Ubuntu 16.04,同時還使用了GTX1080Ti 顯卡、12 GB 內(nèi)存來加速訓練;使用的平臺是Google 開發(fā)的機器學習框架Tensorflow 1.9.0。
本文使用CK+、FER2013 和FER2013Plus 這三種數(shù)據(jù)集。CK+數(shù)據(jù)集在Cohn?Kanade 數(shù)據(jù)集的基礎(chǔ)上進行了擴展,并于2010 年發(fā)布,該數(shù)據(jù)集包含123 個對象和593個圖像序列。每個圖像序列的最后一幀都有一個動作單元標簽。在593 個圖像序列中,有327 個序列具有情感標簽。圖4 是CK+數(shù)據(jù)集的示例。
圖4 CK+數(shù)據(jù)集示例
FER2013數(shù)據(jù)集包含35 887個不同的圖像。訓練集包含28 709 個示例,公共測試集包含3 589 個示例,私有測試集包括3 589 個示例,這些數(shù)據(jù)集由48×48 像素的面部灰度圖像組成。該數(shù)據(jù)集中標記了7 個表情:中立、快樂、悲傷、驚奇、憤怒、厭惡和恐懼。FER2013 數(shù)據(jù)集的一些示例如圖5 所示。
圖5 FER2013 數(shù)據(jù)集示例
FER2013Plus是FER2013 的升級版本,此版本中的表情分為10個類別,并采用多標簽分類。與FER2013數(shù)據(jù)集相比多了輕視、未知和不是人臉這三個類別。
2.2.1 CK+數(shù)據(jù)集中的結(jié)果
在數(shù)據(jù)擴充方面,使用標準的10?crop 方法進行數(shù)據(jù)擴充,即在每個圖像周圍添加零值的4行或4列,然后截取左上、右上、左下、右下和中間5 個圖塊,鏡像翻轉(zhuǎn)將數(shù)量翻至10 個圖塊。與使用包含數(shù)十萬甚至數(shù)百萬個大規(guī)模參數(shù)的ResNet 和AlexNet 這類模型相比,本文模型只有7.2×10個可訓練參數(shù)。
圖6顯示了CK+數(shù)據(jù)集在本文提出模型上的訓練曲線,以及與利用ResNet和AlexNet模型訓練的比較結(jié)果。
圖6 CK+數(shù)據(jù)集在三種模型上的訓練曲線
從圖6 可以看出,經(jīng)過100 個epoch 的訓練,本文模型準確率可以達到99.78%,具有更好的泛化能力,相比ResNet 和AlexNet 兩個網(wǎng)絡(luò)訓練的結(jié)果都要好。
2.2.2 FER2013 和FER2013Plus 數(shù)據(jù)集中的結(jié)果
圖7 和圖8 分別顯示了FER2013 和FER2013Plus 數(shù)據(jù)集的訓練曲線。結(jié)果表明:這兩個數(shù)據(jù)集在本文提出模型上的準確率分別為70.78%和85.43%。FER2013 數(shù)據(jù)集在ResNet 和AlexNet 的準確率分別為67.82%和68.02%,與這兩個模型相比,本文提出的模型具有更高的表情識別準確率。
圖7 FER2013 數(shù)據(jù)集在三種模型上的訓練曲線
圖8 FER2013Plus 數(shù)據(jù)集在三種模型上的訓練曲線
在文獻[23]中,F(xiàn)ER2013Plus 使用眾包提高標簽的準確率,并設(shè)計了4 種方法來解決目標函數(shù)的問題。本文僅將多數(shù)表決方法用于預處理。在FER2013Plus 數(shù)據(jù)集上,ResNet 和AlexNet 的準確率分別為83.17%和81.36%。與ResNet 相比,本文提出的模型表情識別準確率提高了2%以上;與AlexNet 網(wǎng)絡(luò)相比,本文提出的模型表情識別準確率提高了4%以上。
2.2.3 人臉表情系統(tǒng)設(shè)計
為了探索人臉表情識別在實際場景中的應(yīng)用,基于本文模型構(gòu)建了人臉表情識別系統(tǒng)。這個系統(tǒng)能夠?qū)崿F(xiàn)兩個功能:其一可以識別圖片上的面部表情;其二可以實時識別面部表情。在功能一中,首先將預先準備好的圖片導入系統(tǒng),系統(tǒng)獲取圖片并進行人臉檢測,然后分析人臉上的面部表情,最后顯示圖像上的人臉屬于哪一類表情。在功能二中,系統(tǒng)首先通過攝像頭捕獲人臉,然后循環(huán)捕獲人臉圖像幀并進行人臉檢測,最后輸出當前的人臉表情,從而實現(xiàn)人臉表情的實時識別。圖9 為表情系統(tǒng)結(jié)構(gòu)設(shè)計框圖。圖10顯示了圖像識別功能,包括單人圖像和多人圖像的識別。圖11顯示了實時識別結(jié)果。
圖9 面部表情識別系統(tǒng)結(jié)構(gòu)設(shè)計框圖
圖10 識別單人圖像和多人圖像
圖11 實時識別面部表情
本文提出了一種基于改進的稠密卷積神經(jīng)網(wǎng)絡(luò)的表情識別方法。該方法首先采用Gabor濾波器初始化卷積層,然后提出一種新型激活函數(shù)對數(shù)線性函數(shù)LLU()與稠密卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的模型。實驗結(jié)果表明,該模型與現(xiàn)有的ResNet 和AlexNet 模型相比,不僅具有更少的參數(shù),而且其表情識別率有明顯提高。最后,設(shè)計了一個人臉表情識別系統(tǒng),不僅能實現(xiàn)靜態(tài)圖像的表情識別,而且能實時識別攝像頭采集的視頻表情,具有一定的表情識別應(yīng)用價值。
注:本文通訊作者為羅曉曙。