Help us understand the problem. What is going on with this article?

Data Augmentationに使えるopencv_createsamplesの使い方

More than 1 year has passed since last update.

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.

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away