1.海爾訓練
現在,我們使用haartraining.exe來訓練我們自己的分類器。訓練語句如下:
usage: ./haartraining
-data
-vec
-bg
[-npos ]
[-nneg ]
[-nstages ]
[-nsplits ]
[-mem ]
[-sym (default)] [-nonsym]
[-minhitrate ]
[-maxfalsealarm ]
[-weighttrimming ]
[-eqw]
[-mode ]
[-w ]
[-h ]
[-bt ]
[-err ]
[-maxtreesplits ]
[-minpos ]
kuranov et. al. 指出,20*20的樣本識別的正確率最高。另外,對於18*18的尺寸,四**節點表現最好。而對於20*20的樣本,兩節點顯然更好。**節點數分別是2、3或4的弱樹分類器間的差小於它們的中間節點。
此外,關於20階訓練有個說法。假設我的測試集合代表了學習任務,我可以期望乙個報錯率是0.5^20≈9.6e-07,識對率是0.999^20≈0.98。
所以,使用20*20的樣本大小,並且nsplit=2, nstages=20, minhitrate=0.9999(default: 0.995), maxfalsealarm=0.5(default: 0.5), weighttrimming=0.95(default: 0.95)是比較優的組合。
$ haartraining -data haarcascade -vec samples.vec -bg negatives.dat -nstages 20 -nsplits 2 -minhitrate 0.999 -maxfalsealarm 0.5 -npos 7000 -nneg 3019 -w 20 -h 20 -nonsym -mem 512 -mode all
"-nonsym"選項用於沒有垂直(左-右)對稱的物件類。如果物件類是垂直對稱的,例如正臉,則用"-sym (default)"。這樣會增大運算速度,因為類海爾特徵只有一半投入使用。
"-mode all"使用了類海爾特徵的擴充套件集。預設只使用豎直特徵,all除了能使用豎直特徵,還能使用轉角為45°的特徵集合。
"-mem 512"是以mb為單位的預計算可使用的記憶體大小。預設是200mb。
另外還有一些選項沒有用到:
[-bt ]
[-err ]
[-maxtreesplits ]
[-minpos ]
#你可以使用openmp(multi-processing).
#一次訓練持續三天。
2.生成xml檔案
當海爾訓練過程完全結束,它將會生成乙個xml檔案。
如果你想要將乙個中級海爾訓練輸出目錄樹轉化為乙個xml檔案,在目錄opencv/samples/c/convert_cascade.c下有個程式可供使用。
輸入的格式為:
$ convert_cascade --size="x"
舉例:$ convert_cascade --size="20x20" haarcascade haarcascade.xml
opencv haar訓練 訓練樣本(4)
1.海爾訓練 現在,我們使用haartraining.exe來訓練我們自己的分類器。訓練語句如下 usage haartraining data vec bg npos nneg nstages nsplits mem sym default nonsym minhitrate maxfalseal...
opencv haar訓練 訓練樣本(4)
1.海爾訓練 現在,我們使用haartraining.exe來訓練我們自己的分類器。訓練語句如下 usage haartraining data vec bg npos nneg nstages nsplits mem sym default nonsym minhitrate maxfalseal...
訓練過程 GPU訓練
為什麼y2b的8m,8張普通tt為啥要跑幾個月?因為gpu其實有60 的時間都是在等待資料填充完成,簡直蠢。1 換個固態硬碟試試?沒用。問題出在系統匯流排上,一幀的資料量入視訊記憶體後有1.58g 當前最優的分布式訓練方式是通過引數伺服器 parameter server 執行的同步隨機梯度下降演算...