吳文俊,殷恒輝,陳 麟
?
基于AdaBoost算法的人臉檢測系統(tǒng)設(shè)計(jì)
吳文俊,殷恒輝,陳 麟
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
針對復(fù)雜環(huán)境下的人臉檢測,設(shè)計(jì)了能夠精確識別出人臉區(qū)域的人臉檢測系統(tǒng)。該系統(tǒng)基于一種優(yōu)秀的機(jī)器學(xué)習(xí)算法AdaBoost, 該算法理論基礎(chǔ)研究深厚, 在實(shí)際場景中運(yùn)用具有良好的效果。介紹了AdaBoost算法的原理及分類器訓(xùn)練方法,基于OpenCV圖像庫和Qt圖形界面庫開發(fā)了人臉檢測系統(tǒng)。仿真實(shí)驗(yàn)結(jié)果表明,系統(tǒng)界面友好,復(fù)雜背景下檢測人臉,該算法識別準(zhǔn)確率高,計(jì)算復(fù)雜度較低、滿足系統(tǒng)實(shí)時(shí)響應(yīng)要求。
AdaBoost;人臉檢測;cascade分類器;機(jī)器學(xué)習(xí)
人臉檢測(face detection)是一種在數(shù)字圖像中確定人臉的位置和大小的計(jì)算機(jī)技術(shù),是模式識別和計(jì)算機(jī)視覺領(lǐng)域的重要研究方向之一。它可以檢測出臉部特征,例如眼睛和鼻子的位置和輪廓,并忽略諸如大樓、汽車和身體等其他任何東西。人臉檢測可用于生物特征識別,通常作為人臉識別系統(tǒng)的一部分。人臉檢測作為人臉信息處理中的一項(xiàng)重要技術(shù),廣泛應(yīng)用于安防系統(tǒng),身份識別,自動(dòng)駕駛等方面。一些最新的數(shù)碼相機(jī)使用人臉檢測來自動(dòng)對焦。近年來研究人員提出了許多人臉檢測方法, 其中由Paul Viola和Michael Jones在2001年最早提出的AdaBoost算法,是第一個(gè)實(shí)時(shí)的人臉檢測算法,從根本上解決了檢測的速度問題,同時(shí)具有較好的識別效果[1]。
圖像預(yù)處理是對人臉圖像進(jìn)行一些數(shù)據(jù)方面的處理,使用常見的攝像頭獲取圖像時(shí),得到的圖片質(zhì)量往往并不完美,這時(shí)就需要使用圖像預(yù)處理技術(shù)增強(qiáng)圖像質(zhì)量,同時(shí)去除噪聲干擾,以方便下一步人臉檢測檢測。本文采用了圖像增強(qiáng),濾波等圖像預(yù)處理技術(shù)。
直方圖均衡化[2-3]又可以稱作為灰度均衡化,是指通過某種灰度映射使輸入圖像轉(zhuǎn)換為在每一灰度級上都有近似相同的像素的輸出圖像(即輸出的直方圖是均衡的)。同時(shí)視角、光照、噪聲、方位等其他原因會(huì)影響圖像的質(zhì)量,該類圖像與其他類圖像之間的差距有時(shí)小于同一類圖像的不同變形體之間的差距,這樣就會(huì)減少圖像識別的準(zhǔn)確程度。經(jīng)過均衡化處理后的圖像,像素會(huì)均勻分布在灰度級上,可以消除同類圖像不同變形體之間的外觀差異。這樣的圖像對比度較高,且具有較大的動(dòng)態(tài)范圍。
圖像經(jīng)過直方圖均衡化處理后的效果和它的圖像直方圖變化情況如圖1所示。
濾波是信號處理中的一個(gè)概念,是將信號中的噪聲濾除的操作。圖像信號在采集、傳輸和保存等不同階段均會(huì)遭受不同因素的干擾,從而使圖像遭受噪聲污染,由此對圖像特征提取、目標(biāo)檢測等造成嚴(yán)重影響。所以圖像濾波是圖像處理中一個(gè)必不可少的環(huán)節(jié),對于提高人臉檢測的精度具有重要意義。
圖1 直方圖均衡化處理
AdaBoost算法使用不同的數(shù)據(jù)集訓(xùn)練同一個(gè)弱分類器,根據(jù)訓(xùn)練結(jié)果確定最優(yōu)弱分類器來構(gòu)成強(qiáng)分類器,最終將強(qiáng)分類器級聯(lián)起來。根據(jù)理論證明,如果每個(gè)弱分類器的分類精度高于隨機(jī)猜測,弱分類器的個(gè)數(shù)接近無窮,強(qiáng)分類器分類的錯(cuò)誤率將趨于零。
圖2 噪聲濾波處理
根據(jù)以上描述,我們知道構(gòu)造分類器的步驟如下:
(1)根據(jù)Haar-like特征訓(xùn)練多個(gè)弱分類器
(2)使用AdaBoost算法將多個(gè)弱分類器組合成一個(gè)強(qiáng)分類器
(3)最終的分類器是由多個(gè)強(qiáng)分類器級聯(lián)而成
對一幅圖像進(jìn)行人臉檢測,首先需要確定待測圖像中是否包含臉部圖像,因此需要選擇某種圖像特征對人臉圖像進(jìn)行描述,這些特征應(yīng)該具有區(qū)分人臉和非人臉的能力,本文基于Haar 特征來檢測人臉。Haar特征是一種反映圖像灰度變化的一種特征,它通過對像素分模塊求差值來得到。Haar特征包括以下四類:中心特征、邊緣特征、對角線特征以及線性特征,用黑白兩種矩形框表示特征模板,在特征模板內(nèi)用黑色矩形區(qū)域的像素減去白色矩形區(qū)域的像素來表示這個(gè)模版的特征值。Haar-like特征利用積分圖像快速的計(jì)算矩形區(qū)域的差分信號[5],因該算法運(yùn)算效率高、且完成圖中每個(gè)特征值的計(jì)算只需一次遍歷,所以完成計(jì)算的時(shí)間是固定的。Haar特征是一種矩形特征,它的顯著特點(diǎn)在于特征提取速度快,常用的形式由5種,其原型如圖3所示。
圖3 Haar特征模板
雙眼區(qū)域的像素值低于臉頰,眼睛的灰度比鼻梁的低,Haar特征模板應(yīng)用于人臉檢測通常描述人臉圖像局部的灰度變化情況,如圖4所示[6]。
圖4 Haar特征模板在人臉上的匹配
通過不斷對樣本的訓(xùn)練,找出精度最高的弱分類器。
AdaBoost算法屬于迭代算法,每個(gè)訓(xùn)練樣本的權(quán)重表示為其被弱分類器選入訓(xùn)練集的概率。如果當(dāng)此樣本被錯(cuò)誤分類,在下一輪的訓(xùn)練中,此樣本被選中的概率就會(huì)增加。[8]該算法的詳細(xì)實(shí)現(xiàn)過程如下:
(1)對樣本權(quán)重進(jìn)行初始化,每個(gè)樣本被賦予相同的權(quán)重。
(c)選擇擁有最小錯(cuò)誤率的弱分類器,將其組合到強(qiáng)分類器中;
(d)再次更改訓(xùn)練樣本的權(quán)重:
(3)經(jīng)過N次迭代后,將識別率最高的N個(gè)弱分類器構(gòu)成一個(gè)強(qiáng)分類器:
對一副圖像進(jìn)行人臉檢測,構(gòu)造強(qiáng)分類器的過程類似讓它的弱分類器進(jìn)行投票,根據(jù)投票的結(jié)果,對其進(jìn)行加權(quán)求和,將平均投票結(jié)果與加權(quán)求和的結(jié)果進(jìn)行對比,最終得到分類結(jié)果[9]。
多個(gè)強(qiáng)分類器通過級聯(lián)組成級聯(lián)分類器,獲取圖像中到的所有子窗口,將數(shù)據(jù)發(fā)送到級聯(lián)分類器來進(jìn)行檢測。如果級聯(lián)分類器的某一級未能識別該子窗口為人臉,則去除子窗口; 如果子窗口成功通過級聯(lián)分類器的每一級,則將其區(qū)分為人臉,從而可以執(zhí)行后續(xù)處理[10]。級聯(lián)分類器是一個(gè)遞減決策樹的結(jié)構(gòu),第一層分類器檢測到正確的窗口,則運(yùn)行第二層分類器,第二層的正例觸發(fā)第三層,依此類推。級聯(lián)分類器的類似于金字塔結(jié)構(gòu),使用級聯(lián)分類器,可以很好得檢測出人臉。
OpenCV是一個(gè)跨平臺的計(jì)算機(jī)圖像庫,是由Intel公司發(fā)起并參與開發(fā),用C/C++語言編寫的計(jì)算機(jī)視覺類庫。OpenCV可用于物體識別、實(shí)時(shí)的圖像處理以及計(jì)算機(jī)視覺等領(lǐng)域。它具有跨平臺、開源、運(yùn)行速度快等優(yōu)點(diǎn)。本設(shè)計(jì)采用OpenCV圖像庫加快系統(tǒng)開發(fā)。
基于Qt圖形界面框架搭建的人機(jī)界面如圖5所示,Qt是一個(gè)圖形界面程序開發(fā)框架,廣泛用于開發(fā)計(jì)算機(jī)應(yīng)用程序,它具有跨平臺,開源等特點(diǎn)。該系統(tǒng)主要包含3個(gè)功能區(qū),菜單區(qū)、圖像顯示區(qū)和檢測區(qū)。菜單區(qū)主要進(jìn)行模式的選擇和載入圖片等操作,圖像顯示區(qū)用來顯示載入的圖片或者攝 像頭獲取的動(dòng)態(tài)圖像,最終檢測到的人臉顯示在檢測區(qū)。
該系統(tǒng)可基于2種模式進(jìn)行人臉識別,一種是靜態(tài)圖像的人臉檢測,另一種是在動(dòng)態(tài)圖像中對人臉進(jìn)行檢測。靜態(tài)圖像的人臉檢測主要包含以下幾個(gè)過程,即加載訓(xùn)練好的分類器、檢測圖像人臉和顯示檢測結(jié)果到檢測區(qū),具體的實(shí)現(xiàn)過程如圖6 所示。
圖5 人臉檢測系統(tǒng)界面
本文使用靜態(tài)人臉圖片和FDDB人臉數(shù)據(jù)集進(jìn)行測試,首先對靜態(tài)圖片進(jìn)行測試,加載帶有人臉的圖片,檢測結(jié)果如圖7所示。圖7中算法正確檢出全部人臉,左圖用時(shí)282 ms,右圖用時(shí)187 ms。說明在復(fù)雜環(huán)境下進(jìn)行人臉檢測,該檢測器具有較好的實(shí)時(shí)性與較高的準(zhǔn)確性。
圖6 基于靜態(tài)圖像的人臉檢測流程
圖7 人臉檢測結(jié)果
對FDDB人臉數(shù)據(jù)集進(jìn)行測試,F(xiàn)DDB是進(jìn)行人臉檢測評測的權(quán)威平臺之一,包含2845張圖片。數(shù)據(jù)集范圍包括:不同環(huán)境、不同姿態(tài)、存在旋轉(zhuǎn)和遮擋等狀況的圖片,同時(shí)包括灰度圖片和彩色圖片。為了驗(yàn)證本文算法的正確識別率,將該算法與基于膚色模型的人臉檢測算法的識別率進(jìn)行比較,選取數(shù)據(jù)集中部分圖片進(jìn)行測試,檢測結(jié)果如表1所示。
表1 FDDB人臉檢測結(jié)果
Tab.1 Results of FDDB face detection
本文基于AdaBoost算法設(shè)計(jì)了人臉檢測系統(tǒng),采用GUI框架構(gòu)建良好的人機(jī)界面,詳細(xì)闡述了AdaBoost算法的原理,剖析了算法的實(shí)現(xiàn)過程?;贠penCV圖像庫編程實(shí)現(xiàn)了人臉檢測系統(tǒng),通過實(shí)驗(yàn)驗(yàn)證了算法的優(yōu)點(diǎn)和不足之處。AdaBoost人臉檢測算法具有識別準(zhǔn)確率高、響應(yīng)速度快、實(shí)時(shí)性好等優(yōu)點(diǎn),其檢測速度不遜于目前公布的最快的算法[11]。實(shí)驗(yàn)結(jié)果表明,用OpenCV實(shí)現(xiàn)的AdaBoost檢測系統(tǒng)簡單實(shí)用,開發(fā)周期短,應(yīng)用前景廣闊。
[1] 郭磊, 王秋光. Adaboost人臉檢測算法研究及OpenCV實(shí)現(xiàn)[J]. 哈爾濱理工大學(xué)學(xué)報(bào), 2009, 14(05): 123-126.
[2] 張錚, 王艷平, 薛桂香. 數(shù)字圖像處理與機(jī)器視覺[M]. 北京: 人民郵電出版社, 2010.
[3] 孫文榮, 周先春, 嵇亞婷. 基于直方圖均衡化、PCA和SVM算法的人臉識別[J]. 軟件, 2014, 35(08): 11-15.
[4] 畢雪芹, 惠婷. 基于膚色分割與AdaBoost算法的人臉檢測[J]. 國外電子測量技術(shù), 2015, 34(12): 82-86.
[5] 安大海, 蔣硯軍. 基于BP神經(jīng)網(wǎng)絡(luò)的人臉識別系統(tǒng)[J].軟件, 2015, 36(12): 76-79.
[6] 柯麗, 溫立平. 改進(jìn)的AdaBoost人臉檢測方法[J]. 光電工程, 2012, 39(01): 113-118.
[7] 于微波, 趙琳, 佟冬. 基于Adaboost人臉檢測算法[J]. 吉林大學(xué)學(xué)報(bào)(信息科學(xué)版), 2014, 32(05): 539-544.
[8] Paul Viola, Michael J. Jones. Robust Real-Time Face Detection[J]. International Journal of Computer Vision, 2004, 57(2): 137-154.
[9] 李晶惠, 葉學(xué)義, 夏胡云, 葉楓. 基于“大T”型區(qū)域的AdaBoost人臉檢測算法[J]. 軟件導(dǎo)刊, 2017, 16(10): 22-26.
[10] 陳志恒, 姜明新. 基于openCV的人臉檢測系統(tǒng)的設(shè)計(jì)[J]. 電子設(shè)計(jì)工程, 2012, 20(10): 182-185.
[11] 孔凡芝, 張興周, 謝耀菊. 基于Adaboost的人臉檢測技術(shù)[J]. 應(yīng)用科技, 2005(06): 7-9.
Design of Face Detection System Based on AdaBoost Algorithm
WU Wen-jun, YIN Heng-hui, CHEN Lin
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
For face detection in complex environment, a face detection system which can accurately recognize the face region is designed. The system is based on an excellent machine learning algorithm, AdaBoost, which has a profound theoretical foundation and has a good effect in practical scenarios. This paper introduces the principle of AdaBoost algorithm and classifier training method, and developed face detection system based on OpenCV image library and Qt graphic interface library. Simulation results show that the algorithm has high recognition accuracy, low computational complexity and meets the real-time response requirements of the system.
AdaBoost; Face detection; Cascade classifier; Machine learning
TP391. 41
A
10.3969/j.issn.1003-6970.2018.10.028
吳文俊(1993-),男,上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院碩士研究生,主要研究方向:信號與信息處理;殷恒輝(1993-),男,上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院碩士研究生,主要研究方向:信號與信息處理;陳麟(1980-),男,上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院教授,主要研究方向:信號與信息處理。
吳文俊,殷恒輝,陳麟. 基于AdaBoost算法的人臉檢測系統(tǒng)設(shè)計(jì)[J]. 軟件,2018,39(10):145-149