LoginSignup
9
9

More than 5 years have passed since last update.

Data Augmentationに使えるopencv_createsamplesの使い方

Last updated at Posted at 2017-01-03

faces.gif

Data Augmentationというのは、データを変形させて訓練データを増やすこと。そのためのopencv_createsamplesが提供されている。上の画像のように回転・拡縮・光を変えて生成される。コマンド例は、

1枚の画像を変形させて増幅し、vecにまとめる

opencv_createsamples -vec output.vec -img faces/00000000.jpg  -num 10 -bgcolor 255 -h 250 -w 250 -show

オプションは、

Usage: opencv_createsamples
  [-info <collection_file_name>]
  [-img <image_file_name>]
  [-vec <vec_file_name>]
  [-bg <background_file_name>]
  [-num <number_of_samples = 1000>]
  [-bgcolor <background_color = 0>]
  [-inv] [-randinv] [-bgthresh <background_color_threshold = 80>]
  [-maxidev <max_intensity_deviation = 40>]
  [-maxxangle <max_x_rotation_angle = 1.100000>]
  [-maxyangle <max_y_rotation_angle = 1.100000>]
  [-maxzangle <max_z_rotation_angle = 0.500000>]
  [-show [<scale = 4.000000>]]
  [-w <sample_width = 24>]
  [-h <sample_height = 24>]

複数画像を入力にするなら-info, 単一画像なら-imgを使う。画像が生成されるのではなく、vecファイルというバイナリが生成される。これはopencv_haartrainingコマンド, opencv_traincascadeコマンドなどの入力となる。

形が決まっている物、たとえばCDのジャケットなどは上記コマンドで数千枚を生成すればそれの検出器を作れるだろう。顔検出の場合は-infoを使って様々な人の顔を入力とすべき。

PNG出力

できると書いてあるが、-info, -img共に、Macでは出力されなかった。

-infoで複数の正例をvecにまとめる

opencv_createsamples -vec output.vec -info positives.txt -num 4 -bgcolor 255 -h 250 -w 250 -show

positives.txtは、

./data/faces/00000000.jpg 1 1 1 250 250
./data/faces/00000001.jpg 1 1 1 250 250
./data/faces/00000002.jpg 1 1 1 250 250
./data/faces/00000003.jpg 1 1 1 250 250

こうすると複数画像を学習データのvecにできる。変形は行わないようだ。1枚の画像に顔が複数あってどちらも学習する場合の指定方法は、

img/img2.jpg 2 100 200 50 50 50 30 25 25

このように、2枚と書いてx, y, width, heightの順に書く。形式

実行時間

time opencv_createsamples -vec positives.vec -info positives.txt -num 13233 -h 24 -w 24

結果は、

Done. Created 13233 samples

real    0m18.683s
user    0m13.293s
sys 0m2.881s

vecのサイズは15.3MB.

9
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9