何瑤,陳湘萍
(貴州大學電氣工程學院,貴州 貴陽 550025)
隨著計算機與信息技術(shù)的不斷發(fā)展,人臉檢測與識別在各個領(lǐng)域均得到了廣泛使用。人臉檢測是人臉識別系統(tǒng)中的重要組成單元。人臉檢測指的是應用一定的策略對給出的圖片或者視頻來進行檢索,判斷是否存在著人臉,如果存在則定位出每張人臉的位置、大小與姿態(tài)的過程[1-2]。根據(jù)現(xiàn)有的算法,目前的人臉檢測方法可分為三類,分別是基于統(tǒng)計理論方法,基于幾何特征方法以及基于膚色模型方法。其中,基于統(tǒng)計理論方法中的Adaboost[3-4]人臉檢測算法是由劍橋大學的Paul Viola和Michael Jones提出,在人臉檢測中應用比較廣泛,但也存在著較高的誤檢率。OpenCV(Open Source Computer Vision Library)由Intel公司開發(fā),是開源的視覺算法庫,由C和C++函數(shù)組成[5-7]。本文借助OpenCV庫,引入HSV色彩空間膚色分割算法,與Adaboost算法相結(jié)合,設(shè)計基于膚色分割與Adaboost算法相結(jié)合的人臉檢測系統(tǒng),并比較該系統(tǒng)與Adaboost算法設(shè)計的人臉檢測系統(tǒng)對圖片與實時視頻人臉檢測的檢測率和誤檢率。
1.1.1 Adaboost算法原理
Adaboost算法是通過無數(shù)次循環(huán)迭代來尋求最優(yōu)分類器的過程[8]。用弱分類器Haar特征中任一特征放在人臉樣本上,求出人臉特征值,通過更多分類器的級聯(lián)便得到人臉的量化特征,以此來區(qū)分人臉和非人臉。Haar功能由一些簡單黑色白色水平垂直或旋轉(zhuǎn)45°的矩形組成。目前的Haar特征總的來說廣義地分為三類:邊緣特征、線特征以及中心特征。Haar特征的本質(zhì)其實就是一個差值,即人臉特征值[9-10]。這個差值為求得白色區(qū)域的像素灰度和與黑色區(qū)域的像素灰度和兩者之差。利用積分圖,可以迅速的計算出Haar特征值,積分圖的運算如式(1)所示。
ii(x,y)為圖像經(jīng)運算之后所得積分圖內(nèi)每個像素點的像素值,i(x',y')為原圖像在(x',y')處的像素值。一個完整的圖像包括每個像素的左方及上方的區(qū)域總和。
1.1.2 Haar分類器訓練原理
根據(jù)adaboost算法原理,我們可以得到一個弱分類器[11-12],弱分類器的數(shù)學結(jié)構(gòu)如式(2)所示。
最開始的弱分類器為h(x,f,p,θ) , 其中子窗口圖像確定x,f為Haar特征值,p為不等號的方向,θ為閾值。強分類器由無數(shù)弱分類器組成,其檢測率與誤檢率為一對矛盾體。因此,我們會通過調(diào)整檢測率與誤檢率的參數(shù)來面對不同的需求。級聯(lián)分類器由多個強分類器進行疊加組成。它的前幾層的強分類器較為簡易,后幾層則是相對而言比較復雜的強分類器。通過前幾層簡單強分類器可以迅速去除無關(guān)背景區(qū)域。而后幾層能夠更好的區(qū)分出人臉。通過一級一級的遞進選擇,直至判斷出人臉。我們完全可以假定很高的檢測率和相對而言比較高的誤檢率在經(jīng)過級聯(lián)分類器層層迭代后,其仍然具有很好的檢測率和很低的誤檢率。檢測速度與精度大大增強。每個窗口對特征值進行運算的數(shù)量為式(3)所示。
在式(3)中,pj為第 j層強分類器的檢測率,ni為第i層強分類器的特征數(shù),k為級聯(lián)分類器的總層數(shù)。
膚色檢測擁有算法簡易且響應速率快等優(yōu)勢?;谀w色分割的人臉檢測避免了由類似皮膚顏色區(qū)域或類似人臉特征所引起的誤檢,因而與Adaboost算法一起使用有著更高的性能和更低的誤檢率。
1.2.1 HSV色彩空間
色調(diào)(H),飽和度(S),亮度(V) 在HSV色彩空間中作為參數(shù)用以描述顏色[13]。其中,色調(diào)(H)指的是顏色外觀,能夠彼此區(qū)分不同顏色。在HSV色彩空間里,H由繞Z軸的轉(zhuǎn)動角表示[14-15]。S表示顏色的純潔度,它指彩色成分所占比例,S的取值范圍為0.0到1.0之間。其中,0.0表示灰色,1.0表示完全飽和。亮度(V),是顏色的明暗程度,它其取值范圍為0.0到1.0。其中,0.0表示黑色,1.0表示白色。在使用HSV色彩空間中進行膚色分割時,色調(diào)值在6~38區(qū)間內(nèi),飽和度值在0.23~0.28區(qū)間內(nèi),亮度值在0.55~0.67區(qū)間內(nèi),我們可以視為人類的皮膚[16]。RGB顏色空間轉(zhuǎn)到HSV顏色空間的算法為:
1.2.2 膚色分割
將人的膚色在圖片中分離的過程叫做膚色的分割[14-15]。具體的步驟有如下幾步。第一步、獲取彩色圖像;第二步、將每個像素由RGB對應到HSV顏色空間;第三步、將HSV顏色空間的圖片分解為三張單通道圖片分別進行處理;第四步、對每張通道圖片進行判定,如果其像素點在所給定的膚色閾值之內(nèi),則將該點置為白色,如果條件不滿足,該像素設(shè)為黑色;第五步、將白色圖像點與原圖像進行合并,黑色圖像點繼續(xù)為黑色,如此便對圖像進行膚色分割。
面對各種條件各異的外部環(huán)境變化,圖像一般會呈現(xiàn)出噪聲、清晰度低等各種缺陷。因此,為了減小缺陷對提取到的人臉特征的影響,在特征提取之前,先對對圖像進行預處理操作。當我們處理彩色圖像時,即需要對三個通道依次處理,這會帶來巨大的時間開銷,因此為了提高系統(tǒng)的處理速度,減少難度,我們需要把彩色圖像進行灰度化處理。在對視頻圖像進行檢測分析之前,我們應該盡可能減少噪聲干擾,從而加快準獲取圖像的特征,并更好進行模式識別,也能夠減少其計算量。我們選擇使用Gauss濾波來減小圖像噪聲。Gauss濾波是通過Gauss函數(shù)來選擇權(quán)值的線性濾波方法。其算法如公式6所示,σ表示方差,它決定Gauss濾波器寬度。
當檢測目標所處環(huán)境下的光線發(fā)生變化時,直方圖均衡化可以降低帶來的影響。直方圖均衡化主要原理為在原圖像的灰度直方圖中,將原圖像中灰度級密集部分拉開,即將相對集中的灰度區(qū)間變?yōu)榫鶆蚍植荚谌炕叶确秶鶾17]。
在本設(shè)計中,引入HSV色彩空間膚色分割算法,與Adaboost算法相結(jié)合,設(shè)計基于膚色分割與Adaboost算法相結(jié)合的人臉檢測系統(tǒng),該人臉檢測系統(tǒng)具有圖片或視頻采集、膚色提取與分割、圖像預處理、載入分類器、檢測人臉、矩形框出被檢測人臉的功能。之后比較該系統(tǒng)與Adaboost算法設(shè)計的人臉檢測系統(tǒng)對圖片與實時視頻人臉檢測的檢測情況和誤檢情況。
在此系統(tǒng)中,經(jīng)過膚色分割后的圖像,僅僅存在人臉和類膚色區(qū)域,接著運用Adaboost分類器,這樣便能準確迅速標注人臉位置。因此,基于adaboost算法與膚色分割相結(jié)合的人臉檢測系統(tǒng)不僅檢測速度快、而且準確度高,還避免了類人臉特征導致的誤檢。
圖1 基于adaboost算法與膚色分割相結(jié)合的人臉檢測系統(tǒng)Fig.1 Face detection system based on adaboost algorithm and skin segmentation
2.2.1 分類器的訓練過程
建立正負樣本集:基于MIT人臉庫,建立正負樣本集及其說明的txt文件。
訓練人臉檢測分類器:首先生成訓練集的VEC 文件,之后書寫相應代碼進行分類器訓練。
2.2.2 檢測程序的設(shè)計流程
1)讀取待檢測圖像:此階段是載入待檢測圖片或者載入攝像頭并獲取視頻流的一幀。
2)膚色提取:把圖片中每一個像素從RGB對應到HSV顏色空間,然后將HSV空間的圖片分解成三張單通道圖片依次進行處理,然后對每張通道圖片進行判定,如果其像素點在所給定的膚色閾值之內(nèi),則將該點置為白色,如果條件不滿足,該像素設(shè)為黑色。
3)膚色分割:將白色圖像點與原圖像進行合并,黑色圖像點繼續(xù)為黑色,如此便對圖像進行膚色分割,如圖2所示。
圖2 對載入圖像進行膚色分割Fig. 2 Skin segmentation for loading images
4)圖像預處理:將載入的圖片或者圖像進行預處理,預處理步驟為先灰度化圖片,然后執(zhí)行平滑處理中高斯濾波操作,最后執(zhí)行直方圖均衡化。其中,灰度化是為了保證檢測的效率和準確性,高斯濾波可以消除部分圖像噪聲,直方圖均衡化則可以讓人臉在圖像中更好的凸現(xiàn)出來。
5)加載人臉檢測分類器:將所訓練的人臉檢測分類器加載到程序中。
6)人臉特征提?。豪贸晒虞d的分類器,快速計算出圖像中haar特征,然后進行人臉的檢測和定位。
7)識別人臉并輸出:根據(jù)人臉特征提取后得出的結(jié)果,確定人臉的坐標和范圍,使用矩形框標記出原圖像中人臉的具體位置,并顯示圖像。
將基于膚色分割與Adaboost算法相結(jié)合的人臉檢測系統(tǒng)與使用Adaboost算法的人臉檢測系統(tǒng)檢測結(jié)果做對比,紅色方框表示檢測出的人臉范圍。簡單背景人臉檢測是檢驗人臉檢測系統(tǒng)最基本性能,實驗表明在簡單背景人臉條件下,兩種系統(tǒng)都有著很好的性能。在復雜背景條件下,人臉檢測結(jié)果如圖3所示。
圖3 復雜背景人臉檢測結(jié)果Fig.3 Complex background face detection results
實驗表明, 在復雜背景多人臉條件下, 膚色分割同adaboost算法相結(jié)合的系統(tǒng)有著較好的檢測效果。將人臉檢測類型劃分為4種情況,將兩種系統(tǒng)檢測的結(jié)果做一個對比,對比結(jié)果如表1所示。
表1 兩種系統(tǒng)檢測結(jié)果對比Table 1 Comparison between the two algorithms
實驗數(shù)據(jù)表明,在人臉檢測中,2種人臉檢測系統(tǒng)的檢測率相當,但是膚色分割與adaboost算法相結(jié)合的檢測系統(tǒng)的誤檢率為3%,優(yōu)于adaboost算法(11%)的誤檢率。
Adaboost算法的人臉檢測系統(tǒng)結(jié)果和膚色分割與adaboost算法相結(jié)合的人臉檢測系統(tǒng)結(jié)果如圖4所示?;赼daboost算法與膚色分割相結(jié)合的人臉檢測系統(tǒng)能夠有效排除類人臉區(qū)域,且能夠避免或減小產(chǎn)生誤判概率,因此能得到較好的檢測效果。
圖4 動態(tài)視頻檢測結(jié)果Fig.4 Dynamic video test results
本文基于OpenCV視覺庫,在adaboost算法的基礎(chǔ)上,依靠人類膚色在HSV色彩空間中的特性,使用基于HSV色彩空間的膚色分割同Adaboost算法相結(jié)合的算法,設(shè)計出了人臉檢測系統(tǒng)。系統(tǒng)的構(gòu)成部分包括圖片或動態(tài)視頻圖像的采集、膚色提取與分割、圖像的預處理(包括灰度化、高斯濾波、直方圖均衡化等)、特征提取、分類識別、人臉的定位等。實驗證明該算法能夠減小系統(tǒng)的誤檢率。