傅 銘 劉從軍,2
(1.江蘇科技大學計算機學院 鎮江 212003)(2.江蘇科大匯峰科技有限公司 鎮江 212003)
近些年來身份識別廣泛應用于實際生活中,而人臉識別具有易用性、互動性、穩定性等特點受到更多青睞[1~2],例如購物結賬時的刷臉付款和乘坐火車時的刷臉進站。
為了能夠提高人臉識別的正確率、減少識別時間,首先利用基于YCbcr 模型的皮膚分割算法和Adaboost算法對采集到的圖像進行人臉檢測,確定人臉區域范圍,之后再使用改進后的LDP算法提取特征識別人臉。
實際生活中采集到的人臉圖像不但包括人臉部分還有非人臉部分,在進行人臉識別之前首先要做好人臉檢測,人臉檢測的效果越好,之后的人臉識別就更省時、成功率更高。在人臉檢測階段使用基于Adaboost 算法的人臉檢測,主要有三部分工作,第一訓練弱分類器,第二訓練強分類器,第三得到級聯分類器。
首先通過訓練Haar-Like矩形特征得到弱分類?(x)[3],公式如下:
x表示學習圖像,f(x)即Haar-Like 特征值,λ表示區分人臉和非人臉區域的閥值,q為正一或者負一以此來控制不等號的方向,?(x)為符號函數。但是弱分類器的分類能力不強,只比隨機分類精確一些,容易檢測錯誤。
第二將弱分類器訓練成強分類器以提高人臉檢測的效果[4]。訓練過程如下:
1)選取T個弱分類器,m個非人臉圖像樣本,n個人臉圖像樣本[5]。設所有樣本為(x1,y1) ,(x2,y2)… (xm+n,ym+n),且當yi=1時表示樣本為非人臉,yi=-1時表示樣本為人臉。
2)初始化樣本權重,非人臉樣本為ωt(i)=1/2m,人臉樣本為ωt(i)=1/2n。
3)對當前樣本權重ωt(i)做歸一化處理:
4)每個Haar-Like 矩形特征訓練一個弱分類器[6~7],再計算每個弱分類器的加權錯誤率之和εt,公式如下:
其中ωt(i)表示第i個樣本的權重,?t(xi)-yi表示第t個弱分類器對第i個樣本是否分類對。
5)在所有弱分類器中選出加權錯誤率之和εt最小的弱分類器?t(x)[8]。
6)更新樣本權重,公式如下:
其中εt表示第t個弱分類器的加權錯誤率之和,ωt(i)表示第i個樣本的權重,ωt+1(i)表示第i+1個樣本的權重。
7)如果t≤T,重復3)至6)的過程。
8)最后得到強分類器為
其中αt=ln1/βt,?t(x)表示第t個弱分類器,H(x)為符號函數。
第三將若干強分類器依次相連組成級聯分類器[9],前幾級的強分類器由少量弱分類器訓練得到,可以根據人臉典型特征快速區分人臉區域和非人臉區域,后幾級的強分類器相對復雜,用以區分差異性較低的區域。
在得到級聯分類器之后,就可以以此進行人臉檢測,采集到的圖像首先進入第一級強分類器,任何被判斷為零的區域都會被去除,只有被判斷為一的區域才能進入到下一級,以此循環,直到通過所有強分類器,就可以確定圖像中的人臉區域。
基于Adaboost 算法的級聯分類器在檢測人臉存在用時較長,精確度有待提高的問題。因為Haar-Like 矩形特征是對整個采集到的圖像提取的,包括人臉區域和非人臉區域,所以用于訓練弱分類器的Haar-Like 矩形特征數量過多,大量時間浪費在對非人臉區域的特征提取上。
針對上述問題對Adaboost 算法做出了改進。利用基于YCbcr模型的皮膚分割算法,過濾掉采集圖像中的非人臉部分,減少Haar-Like 矩形特性的數量,節約特征提取的時間。
將采集到的圖像從RGB 模型向YCrCb 模型的轉換[10~11],公式如下:
其中Y表示像素明亮度,Cb表示藍色色度,Cr表示紅色色度。
轉換公式的計算過程中涉及到浮點數,考慮到在現實生活中計算機的運算特點,對于浮點數的計算較慢,應盡量用整數代替,因此對轉換公式的系數作出優化,以計算像素明亮度的公式為例。
得到改進后的轉換公式為
在YCrCb 模型下分量Y對是否是人臉的判斷影響小,主要由Cb分量和Cr分量決定,如圖1 所示,是人臉在YCrCb模型下Cb、Cr的分布。

