施宇楠 吳自萬 孫 文
(淮陰師范學院 物理與電子電氣工程學院,江蘇 淮安223300)
在生活中,人的表情常常代表著他所抒發的情緒和他的真實感情,因此表情是語言以外的另一種交流方式。人臉表情識別做的就是運用計算機進行高效、自動、精準的去識別人的面部表情,根據學者早期研究,將人臉表情定義為6 種:驚奇、恐懼、厭惡、憤怒、高興、悲傷。人臉表情識別有著非常廣泛的應用前景,例如可以實現人類與機器人之間的交互,應用人臉表情識別來對罪犯供詞過程中的細節進行監測,以及醫學方面通過人臉表情識別來進行面部神經癱瘓診斷等[1]。
人臉識別技術的主要研究有基于幾何特征和基于代數特征的方法[2],隨著人工智能時代的到來,機器學習的快速發展,深度學習下的BP 神經網絡,CNN(卷積神經網絡)模型極大地提高了人臉識別的速度和精度,讓人臉識別系統在穩定性,準確性,快速性等全方面得到了很大的提升。但存在缺陷的是,人臉特征的高復雜性導致傳統模型在運算方面負載比較大,速度與準確度不高。本文研究的項目通過自己收集和引用網絡數據庫的人臉表情圖片作為數據集,CNN 作為模型算法,利用Opencv對人臉表情進行動態捕捉。
卷積神經網絡(Convolutional Neural Network ,CNN)是一種前饋神經網絡,卷積神經網絡的基本結構,其中包括據輸入層,卷積層,池化層,全連接層和輸出層。
輸入層:將圖片以矩陣的形式填充到輸入層。
卷積層:卷積層是卷積神經網絡的核心,卷積是兩個函數的運算,稱為卷積運算[4],例如圖1-2 就是一個簡單的卷積操作。卷積運算就是卷積核以固定的步長去乘以輸入矩陣的每個元素,卷積核又稱為此過程可以是濾波器,看作是提取圖片的每一個部分的信息。
池化層:作用是保留強度高的部分,將強度低的部分濾除從而達到減小卷積運算后矩陣的尺寸大小,之所以要減小尺寸空間大小是因為卷積運算后的矩陣大小過大的話會導致最后全連接層出現過擬合的狀況會影響分類器的質量[5]。
全連接層:將一系列經過卷積和池化操作后的數據放入全連接層中,輸出類別分值向量,在這片文章中,根據6 種表情,可以將全連接層的輸出為1*6 的向量。
Softmax 函數:Softmax 函數用于分類,將多個神經元的輸出映射到(0,1)的區間中,使用歸一化函數將分類轉化為概率的比較問題。
激活函數:由于線性模型只能對線性可分的訓練集達到較好的分類效果,因此我們需要對其進行非線性變換,在神經網絡中常用的激活函數有Sigmoid,Tanh,Relu 等,在此次的研究過程中使用的是Relu 函數。
卷積神經網絡的運作過程:將圖片以矩陣的形式輸入到輸入層,接著在卷積層的卷積運算下進行特征提取,然后再經過池化層進行空間尺寸的減小,可以把卷積層和池化層看作是一次操作,卷積神經網絡的計算就是若干次重復以上操作,最后的全連接層對圖片進行分類,輸出類別對應的值。
1.2.1 前向傳播
設x 為訓練樣本集中的樣本,y 為樣本x 對應的類別標簽,在本次實驗中,x 為圖片的尺寸大小,y 為圖片對應表情的類別標簽,將x 輸入到卷積神經網絡中,經過卷積,池化,全連接最后到輸出層(在此過程中,每一層的輸出都是后一層的輸入),輸出層是一個6 維的向量,其中每一維代表一種表情的概率大小。
1.2.2 后向誤差傳播
輸出與類別標簽y 向量值的誤差,使用最小化均方誤差,來反向一層層更新權值。本次研究采用梯度的方式進行反向誤差傳播。
將預處理后的訓練集味入輸入層,根據輸出值與類別標簽值的誤差進行迭代更新,每訓練一定的次數將測試集的數據進行測試,來觀測準確值,當準確值高于0.8 并且收斂的時候停止訓練,最后將訓練好的模型保存。
在人臉表情識別系統中,對象針對的是人臉表情,因此為了提高精確度,舍棄頭發,耳朵,脖子等與表情無關的部分,可以使用相應軟件(Opencv)對圖片進行人臉特征提取。
為了解決圖片的多樣性從而提取盡量多的人臉表情特征,對表情數據集進行一系列擴展處理。在訓練卷積神經網絡時,需要大量使用各種各樣的訓練數據,一方面可以提高人臉表情識別的精確度,另一方面可以防止過多訓練造成的過擬合現象。對于訓練數據集,我們可以通過旋轉,鏡像,添加噪聲等方式來拓展。本次研究對人臉表情照片進行兩個操作:鏡像和旋轉。圖像旋轉的角度不宜過大,在5°到15°以內。通過數據擴展,數據集更加多樣,并且容納了更多不同情況,使得數據集更加可靠。
本次實驗采用CK+人臉表情數據庫,方法采用基于卷積神經網絡模型,進行訓練。Loss 率表示每次迭代訓練的結果與目標值的誤差程度,Ess 為準確度,即驗證集進行檢驗的準確程度。
在Loss 率訓練跟蹤中,一共更新了2500 輪,前1000 輪更新的Loss 率下降的速率比較快,后1500 輪更新的速率變化很小。
在Ess 率訓練跟蹤中,測試集的準確率在1600 輪次左右開始向1 收斂,由Loss 率和準確率可以調整訓練的次數為1600左右,此做法可以大大減少過擬合的可能性。
為了驗證卷積神經網絡的快速性與準確性,本次采用K-近鄰法和BP- 神經網絡框架模型進行對比。卷積神經網絡的卷積層和池化層起到了濾波作用把圖像的主要特征部分提取出來,再進行訓練,對于神經網絡,大大地減小了計算的復雜程度,節約了大量的訓練時間。
同樣對每個模型進行2500 次的訓練,在500 次時,CNN,BP神經網絡,K- 近鄰的Loss 率分別為0.83,0.91,0.93,Ess 率為0.43,0.34,0.29 此時看不出什么特別大的區別,但到1000 輪差距開始變大,CNN 的Loss 率此時已經下降到0.51,但BP 神經網絡和K- 近鄰僅僅降到了0.8 左右,CNN 的Ess 率上升到0.8,相較于0.5 左右的BP 神經網絡和K- 近鄰在速度上和準確性上都有很大的提升,在1400 輪,卷積神經網絡的準確率先收斂于1,bp 神經網絡在1600 輪收斂,最后的K- 近鄰在1700 時收斂。
以上對比可以看出,雖然三種模型Ess 率最后都成功的收斂于于1,但卷積神經網絡模型的訓練相比傳統的k- 近鄰法和一般的BP 神經網絡法在速度與準確性方面都有提升。
本文研究分析了基于BP 神經網絡,k- 近鄰法與卷積神經網絡的分類法在CK+人臉表情庫的準確性與快速性,接著分析了卷積神經網絡相較BP 神經網絡與k- 近鄰而言更快速與準確的原因,通過以上的仿真分析對比,卷積神經網絡模型實現人臉表情的分類識別率更高。