14
Opencv Visual Recognition 利利利利利利利利利利利利利利利 利利利 (Nien-tzu Yang)

Opencv visual-recognition

Embed Size (px)

Citation preview

Page 1: Opencv visual-recognition

Opencv Visual Recognition利用訓練出來的分類器做影像辨識

楊念慈 (Nien-tzu Yang)

Page 2: Opencv visual-recognition

前言 本篇 slide 只包含介紹如何用 opencv 內建的檔案訓練出自己的 .xml 檔,並執行在

opencv 上。 關於 haartraining.exe 的介紹及與其他目前也具有 training 分類器的平台比對結果,在另外一篇 Slide:Haar-like feature 當中

Page 3: Opencv visual-recognition

訓練分類器產生 .xml 檔 – 事前準備 Opencv2.0 有內建的 .exe 檔可以建立分類器

createsamples.exe haartraining.exe

除了準備上述兩個 .exe 檔之外,還需要正負樣本 正樣本 : 需要分類出的物品,角度越多種為佳 負樣本 : 與正樣本相似性高為佳

Page 4: Opencv visual-recognition

訓練分類器產生 .xml 檔 存放正樣本 (positive) 的資料夾當中,需要有一個描述文件 .txt ,可利用 cmd 產生

先 cd 到資料夾位置: 輸入 dir /b /s >positives.txt 產生包含圖片資訊的 .txt 檔

Page 5: Opencv visual-recognition

正樣本 – 柯文哲 本次分類器使用樣本總數 : 50 張

Page 6: Opencv visual-recognition

負樣本 – 非柯文哲 本次分類器使用樣本總數 : 50 張

Page 7: Opencv visual-recognition

訓練分類器產生 .xml 檔 打開產生的 .txt 檔

利用 ctrl+h 編輯檔案 刪除圖檔路徑 並在最後新增分類數據:

1 0 0 200 250 其中 200 250 是圖片大小

修改完後的 positive.txt 如圖: 還要記得把 positive.txt 檔刪掉 ( 會在最下方 )

Page 8: Opencv visual-recognition

訓練分類器產生 .xml 檔 負樣本 negative 也是如此產生

negative.txt 檔,但不用新增數據,一樣要刪掉 negatives.txt那的一行文字

Page 9: Opencv visual-recognition

訓練分類器產生 .xml 檔 接下來使用 opencv_createsample.exe 建立 sample , cmd 輸入 opencv_createsample.exe –info positive/positives.txt –vec data/positives.vec

–num 50 –w 20 –h 20 -info 是代表正樣本圖片位置 -vec 則是要輸出的 vec 檔 目前是設定輸出到 data 的資料夾中 -num 是圖片張數 -w  重設圖片寬度 -h  重設圖片高度

Page 10: Opencv visual-recognition

訓練分類器產生 .xml 檔 接下來輸入 opencv_haartraining.exe –data data/data –vec data/positives.vec

–bg negative/negatives.txt –mem 1024 –w 20 –h 20 -data 是等一下產生的檔案位置 目前設定是放在 data 資料夾的 data 資料夾中 ( 會自己產生 ) -vec 剛才在 createsample.exe 產生的 vec 的路徑 -bg  負樣本的位置,我們是放在 negative 資料夾中的 negatives.txt -mem 記憶體愈大可處理的檔案愈大 -w  -h  寬度 高度 須和上一步驟設相同大小

Page 11: Opencv visual-recognition

訓練分類器產生 .xml 檔 接下來既可以在資料夾當中找到 data.xml data.xml 就是訓練好的分類器

接下來改寫下列網頁中的 code : http://www.cnblogs.com/tornadomeet/archive/2012/03/22/2411318.html

更改 .xml 檔及要辨識的圖片檔後既完成 ( 當然你要先安裝好 opencv)

Page 12: Opencv visual-recognition

在 vs 上使用 .xml 檔 因為建立的檔案是柯文哲的正負樣本,找到的對應上去的特徵就會將其中心點作為員心圈起來標示,下列為幾個測資產生的結果。要是沒有任何特徵相似,則圖片上沒有畫出任何圈,並顯示使圖片不是 KP( 柯文哲 )

Page 13: Opencv visual-recognition

討論 經由幾個測出的範例,可以發現結果非常不準確,可能的原因在於: Opencv training 時並不會先偵測人臉位置,所以目前認為能改善結果的方法是先行將人臉裁切出來再丟去 training 。

Page 14: Opencv visual-recognition

THX