圖1 Cb、Cr 的分布圖
由實驗可知YCrCb模型下人臉Cb分量主要在80~125之間,Cr分量主要在130~170之間,由此得到膚色分割的公式如下:
其中Cb(x)表示像素點的藍色色度,Cr(x)表示像素點的紅色色度。YCrCb 模型效果圖和膚色分割效果圖如圖2所示。

圖2 處理效果圖
在完成采集圖像的人臉檢測后,使用Local Directional Pattern(LDP)即局部方向模式進行人臉特征的提取,包括邊緣響應值的計算[12]和編碼[13]兩個步驟。
計算邊緣響應值的公式如下:
其中I表示輸入的人臉圖像,Mi表示第i個方向上Kitch 算子,*表示卷積計算,mi為第i 個方向上的邊緣響應值。
Kitch算子模板[14]如下所示。
編碼的公式如下:
其中LDP(x,y)表示坐標(x,y)像素點的LDP 編碼,|mk|為 |mi|中第k大的值,|mi|為mi的絕對值,s(x)為符號函數。
實現原理如下,以人臉圖像中一個像素點為中心建立3×3 的矩陣,這樣中心像素點周圍就存在八個方向上的外圍像素點,再讓這些像素點分別與其方向相同的Kitch算子進行卷積運算得到八個邊緣響應值[15],取絕對值并按照從大到小的規則排序。令前k 個邊緣梯度值為1,后8-k 個邊緣梯度值為0。最后按照一定次序取出,得到一個二進制數,轉為十進制,這個數就是該像素點的LDP 編碼值。LDP編碼過程如圖3所示。

圖3 LDP編碼過程
在LDP 算法中,一般取k 為3,k=3 時的LDP 編碼過程如圖4 所示。經過LDP 編碼后可得到二進制數00011010,轉為十進是26,那么點x 的LDP 編碼值為26。

圖4 k=3時LDP編碼值
圖像的方向信息對于人臉識別來說非常重要,而在LDP算法的第二步編碼中,對計算得到的邊緣響應值mi進行了取絕對值的操作,容易丟失圖像的方向信息。為了更好地反映人臉圖像的方向信息,對LDP算法做出了改進。
第一步計算邊緣響應值與傳統LDP算法相同,在第二步編碼中,取消對邊緣響應值mi的取絕對值操作,改進后的編碼公式如下:
其中mk為mi中第k 大的值,s(x)為符號函數。人臉圖像經傳統LDP 和改進LDP 提取特征后的效果圖如圖5所示。

圖5 特征提取效果圖
選用耶魯大學的Yale 人臉庫作為實驗的樣本庫進行實驗,實驗結果如表1和表2所示。

表1 人臉檢測效果比較

表2 人臉識別效果比較
從實驗結果可以看出改進后的Adaboost 算法不僅人臉檢測成功率有所提高,而且耗時也有減少。改進后的LDP 算法因為只是對第二步編碼中的取絕對值操作進行了調整,所有耗時幾乎沒有差別,但是提高了人臉識別成功率。
本文對人臉識別算法進行了系統性地研究。首先是采集圖像中人臉區域的檢測,使用基于Adaboost 的級聯分類器,因為其存在檢測時間較長,精確度不大的問題,對傳統Adaboost進行了改進。之后是特征提取階段,利用LDP 算法、改進后的LDP算法對人臉區域進行特征值提取。最后在yale 人臉庫進行了實驗驗證。