張 飛
(安徽廣播電視大學阜陽分校,安徽阜陽 236000)
隨著計算機技術的發展,機器視覺技術研究吸引了眾多的目光,與此同時,人工智能技術的發展使其研究取得了長足的進步。目前機器視覺主要包括檢測、識別和跟蹤等研究方向,這些技術廣泛應用于國防建設、醫藥衛生、社會網絡安全監控等領域〔1〕。而人臉檢測與識別正是機器視覺中一個重要的分支〔2〕。其中,人臉檢測是通過人臉的位置、大小等數據,確認圖像是否為人臉;而人臉識別則在人臉檢測的基礎上進行人臉特征的提取,包括大小、紋理、外貌等〔3〕。由于圖像的背景復雜性、人臉姿態多樣性,人臉檢測需要考慮很多方面的問題,既要保證較高的檢出率,又要保證較低的誤檢率〔4〕。基于Adaboost 的人臉檢測算法通過Haar-like 特征和積分圖函數實現特殊特征識別人臉〔5〕。但是,Adaboost的人臉檢測算法存在誤檢率高的問題〔6〕。本文在Adaboost 的人臉檢測算法的基礎上,引入基于梯度方向金字塔(GDP)特征和支持向量機(SVM)學習算法的分類器作為最后一級分類器,彌補誤檢率高的缺陷,形成基于特征臉的Adaboost 人臉檢測算法。
1.1 Adaboost 人臉檢測算法基于Adaboost 的學習算法的基本思想是:選定一個很大的訓練集,從中定義大量的Haar-like 特征。每個訓練樣本都賦予一個權重,進行T 次迭代,每次迭代后,對分類錯誤的樣本加大權重,使得下輪分類時更加關注這些樣本。最后根據每個特征分辨人臉的能力,選擇很小一部分作為關鍵特征,從而產生一個強分類器。Adaboost 訓練強分類器的算法描述如下〔7〕:輸入:樣本集{(x1,y1),(x2,y2),…,(xn,yn)},其中yi=0,1 分別表示負樣本和正樣本。算法步驟:
(1)初始化的權值:當yi=0 時,;當yi=1 時,。其中m 和l 分別是負樣本和正樣本的數量;
(2)令t=1 to T
①歸一化權值,使Wt符合概率分布,

②對于每個特征j,訓練一個分類器hj,這個弱分類器的分類結果只取決于j,此時分類誤差和Wt有關,

③選出分類誤差εt最小的弱分類器ht。
④更新權值:

其中如果Xi被分類正確,ei=0,反之ei=1,且βt=
輸出:訓練得到強分類器:

1.2 人臉檢測算法的改進Viola 等〔8〕文章的發表被視作是人臉檢測速度提高的一個轉折點,綜合Adaboost 方法和Cascade 算法構建了實時的人臉檢測系統。主要內容包括:1)提出了積分圖(integrated image),提高了計算Haar-like 特征的速度。2)采用級聯結構進行訓練。Adaboost 算法采用多個強分類器級聯的方式進行快速的人臉檢測,每級分類器使用特征均為Haar-like 特征,用同一種方法來組合若干個弱分類器,形成一個強分類器。這種級聯結構對效率有很大的提高,但在準確率方面,由于特征和訓練方法均為同一種方法,對檢測帶來一定限制。本文將人臉的檢測看作一個兩層的分類問題,首先利用Viola 等〔8〕提出的Adaboost 人臉檢測算法進行人臉的初檢測,由于該方法利用了多個分類器的級聯結構,利用這一檢測流程的特征。同時,引入基于GDP 特征和SVM 學習算法的分類器,作為檢測流程的最后一級分類器。
首先對檢測圖像進行一定的預處理,并用迭代窗口獲取待檢測區域;然后利用Adaboost 自身訓練得到的多級分類器進行人臉區域的檢測;最后對初次分類結果提取GDP 特征,GDP 特征具有一定的優勢,對光照并不敏感,利用SVM 學習算法訓練好的分類器進行最后一級研判,實現人臉的檢測。檢測算法框架見圖1。

圖1 檢測算法框架
算法步驟如下:
(1)GDP 特征定義:給定輸入圖像I(p),其中p=(x,y)表示圖像中像素p 的位置。
①首先定義圖像I 的金字塔為:

