opencv3-基于opencv_traincascade級(jí)聯(lián)分類器的訓(xùn)練步驟

最近在做識(shí)別的過程中發(fā)現(xiàn)sift與surf的特征并不容易篩選,想找一下有沒有比較好篩選特征的方法,在檢索的過程中發(fā)現(xiàn)了基于haar特征的級(jí)聯(lián)adboost的方法篡九,這個(gè)方法能有效的篩選哪些是更好的haar特征拭卿。雖然暫時(shí)還沒有相處關(guān)聯(lián)的思路,但用這個(gè)可以做基于傳統(tǒng)方法的目標(biāo)識(shí)別充石,所以就在網(wǎng)上學(xué)習(xí)了一下怎么訓(xùn)練這個(gè)級(jí)聯(lián)分類器莫换。網(wǎng)上訓(xùn)練這個(gè)分類器基本上是基于opencv2中的open_haartraining.exe,這是一個(gè)封裝好了的訓(xùn)練算法骤铃,只要把文件格式弄好拉岁,參數(shù)輸入進(jìn)去,就可以訓(xùn)練出來(lái)級(jí)聯(lián)分類器了惰爬,但是我用的是opencv3喊暖,很苦惱,沒有這個(gè)open_haartraining.exe撕瞧,只有opencv_traincascade陵叽,索性就開始使用了(open_haartraining.exe只能訓(xùn)練haar特征的分類器,但是opencv_traincascade可訓(xùn)練多種特征的分類器丛版,比如haar巩掺,hog,lbp等等)页畦。

opencv_traincascade的原理暫時(shí)沒有詳細(xì)的探查過胖替,之后回來(lái)補(bǔ)上。接下來(lái)詳細(xì)的講一下整個(gè)級(jí)聯(lián)分類器的整個(gè)訓(xùn)練過程。
訓(xùn)練過程主要分為以下四步:

1.配置訓(xùn)練環(huán)境
2.制作訓(xùn)練數(shù)據(jù)集
3.生成正樣本描述文件(.vec文件)
4.訓(xùn)練樣本分類器
5.常見錯(cuò)誤

配置訓(xùn)練環(huán)境

opencv的源代碼是用c++寫的刊殉,但是提供了其他主流語(yǔ)言的接口殉摔,但是這個(gè)訓(xùn)練的過程需要調(diào)用opencv自帶的兩個(gè)可執(zhí)行程序open_createsample.exe和opencv_traincascade.exe來(lái)訓(xùn)練分類器里面的參數(shù),并保存在xml文件中记焊,這樣你的其他語(yǔ)言就可以調(diào)用了逸月。
首先需要找到open_createsample.exe和opencv_traincascade.exe這兩個(gè)程序在計(jì)算機(jī)中的位置,比如我的在C:\Users\lowkeybin\Anaconda3\pkgs\opencv-3.3.1-py36h20b85fd_1\Library\bin(如果找不到遍膜,在搜索欄直接搜索這兩個(gè)程序)
這是我這個(gè)地址里面的文件目錄碗硬,我只截取了很小一段內(nèi)容,其實(shí)還有很多dll文件和很多其他的文件瓢颅,但是我們現(xiàn)在不需要那些


xml:用于存放訓(xùn)練好的分類器的參數(shù)恩尾,這個(gè)文件夾不是自帶的,需要?jiǎng)?chuàng)建
negdata:存放負(fù)樣本的文件夾挽懦,這個(gè)文件不是自帶的翰意,需要?jiǎng)?chuàng)建
posdata:存放正樣本的文件夾,這個(gè)文件不是自帶的信柿,需要?jiǎng)?chuàng)建
negdata.txt:負(fù)樣本的文件路徑冀偶,這個(gè)文件不是自帶的,需要?jiǎng)?chuàng)建渔嚷,創(chuàng)建過程下面會(huì)提到
posdata24x16.txt:正樣本的文件路徑进鸠,這個(gè)文件不是自帶的,需要?jiǎng)?chuàng)建形病,創(chuàng)建過成下面會(huì)提到
posdata24x16.vec:生成的正樣本描述文件客年,這個(gè)文件不是自帶的,需要?jiǎng)?chuàng)建漠吻,創(chuàng)建過程下面會(huì)提到
opencv_createsamples.exe:生成正樣本描述文件的可執(zhí)行程序量瓜,這個(gè)是文opencv中自帶的
opencv_haartraining.exe:訓(xùn)練樣本的可執(zhí)行程序,這個(gè)也是opencv中自帶的

制作訓(xùn)練數(shù)據(jù)集

首先將要訓(xùn)練的正類樣本和負(fù)類樣本放入posdata這個(gè)文件夾中侥猩,這里的樣本圖片需要是灰度圖片榔至,且不要大于100*100。備注:負(fù)樣本的數(shù)量要大于正樣本的數(shù)量欺劳,我用的是正負(fù)樣本數(shù)量比為1:3,這個(gè)會(huì)影響大訓(xùn)練效果铅鲤,具體需要怎樣的比例需要自己把控划提,但負(fù)樣本過少會(huì)出現(xiàn)錯(cuò)誤。
接下來(lái)需要生成正負(fù)樣本的文件路徑邢享,使得訓(xùn)練中可以順利的找到每個(gè)樣本鹏往。先進(jìn)入正樣本目錄,新建一個(gè)txt文件骇塘,并在中輸入如下內(nèi)容
dir /b/s/p/w *.jpg > num.txt


