人脸表情识别
人臉表情識別
目前人們對表情識別的研究大都是從靜態(tài)圖像或者圖像序列中提取表情特征,然后根據(jù)這些特征信息通過設計相應的分類算法把表情歸為某一類別以完成分類任務。大多是分為三步,第一步預處理及人臉獲取,第二步,特征提取,第三步,歸類。將重點放在人臉整體上,將人臉整體進行分析處理,算法核心是降維處理。本文在此基礎上將特征提取分為兩步,將重點放在表情關鍵部分。人臉表情主要體現(xiàn)在眼睛、鼻子、嘴巴、眉毛四個關鍵部分,通過對這四個關鍵部分的定位,可以將人臉特征選擇縮小至這些部位中。減少了大量計算量,同時也提高了識別率。先人臉特征點定位出人臉區(qū)域的關鍵部位,再對人臉區(qū)域的關鍵部位進行特征提取,而非對整體進行特征提取。經(jīng)過特征提取,大量的冗余的數(shù)據(jù)被去除,空間維數(shù)大大降低。
本次實驗分為以下四部分:
人臉檢測識別 ??找出圖像中人臉的大概區(qū)域
人臉特征點定位 ??更加準確的定位出眼睛/眉毛等一些人臉區(qū)域的關鍵部位
表情特征提取 ??面部表情識別的核心步驟
表情分類 ??通過設置機制對表情進行分類,將表情歸入相應類別
本次實驗詳細步驟如下:
圖像預處理:
由于輸入圖像的來源,采集環(huán)境不同,圖像采集的時候人臉離采集器的距離,焦距的大小等使得人臉在整幅圖像中的大小位置不確定,在得到數(shù)據(jù)之后,通常的情況下,人臉表情圖像中往往包含有各種環(huán)境條件的限制和隨機噪聲的干擾,這樣會對圖像的重點部分造成影響,所以要考慮在獲取圖像數(shù)據(jù)之后就要對其進行灰度修正和噪聲過濾等預處理,來突出圖像中感興趣的特征,而且減弱無關的特征信息。對于本文所涉及的人臉表情,只需要保留面部部分特征,可以舍去頭發(fā),服飾,背景等無關信息。圖像的預處理分為點運算和幾何處理。點運算可以改變圖像的直方圖分布,使圖像更加清晰, 利于后期的處理。除了點運算之外的圖像預處理就是幾何運算,幾何運算可以得到人臉的位置端正的人臉圖像。通過點運算和幾何運算可以得到尺寸,人臉位置統(tǒng)一的標準化人臉圖像。本次實驗的方法把原始的 JAFFE 人臉表情圖像轉(zhuǎn)換為歸一化圖像。
? 具體的預處理包含以下幾個步驟:人臉的定位、人臉區(qū)域的幾何歸一化以及灰度歸一化。 ?
幾何歸一化是指根據(jù)人臉表情圖像的特征點和和幾何模型確定主要的矩形特征區(qū)域,然后把原大小為 256×256 的圖像剪裁成 150×100 的圖像,這樣就可以使圖像中人臉的大小都一致。 灰度歸一化是為了減少光照對圖像的影響,對圖像進行光照補償,這樣有助 于提高識別率。通過歸一化就將圖像的每個像素亮度值都轉(zhuǎn)換到[0,1]之間,如果某個圖像需要歸一化,就首先把它轉(zhuǎn)化成一維向量 x,然后對每一個元素 x(i)進行處理。
人臉檢測識別:
人臉檢測是要找出圖像中人臉的大概區(qū)域,對于任意一幅給定的圖像,通過算法搜索圖像,判斷圖像中是否存在人臉。如果算法?檢測出輸入的圖像中存在人臉圖像,那么就將人臉從整個圖像背景中分離出來,將人臉的位置以坐標 形式返回,同時返回人臉的大小和此時的姿態(tài)。人臉檢測是人臉表情識別最基礎的一步,能不能從圖像 中提取人臉,以及提取出來的人臉是否符合后期處理的標準,等等這些條件直接影響后期的識別率。本次實驗通過使用Opencv現(xiàn)有的Haar分類器將人臉從整個圖像背景中分離出來。Haar分類器就是對人臉和非人臉進行分類的算法;
Haar分類器實際上是Boosting算法的一個應用,Haar分類器用到了Boosting算法中的AdaBoost算法,在AdaBoost算法的基礎上,使用Haar-like小波特征和積分圖方法進行人臉檢測,并對AdaBoost訓練出的強分類器進行級聯(lián),并且在底層的特征提取中采用了高效率的矩形特征和積分圖方法
Haar分類器?=??Haar-like特征?+?積分圖方法?+?AdaBoost + 級聯(lián);
Haar分類器算法的要點如下:
① 使用Haar-like特征做檢測。
② 使用積分圖(Integral?Image)對Haar-like特征求值進行加速。
③ 使用AdaBoost算法訓練區(qū)分人臉和非人臉的強分類器。
④ 使用篩選式級聯(lián)把強分類器級聯(lián)到一起,提高準確率。
人臉特征點定位:
人臉檢測是要找出圖像中人臉的大概區(qū)域,而人臉特征點定位則是要更加準確的定位出眼睛、眉毛、?鼻子、嘴巴輪廓等一些人臉區(qū)域中的關鍵部位。以便對得到的人臉進行進一步的處理。研究方法主要分為兩大類,一類是基于模型的方法,一類是基于回歸的方法。
? 次實驗采用基于模型的方法,使用的是微軟研究院孫劍的基于回歸的?Explicit Shape Regression 算法,這種算法在人臉特征部位定位方面取得了很好的效果。通過 ESR 算法能夠精確的定 位人臉關鍵點部位,給后期處理減少了大量的數(shù)據(jù)量。ESR 核心內(nèi)容是使用了 cascade regression 框架, cascaderegression 框架是 P.Dollár 在 CVPR2010 的 Cascaded PoseRegression 中提出的一種方法,用來解 決對齊問題。孫劍在 esr 方法在此基礎上做了幾個擴展,使他更為適合做人臉關鍵點定位。
? 要思路:通過對輸入訓練集最小化對齊誤差,我們可以得到一系列的回歸函數(shù),通過這些函數(shù), 可以進一步的推斷出人臉整體的形狀。
表情特征提取:
本次實驗采用Gabor濾波器進行特征提取。Gabor 小波有很好的仿生效果,可以很好 表達表情的變化。但是考慮到提取出的特征維數(shù)過 高,算法復雜,耗時較大,故不對全圖像進行特征向量求解,而是針對人臉關鍵部位。Gabor 濾波器公式化定義如下,其中 入為正弦函數(shù)的波長, θ為 Gabor 核函數(shù)的方向, ?為相位偏移,?r為圖像空間的寬高比,b 為 Gabor 濾波器的帶寬值, 6的值隨著帶寬 b 的變化而變化,這里需要注意的 是,b 的值必須是正實時,否則將影響結(jié)果的計算。b 的值越小,式子的標準差越大,這樣的情況下, Gabor 形狀就會越大。
Gabor特征提取將特征部位特征值取出來之后,接下來的工作就是對特征進行降維處理,維度太高影響系統(tǒng)的運行速度。本文中使用 的的特征降維算法是主成分分析算法,簡稱為 PCA 算法,PCA 算法主要 用于數(shù)據(jù)的降維處理,在很多數(shù)據(jù)分析的系統(tǒng)中,數(shù)據(jù)以多維的方式處理,而多維數(shù)據(jù)中,某些數(shù)據(jù)本 身沒有區(qū)分性,如果用這些數(shù)據(jù)進行區(qū)分,那么結(jié)果代表性不大。這些數(shù)據(jù)也成為無用數(shù)據(jù),我們要 做的是找到多維數(shù)據(jù)中那些變化比較大的數(shù)據(jù),變化大小可以通過數(shù)據(jù)的方差來辨別,通過去除這些變 化小的維,使得留下來的數(shù)據(jù)都是能夠最大限度表達原始的數(shù)據(jù)。這樣處理過的數(shù)據(jù),數(shù)據(jù)維度低了, 但是數(shù)據(jù)的原始含義并沒有發(fā)生變化。
表情分類:
人臉表情識別過程中,最后一步,也是直接影響結(jié)果的一步就是表情分類。表情分類是指通過設計 分類機制來對表情進行分類,將表情歸入相應的類別。常用的分類方法是按照感情分類,將表情分類到 PaulEkman 歸納的 6 種基本感情。在本文中,我們將所有表情分為四類,悲傷、開心、驚訝、害怕。人 臉表情分類的方法有很多,主要利用基于機器學習的方法如人工神經(jīng)網(wǎng)絡,貝葉斯分類,支持向量機以 及一些其他的分類算法。
本次實驗采用LibSVM 對表情進行分類,LibSVM 是林智仁先生編寫的 SVM 軟件,該軟件將 SVM 方法集合在一起, 該軟件很大程度上方便了我們分類時使用 SVM 的方法。 表情分類流程:一步準備訓練數(shù)據(jù),對數(shù)據(jù)的處理,處理成 libsvm 的標準格式。第二步訓練 model,調(diào)整好參數(shù),載入數(shù)據(jù)進行訓練。第三步利用訓練好的 model 對樣本數(shù)據(jù)進行預測。最后分析預 測結(jié)果,和標準結(jié)果進行比對分析。
本次實驗采用一種新的人臉情緒識別流程,重點放在表情關鍵部分。大多數(shù)的人臉情緒識別算法將重點放在人臉整體上,將人臉整體進行分析處理,算法核心 是降維處理。本次實驗采用人臉關鍵部位特征提取算法,基于回歸的 Explicit Shape Regression 算法,?過 ESR 算法能夠精確的定 位人臉關鍵點部位,給后期處理減少了大量的數(shù)據(jù)量。本次實驗的人臉特征向量選擇采用了 Gabor 小波,因為 Gabor 小波有很好的仿生效果,可以很好 表達表情的變化?,考慮到提取出的特征維數(shù)過 高,算法復雜,耗時較大,不對全圖像進行特征向量求解,而是針對人臉關鍵部位。
總結(jié)
- 上一篇: 单例模式在JDK应用的源码分析
- 下一篇: 【深度学习】Tensorflow的基本操