其中Φ(p)為高斯核參數(實驗中使用0.5),↓2表示每層金字塔為其下層大小的一半,s 是金字塔的層數。
②歸一化:金字塔每層σ 上的梯度方向定義為每個像素點歸一化后的梯度向量:

③輸出:圖像I 的GDP 特征定義為:

(2)SVM 算法分類:對于樣本集{(x1,y1),(x2,y2),…,(xn,yn)}(xi∈Rd,y∈{1,-1}),采用徑向基函數(RBF)進行計算:

當滿足

2.1 數據來源實驗數據主要包括3 個部分:1)人臉檢測分類器的訓練集用的是Feret 人臉庫(包含443 張人臉圖片),對人臉圖片進行一些預處理,包括歸一化、灰度化等,將圖片統一格式,這些人臉圖片作為正樣本,負樣本是手工截取的一些非人臉圖片,然后對這些樣本進行尋訓練,最后生成分類器,保存在XML 文件中。2)靜態圖片的測試集主要由第二代身份證照片(共500 張)和網絡圖片資源(40張圖片,共包括625 個人臉)組成,視頻中人臉檢測的測試集主要是攝像頭拍攝的視頻,也包括一些網絡視頻資源。
2.2 測試結果分析對Feret 人臉數據庫進行人臉檢測實驗,含人臉的圖片共443 張,其中漏檢測3張,將非人臉區域誤檢測為人臉的出現10 處,檢出率為99.3%,漏檢率為0.7%,誤檢率為2.3%。Feret人臉庫的人臉姿態與第二代身份證的相似,但存在一些輕微的傾斜和旋轉情況。
在第二代身份證圖片檢測識別實驗中,其中漏檢1 張,將非人臉區域誤檢測為人臉出現14 處,檢出率為99.8%,漏檢率為0.2%,誤檢率為2.8%。主要是因為第二代身份證拍攝條件要求比較嚴格,人臉的姿態是正面的,很少帶有旋轉和傾斜,且拍攝現場光照條件良好,背景單一,對檢測的影響較小,故檢出率較高。漏檢測的主要原因是照片中人物年齡較大,臉部皺紋明顯,且五官較小,其Haar-like特征不明顯。圖2 給出了部分檢測正確、誤檢和漏檢的例子。

圖2 第二代身份證人臉檢測結果
同時本文從互聯網下載一些多人臉圖片進行實驗,其中人臉帶有較明顯的旋轉和傾斜,圖片背景復雜,且光照條件多變,圖片本身清晰度也有較大差異,此外,包括很多遠景人臉。實驗共檢測了40張圖片,共包括625 個人臉,其中檢測正確的有544個,漏檢測81 個,誤檢測40 個,檢出率為87.0%,漏檢率為13.0%,誤檢率為6.4%?;ヂ摼W圖片資源清晰度不一致,而且圖片中人臉姿態往往是傾斜和旋轉的,圖片背景和光照條件復雜多變,對人臉的檢測帶來較明顯的影響。見圖3。

圖3 網絡圖片人臉檢測的部分結果
最后對Adaboost 算法檢測到的結果(包括正確和誤檢測的結果),利用GDP 特征進行重分類,分類過程將大部分誤檢測為人臉的非人臉區域去除,但有少量的人臉區域被誤標注為非人臉,本文將這類情況歸結為漏檢測。人臉檢測實驗的結果見表1~2。

表1 Adaboost 算法人臉檢測實驗結果
實驗結果顯示,Adaboost + GDP 的算法與單一的Adaboost 算法相比,正確率有小幅度的下降,即漏檢率略增加,但誤檢率下降較明顯,原因如下:基于SVM 的學習算法本身對訓練樣本有一定的依賴,且對人臉提取的特征不同,實際結果也會有差別,分類效果并不能達到100%的正確率,故會將部分人臉誤分類為非人臉。所以,通過在Adaboost 檢測結果后再級聯一層分類器,將人臉特征由原先的Haar-like 特征換成GDP,在提取人臉和非人臉樣本的特征后,利用SVM 對正樣本和負樣本進行訓練,得到分類器能夠去除一些誤檢測的結果。
人臉檢測與識別作為人臉信息處理的關鍵技術,近年來成為模式識別和計算機視覺領域內一項受到普遍重視的課題。本文通過Adaboost 人臉檢測算法,對靜態圖片進行了人臉檢測,同時利用GDP和SVM,對檢測結果進一步分類,達到了實時的檢測效果。

表2 Adaboost + GDP 算法人臉檢測實驗結果