然后關(guān)掉這個(gè)txt伊履,把這個(gè)txt的后綴名改為bat韩容,他會(huì)變成下面這個(gè)樣子

雙擊這個(gè)bat文件,會(huì)生成這樣一個(gè)txt文件


我們現(xiàn)在需要通過記事本的替換功能修改一下這個(gè)txt文件的內(nèi)容


替換好之后應(yīng)該是這個(gè)樣子

posdata是樣本的相對(duì)路徑唐瀑,最后的1 0 0 64 64群凶,最后兩位數(shù)代表你的樣本圖像的大小,需要根據(jù)自己的樣本圖片改寫哄辣,由于文件中指出的位置是相對(duì)路徑请梢,所以我們需要把這個(gè)txt文件放到與open_createsample.exe和opencv_traincascade.exe這兩個(gè)程序的同一級(jí)文件當(dāng)中,并把這個(gè)txt文件的名字改為posdata
以上給出了正樣本文件路徑的生成方法力穗,負(fù)樣本的方法也相同毅弧,但是負(fù)樣本的絕對(duì)路徑不用改為相對(duì)路徑,也不需要在最后加1 0 0 64 64当窗,且名字改為negdata就可以了够坐,negdata.txt內(nèi)應(yīng)該是這樣的

生成正樣本描述文件

打開cmd.exe輸入以下內(nèi)容進(jìn)入open_createsample.exe和opencv_traincascade.exe這兩個(gè)程序的文件地址(以下是我的)
cd C:\Users\lowkeybin\Anaconda3\pkgs\opencv-3.3.1-py36h20b85fd_1\Library\bin
再繼續(xù)輸入以下內(nèi)容(num后是正樣本數(shù),w和h代表樣本圖片的大醒旅妗)
opencv_createsamples.exe -info posdata.txt -vec pos.vec -num 100 -w 64 -h 64
運(yùn)行成功是這樣的

-info 樣本的說(shuō)明文件
-vec 正樣本描述文件的名字以及路徑
-num 正樣本數(shù)量
-w-h樣本圖片的大小
程序成功運(yùn)行后會(huì)生成posdata.vec

訓(xùn)練樣本分類器

打開cmd.exe輸入以下內(nèi)容進(jìn)入open_createsample.exe和opencv_traincascade.exe這兩個(gè)程序的文件地址(以下是我的)
cd C:\Users\lowkeybin\Anaconda3\pkgs\opencv-3.3.1-py36h20b85fd_1\Library\bin
再繼續(xù)輸入以下內(nèi)容(numPos后是正樣本數(shù)咆霜,numNeg后是負(fù)樣本數(shù),w和h代表樣本圖片的大兴恢臁)
opencv_traincascade.exe -data xml -vec pos.vec -bg negdata.txt -numPos 100 -numNeg 226 numStages 20 -featureType LBP -w 64 -h 64
運(yùn)行成功是這樣的(會(huì)迭代很多輪蛾坯,直到達(dá)到閾值或者訓(xùn)練完二十輪)

常見錯(cuò)誤

posdata.txt中的路徑需要是相對(duì)路徑,而negdata.txt中的路徑需要是絕對(duì)路徑疏遏,如果路徑寫錯(cuò)會(huì)出現(xiàn)下面的情況



在創(chuàng)建訓(xùn)練數(shù)據(jù)集和訓(xùn)練樣本分類器是代碼中的空格不能少脉课,如果少了會(huì)出現(xiàn)下面的情況



最后正樣本集中的樣本需要只包含目標(biāo)物體,盡量不要包含其他物體财异,如果要識(shí)別人臉倘零,那就整張圖都只有臉。否則訓(xùn)練效果會(huì)很差戳寸。另外正樣本的尺寸必須小于等于負(fù)樣本的尺寸
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呈驶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疫鹊,更是在濱河造成了極大的恐慌袖瞻,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拆吆,死亡現(xiàn)場(chǎng)離奇詭異聋迎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)枣耀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門霉晕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事牺堰≈羟幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵伟葫,是天一觀的道長(zhǎng)恨搓。 經(jīng)常有香客問我,道長(zhǎng)扒俯,這世上最難降的妖魔是什么奶卓? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮撼玄,結(jié)果婚禮上夺姑,老公的妹妹穿的比我還像新娘。我一直安慰自己掌猛,他們只是感情好盏浙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荔茬,像睡著了一般废膘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上慕蔚,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天丐黄,我揣著相機(jī)與錄音,去河邊找鬼孔飒。 笑死灌闺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坏瞄。 我是一名探鬼主播桂对,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸠匀!你這毒婦竟也來(lái)了蕉斜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缀棍,失蹤者是張志新(化名)和其女友劉穎宅此,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睦柴,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诽凌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坦敌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狱窘,靈堂內(nèi)的尸體忽然破棺而出杜顺,到底是詐尸還是另有隱情,我是刑警寧澤蘸炸,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布躬络,位于F島的核電站,受9級(jí)特大地震影響搭儒,放射性物質(zhì)發(fā)生泄漏穷当。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一淹禾、第九天 我趴在偏房一處隱蔽的房頂上張望馁菜。 院中可真熱鬧,春花似錦铃岔、人聲如沸汪疮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)智嚷。三九已至,卻和暖如春纺且,著一層夾襖步出監(jiān)牢的瞬間盏道,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工载碌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猜嘱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓恐仑,卻偏偏與公主長(zhǎng)得像泉坐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子裳仆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容