close

一開始先去官網上下載opencv (http://opencv.org/) 的安裝包,再來就確認環境變數內有指定opencv/build/bindll路徑位置,以上就懶得講。

接下來你要有兩個檔案放在一個資料夾內

pic5.jpg

至於traincascadehaartraining兩個差別在哪? 簡單來說一個是新版一個是舊版、一個有多了hoglbp的特徵抽取一個是只有haar-like feature。總之,這裡就用新版traincascade來做測試。

 

Step1: 收集正負樣本

一開始新收集你的正樣本(positive)跟負樣本(negative),切記負樣本內不要有你正樣本的東西!!!

本人這裡就用可愛的貓貓來作正樣本(請自行google抓取)

接著就要刮取你要的範圍,假設你要訓練1:1的長寬,請按照原始比例刮取(ex: 35x35, 20x20, 50x50),說實話這樣用小畫家擷取真的還頗難的,後來有發現一個不錯的軟體(Trimto),如果大家嫌麻煩可以用這個軟體用,然後將所有正樣本resize製相同的size(這邊我是用35x35)。至於負樣本就隨便抓個背景圖(不要裡面有貓就好,如果你很懶得抓圖這邊http://tutorial-haartraining.googlecode.com/svn/trunk/data/negatives/ 有現成的),大小也沒啥限制。至於顏色部分彩色灰階,因為原始碼內是直接轉灰階來執行故我個人覺得是沒啥差異(攤手)

正樣本:

pic7.jpg

負樣本:

pic8.jpg

 

Step2: 標記URL

接著將negatives放入你所有要訓練的貓貓照片,在negatives也放在入你所有負樣本的照片,然後在將這些需要的檔案放入同一個資料夾(/opencv/data/)下。

pic6.jpg

接著打開你的cmd輸入此資料夾的路徑,在進入negatives資料夾內,再用dir /b > 存放檔案名稱,positives資料夾也是照著這步驟做。

cmd1.jpg

接著positivesnegatives的資料夾內會有positives.txtnegatives.txt的檔案。

先打開positives.txt的檔案,把檔案內最後一行positives.txt砍掉。

接著選取檔案資料型態(.bmp or .jpg ~~~~blabla)按下ctrl+f 講檔案尾端新增檔案型態 1 0 0 w h (ex: .bmp 1 0 0 35 35,幾個目標,rectX, rectY, rectW, rectH),接著negatives.txt只要將檔案尾端的negatives.txt砍掉就好。

positives.txt                                                                                                             negatives.txt

pic9.jpg              pic3.jpg

以上記得存檔XDDD”

Step3: positives的檔案存成vector的檔案(.vec)( opencv_createsamples)

接著cmd位置回到opencv/data,也稍微確認一下opencv/data/positives/positives/txt檔案有在。

首先看一下opencv_createsamples參數要如何下。

-info: positives.txt的位置

-vec: positives的檔案存成.vec的檔案名稱

-num: positives的數量(我正樣本有113個,故此處我就設定為113)

-w, -h: 影像寬跟長(default: 24x24,這裡我是設定為35x35)

其他就是用來創造新的樣本的參數,這裡是用不到。

cmd3.jpg

成功的話,最後會有 Done. Created num samples.的字樣,在opencv/data/內會有positives.vec檔案。

Step 4: 訓練cascade(opencv_traincascade)

最後這步驟就是確認positives.txtnegatives/negatives.txt檔案存在,接著在opencv/data/內在新增一個資料夾,這裡我就將資料夾取名為cascade,接下來看一下opencv_traincascade怎樣用。

-data: 要儲存的資料夾(opencv_traincascade不會自動create這資料夾,但在opencv_haartraing卻會自動create,但因為我是用opencv_traincascade,所以這就是剛剛為什麼我要創立一個cascade的資料原因)

-vec: positivesvec檔案的位置(opencv/data/positives.vec)

-bg: negaivesURL的路徑位置(opencv/data/negatives/negatives.txt)

-numPos, -numNeg: positivesnegatives的數量(之前有看過某篇文章說用pos:neg最好是1:2.5~3之間,我底是多少,但是之前有用過neg超過3的比例是有出現exception)

-numStages: 訓練出多少stage

-precalcValBufSize, precalcIdxBufSize: 就要運用記憶體容量(這裡我就設定為default,照官網上說得調越高是可以訓練比較快,但我調1024卻出現exception,有空再來看原因><)

-baseFormateSave: 是否用舊格式存放

-satgeType: 這裡只有BOOST沒其他方法囉(我猜之後可能會增加類似SVMNeural Network等方法吧)

-featureType: 這裡提供了HAARLBPHOG等特徵抽取的方法(default: HAAR)

-w, -h: 影像長寬,切忌要和在opencv_createsamples內設定的-w,-h一模一樣不然會出錯!!!

-bt: adaboost的總類(default GAB,還又其他方式DABRAB LB)

-minHitRate, -maxFalseAlarmRate, -weightTrimRate, -weightTrimRate, -maxDepth, -maxWeakCount: 基本上這些都是adaboos的數學運算上需要的參數,這邊就暫時先設default

-mode: haar –like feature所需要用的方式,內有3種方式(CORE, BASIC, ALL),懶得打,直接貼圖(zzzz)

pic4.jpg

其中BASIC包含CORE,ALL包含BASIC跟CORE

如果-featureTypeHOGLBP基本上-mode是不用設定。(如果-fetureType沒設定他的default就是HAAR,所以下圖-mode BASIC不用打也沒關,但如果要測試CORE or ALL 就要設定了)

cmd6.jpg

接下來就等他跑完就end!

pic10.jpg

訓練完成後,在opencv/data/cascade/的資料夾下會多一個cascade.xml檔案,這就是訓練完的結果,接就就可以餵給opencv CascadeClassifeir做測試,以下是測試結果。

07.jpg08.jpg09.jpg10.jpg01.jpg

02.jpg03.jpg04.jpg05.jpg06.jpg

arrow
arrow

    JUJU 發表在 痞客邦 留言(2) 人氣()