王 柳,牛 犇(通信作者),巫天驥,張小鳳
(金陵科技學院電子信息工程學院 江蘇 南京 211169)
在日常生活中,人與人之間的交互方式具有多樣性,其中情緒的交流與表情信息的傳遞極為重要,表情和情緒能夠更準確地反映一個人的心理狀態和情感變化,因此對于人臉表情識別的研究一直是計算機視覺和人工智能領域的研究熱點[1]。隨著深度學習(deep learning,DL)技術的不斷發展,國內外已有不少學者在人臉表情識別領域取得了一定的成果[2-3]。
由于大多數人臉表情數據集存在數據量小、數據類別不均衡等問題,較少的樣本數量在訓練過程中往往會出現過擬合現象,泛化效果不夠理想。針對這一問題,本文提出一種針對人臉表情數據集的混合數據增強方法,提高卷積神經網絡訓練模型的準確率,增強人臉表情識別的魯棒性。
在DL網絡模型訓練過程中,數據集樣本數量過小會導致網絡中的參數過渡擬合有限樣本,難以實現正確分類。因此,DL在訓練過程中需要大量的數據樣本,數據增強方法應運而生。
數據增強方法可分為有監督和無監督2種。有監督的數據增強方法包括幾何變換、顏色變換、SMOTE算法、Sample Pairing算法、Mixup等。無監督的數據增強方法包括生成式對抗網絡(generative adversarial networks,GAN)、Conditional GANs、Autoaugmentation等方法。常東良等[4]提出一種基于注意力引導的Dropout,利用自監督機制更高效地緩解特征描述算子之間的協同自適應問題。路士杰等[5]提出一種適用于局放模式識別的帶梯度懲罰的Wasserstein生成對抗網絡數據增強方法。曹瑞陽等[6]針對現有的數據增強方法存在生成樣本越界和隨機性差的問題,提出一種基于最大最小距離的多中心數據增強方法。許華杰等[7]基于一致性的半監督學習方法MixMatch,提出了基于混合樣本自動數據增強技術的半監督學習方法AutoMixMatch。郭偉等[8]在不過多增加計算量的前提下改進現有的激活函數,增強生成特征的豐富性與多樣性。
本文提出的混合數據增強方法是通過幾何變換、圖像模糊化、調整亮度和對比度等方法,以20%的概率進行隨機搭配組合實現數據增強。通過對原始圖像進行翻轉、旋轉、裁剪、變形、縮放等幾何變換,并結合圖像模糊化、調整亮度及對比度等進行數據集的擴充。增強后的數據集規模變為原來的數倍,從而減少過擬合的風險。混合數據增強消除了樣本數據的尺度、位置和視角差異等因素,滿足模型的平移不變性和尺度不變性,增強了訓練模型的魯棒性,提高了訓練模型的識別準確率。
2.1.1 垂直鏡像翻轉
圖像垂直鏡像翻轉可表示為
式中:x為圖像的橫軸坐標;y為圖像的縱軸坐標;x′為圖像垂直鏡像翻轉后的橫軸坐標;y′為圖像垂直鏡像翻轉后的縱軸坐標。
2.1.2 圖像裁剪
將原始圖像按照0~5%的比例進行隨機裁剪。
2.1.3 縮放圖像高度或寬度
若圖像的原始像素為M×N,將給定圖像的尺寸在x、y這2個方向分別均按照kx、ky倍的相同比例進行縮放,本文選取隨機進行90%~110%的比例進行縮放。縮放后圖像的分辨率應為k×M和k×N。縮放圖像的計算矩陣形,可表示為
式中,x′和y′為縮放后圖像的所選點的橫縱坐標。
2.1.4 平移
將圖像的所有點均按照給定的x軸平移量Δx,y軸平移量Δy進行移動。本文選取隨機對x軸和y軸進行±10%的平移量進行平移。平移變換公式可表示為
2.1.5 旋轉
原圖像中點(x,y)的坐標表達式為x=rcosα和y=rsinα,將其按逆時針旋轉θ角后的對應點為(x′,y′)。旋轉計算公式可表示為
其中,本文選取逆時針±20°的旋轉角。
2.1.6 錯切
將原始圖像在投影平面上的非垂直投影、水平和垂直方向同時錯切,其公式可表示為
其中,本文選取在水平和垂直方向同時進行±8°的錯切。
2.1.7 雙線性插值
在對圖像進行幾何變換時,由于可能會產生一些在原圖中沒有的新像素點,通過插值運算對這些像素點進行賦值,即利用已知鄰近像素點的灰度值來產生位置像素點的灰度值。當求出的分數地址和像素值不一致時,可通過周圍4個像素點的距離比,由4個領域的像素灰度值進行雙線性插值。對于一個插值點(x+a,y+b),其中x、y均為非負整數,a∈ [0 ,1],b∈ [0 ,1],則該點的值f(x+a,y+b)可由原圖像中坐標為(x,y)、(x+1,y)、(x,y+1)、(x+1,y+1)所對應的4個像素值決定。其公式可表示為
2.2.1 高斯模糊
高斯模糊是以某一像素為中心,在它的周圍選擇一個局部鄰域,把鄰域內像素的灰度按照高斯正態分布曲線進行統計,分配相應的權值系數,將鄰域內所有點的加權平均值來代替原來的像素值,通過降低噪聲點與周圍像素點的差值以去除噪聲點。
設一個二維零均值高斯濾波器的響應為H(r,s),對一幅M×N的輸入圖像f(x,y)進行高斯濾波,獲得輸出圖像g(x,y)的過程可以用離散卷積表示為
其中,x=0,1,… ,M-1,y=0,1,…,N-1,k,l是根據所選鄰域大小而確定的。
2.2.2 均值模糊
均值模糊是以某一像素為中心,在它的周圍選擇一個鄰域,將鄰域內所有點的均值(灰度值相加求平均)來代替原來像素值,通過降低噪聲點與周圍像素點的差值以去除噪聲點。原始圖像f(x,y),經均值模糊處理后,得到輸出圖像g(x,y),如公式(8)所示 。其中,S是(x,y)點鄰域中點的坐標的集合,包括(x,y)點。M是S內坐標點的總數。
2.2.3 中值模糊
中值模糊是一種非線性平滑濾波方法,其公式可表示為
式中,1x,2x,nx為n個隨機輸入變量,按值大小升序排列為xi1>xi2>xin。
2.2.4 銳化
圖像銳化的實質是原圖像和梯度圖像相加以增強圖中的變化區域。首先,要計算梯度,對于圖像函數f(x,y)離散的數字矩陣中,可用差分來代替微分,從而得到梯度圖像g(x,y),公式可表示為
2.2.5 高斯噪聲
高斯隨機變量x的概率密度函數可表式為
式中:μ為x的平均值或期望值,σ為x的標準差。標準差的平方σ2,稱為x的方差。當x服從式(11)的分布時,其值有70%落在[(μ-σ),(μ+σ)]范圍內,且有95%落在[(μ-2σ),(μ+2σ)]范圍內。
2.2.6 隨機刪除像素
Coarse Dropout矩形丟棄增強器,即在原有數據樣本上基礎上,在大小面積可選定、位置隨機的矩形區域上將所有像素轉換為黑色像素來丟棄2%產生黑色矩形塊,通或對圖片上隨機選取一塊矩形區域并擦除圖像信息,從而產生一些彩色噪聲。
將原始圖像改變亮度、對比度、灰度圖疊加、局部移動像素,改變局部區域扭曲程度等方法來進行數據增強。
本文通過使用所提出的混合數據增強方法,記錄對人臉表情圖像識別準確性的波動。選用VGG16模型作為基準模型,對數據集進行訓練和測試。使用Extended Cohn-Kanada(CK+)數據集進行實驗,CK+是CK數據集的擴充,包含了高興、憤怒、蔑視、厭惡、悲傷、恐懼、驚訝7種表情類別。數據集中序列的強度均是從面無表情開始逐漸到達峰值表情,每一個序列的最后一幀的表情強度最高。CK+數據庫包括123個實驗對象,593個圖片序列,每個圖片序列的最后一張圖片均有動作單元的標簽,其中327個序列有情感標簽。CK+數據集表情示例如圖1所示。

