OPENCV中CASCADE的生成
在網上找了很多有關於OPENCV生成CASCADE的文章,大多數都來自同一篇文章,但文章有些老而且不好用
我在一個CASCADE2XML程序中找到了其自述文檔,寫的相當細致,我將其翻譯過來,希望後來人能夠看到少走彎路
另外,現在的OPENCV是1.1pre版已經不存在生成的CASCADE轉換為XML文件的問題了,這個問題可以忽略
致意
這個小文檔告訴你怎樣去建立自己的層級訓練集。
假設你已經安裝了OpenCv和你已經安裝了windows。
在這個指導文檔使用了額OpenCv beta 5。
準備工作:
要保證不出現用戶命名的錯誤,你應該解開tools.rar文檔並放在硬盤根目錄下d:\。
*) 在..\temp\negetive文件夾你應該保存不包含"目標"的圖片。
在你有了一大堆背景圖片後(比如2500個),你就可以用批處理文件create_list.bat
這個文件自動建立一個bmp文件的清單並保存到infofile.txt中。
在infofile.txt文件中應該包含這樣的行: image2619.bmp
img2620.bmp
...
在這個地址你能找到大量的上千的圖片可以下載。
https://www.pascal-network.org/challenges/VOC/databases.html#VOC2005_1
*) 在..\temp\positive\rawdata你應該保存包含目標的bmp文件
在使用..\temp\positive\objectmarker.exe後,readme.txt解釋了這個工具如何使用。
這個工具生成info.txt文件。每一行都這樣寫:rawdata/image0.bmp 1 146 109 47 46
你應該經常保存info.txt文件,因為每次調用objectmarker.exe都會覆蓋info.txt文件。
生成樣本:
*) 到現在你應該有了:
file : \temp\negative\infofile.txt 裏麵的文字應該類似於"image2619.BMP"
file : \temp\positive\info.txt 裏麵的文字應該類似於"rawdata/image0.bmp 1 146 109 47 46"
*) 現在你可以使用createsamples.exe工具去把目標圖像打包成vec向量文件
比如createsamples.exe -info positive/info.txt -vec data/vector.vec -num 1800 -w 24 -h 24
這句話的意思是你將生成vector.vec到\temp\data文件夾
-num的意思是有多少個圖片,你應該換成你想要的的個數
你可以是用samples_creation.bat批處理
訓練:
*) 在你有了vector.vec文件之後你就可以開始訓練了
命令是:
haartraining.exe -data data/cascade -vec data/vector.vec -bg negative/infofile.txt -npos 1800 -nneg 2620 -nstages 20 -mem 1000 -mode ALL -w 24 -h 24 -nonsym
開始訓練,
其中,參數是:
-data data/cascade - 生成層級數據的文件夾,每級都會生成如\temp\data\cascade\0..N\AdaBoostCARTHaarClassifier.txt的文件。
-vec data/vector.vec - 用createsamples.exe生成的vec文件
-bg negative/infofile.txt \temp\negative\文件夾中的bmp反例圖片文件
-npos 180 正例圖片的個數
-nneg 2620 反例圖片的個數
-nstages 30 層級數量的個數, 計算20層需要20小時左右(在p4 3,2ghz , 2gb ddr ram條件)
-mem 1000 運行程序需要的內存大小
-mode ALL 查看幫助文檔獲得更多信息
-w 24 -h 24 訓練集的大小
-nonsym 如果圖片是水平的就用不找此選項
你可以使用批處理文件"haarTraining.bat"來作此操作
haartraining.exe在運行時會產生這樣的輸出:
_________________________________________________________________________________
Parent node: 17
*** 1 cluster ***
POS: 1656 1799 0.920511
NEG: 2410 1.97289e-005
BACKGROUND PROCESSING TIME: 1279.69
Precalculation time: 63.20
+----+----+-+---------+---------+---------+---------+
| N |%SMP|F| ST.THR | HR | FA | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
| 1|100%|-|-0.312590| 1.000000| 1.000000| 0.256272|
+----+----+-+---------+---------+---------+---------+
| 2|100%|-|-0.537043| 1.000000| 1.000000| 0.294638|
+----+----+-+---------+---------+---------+---------+
| 3|100%|-|-0.776489| 1.000000| 1.000000| 0.238072|
+----+----+-+---------+---------+---------+---------+
| 4|100%|-|-1.415237| 1.000000| 1.000000| 0.264879|
+----+----+-+---------+---------+---------+---------+
| 5| 96%|-|-1.120346| 0.996981| 0.969710| 0.242253|
+----+----+-+---------+---------+---------+---------+
| 6| 84%|-|-1.471691| 0.996981| 0.956432| 0.218888|
+----+----+-+---------+---------+---------+---------+
| 7| 82%|-|-1.187260| 0.996981| 0.909959| 0.230939|
+----+----+-+---------+---------+---------+---------+
| 8| 83%|-|-1.209699| 0.995773| 0.897510| 0.216675|
+----+----+-+---------+---------+---------+---------+
| 9| 83%|-|-1.187195| 0.995169| 0.848548| 0.196754|
+----+----+-+---------+---------+---------+---------+
| 10| 81%|-|-1.332160| 0.995169| 0.880498| 0.178062|
+----+----+-+---------+---------+---------+---------+
| 11| 83%|-|-1.529588| 0.995773| 0.881328| 0.190113|
+----+----+-+---------+---------+---------+---------+
| 12| 81%|-|-1.529296| 0.995169| 0.859751| 0.178554|
+----+----+-+---------+---------+---------+---------+
| 13| 80%|-|-1.471163| 0.995169| 0.820332| 0.165765|
+----+----+-+---------+---------+---------+---------+
| 14| 80%|-|-1.439857| 0.995169| 0.797095| 0.157895|
+----+----+-+---------+---------+---------+---------+
| 15| 79%|-|-1.366838| 0.995169| 0.755602| 0.149287|
+----+----+-+---------+---------+---------+---------+
| 16| 77%|-|-1.357297| 0.995169| 0.729046| 0.148303|
+----+----+-+---------+---------+---------+---------+
| 17| 77%|-|-1.350920| 0.995169| 0.698755| 0.142892|
+----+----+-+---------+---------+---------+---------+
| 18| 77%|-|-1.286876| 0.995169| 0.657261| 0.140187|
+----+----+-+---------+---------+---------+---------+
| 19| 76%|-|-1.340796| 0.995169| 0.643983| 0.137236|
+----+----+-+---------+---------+---------+---------+
| 20| 75%|-|-1.258729| 0.995169| 0.607054| 0.135022|
+----+----+-+---------+---------+---------+---------+
| 21| 75%|-|-1.259443| 0.995169| 0.594606| 0.124447|
+----+----+-+---------+---------+---------+---------+
| 22| 75%|-|-1.247393| 0.995169| 0.578008| 0.121249|
+----+----+-+---------+---------+---------+---------+
| 23| 74%|-|-1.189301| 0.995169| 0.539419| 0.118790|
+----+----+-+---------+---------+---------+---------+
| 24| 74%|-|-1.278121| 0.995169| 0.547303| 0.116822|
+----+----+-+---------+---------+---------+---------+
| 25| 73%|-|-1.194187| 0.995169| 0.503734| 0.115347|
+----+----+-+---------+---------+---------+---------+
| 26| 73%|-|-1.216452| 0.995169| 0.484232| 0.110182|
+----+----+-+---------+---------+---------+---------+
Stage training time: 7788.05
Number of used features: 26
Parent node: 17
Chosen number of splits: 0
Total number of splits: 0
Tree Classifier
Stage
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18|
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0---1---2---3---4---5---6---7---8---9--10--11--12--13--14--15--16--17--18
_________________________________________________________________________________
*) 在完成20層的計算之後我也們可以繼續進行,這時候的錯誤率是 >=1*10e-5
在haartraining在運行時你可以看到:
例如:
For egzaple :
Parent node: 17
*** 1 cluster ***
POS: 1656 1799 0.920511
NEG: 2410 1.97289e-005
^
|
這就是錯誤率
________________________________________________
在\temp\data\cascade文件夾中應該包含從"0"到"N"標號(N是完成的層級的標號)的目錄
在每一個目錄中都有一個AdaBoostCARTHaarClassifier.txt file.
我們現在將0-N這些文件夾拷貝到..\cascade2xml\data catalogue文件夾
*) 使用\cascade2xml\haarconv.exe並加上參數我們就可以創建xml文件
命令:haarconv.exe data output.xml 24 24
就能夠創建在識別部分使用的xml文件了
你也可以使用\cascade2xml\convert.bat批處理文件來開始
*) 將output.xml文件拷到\test_recognition文件夾
使用命令:
facedetect.exe --cascade="output.xml" 0
你可以使用攝像頭作為圖像源進行識別
如果不用攝像頭你也可以使用圖像文件作為輸入比如pic0.jpg或者是電影film.avi
________________________________________________________________________________________
結束。
最後更新:2017-04-03 05:40:04
上一篇:
Javascript 學習 筆記二
下一篇:
解決:Could not find debuginfo pkg for dependency package glibc-2.12-1.132.el6_5.3.i686
C#.Net操作注冊表RegistryKey
Design Pattern: Registry of Singleton 模式
java.lang.NoClassDefFoundError:org/apache/commons/lang/exception/NestableRuntimeException 異常的處理
分享一下我參加開發者大會以來自己的總結(僅供參考)
解決Ajax全局變量賦值的問題
騰訊與360的謝幕
cocos2d-x讀取xml(適用於cocos2d-x 2.0以上版本)
ANDROID中LISTVIEW仿QQ群組向上滾動特效
北鬥已經深入民用領域,越來越親民
互聯網企業做手機“不接地氣”