資源描述:
《淺析人臉檢測(cè)之haar分類器方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、淺析人臉檢測(cè)之Haar分類器方法(轉(zhuǎn))博主:Ello網(wǎng)站:http://www.cnblogs.com/ello/archive/2012/04/28/2475419.html由于工作需要,我開(kāi)始研究人臉檢測(cè)部分的算法,這期間斷斷續(xù)續(xù)地學(xué)習(xí)Haar分類器的訓(xùn)練以及檢測(cè)過(guò)程,在這里根據(jù)各種論文、網(wǎng)絡(luò)資源的查閱和對(duì)代碼的理解做一個(gè)簡(jiǎn)單的總結(jié)。我試圖概括性的給出算法的起源、全貌以及細(xì)節(jié)的來(lái)龍去脈,但是水平有限,只能解其大概,希望對(duì)初學(xué)者起到幫助,更主要的是對(duì)我個(gè)人學(xué)習(xí)的一次提煉。一、Haar分類器的前世今生人臉檢測(cè)屬于計(jì)算機(jī)視覺(jué)的范疇,
2、早期人們的主要研究方向是人臉識(shí)別,即根據(jù)人臉來(lái)識(shí)別人物的身份,后來(lái)在復(fù)雜背景下的人臉檢測(cè)需求越來(lái)越大,人臉檢測(cè)也逐漸作為一個(gè)單獨(dú)的研究方向發(fā)展起來(lái)。目前的人臉檢測(cè)方法主要有兩大類:基于知識(shí)和基于統(tǒng)計(jì)?!盎谥R(shí)的方法主要利用先驗(yàn)知識(shí)將人臉看作器官特征的組合,根據(jù)眼睛、眉毛、嘴巴、鼻子等器官的特征以及相互之間的幾何位置關(guān)系來(lái)檢測(cè)人臉?;诮y(tǒng)計(jì)的方法則將人臉看作一個(gè)整體的模式——二維像素矩陣,從統(tǒng)計(jì)的觀點(diǎn)通過(guò)大量人臉圖像樣本構(gòu)造人臉模式空間,根據(jù)相似度量來(lái)判斷人臉是否存在。在這兩種框架之下,發(fā)展了許多方法。目前隨著各種方法的不斷提出和
3、應(yīng)用條件的變化,將知識(shí)模型與統(tǒng)計(jì)模型相結(jié)合的綜合系統(tǒng)將成為未來(lái)的研究趨勢(shì)?!保▉?lái)自論文《基于Adaboost的人臉檢測(cè)方法及眼睛定位算法研究》)基于知識(shí)的人臉檢測(cè)方法??模板匹配??人臉特征??形狀與邊緣??紋理特性??顏色特征基于統(tǒng)計(jì)的人臉檢測(cè)方法??主成分分析與特征臉??神經(jīng)網(wǎng)絡(luò)方法??支持向量機(jī)??隱馬爾可夫模型??Adaboost算法本文中介紹的Haar分類器方法,包含了Adaboost算法,稍候會(huì)對(duì)這一算法做詳細(xì)介紹。所謂分類器,在這里就是指對(duì)人臉和非人臉進(jìn)行分類的算法,在機(jī)器學(xué)習(xí)領(lǐng)域,很多算法都是對(duì)事物進(jìn)行分類、聚類的
4、過(guò)程。OpenCV中的ml模塊提供了很多分類、聚類的算法。注:聚類和分類的區(qū)別是什么?一般對(duì)已知物體類別總數(shù)的識(shí)別方式我們稱之為分類,并且訓(xùn)練的數(shù)據(jù)是有標(biāo)簽的,比如已經(jīng)明確指定了是人臉還是非人臉,這是一種有監(jiān)督學(xué)習(xí)。也存在可以處理類別總數(shù)不確定的方法或者訓(xùn)練的數(shù)據(jù)是沒(méi)有標(biāo)簽的,這就是聚類,不需要學(xué)習(xí)階段中關(guān)于物體類別的信息,是一種無(wú)監(jiān)督學(xué)習(xí)。其中包括Mahalanobis距離、K均值、樸素貝葉斯分類器、決策樹(shù)、Boosting、隨機(jī)森林、Haar分類器、期望最大化、K近鄰、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)。我們要探討的Haar分類器實(shí)際上是B
5、oosting算法的一個(gè)應(yīng)用,Haar分類器用到了Boosting算法中的AdaBoost算法,只是把AdaBoost算法訓(xùn)練出的強(qiáng)分類器進(jìn)行了級(jí)聯(lián),并且在底層的特征提取中采用了高效率的矩形特征和積分圖方法,這里涉及到的幾個(gè)名詞接下來(lái)會(huì)具體討論。雖說(shuō)haar分類器采用了Boosting的算法,但在OpenCV中,Haar分類器與Boosting沒(méi)有采用同一套底層數(shù)據(jù)結(jié)構(gòu),《Learning?OpenCV》中有這樣的解釋:“Haar分類器,它建立了boost篩選式級(jí)聯(lián)分類器。它與ML庫(kù)中其他部分相比,有不同的格局,因?yàn)樗窃谠缙陂_(kāi)發(fā)
6、的,并完全可用于人臉檢測(cè)。”是的,在2001年,Viola和Jones兩位大牛發(fā)表了經(jīng)典的《Rapid?Object?Detection?using?a?Boosted?Cascade?of?Simple?Features》【1】和《Robust?Real-Time?Face?Detection》【2】,在AdaBoost算法的基礎(chǔ)上,使用Haar-like小波特征和積分圖方法進(jìn)行人臉檢測(cè),他倆不是最早使用提出小波特征的,但是他們?cè)O(shè)計(jì)了針對(duì)人臉檢測(cè)更有效的特征,并對(duì)AdaBoost訓(xùn)練出的強(qiáng)分類器進(jìn)行級(jí)聯(lián)。這可以說(shuō)是人臉檢測(cè)史上里
7、程碑式的一筆了,也因此當(dāng)時(shí)提出的這個(gè)算法被稱為Viola-Jones檢測(cè)器。又過(guò)了一段時(shí)間,Rainer?Lienhart和Jochen?Maydt兩位大牛將這個(gè)檢測(cè)器進(jìn)行了擴(kuò)展【3】,最終形成了OpenCV現(xiàn)在的Haar分類器。之前我有個(gè)誤區(qū),以為AdaBoost算法就是Viola和Jones搞出來(lái)的,因?yàn)榫W(wǎng)上講Haar分類器的地方都在大講特講AdaBoost,所以我錯(cuò)覺(jué)了,后來(lái)理清脈絡(luò),AdaBoost是Freund?和Schapire在1995年提出的算法,是對(duì)傳統(tǒng)Boosting算法的一大提升。Boosting算法的核心思
8、想,是將弱學(xué)習(xí)方法提升成強(qiáng)學(xué)習(xí)算法,也就是“三個(gè)臭皮匠頂一個(gè)諸葛亮”,它的理論基礎(chǔ)來(lái)自于Kearns?和Valiant牛的相關(guān)證明【4】,在此不深究了。反正我是能多簡(jiǎn)略就多簡(jiǎn)略的把Haar分類器的前世今生說(shuō)完鳥(niǎo),得出的結(jié)論是,大牛們都是成對(duì)兒的。。