胡 寧,劉振宇
(沈陽工業大學信息科學與工程學院,沈陽110870)
面部表情是由人臉肌肉的運動形成的,是情感變化在面部可觀察到的表現[1]。面部表情的變化能顯示人的心理活動,調整人之間的社會行為。隨著服務機器人產業的興起,模式識別走進大眾視野,人們對表情的研究也逐漸增多[2]。其中笑臉識別技術被廣泛應用于機器人視覺及數碼相機等智能設備。
近年來研究學者提出了多種笑臉檢測的方法,例如深圳華為技術有限公司獲得了笑臉檢測發明專利權,其原理主要是通過獲取到的人臉視頻中嘴部的運動信息來判斷是否檢測到笑臉;何聰[3]利用一種高層次仿真生物視覺方法來實現笑臉的識別與分類,該方法主要基于生物啟發特征來進行笑臉的特征提取和分類;陳俊研究了基于生物啟發特征的真實環境下的笑臉識別,構造了一個符合人類識別機制的笑臉分類系統[4];郭禮華等人利用分層梯度方向直方圖(PyramidHistogramofOrientedGradients,PHOG)特征與聚類特征選擇進行笑臉識別[5];嚴新平融合局部二值模式(LOCAL Binary Patterns,LBP)特征與HOG特征來進行笑臉識別研究[6]。
采用Viola-Jones算法來檢測人臉,可將人臉部分提取出來,采用HOG和Gabor兩種特征提取方法提取圖片特征,并送入支持向量機(support vector machine,SVM)進行訓練。通過觀察訓練樣本中的不同表情,發現嘴唇的形狀變化最能代表不同表情。同時嘴唇外周的特征例如法令紋等,則不是十分清晰,不同的圖片效果差異很大,不適合作為判斷表情的標準。通過對嘴部特征點擬合曲線進行分析發現,笑臉的擬合曲線會產生明顯的弧度并且擬合曲線兩個端點縱坐標的平均值較小,而其他表情的擬合曲線則接近一條水平線且擬合曲線兩個端點縱坐標的平均值較大。故此提出一種基于嘴角坐標平均值變化的笑臉識別方法,該方法通過對嘴角坐標的計算,可以準確識別笑臉表情。圖1為其主要工作流程。

圖1 笑臉識別流程
檢測采用Viola-Jones算法來識別人臉和嘴部。該算法是由Paul viola和Michael J.Jones共同提出的一種人臉檢測框架。它極大地提高了人臉檢測的速度和準確率。該算法利用積分圖像來提取圖像特征值,利用adaboost分類器的特征篩選特性,保留最有用特征,從而有效減少了檢測時的運算復雜度,提升了運算速度。同時將adaboost分類器進行改造,變成級聯adaboost分類器,提高了人臉檢測的準確率[7]。
Viola-Jones算法采用haar-like特征提取方法。Haar-like是由許多黑白塊組成的,分別將白色和黑色區域中的所有像素相加,然后做差,就是區域的特征值,即:

但是考慮到多尺度問題,即利用不同大小的掃描窗口去檢測不同大小的人臉的問題,這個特征需要進行歸一化處理。首先選定檢測窗口的大小,利用這個窗口對整個圖像進行滑動,每滑動到一個位置,就在窗口中提取一系列haar-like特征。由于哈爾特征極多,而這些特征中只有一小部分是有用的,所以采用adaboost分類器進行特征選擇。adaboost分類器的原理就是構造一個由多個弱分類器并聯而成的強分類器,每個弱分類器都根據自己的準確率將自己的分類結果乘以權值,最后的輸出是所有弱分類器輸出的加權和。每個弱分類器的分類準確率可以很低,但是整個強分類器的準確率卻會很高[8]。圖2為采用Viola-Jones算法提取的人臉部分和嘴唇部分。

圖2 對人臉和嘴部進行檢測提取
方向梯度直方圖(Histogram of Oriented Gradient,HOG)特征是一種在計算機視覺和圖像處理中用來進行物體檢測的特征描述子。它通過計算和統計圖像局部區域的梯度方向直方圖來構成圖像特征[9]。
HOG特征提取過程如下,首先要對上述裁剪出來的圖片進行Gamma校正來彌補圖像光照不均勻的問題。采用平方根的辦法進行Gamma標準化,對標準化后的圖像,求取其梯度及梯度方向。采用的水平和垂直方向的梯度算子為:

