這是opencv訓(xùn)練自己的人臉檢測(cè)分類器樣本下載,最近要做一個(gè)性別識(shí)別的項(xiàng)目,在人臉檢測(cè)與五官定位上我采用OPENCV的haartraining進(jìn)行定位,這里介紹下這兩天我學(xué)習(xí)的如何用opencv訓(xùn)練自己的分類器。在這兩天的學(xué)習(xí)里,我遇到了不少問(wèn)題,不過(guò)我遇到了幾個(gè)好心的大俠幫我解決了不少問(wèn)題,特別是無(wú)忌,在這里我再次感謝他的幫助。
opencv訓(xùn)練自己的人臉檢測(cè)分類器樣本是目標(biāo)檢測(cè)方法最初由Paul Viola [Viola01]提出,并由Rainer Lienhart [Lienhart02]對(duì)這一方法進(jìn)行了改善。該方法的基本步驟為: 首先,利用樣本(大約幾百幅樣本圖片)的 harr 特征進(jìn)行分類器訓(xùn)練,得到一個(gè)級(jí)聯(lián)的boosted分類器。
分類器中的"級(jí)聯(lián)"是指最終的分類器是由幾個(gè)簡(jiǎn)單分類器級(jí)聯(lián)組成。在圖像檢測(cè)中,被檢窗口依次通過(guò)每一級(jí)分類器, 這樣在前面幾層的檢測(cè)中大部分的候選區(qū)域就被排除了,全部通過(guò)每一級(jí)分類器檢測(cè)的區(qū)域即為目標(biāo)區(qū)域。
分類器訓(xùn)練完以后,就可以應(yīng)用于輸入圖像中的感興趣區(qū)域的檢測(cè)。檢測(cè)到目標(biāo)區(qū)域分類器輸出為1,否則輸出為0。為了檢測(cè)整副圖像,可以在圖像中移動(dòng)搜索窗口,檢測(cè)每一個(gè)位置來(lái)確定可能的目標(biāo)。 為了搜索不同大小的目標(biāo)物體,分類器被設(shè)計(jì)為可以進(jìn)行尺寸改變,這樣比改變待檢圖像的尺寸大小更為有效。所以,為了在圖像中檢測(cè)未知大小的目標(biāo)物體,掃描程序通常需要用不同比例大小的搜索窗口對(duì)圖片進(jìn)行幾次掃描。
目前支持這種分類器的boosting技術(shù)有四種: Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost。
"boosted" 即指級(jí)聯(lián)分類器的每一層都可以從中選取一個(gè)boosting算法(權(quán)重投票),并利用基礎(chǔ)分類器的自我訓(xùn)練得到。
1、 樣本的創(chuàng)建
2、 訓(xùn)練分類器
3、 利用訓(xùn)練好的分類器進(jìn)行目標(biāo)檢測(cè)。
opencv訓(xùn)練自己的人臉檢測(cè)分類器樣本在opencv中有兩個(gè)類型的分類器:opencv_haartraining和opencv_traincascade,后者是2.x版本中基于C++寫的新版本的分類器。二者最主要的區(qū)別是opencv_traincascade支持Haar和LBP。LBP在訓(xùn)練和檢測(cè)方面要比Haar特征快數(shù)倍。Haar和LBP的檢測(cè)質(zhì)量取決于要訓(xùn)練的數(shù)據(jù)和訓(xùn)練的參數(shù)設(shè)置。
opencv_traincascade與opencv_haartraining以不同的文件類型存儲(chǔ)訓(xùn)練分類器。新的cascade檢測(cè)接口支持者兩種格式。opencv_traincascade可以保存(輸出)舊格式的級(jí)聯(lián)器,但是opencv_traincascade和opencv_haartraining不能在訓(xùn)練中斷后加載另一種格式的分類器。
需要注意的是opencv_traincascade可使TBB用于多線程,而使用多核心的opencv一定是基于TBB。