王增喜 張慶余 張?zhí)K林 賈 通 邵寧華
(中汽數(shù)據(jù)有限公司,天津300304)
人臉識別在當(dāng)今社會(huì)已經(jīng)被廣泛應(yīng)用,是一項(xiàng)高速發(fā)展與被研究的模式識別與圖像處理領(lǐng)域的技術(shù)。其廣義上指針對某一項(xiàng)人體生物特征提取和識別的技術(shù),其目的在于區(qū)分不同生物身份或個(gè)體模式。目前廣義的人臉識別技術(shù)是指人臉識別系統(tǒng)構(gòu)建所需要的一系列技術(shù),包括人臉的圖像信息采集技術(shù)、人臉圖像定位技術(shù)和人臉識別信息處理技術(shù)等。本文采用單目攝像頭,基本ROS 平臺(tái)的集成計(jì)算機(jī)視覺庫OpenCV 實(shí)現(xiàn)人臉識別;人臉定位的步驟包括視頻數(shù)據(jù)實(shí)時(shí)獲取、人臉定位、人臉校驗(yàn)、人臉輸出等[1-3]。
實(shí)驗(yàn)的平臺(tái)為Ubuntu 14.04 系統(tǒng)下的ROS 操作系統(tǒng),采用的版本為Indigo 版,其中集成了計(jì)算機(jī)視覺庫OpenCV 2.0,進(jìn)行人臉定位與性別識別均需要調(diào)用OpenCV 庫,而且ROS 的該版本已完成了OpenCV 的配置。
利用ROS 進(jìn)行人臉定位的首要任務(wù)是USB 攝像頭連接以及圖像顯示,然后通過C++程序訂閱image_raw主題實(shí)時(shí)獲取視頻圖像數(shù)據(jù),逐幀進(jìn)行處理,調(diào)用OpenCV 庫進(jìn)行人臉定位。如圖1 所示為基于ROS 的人臉定位流程圖。
圖1 基于ROS 的人臉定位流程圖
人臉定位的步驟包括,視頻數(shù)據(jù)實(shí)時(shí)獲取、人臉定位、人臉校驗(yàn)、人臉輸出。實(shí)際操作為運(yùn)行l(wèi)og_haar_person_detection.launch。具體流程如圖2 所示:
圖2 人臉定位的流程
由以上可知usb_cam 發(fā)布了/usb_cam/image_raw 主題,只需訂閱該主題,即可實(shí)現(xiàn)視頻數(shù)據(jù)實(shí)時(shí)獲取。詳細(xì)方法請參看hog_haar_person_detection.cpp 文件。
本實(shí)驗(yàn)采用的是基于Haar-like 特征的Adaboost 人臉識別,Adaboost 為一種分類器,需先經(jīng)過大樣本長時(shí)間的特征提取以及訓(xùn)練得到特征文件.xml 文件,然后對待檢測的圖像進(jìn)行多尺度的檢測,包括特征提取與分類。最后得到被判定為人臉的區(qū)域。本實(shí)驗(yàn)未經(jīng)過訓(xùn)練過程,而是采用OpenCV 已經(jīng)訓(xùn)練好的識別率較高的haarcascade_frontalface_alt2.xml 文件。只需利用該特征進(jìn)行檢測即可。
3.2.1 Haar-like 特征提取與計(jì)算
對于一幅灰度圖像,Haar-like 特征利用白色和黑色矩形組合成特征模板,每一種特征都是黑色矩形內(nèi)的像素值之和與白色矩形內(nèi)的像素值之和的差值,而計(jì)算出來的這個(gè)差值就是提取到的Haar-like 特征的特征值。Haar-like 特征值反映的是圖像的灰度變化,但一般對線段、邊緣較為敏感[4-6]。
為了加快特征計(jì)算,Viola 和Jones 引入了積分圖。
3.2.2 Adaboost 分類器介紹
AdaBoost 是一種強(qiáng)學(xué)習(xí)算法,利用了迭代方法,核心思想是根據(jù)同一個(gè)訓(xùn)練集訓(xùn)練不同的弱分類器,一個(gè)弱分類器對應(yīng)一個(gè)特征,將所有的弱分類器集合起來組成一個(gè)更強(qiáng)的分類器。算法是通過改變數(shù)據(jù)的分布實(shí)現(xiàn)的,算法統(tǒng)計(jì)每次訓(xùn)練結(jié)束后每個(gè)樣本的分類的準(zhǔn)確情況以及上次分類的總體分類的準(zhǔn)確率,從而更新樣本的權(quán)重。將更新完權(quán)重的新的數(shù)據(jù)傳送至下一層分類器進(jìn)行訓(xùn)練,最后將訓(xùn)練得到的所有分類器融合起來,作為最終的決策分類器。
簡單來說,AdaBoost 分類器通過最后的多個(gè)弱分類器來投票決定最終的分類結(jié)果,但每個(gè)弱分類器所占的權(quán)重不同。算法中包含權(quán)重的更新過程,如果一個(gè)訓(xùn)練樣本在前一層分類器中被誤分,那么它的權(quán)重在下一層分類器中會(huì)被加重,同時(shí),被正確分類的樣本的權(quán)重會(huì)降低,其目的是使下一層分類器會(huì)更重視被誤分的樣本,從而隨著新的分類器的不斷增加,誤識別率會(huì)隨之下降。AdaBoost 強(qiáng)分類器的訓(xùn)練過程示意圖,輸入訓(xùn)練樣本,通過k 次迭代生成k 個(gè)弱分類器,k 個(gè)弱分類器組合成一個(gè)強(qiáng)分類器。每個(gè)弱分類器對應(yīng)一維特征,一個(gè)強(qiáng)分類器即對應(yīng)多維級聯(lián)的特征。
3.2.3 人臉檢測
在檢測的最初,檢測窗口和樣本大?。?0*20)一致,然后按照一定的尺度參數(shù)(即每次移動(dòng)的像素個(gè)數(shù),向左然后向下)進(jìn)行移動(dòng),遍歷整個(gè)圖像,標(biāo)出可能的人臉區(qū)域。遍歷完以后按照指定的放大的倍數(shù)參數(shù)放大檢測窗口,然后在進(jìn)行一次圖像遍歷;這樣不停的放大檢測窗口對檢測圖像進(jìn)行遍歷,直到檢測窗口超過原圖像的一半以后停止遍歷。在檢測窗口遍歷完一次圖像后,處理重疊的檢測到的人臉區(qū)域,進(jìn)行合并等操作。
為了降低誤檢概率,得到更精確的檢測結(jié)果,需要對檢測結(jié)果進(jìn)行校驗(yàn)。本方法首先進(jìn)行膚色校驗(yàn)。如果存在一個(gè)誤檢區(qū)域,該種情況可以通過膚色校驗(yàn)進(jìn)行去除。
將利用Adaboost 檢測的人臉區(qū)域提取感興趣區(qū)域,獲得人臉圖像,對人臉圖像進(jìn)行膚色檢測。首先統(tǒng)計(jì)人臉圖像內(nèi)的像素點(diǎn)總數(shù)M,將人臉圖像由RGB 顏色空間轉(zhuǎn)到Y(jié)CrCb 顏色空間,然后獲取Cr 與Cb 顏色通道的值,使得(Cb >77 and Cb <127) 且(Cr >133 and Cr <173),統(tǒng)計(jì)符合上述范圍的像素點(diǎn)的個(gè)數(shù)m,利用m/M 計(jì)算膚色占整個(gè)檢測區(qū)域的比例,若比例大于0.4,則進(jìn)行下一步判斷,否則認(rèn)為該區(qū)域?yàn)榉侨四?,進(jìn)行去除。
完成膚色校驗(yàn)后,可能仍然存在誤檢情況,圖中包括正確檢測的人臉,但還有一個(gè)膚色檢測后未去除的膚色非人臉區(qū)域,因此人眼校驗(yàn)的目的是去除近膚色的誤檢區(qū)域。
人眼校驗(yàn)原理類似于人臉定位,也是首先提取Haar-like 特征,利用Adaboost 分類器進(jìn)行識別,利用OpenCV 提供的haarcascade_mcs_lefteye.xml 文件進(jìn)行識別。根據(jù)人臉區(qū)域劃分圖,確定人眼的檢測范圍。
在陰影范圍內(nèi)根據(jù)人臉定位的方法完成人眼定位,若該區(qū)域內(nèi)檢測到人眼,則該區(qū)域?qū)?yīng)的人臉區(qū)域?yàn)檎嫒四?,否則,該人臉區(qū)域?yàn)檎`檢。
本方法將兩次人臉校驗(yàn)后得到的人臉確定為真人臉,并將其輸出,利用矩形框進(jìn)行框定,并顯示在視頻中,完成人臉的定位。
在人工智能、智慧城市等領(lǐng)域的身份認(rèn)證過程中人臉識別發(fā)揮著非常重要的作用。因此,目前社會(huì)對人臉識別技術(shù)的要求在不斷提高。為了加快社會(huì)的發(fā)展步伐,論文主要針對人臉檢測和識別技術(shù)的算法和程序流程進(jìn)行研究。首先利用ROS 進(jìn)行人臉定位的首要任務(wù)是USB 攝像頭連接以及圖像顯示,然后通過C++程序訂閱image_raw 主題實(shí)時(shí)獲取視頻圖像數(shù)據(jù),逐幀進(jìn)行處理,調(diào)用OpenCV 庫進(jìn)行人臉定位;通過視頻數(shù)據(jù)實(shí)時(shí)獲取、人臉定位、人臉校驗(yàn)、人臉輸出;最后通過膚色校驗(yàn)、人眼校驗(yàn)和人臉標(biāo)定實(shí)現(xiàn)人臉識別。通過實(shí)驗(yàn)驗(yàn)證該算法研究人臉識別率高,識別準(zhǔn)確性高。