スポンサーサイト [Edit]
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)
OpenCVで物体検出 - createsamples.exe [Edit]
なんとか自前でトレーニングしてテストできる環境になったので,忘れる前に書いておこう.

ディレクトリの初期構造は以下の通り.各exeファイルはOpenCVのインストールディレクトリから取ってこよう(ひょっとするとビルドし直さないといけないかも?).

bg/
 negative.txt
classifier/
positive_samples/
 pos_1.jpg
 pos_2.jpg
 ...
 pos_100.jpg
negative_samples/
 neg_1.jpg
 neg_2.jpg
 ...
 neg_100.jpg
test/
 lena.jpg
 test.txt
vec/
xml/
createsamples.exe
facedetect.exe
haarconv.exe
haartraining.exe
performance.exe
positive.txt


OpenCVの顔検出プログラム"facedetect.exe"では,"haartraining.exe"で学習したxmlファイルを利用している.これはサンプルとしてOpenCVに付いてくるのだが,他の物体を検出したい場合は自作しないといけない.

トレーニングするには,検出したい物体を含んだ"ポジティブ"サンプルと,検出したい物体を全く含んでいない"ネガティブ"サンプルが必要になる.それぞれのサンプルは画像ファイル.

ポジティブサンプルファイルには物体が複数含まれていても良いし,サイズの上限は特にない?(未確認),全てのファイルが同じサイズ,つまり物体の領域で切り抜いた画像ファイルになっていても良い.ただし,トレーニングするときに画像ファイル中の物体数とそのxy座標(左上原点),物体のサイズを指定する必要があるので,あらかじめ物体領域を切り出しておいて,サイズを全て揃えておいた方が楽なのかもしれない.

ネガティブサンプルには物体が含まれていなければ良いだけなので,特に気にしなくても良いと思うが,簡単な特徴ばかりの画像を持ってくるとあまり意味がない(同じ画像だらけになる)ので,複雑な背景画像を持ってきた方が良いかもしれない(未確認).

最初に,自分で集めたポジティブサンプル画像を,haartraining.exeが読み込めるデータに変換する.

createsamples.exe -info positive.txt -vec vec/positive.vec -num 100 -w 24 -h 24

"positive.txt"に画像ファイルへのパスと,含まれる物体数及び座標を記述する."positive_samples/"の下にある画像を参照するこの例だと,

positive_samples/pos_1.jpg 1 0 0 24 24
positive_samples/pos_2.jpg 1 0 0 24 24

とする(当然pos_100.jpgまで書く).ここでは画像ファイルそのものが24x24の物体だとした.

画像のある位置に物体が含まれているような,例えば人が写っていて人の顔を物体として検出するような場合,例えば"lena.jpg"(C:/Program Files/OpenCV/samples/c/にあり)なら,

lena.jpg 1 200 200 180 180

といった具合に指定する.

その他の引数は,"positive.vec"が生成されるデータファイル名,-numの引数がポジティブサンプル数,-w, -hは物体の基本画像サイズ.このサイズが検出する時の最小物体画像サイズになるので注意.

次回はhaartraining.exeについて書こう.
スポンサーサイト


[プログラム]OpenCV | 【2006-06-23(Fri) 18:36:00】 | Trackback:(0) | Comments:(0)
コメントの投稿
管理者にだけ表示を許可する

FC2カウンター
現在の閲覧者数:
リンク
RSSフィード
ブログ内検索
フリーエリア

カテゴリー
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。