物体検出 – HaarLike 分類器の作成 for mac (分類器の作成編)

haarlike_eyecatch

前回はOpenCVで機械学習させるため、Positive画像とNegative画像を用意しました。
今回は前回作成したPositive画像用のvecファイルを基にして、オブジェクトの分類器を作成し、実際に使用してみたいと思います。

まずは学習に使うコマンドです。

$opencv_traincascade -data coffee -vec coffee.vec -bg negatives.txt -npos 100 -nneg 100 -w 44 -h 44

主要パラメータ


-data <cascade_dir_name>

 分類器の保存先ディレクトリ名を指定します。

-vec <vec_file_name>

 "opencv_createsamples"コマンドで作成したvecファイル(Positiveのサンプル画像)を指定します。

-bg <background_file_name>

 背景画像を指定します。(Negative画像)

-numPos <number_of_positive_samples>
-numNeg <number_of_negative_samples>

 各ステージごとに使われるPositive/Negativeのサンプル画像数を指定します。

-numStages <number_of_stages>

 学習させるステージ数を指定します。
 ※ ステージ数が増えると、処理時間が増えます。

-w
-h
 "opencv_createsamples"コマンドで設定したサイズを指定します。

これでcoffeeディレクトリにcoffee.xmlファイルが生成されます。
このファイルを使ってopenFrameworksでオブジェクト検出をしてみます。
ソースコードはopenFrameworksのexamples > addonsフォルダにあるopencvHaarFinderExapmleを使います。

ofApp.m内のsetup関数を修正します。


void ofApp::setup(){
img.loadImage("coffee.jpg");
finder.setup("coffee.xml");
finder.findHaarObjects(img);
}

xmlファイルと画像のパスを変更するだけでOKです。

coffee_haarlike















以上で3回に分けてHaarLike特徴量によるオブジェクト分類器の作成と使用例について記事にしました。
画像処理に関してまだまだ勉強不足で自分自身の経験値が足りない部分もありますが、みなさんもこれを機に一つ武器として学習してみてはいかがでしょうか?

You may also like...