分類器的訓練以分為以下三部進行:
1、 樣本的創建
2、 訓練分類器
3、 利用訓練好的分類器進行目標檢測。
對檢測物體要確定其屬性:是否為絕對剛性的物體,也就是檢測的目標是一個固定物體,沒有變化(如特定公司的商標),這樣的物體只要提供一份樣本就可以進行訓練。
但絕大數時候我們想進行訓練的目標是非絕對剛性的物體,如對人的檢測,包括人臉識別、手勢識別。
樣本:分為正樣本---------負樣本
正樣本處理步驟:
所謂所謂正樣本就是只包含檢測目標的圖片(最好背景一致),對於這我個人認為最好是檢測目標的最小外接矩,這樣可以減少訓練的計算量,減少目標檢測的干擾,提高檢測質量。
1、獲取正樣本,可以自己動手,也可以通過網絡上的圖像數據庫,像人臉數據庫就已經很全了,不必再自己制作。
2、圖片處理
1)將正樣本圖片進行截取(自己收集的圖片,主要是去掉訓練時的不必要干擾)-----最小外接矩,
2)將處理后的圖片進行歸一化,將所有圖像調整成一致大小,我用的“美圖看看”這款軟件,批量處理的,注意無論原圖多大最好都處理成25*25以下的圖像,這樣計算機 訓練速度快,而且不容易出現內存不夠用。
3 將歸一化后的圖像進行灰度處理,這里我用的是一段opencv代碼,http://www.cnblogs.com/linmengran/p/6513094.html
這樣正樣本就處理好了,接下來要生成pos.txt文件
cmd運行控制台,切換到存放樣本圖片的文件目錄下:輸入如下命令
運行結果:
在圖像文件中多了個pos.txt文件,內容如下:
在對文件進行處理,使其含有圖片信息:通過程序讀取存入
格式為:圖片路徑 檢測目標在圖片中的個數 起始監測點坐標(x,y) 圖片大小(w,h)
4、訓練.vec文件
doc下運行一下命令(假設當前路徑就是pos.txt所在的路徑):opencv_createsamples.exe -vec pos.vec -info pos.txt -num 100 -w 30 -h 30
得到pos.vec文件。
負樣本:不包含檢測目標的任何圖片。
1.不要求樣本尺寸,但要大於等於正樣本的大小;且負樣本不能重復,要增大負樣本的差異性。
2.負樣本灰度化,同正樣本操作相同。
3.運行命令:
最后將pos.vec和neg.txt文件拷貝到同一文件夾下。
這樣正負樣本就處理完了,訓練見:
http://www.cnblogs.com/linmengran/p/6513017.html(老訓練器)
。