然后用水平和垂直梯度算子對原圖像做卷積運算,得到χ方向(水平方向,以向右為正方向)的梯度分量 Gχ(χ,y)和y方向(豎直方向,以向上為正方向)的梯度分量 Gy(χ,y),具體為:

式中H(χ,y)表示輸入圖像中像素點(χ,y)處的像素值。將這兩個方向的梯度分量帶入下式中即可得到該點的梯度大小和方向:


然后將圖像劃分成若干個cells(單元),相鄰的cell之間不重疊。在每個cell內統計梯度方向直方圖[5]。
隨后分別對每個block進行標準化,一個block內有4個cell,每個cell含有一個9維特征向量,故每個block就由4×9=36維特征向量來表征。將所有block的HOG特征結合在一起形成整個圖片的HOG特征向量。圖3為臉部HOG特征直方圖。

圖3 臉部HOG特征直方圖
Gabor變換屬于加窗傅立葉變換。Gabor函數可在頻域不同尺度、不同方向上提取圖片特征。Gabor濾波器的頻率和方向類似于人類的視覺系統,所以常用于紋理識別[10]。在空間域,二維Gabor濾波器是一個高斯核函數和正弦平面波的乘積,其復數形式為:

公式中:λ是正弦函數波長,θ是Gabor核函數的方向,φ是相位偏移,σ是高斯函數的標準差,γ是空間的寬高比。式(7)和式(8)分別為濾波器的實部和虛部[11]。
首先生成5個尺度和8個方向的Gabor模板,共計40個模板,這些模板與樣本圖像無關。然后利用每一個模板與樣本圖像做一次卷積運算,得到對應的40個卷積圖像;不同尺度不同方向的Gabor模板對同一幅圖像生成了不同視圖的數據,類似于不同的觀察角度產生了不同的特征數據,圖4表示了這樣的一組臉部Gabor特征。每一個卷積后的樣本圖像矩陣是9行1列的,連接在一起就是360行一列的Gabor特征值。本研究共有100張訓練樣本,將所有Gabor特征值組合成一個360×100的矩陣,每一列代表一個圖片的Gabor特征。

圖4 臉部Gabor特征
支持向量機(簡稱SVM)是一種新型的機器學習方法,其主要功能是分類和回歸[12]。SVM是由兩類線性可分情況下的最優分類面發展起來的。圖5為二維線性可分的情況,其中f(χ)為分類線,f(χ1)和f(χ2)分別為過兩類樣本中離分類線最近的點且平行于f(χ)的直線,f(χ1)和f(χ2)之間的距離稱為兩類的分類間隔。

圖5 SVM二分類示意圖
SVM的基本思想是尋找一個可以將兩類樣本分開的最優分類線,使得分類間隔最大。設判別函數為:

當f(χ)=W·χ+b的時候,即為決策邊界,f(χ1)和f(χ2)上的樣本稱為支持向量。對判別函數進行歸一化后兩類樣本都滿足,分類間隔為,滿足的樣本就是f(χ1)和f(χ2)上的支持向量。
因此在支持向量機的訓練過程中,主要目的是獲得W,一旦有了一個訓練后的支持向量機(這個向量機保證了最大的邊緣超平面,使得在此數據集下有較好的分類精度),就可以對線性可分的數據進行分類[12]。對于線性不可分的數據,會添加約束條件進行計算。
通過以下兩式可將求W的問題轉化為求解拉格朗日乘子αp的問題,通過對拉格朗日方程求偏導可以得到兩個約束條件,進而求解出αp:

嘴角坐標法首先采用Shi&Tomasi算法對嘴部特征點進行檢測,該算法是Harris算法的改進。Harris角檢測器由于能夠檢測已旋轉、縮放、有照明差異或噪聲較大的圖像中的角點而被廣泛應用。Harris算法最原始的定義是將矩陣行列式的值與矩陣特征值的和相減,再將差值同預先給定的閾值進行比較[13]。后來Shi和Tomasi提出了改進的方法,若兩個特征值中較小的一個大于最小閾值,則會得到強角點。
設角點檢測響應為RH,對于一個輸入圖像來說有:

上述四式中α和β為矩陣的特征值,M是一個矩陣,M中的三個矩陣元素如下:


