【OpenCV3】级联分类器训练——traincascade快速使用详解
上一篇(OpenCV3中的級(jí)聯(lián)分類器目標(biāo)檢測(cè)——cv::CascadeClassifier簡(jiǎn)介)介紹了如何使用級(jí)聯(lián)分類器進(jìn)行目標(biāo)檢測(cè)。這里,我們介紹一下如何訓(xùn)練自己的級(jí)聯(lián)分類器。
至于原理這里就不再進(jìn)行詳細(xì)介紹了,直接說(shuō)明如何進(jìn)行訓(xùn)練。在opencv的安裝目錄中的bin文件夾下有兩個(gè)可執(zhí)行文件opencv_createsamples.exe和opencv_traincascade.exe。將這兩個(gè)文件拷貝到訓(xùn)練文件夾下,并將正、負(fù)樣本的文件夾和描述文件——positive_samples.txt和negative_samples.txt也拷貝到這個(gè)文件夾下。同時(shí),新建兩個(gè).bat文件——create_positive_samples.bat和traincascade.bat,新建一個(gè)文件夾data。這樣,訓(xùn)練目錄如下:
1、制作正樣本
首先是制作和收集正樣本圖片,并將正樣本圖像的大小進(jìn)行統(tǒng)一縮放(如40*40),然后在正樣本描述文件中,添加對(duì)正樣本的描述,形式如下:
然后在create_positive_samples.bat文件中添加如下內(nèi)容:
其中,-info字段填寫正樣本描述文件;-vec用于保存制作的正樣本;-num制定正樣本的數(shù)目;-w和-h分別指定正樣本的寬和高。
保存,雙擊這個(gè)文件,開始制作正樣本:
這樣,正樣本制作完成。
2、級(jí)聯(lián)分類器訓(xùn)練
下面進(jìn)行級(jí)聯(lián)分類器的訓(xùn)練,在traincascade.bat中輸入如下內(nèi)容
字段說(shuō)明如下:
-data:指定保存訓(xùn)練結(jié)果的文件夾;
-vec:指定正樣本集;
-bg:指定負(fù)樣本的描述文件夾;
-numPos:指定每一級(jí)參與訓(xùn)練的正樣本的數(shù)目(要小于正樣本總數(shù));
-numNeg:指定每一級(jí)參與訓(xùn)練的負(fù)樣本的數(shù)目(可以大于負(fù)樣本圖片的總數(shù));
-numStage:訓(xùn)練的級(jí)數(shù);
-w:正樣本的寬;
-h:正樣本的高;
-minHitRate:每一級(jí)需要達(dá)到的命中率(一般取值0.95-0.995);
-maxFalseAlarmRate:每一級(jí)所允許的最大誤檢率;
-mode:使用Haar-like特征時(shí)使用,可選BASIC、CORE或者ALL;
另外,還可指定以下字段:
-featureType:可選HAAR或LBP,默認(rèn)為HAAR;
其他字段將不再說(shuō)明。
保存,雙擊執(zhí)行,開始漫長(zhǎng)的訓(xùn)練過(guò)程(訓(xùn)練可中斷,中斷后再執(zhí)行,會(huì)繼續(xù)中斷前的訓(xùn)練)
訓(xùn)練結(jié)束后,data文件夾下會(huì)生成如下訓(xùn)練結(jié)果:
cascade.xml文件即為最終的訓(xùn)練結(jié)果,即可拿來(lái)進(jìn)行目標(biāo)檢測(cè),參考OpenCV3中的級(jí)聯(lián)分類器目標(biāo)檢測(cè)——cv::CascadeClassifier簡(jiǎn)介。
2017.04.15
總結(jié)
以上是生活随笔為你收集整理的【OpenCV3】级联分类器训练——traincascade快速使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【OpenCV3】级联分类器目标检测——
- 下一篇: 【OpenCV3】图像旋转与平移——cv