圖1 CK+數據集表情示例
將7個不同表情分類的圖像作為數據集,其中高興(69幅圖像)、憤怒(45幅圖像)、蔑視(18幅圖像)、厭惡(59幅圖像)、悲傷(28幅圖像)、恐懼(25幅圖像)、驚訝(82幅圖像),所組成的CK+原始數據集共計326幅圖像。將原始數據集圖像中的人臉部分進行裁剪,裁剪后的人臉圖像歸一化為224×224像素。利用本文所提出的混合數據增強方法將原有圖像數據集進行擴充。混合數據增強的過程中,隨機以20%的概率對本文所描述的方法進行隨機搭配組合,實現數據增強。CK+原始數據集和數據增強數據集對比,如圖2所示。

圖2 CK+原始數據集和數據增強數據集對比圖
使用的硬件配置為Inter(R) Gold 5220R CPU處理器,主頻為2.20 GHz,內存為320 GB。開發環境為Windows 10操作系統,python3.7。使用VGG16標準模型分別對原始CK+數據集和經數據增強后的CK+數據集進行表情識別。
VGG16網絡在VGGnet中分類性能較為突出,由13個卷積層和3個全連接層組成,其網絡結構如圖3所示。每5段卷積層又分為低、中、高3個層次,每層均包括2個或3個卷積層。在卷積層后使用ReLU激活函數來防止梯度消失及減少過擬合,提高網絡的訓練速度。同時,為了使得網絡結構更加簡潔明了,在每個卷積層中均使用3×3的卷積核。在卷積層后連接了2×2的池化核組成的最大池化層,從而減小卷積層的參數誤差,及時捕捉梯度和圖像的變化以保存相關細節信息。全連接層將節點和節點之間進行連接,作為特征綜合的分類器。

