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