當某像素屬于一個角時,該檢測器輸出RH>0;當像素屬于邊緣的一部分時,RH<0。
利用Shi&Tomasi算法檢測出嘴部的角點特征后,對這些特征值進行一系列的整合和運算,得到笑與不笑之間的分界值Pavg,通過這個值對測試庫中的圖片進行分類,分類操作的流程如圖6所示。

圖6 嘴角坐標法流程圖
算法具體過程如下:對于訓練階段來說,首先通過Shi&Tomasi算法檢測出嘴部特征點,如圖7所示;然后計算嘴角部分特征點的數量,并對這些點進行處理,去除掉在一個位置上重復的點;根據這些點的坐標畫出特征點擬合曲線。

圖7 檢測嘴部特征點
曲線擬合采用二階拋物線擬合,基于最小二乘法曲線擬合原理,即已知離散的數據集,構造一個函數,使原離散點盡可能接近給定的值。最小二乘法是通過最小化誤差的平方和,尋找數據的最佳匹配函數,如下式所示:

通過對上述二式進行計算,可以得到嘴部特征點的擬合曲線,如圖8所示為笑嘴的角點擬合曲線,圖9則為非笑嘴的角點擬合曲線。再將擬合曲線左右端點的值定義為左右嘴角的特征值,求這兩個點縱坐標的均值,按此規則操作,得到所有笑臉及非笑臉嘴角特征點的縱坐標均值。圖10即為訓練樣本縱坐標均值分布曲線。

圖8 笑嘴的角點擬合曲線

圖9 非笑嘴的角點擬合曲線

圖10 訓練樣本縱坐標均值分布曲線
通過計算發現,笑臉的角點縱坐標均值最大為105,非笑臉的縱坐標均值最小為110,因此設Pavg=108作為判斷圖片是否為笑臉的條件。在測試階段,如果測試圖像左右嘴角的縱坐標均值大于108,則該圖片被判定為非笑臉;如果小于108,則為笑臉。經過測試,該方法的準確率達到了92%。
實驗采用Matlab軟件進行程序編寫及測試,訓練圖片為100張,其中包含50張笑臉圖片,全部來自GENKI笑臉數據庫,50張非笑臉圖片,測試圖片100張,包含多種表情,非笑臉圖片和測試圖片皆來自網絡搜索。如圖11和圖12即為截取出的部分人臉圖片,從中可以看出Viola-Jones算法對于檢測截取人臉某一部分圖片的效果非常好。
將截取出來的圖片進行尺寸歸一化,嘴部圖片尺寸設置為18×18像素,單個嘴部的Gabor特征為一個360×1的矩陣,HOG特征為一個1×15的矩陣。應用于Gabor特征提取的臉部圖片設置為88×88像素,每一個圖片的Gabor特征為一個360×1的矩陣,應用于HOG特征提取的臉部圖片設置為96×96像素,HOG特征為一個1×1215的矩陣。

圖11 臉部截取

圖12 嘴部截取
將所有用于訓練的圖片特征進行交叉組合得到訓練總矩陣,將這個矩陣中代表笑臉圖片特征的標簽設為1,代表非笑臉圖片特征的標簽設為2,輸入到SVM進行訓練。用同樣的方法求出測試庫的特征,利用訓練好的SVM進行分類。
基于角點檢測的嘴角坐標法按照上述步驟處理,得到分類平均值為108,然后對測試庫中的圖片進行測試。表1為本方法的正確率??梢钥闯觯旖亲鴺朔ǖ恼_率高于Gabor和HOG方法。

表1 不同算法的正確率
采用HOG和Gabor這兩種特征提取方法來提取臉部特征,送到SVM進行分類識別,從而提出一種基于嘴角特征點的微笑檢測方法。對于特征提取來說,提取嘴部的特征比提取整個臉部特征速度更快,而且數據量比較小,冗余數據就相對較少,這會使分類的準確率得到提升。通過融合不同的特征進行測試發現,提取嘴部Gabor特征的正確率最高,達到了90%,而基于嘴角坐標的算法正確率為92%,高于融合不同特征進行分類的正確率。在今后的研究中,可以嘗試在角點坐標平均值的基礎上,通過計算嘴部張開的面積等方法來進一步細分笑的程度。