目前的教學文章都只有重點提要

我整整試了一天才有初步成果

以下全為try and error出的步驟

如果有錯的話還請大家提出來

 

事前準備:

1.OpenCV(版本1.0)

2.OpenCV內建的兩個執行檔:createsamples.exe

                                                     haartraining.exe

    這兩個執行檔在哪呢?搜尋一下OPENCV的資料夾很快就會找到了

3.N張人臉照片:

   N=?  當然是愈多愈好

   這步我覺得是最難的,目前手邊有將近2000張人臉照片才得出一個還算可以的結果 

   所以真的要製作的話,就去網路上找找有沒有人臉資料庫吧

4.N張非人臉照片:

    為了讓電腦分辨何為人臉,何為非人臉,這步也是很重要的,但我手邊也不多

     隨便抓了15張照片做為非人臉,沒想到還不錯,應該是我人臉的張數有cover非人臉的吧

     如果沒有的話,想辦法抓下以下連結的非人臉吧,科科科

      http://tutorial-haartraining.googlecode.com/svn/trunk/data/negatives/

--------------------------------OVER------------------------

接下來就是sts啦

1.創建一個資料夾,內容放置如下圖:

prepare.JPG

                在img資料夾中有如下:

                三個資料夾:data(等一下放產生出來的檔案,一開始為空資料夾)、negatives(非人臉資料夾)、

                                   positives(人臉資料夾)

                兩個執行檔:createsamples.exe、haartraining.exe

2.開始--->執行--->cmd

3.進入剛才所創建的資料夾---->再進入positives資料夾,如下圖:

cmd for posi.JPG 

由於positives放了很多人臉照片,我們要創建一個文件檔,去記錄這些照片的檔名及"資訊",

所以加入 dir /b /s > positives.txt  這行指令去建立一個txt檔,如下圖:

cmd for positive.JPG 

接著就可以在positives這個資料夾中看到positives.txt了,如下圖:

positives_txt.JPG  

接下來對這個txt檔做一些小修改:

                                           在txt開啓的狀態下   編輯--->取代,

                                           將路徑中的C:\...........一直到圖檔檔名前的路徑全取代成空白,如下圖:

replace_positvies.JPG 

上圖中,"取代為"的欄位中就保持空白。

結果如下:

replace result.JPG 

接下來同樣是編輯--->取代

在bmp後方輸入這些數據       1 0 0 200 250

其中1是固定的  0 0 200 250則是圖片大小(假如圖片是200乘250的話)

範例如下:

1 0 0 200 250.JPG 

如果如下,記得!!!!!!!!!!!!!!下面有個positive.txt這行要刪掉:

replace result2.JPG 

接著退出positives這個資料夾,進入negatives資料夾同樣動作,如下圖:

negativestxt.JPG 

  但!!!接下來只要做到這樣就好了:

replace_negaitvies.JPG 

也就是刪去路徑即可,不用加入數據,接下來回到前一個資料夾,也就是img資料夾

img.JPG 

 

OK!!

如此一來準備工作就好了

接下來就正式進入建立xml的過程

在cmd中輸入如下字串:

createsamples.JPG 

-info是代表人臉照片位置放在哪

-vec則是我們要輸出的vec檔 目前是設定輸出到data的資料夾中

-num是圖片個數,目前人臉資料夾中有1788張照片

-w  由於圖片一般都太大 我們要設定重設圖片大小  w是圖片寬度  如上圖是設定 20個pixel

-h  圖片高度

接著按下Enter鍵,會出現轉換資訊

OK!!!如下圖:

createsamplesresult.JPG 

接下來輸入:

haartraining.JPG 

-data 是等一下產生的檔案要放在哪  目前設定是放在data資料夾的data資料夾中(等一下他會自己產生)

-vec 剛才在createsample.exe產生的vec的路徑

-bg  非人臉資料夾的位置,我們是放在negatives資料夾中的negatives.txt

-mem 記憶體愈大可處理的檔案愈大

-w  -h  寬度  高度   請和之前的寬度和高度設同樣大小

按下Enter鍵,就會產生轉換資訊,圖檔愈多,轉換時間愈久,不要懷疑是不是當了

haartraining2.JPG 

以我P4雙核3.0G都要跑快半小時了吧

萬一negative的圖要是和positives中的圖差不多多,那應該要很久

接著

xml result.JPG 

可看見data資料夾中產了一個data資料夾及一個data.xml及一個在createsample時產生的positives.vec檔

xml就是拿來做人臉的分類器。

注意~~!!!這篇文章是在教如何製作xml檔,不負責教如何拿這個xml檔做人臉辨識

如果想要範例程式的話,可以去這個網站抓

http://tinyurl.com/3ynf325

我修改了一下後

在網路上找了9張圖片(好吧~~~其中有兩張是我私心合成的)

結果呈現如下(挑過結果算好一點的):

facedetect9.JPG facedetect1.JPG facedetect2.JPG facedetect3.JPG facedetect4.JPG facedetect5.JPG facedetect6.JPG facedetect7.JPG facedetect8.JPG

 

 最後要提醒大家

這是為初學者而寫的

其中在createsamples和haartraining時會有許多參數可以校調

目前是用了最簡單的設定,所以想更進一步使這個分類更準確,請參閱以下文件自行學習校調:

 http://0rz.tw/0pPTo

以上............................................................ 

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

白痴的Step by Step

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