reference from: http://htedsv.com/?tag=opencv

 

訓練樣本方法

這篇文章非常好,解決了我長久以來的問題,成功訓練樣本2.0
由於版本問題,網上的大部分教程都是錯誤的。

目標:訓練眼睛分類器
數據準備
正例:收集眼睛圖像,圖像大小一致(720*576共800張)
反例:不包含眼鏡的圖像,圖像大小與正例圖像一致(共80)
訓練步驟:(OPencv2.0)
一、 數據預處理
每個正例資料,使用ObjectMarker在每個圖像上畫出眼鏡區域, 那麼在一幅圖像上可以得到兩個矩形框,

ObjectMarker會自動生成一個info.txt文本用於後面的訓練。ObjectMarker是基於 Opencv的影像處理工具,

它只能打開bmp格式的圖像,主要的功能是在圖像上畫出目的地區域,會自動生成目標描述文本(info.txt)。

每一個文本 行對應一個圖片。每行的第一個元素是圖片檔案名,第二個元素是物件實體的個數。

後面緊跟著的是與之匹配的矩形框(x, y, 寬度,高度)。內容如下:


rawdata/img1.bmp 2 211 205 60 27 345 215 51 28
rawdata/img10.bmp 2 194 204 61 27 329 216 58 31
rawdata/img101.bmp 2 206 265 56 19 340 276 51 22
rawdata/img102.bmp 2 211 263 49 20 340 278 58 20
rawdata/img103.bmp 2 211 263 54 22 339 277 54 19

用bg.txt文檔描述反例資料:
negimg/bg1.bmp
negimg/bg2.bmp
negimg/bg3.bmp
negimg/bg4.bmp

 

二、創建樣本


使用如下命令創建樣本:
opencv_createsamplesd -info info.txt -num 300 -bg bg.txt -vec pos.vec -w 65 -h 30
opencv_createsamplesd是Opencv2.0提供用於創建樣本命令。opencv_createsamplesd程式的命令列參數:


-vec 訓練好的正樣本的輸出檔案名。
-img源靶心圖表片(例如:一個公司圖示)
-bg背景描述檔。
-num要產生的正樣本的數量,和正樣本圖片數目相同。
-bgcolor背景色(假定當前圖片為灰度圖)。

背景色制定了透明色。對於壓縮圖片,顏色方差量由bgthresh參數來指定。則在bgcolor-bgthresh和bgcolor+bgthresh中間的圖元被認為是透明的。


-bgthresh
-inv如果指定,顏色會反色
-randinv如果指定,顏色會任意反色
-maxidev背景色最大的偏離度。
-maxangel
-maxangle
-maxzangle


最大旋轉角度,以弧度為單位。
-show
如果指定,每個樣本會被顯示出來,按下”esc”會關閉這一開關,即不顯示樣本圖片,而創建過程繼續。這是個有用的debug選項。
-w
輸出樣本的寬度(以圖元為單位)
-h

三、訓練分類器

樣本創建之後,接下來要訓練分類器,這個過程是由haartraining程式來實現的。使用下面的命令進行訓練:


opencv_haartrainingd -data f:\\data -vec vec_pos.vec -bg bg.txt -npos 300 -nneg 10 -w 65 -h 30
Haartraining的命令列參數如下:
-data存放訓練好的分類器的路徑名。
-vec正樣本檔案名
-bg背景描述檔。
-npos
-nneg
用來訓練每一個分類器階段的正/負樣本。
-nstages訓練的階段數。
-nsplits決定用於階段分類器的弱分類器。如果1,則一個簡單的stump classifier被使用。如果是2或者更多,則帶有number_of_splits個內部節點的CART分類器被使用。(2比較好,1比較快)


-mem預先計算的以MB為單位的可用記憶體。記憶體越大則訓練的速度越快。
-sym(default)
-nonsym指定訓練的目標物件是否垂直對稱。垂直對稱提高目標的訓練速度。例如,正面部是垂直對稱的。


-minhitrate每個階段分類器需要的最小的命中率。總的命中率為min_hit_rate的number_of_stages次方。


-maxfalsealarm沒有階段分類器的最大錯誤報警率。總的錯誤警告率為max_false_alarm_rate的number_of_stages次方。


-weighttrimming指定是否使用權修正和使用多大的權修正。一個基本的選擇是0.9
-eqw
-mode選擇用來訓練的haar特徵集的種類。basic僅僅使用垂直特徵。all使用垂直和45度角旋轉特徵。


-w
-h訓練樣本的尺寸,(以圖元為單位)。必須和訓練樣本創建的尺寸相同。


訓練結束後,會在目錄data下生成一些子目錄,即為訓練好的分類器。同時會生成data.xml(網路上一些資料說xml要用另外個程式生成,事實上這邊已經可以生成了)。


在這個過程存在著幾個問題,需要在進一步分析:
在完成這個訓練過程後對得到的data.xml進行測試,得到的效果比較差。
在創建樣本的過程中,需要輸入檢測視窗的大小作為參數,而每次從原圖中截取的圖像的大小都是不一樣的,這個視窗時如何確定的?

 

創作者介紹
創作者 honoyang 的頭像
honoyang

白痴的Step by Step

honoyang 發表在 痞客邦 留言(5) 人氣()