圖3 VGG16網絡結構
隨著網絡層次的加深,卷積層的卷積核將從64變為128、256、512,以此擴充網絡的寬度,使得VGG16網絡模型各層可學習到更為豐富的顏色和紋理等細節特征。
為了對比數據增強后的實際效果,調整訓練集和驗證集的比例進行多次實驗,評估各種情況的準確率和損失函數。經過整理后的CK+原始數據集一共有326幅圖像,實驗樣本數量非常少,且數據類別不均衡,考慮到單次實驗數據具有偶然性,且誤差較大。因此,對原始數據集進行混合數據增強。對原始數據集分別進行不同比例(9∶1和3∶2)劃分訓練集和驗證集后進行多次實驗,對數據增強擴充后的數據集按照7∶3的比例進行訓練集和驗證集劃分后進行多次實驗。數據集劃分見表1。

表1 數據集劃分
每次實驗設置迭代周期為70進行訓練,對每次實驗的準確率和訓練過程損失函數取平均值作為實驗結果,損失函數如圖4所示,驗證集準確率如圖5所示,不同訓練數據所得模型測試集性能評估結果見表2。

圖5 驗證集準確率

表2 不同訓練數據所得模型測試集性能評估結果

圖4 損失函數
由圖4可見,在VGG16模型進行人臉表情識別訓練時,損失函數有一定的波動。總體來說,3條曲線約在前10個epoch時均基本趨于平穩,但在第10個epoch開始逐漸呈下降趨勢。其中,原始數據集中按照3∶2的比例劃分的下降趨勢最小,而經數據增強擴充后的數據集損失函數在下降時更為平滑。因此經混合數據增強后的CK+數據集損失函數下降更為平穩,模型更加穩定。
由圖5可見,3條曲線約在前10個epoch均基本趨于平穩,但在第10個epoch開始逐漸呈上升趨勢。在CK+原始數據集中,按照9∶1比例劃分的數據集比按照3∶2比例劃分的數據集,在模型訓練過程中所取得的驗證集準確率高。但相對來說,經混合數據增強擴充后的CK+數據集在模型訓練過程中所取得的驗證集準確率最高,且準確率曲線上升過程中也最為平滑。
由圖5結合實驗過程中的數據可見,CK+原始數據集經VGG16模型訓練后在前10個epoch進行人臉表情識別時的驗證集準確率分別為25.5%(9∶1)和25.4%(3∶2)。而經數據增強后的數據集在前6個epoch進行人臉表情識別時的驗證集準確率約為26%,在第7個epoch時就已出現上升趨勢。最終,按照9∶1比例和3∶2比例劃分的CK+原始數據集在訓練過程中所得到的驗證集準確率分別為91.5%和86.4%。而經混合數據增強擴充后的CK+數據集所得到的驗證集準確率為98.4%。分別較2個原始數據集得到了6.9%和12%的提升。
因此,經混合數據增強擴充后的CK+數據集在實驗中取得了更高的準確率和更低的損失函數。由此減少了過擬合的出現,增強了魯棒性,提高了識別精度。
綜上所述,針對人臉表情數據集圖像數量不足和數據類別不均衡等問題,本文提出了一種混合數據增強方法,通過幾何方法、圖像模糊化、調整亮度及對比度等以20%的概率進行隨機組合后對CK+原始數據集進行混合數據增強,在VGG16網絡中進行訓練和驗證實驗。實驗表明,本文所提出的混合數據增強方法可以有效提高最終訓練模型的準確率以及魯棒性,訓練過程中的損失函數與原始數據集相比變得更加平滑,獲得了較低的損失函數,模型的識別率達到了98.4%。