第一步:在win7的命令框輸入cmd,進入dos命令窗口

第二步:新建一個文件夾trainXML用於存放所需的樣本和程序;在trainXML文件夾下創建文件夾pos用於存放正樣本的人臉圖片、文件夾neg用於存放負樣本的圖片、xml用於存放訓練的模型;將opencv中的opencv_createsamples.exe、opencv_traincascade.exe和opencv_world341.dll放入trainXML文件夾下備用。

第三步:正樣本的尺寸不能設置太大,否則容易內存泄漏,一般為20*20、30*30、50*50大小;將調整好大小的人臉樣本放入pos文件夾中。

第四步:負樣本的尺寸必須要大於正樣本的6倍及以上;因為首先我們要知道訓練程序中寫的numNeg參數表示每級訓練用到的負樣本數,本人把它設置為1500。其實這個numNeg的大小和原始負樣本數量沒有任何關聯, 因為numNeg是通過滑動窗口在原始負樣本上不斷滑動采集,得到的預處理負樣本圖像的數量(滑動窗口的大小就是正樣本的大小,這里是50*50);
負樣本的尺寸如果不夠大,或者和正樣本一樣大,滑動窗口就無法在原始負樣本上滑動來采集足夠多的訓練圖像,再加上如果收集到的原始負樣本的數量可能並不比正樣本多多少,也許就是3、4倍。這樣的話就會導致( 執行opencv_traincascade訓練程序過程中中斷 )的錯誤,同時會報(Train dataset for temp stage can not be filled. Branch training terminated。)這時我們發現訓練圖中的FA( FalseAlarm,虛警率 )為0,表示負樣本已全部被正確分類了,也就不會有負樣本繼續參與下一輪的訓練了,所以就退出了。所以在准備原始負樣本的時候一定要保證尺寸足夠大,同時包含的內容足夠復雜。
在DOS窗口中輸入命令cd G:\img\trainXML\pos 和G:進入pos文件夾,再輸入命令dir /b >pos.txt生成路徑文件;
,再用Notepad的模塊編輯將路徑文件批量修改為如下格式:

注:1 :該樣本數目為1;0 0 :表示樣本起始坐標;50 50 : 表示樣本寬高
第六步:生成負樣本的路徑文件neg.txt。
在Dos窗口中輸入命令cd G:\img\trainXML\neg 和G:進入neg文件夾,再輸入命令dir /b >neg.txt生成路徑文件;
同樣的,用Notepad打開文件並刪除最后一行的
,再用Notepad的模塊編輯將路徑文件批量修改為如下格式:

將pos.txt和neg.txt都復制到文件夾trainXML下
第七步:獲取供訓練的vec文件
新建文本文件並將以下指令輸入:
opencv_createsamples.exe -vec pos.vec -info pos.txt -num 188 -bg neg.txt -w 50 -h 50 pause
然后將文件保存為vec.bat,然后雙擊該文件生成pos.vec文件;
注:
-vec : 輸出生成的文件路徑
-info : 正樣本的路徑txt文件
-num : 正樣本的數量
-w -h : 樣本寬高
第八步:訓練
將以下指令輸入,編寫train.bat文件;
opencv_traincascade.exe -data xml -vec pos.vec -bg neg.txt -numPos 188 -numNeg 600 -numStages 20 -w 50 -h 50 -minHitRate 0.9999 -precalcValBufSize 1024 -maxFalseAlarmRate 0.5 -mode ALL
-data : 存放xml文件的目錄
-vec : 正樣本vec文件源
-bg : 負樣本路徑txt文件
-numPos : 正樣本數量
-numNeg : 負樣本數量
numStages:訓練分類器的級數
-w -h : 樣本寬高
-minHitRate :分類器的每一級希望得到最小檢測率(即正樣本被判斷有效的比例)
-maxFalseAlarmRate:分類器的每一級希望的最大誤檢率(負樣本判定為正樣本的概率)
-mode: 選擇訓練中使用的Haar特征類型。BASIC只使用右上特征,ALL使用所有右上特征及45度旋轉特征
雙擊train.bat開始訓練。
參考文獻:https://www.jianshu.com/p/0afa9712c6d5
https://www.jianshu.com/p/e35260f7cbf0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
https://blog.csdn.net/fuck487/article/details/81567428
