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

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

以下全為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

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

創作者介紹

白痴的Step by Step

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


留言列表 (34)

發表留言
  • 愛慕者-(>//<)
  • 你好厲害喔~
    希望以後小妹可以多向你學習~ ccc
  • deeptree
  • 喔喔 有愛慕者XDD
  • Sun
  • 請問positives和negatives資料夾內的樣本size都要相同嘛
  • 據說最好是這樣做

    honoyang 於 2009/12/17 21:00 回覆

  • pc2005
  • why not use
    dir /b > positive.txt
    ?
  • 老實說這篇文我都快忘了內容了
    總之只記得是要刪去不必要的檔案
    所以這個指令無關做haar的程式

    honoyang 於 2009/12/17 21:24 回覆

  • pc2005
  • Using dir /?, you can see the usage:
    /S Displays files in specified directory and all subdirectories.

    First you ask to display directory, then later on, you have to 將路徑中的C:\...........一直到圖檔檔名前的路徑全取代成空白. It is really wasting time.
  • ctjh870206
  • 請問訓練停止,除了nstages到了指定次數外,還有什麼嘛??
    例如整體錯誤率到了多少就停止之類的
  • 你可以看一下"Rapid Object Detection With A Cascade of Boosted Classifiers Based on Haar-like Features"這篇文章
    關於training的部分。

    例如minhitrate、maxfalsealarm應該都是可以調的

    honoyang 於 2010/01/04 14:07 回覆

  • choy
  • need help

    Hi
    I have tried your tutorial with these parameter
    1. positive sample = 200 images with size 24x24
    2. negative sample = 450 with size 24 x 24

    After 3 iteration the time consuming is very long more than 1 day....I don't know why

    As you information the result of third step ==> HR is 1 and FA is 0.

    Do you know why?

    thank you for your help
    sorry in english because i am foreign student in here :)
  • My lab partner shares his experiment result.
    He tried positive sample =200,negative =73.BG<100.
    Size is 20x20.
    Iteration needs 13 stage.
    The time consuming is about 40 second.

    He suggests that lessens the number of sample.

    (information from my lab partner 余世忠)
    (opencv version 1.1)

    He gives a link:
    http://htedsv.com/?tag=opencv

    Hope that is useful for you.

    honoyang 於 2010/03/31 20:04 回覆

  • 阿嬌
  • 我的也是同樣問題,產生完.vec 檔案後,haartraining.exe 並不會停止,與輸出.xml
  • http://htedsv.com/?tag=opencv

    據我學弟的說法是40秒就可以training好正樣本200張負樣本73張的檔。
    他在做魚的偵測。
    你可以參考一下上面那個連結。再試試看。
    可能是樣本太大會跑不完。
    (我當初是為了一個project去跑training,順便做了一下教學檔,跑完不碰這個主題已經很久了,所以細節也都忘光了,以上資訊來自我學弟余世忠)

    honoyang 於 2010/03/31 20:08 回覆

  • choy
  • need your help

    Hi

    firstly thank you for your attention.

    I have tried your suggestion using 200 positives samples and 73 samples, but unfortunately the result is still error and can not process the first stage. the comment is " invalid background description file"

    i don't know how to solve it (sorry i am beginner in opencv :)

    FYI : I use opencv 1, do you think this version make me results is error ?

    thank u before

    regards
  • I don't think version 1.0 makes different.
    And I haven't met this problem.
    Do you try other parameter?
    If you decrease the number of sample will lead to error.
    Maybe something wrong has existed at the preprocessing step.

    honoyang 於 2010/04/02 17:10 回覆

  • coy
  • Thank u

    Great

    Thank for your advice, now, the code is working properly :)

    Btw Sometime after several stages the code terminate automatically. The comment is " Required leaf false alarm rate achieved. Branch training terminated"

    What the meaning of this comment?

    tank you for your help :)

    regards
  • oh,sorry for late.
    but i didn't meet the situation.
    how about your work now.

    honoyang 於 2010/04/15 15:19 回覆

  • choy
  • Ok

    Ok no problem. I find the answer in here

    "http://www.computer-vision-software.com/blog/2009/11/faq-opencv-haartraining/"

    "Required leaf false alarm rate achieved. Branch training terminated – it’s impossible to build classifier with good false alarm on this negative images. Check your negative images are really negative =), maxfalsealarm should be in [0.4-0.5]"

    In my case, the problem appear in the training process when the value of FA more than 0.8

    No I little confuse about decision tree. Do you have literature to learn it?

    Thank for your help

    regard

    Khoirul
  • 想學者
  • 請問您還會有更多OPENCV有關應用於人臉辨識的範例嗎??類似這總的
  • sorry,,這是課程的期末專題的一部分,由於花了時間下去了解,不寫成文件很可惜。
    但現在不是在研究這方面的東西,所以不會有很多教學文,可能之後會補一些抓圖中圓形圖案的程式,
    但人臉應該不會再辨識。

    honoyang 於 2010/04/28 18:57 回覆

  • 憨憨
  • 對不起 請問一下
    正樣本的人臉圖庫 需要轉換成bmp檔嗎? 還是jpg檔也可
    還有另一問題就是 需要將影像轉為灰階嗎~!?
  • 我記得是不用轉灰階啦,BMP和JPG似乎沒差

    honoyang 於 2010/06/23 14:50 回覆

  • 憨憨
  • 感謝回覆!
    我有照步驟實作過 可是發現一點 我輸入大約1400多張
    可是他建立樣本後好像只有900多 不知是甚麼問題!!
    雖然也是可以建立好xml檔 但偵測效果不太好XD

    (ps.請問可以分享當初你使用的人臉圖庫嗎??
    因為我現在也滿缺圖庫的 只能到處拍照!)
  • 圖庫滿大的耶...我試試看好了...

    我把連結寄給你好了
    畢竟這個有版權問題

    honoyang 於 2010/06/23 15:34 回覆

  • 憨憨
  • 非常感謝你!!
  • 可是我好像不能寄信給你耶!!

    而且我剛才才發現我的樣本說不定沒你的多

    直接給好了

    http://www.megaupload.com/?d=F5567P4M

    honoyang 於 2010/06/23 15:49 回覆

  • 憨憨
  • 有看到嚕!! 不過因為現在在學校 所以載的相當慢
    我有把連結存起來了! 等晚上回家在繼續載
    感謝分享!!!!!!!
  • 希望對你有幫助啦~~

    honoyang 於 2010/06/23 16:07 回覆

  • 悄悄話
  • Sun
  • 訓練完之後是用哪一個進行test阿?? facedetect.exe? performance.exe??

    再問一個問題
    facedetect裡面有對影像做 Histogram Equalization
    那麼在haartraining是不是裡面也有做這個步驟阿
  • Rock
  • 請問最後面的測試程式您那邊還有嗎??
    因為連結已經變成光陰的故事了@@"...
  • 已更新連結
    http://tinyurl.com/3ynf325

    honoyang 於 2011/03/24 09:07 回覆

  • Christian Ventez
  • I hope you speak english because i really don´t know your language and i really have something to tell you...

    Thanks!!!! after weeks of suffering i finally implemented the haartraining.exe!!! and it was because of you and your tutorial, so you must know that when i finish my thesis big part of the thanks will be for you =)
  • It's my pleasure that the tutorial can help you

    This is one part of my class final project .
    Actually , I almost forgot the detail of the implement method. >.<

    honoyang 於 2011/09/13 23:46 回覆

  • zxvey02
  • 哈囉~
    我請教幾個問題嗎?
    正樣本我是自己用小畫家擷取所要的區域,可是這樣每張圖的大小(w,h)不一致,
    我在想如果把每張圖的大小(w,h)設定為相同,例:65*30
    但是這樣就會有些圖變為模糊或銳利的影像,這樣的樣本能拿來訓練嗎?
    效果會受到影響嗎?
  • Li-Yin Li
  • 你好:
    我想請問一下樣本數太少會訓練失敗嗎?
    因為我的正樣本17張、負樣本78張
    在訓練時一直停在
    stage 0---1---2---3---4---5---6---7
    number of features used : 16140
    parent node : 7
    *** 1 cluster ***
    POS : 9 17 0.529412
  • 你好
  • 我是用opencv2.1,我在執行haartraining.exe一開始他停止運作,這是甚麼問題呢?
  • Guo BlueSea
  • 請問一下,你有做過數字 英文字元的訓練嗎
  • sorry 沒試過耶 不過我學弟有用來訓練辨識魚XD

    honoyang 於 2014/08/04 15:18 回覆

  • max
  • 感谢楼主无私分享,本人受益匪浅
  • 訪客
  • 請問haar對於圖片的旋轉有沒沒辦法辨識是同一張呢?
  • 應該不行 像歪臉就不易辨識
    天啊好久以前的文章了..

    honoyang 於 2015/09/01 13:09 回覆

  • ChenXH
  • 如果不能辨識旋轉的話,我的研究就可以朝這個方向做了!!哈哈
    現在如果要使用的話,大致上會變動很多嗎?
    最近也想使用Viola–Jones的方法來辨識其它物件,於是就找到這篇文章嚕~
    感覺應該很有幫助,謝謝教學XD
  • 我們之前做法是旋轉整張圖片 再試看有無漏抓的人臉

    honoyang 於 2015/09/07 00:10 回覆

  • 訪客
  • 你指的旋轉是圖片的旋轉還是人臉的旋轉??
  • ??

    honoyang 於 2015/09/07 00:10 回覆

  • ChenXH
  • 你的意思是如果是一張正對的臉轉90度就找不到了??
  • 是的
    有可能

    honoyang 於 2015/09/08 09:48 回覆

  • tony
  • 可以請問haar是對「pixel」去找嗎?
    可是要怎麼確定要找的目標會佔幾個pixel呢?

    目標的大小如果改變,訓練出的分類器不就沒有用了嗎?
    還是我哪邊沒有看懂呢?

    謝謝
  • 抱歉 我忘記細節了 太久之前的文章
    opencv都不知道改版到什麼地方去了
    再者現在工作也沒用到

    honoyang 於 2015/09/08 09:49 回覆

  • tony
  • 摁摁沒關係
    我再研究看看
    如果你想到再留言給我XD
  • 如果人臉佔 畫面太大 或太小 也可能找不到
    所以我猜和pixel大小應該有關

    如果要做和尺度無關 應該要像SIFT那種方式吧 但不確定HAAR和SIFT是否為相同概念

    honoyang 於 2015/09/08 10:12 回覆

  • Hj740135
  • 我目前使用正樣品數200負的40 成功
    但是正樣品數增加到500 負100 就會終止運作???
  • kyo
  • 想請教一下
    我建了positives.txt,裡面有6章圖,都是JPG
    進行下一步時,他會出現error done create 0 sample
    我該刪該改的都有弄阿,怎麼用了好多次都一樣
    ???
找更多相關文章與討論