HOG+ADABOOST訓(xùn)練方式網(wǎng)上資料很多,這篇文章是在小編訓(xùn)練過程中遇到的一些問題加以總結(jié)。
首先,在準(zhǔn)備文件之前先讓大家對訓(xùn)練文件有個(gè)直觀的感受犬第。
建立一個(gè)新文件夾,可以取名為Pedestrian芒帕,在Pedestrian文件夾下再建立pos和neg文件夾歉嗓,用于存放正負(fù)樣本,xml文件夾用于訓(xùn)練后生成的模型的存放位置背蟆,從opencv安裝位置(“D:\Environment\opencv\build\x64\vc12\bin”)中拷貝opencv_createsamples.exe 和 opencv_traincascade.exe兩個(gè)執(zhí)行文件到Pedestrian文件夾下,pos.txt和neg.txt是正負(fù)樣本存放位置鉴分,以及正樣本的標(biāo)簽和位置。以上就是訓(xùn)練時(shí)所需要的所有文件带膀,簡單吧志珍!但是,在小編訓(xùn)練途中還是碰到很多坑本砰,可能小編太弱了... (羞愧臉)
1. 準(zhǔn)備正負(fù)樣本集pos和neg
這個(gè)是最耗時(shí)的一項(xiàng)任務(wù)啦(悄悄告訴你碴裙,小編也是偷了點(diǎn)懶)钢悲。
首先是在有行人的視頻中抽幀点额,隔3幀抽一次。當(dāng)然莺琳,做正樣本的時(shí)候还棱,正常的操作就是手動(dòng)截圖,或者用一些小工具簡化這一過程惭等。但是珍手,這里小編用了一個(gè)別人訓(xùn)練好的模型,直接把所有從抽到的幀中檢測到的頭肩保存下來辞做,這樣真的省掉很多時(shí)間琳要,但是由于這種方式準(zhǔn)確率并非百分之百,還是要手動(dòng)剔除掉不是頭肩的部分秤茅。小編大概找到頭肩樣本3000張稚补,然后用opencv或者其他方式將所有樣本resize到36x36。所有正樣本存放到Pedestrian/pos下框喳,正樣本集就完成了课幕。
正負(fù)樣本的比例一般是1:4~1:5厦坛,所以,3000的正樣本需要截12000~15000張負(fù)樣本乍惊。
負(fù)樣本就是不包括頭肩的杜秸,但是尺寸要大于36x36的圖片。負(fù)樣本最好是可能有行人的背景润绎,這樣讓模型效果更好撬碟。
小編這里也偷個(gè)懶,用opencv寫了個(gè)代碼凡橱,就是找一張同樣場景但是沒有行人的圖片小作,然后取寬高100x200,100x100,300x200等多種尺寸,步長為20,30,40,50稼钩,遍歷并保存圖片顾稀,這樣,多找?guī)讖埍尘皥D片坝撑,很快負(fù)樣本就完成了静秆,當(dāng)然,頭肩模型巡李,小編在負(fù)樣本中也加入了一些手臂抚笔,腿等非頭肩部分作為負(fù)樣本。
最后侨拦,將所有負(fù)樣本放到Pedestrian/neg文件夾下殊橙,負(fù)樣本集就完成了。這里小編要說一下狱从,正負(fù)樣本最好命名時(shí)分別以pos/neg為開頭膨蛮,這樣可以簡化后面的操作。
2. 正負(fù)樣本描述文件pos.txt和neg.txt
打開cmd季研,輸入代碼如下:
這樣敞葛,在pos和neg文件夾下就分別生成了pos.txt和neg.txt兩個(gè)文件,把這兩個(gè)文件都剪切到Pedestrian文件下与涡,并修改內(nèi)容如下:
i. 去掉pos.txt文件里的pos.txt那一行惹谐,并且刪除最后一個(gè)空白行,然后驼卖,按編輯->替換氨肌,編輯如下,然后按全部替換酌畜。
再替換如下:
這個(gè)是正樣本存放路徑怎囚。pos.txt至此完成。
ii. 去掉neg.txt文件里的neg.txt那一行檩奠,并且刪除最后一個(gè)空白行桩了,然后附帽,按編輯->替換,編輯如下井誉,然后按全部替換蕉扮。
這個(gè)是負(fù)樣本存放路徑。neg.txt至此完成颗圣。
3. 生成pos.vec文件
生成pos.vec文件是利用Pedestrian下的opencv_createsamples.exe執(zhí)行喳钟。打開cmd,進(jìn)入到Pedestrian文件夾下在岂,輸入: opencv_createsamples.exe -info pos.txt -vec pos.vec -bg neg.txt -num 3000 -w 36 -h 36
各個(gè)參數(shù)的意義奔则,網(wǎng)上都有很多資料對其解釋,這里我不做過多介紹蔽午。
4. 訓(xùn)練分類器
完成以上工作易茬,就可以開始訓(xùn)練了。
在cmd中及老,進(jìn)入Pedestrian目錄下抽莱,輸入:opencv_traincascade.exe -data xml -vec pos.vec -bg neg.txt -numPos 1500 -numNeg 5000 -featureType HOG -w 36 -h 36 mode -ALL
訓(xùn)練開始,如下圖:
有幾點(diǎn)要注意:
1. numPos的值要低于pos的值骄恶;
2. 樣本的路徑一定要寫對食铐;