物体検出の学習データを自動生成します。
Google Colabで学習データの自動生成からYOLOv5による物体検出までできるのでお試しください。
pipをアップグレードしておきます。
python -m pip install --upgrade pip
必要なパッケージをインストールします。
pip install -U numpy opencv-python Pillow tqdm pysimplegui albumentations
適当なフォルダでソースをクローンします。
git clone https://github.com/teatime77/auto-img-tag.git
camera.pyを実行します。
python camera.py
-
左の画面は明度で二値化する場合です。
明度の閾値 を変えると二値画像の白の領域が変化します。
物体が背景から分離されるように調整します。 -
右の画面は色相で二値化する場合です。
-
物体を置かずに 色相を指定 ボタンをクリックして、画像の中心の色を背景色として登録します。
-
物体を置いてから 色相の範囲 を変えると二値画像の白の領域が変化します。
物体が背景から分離されるように調整します。
-
-
動画撮影 ボタンをクリックすると録画が始まり、 停止 ボタンで録画を終了します。
動画ファイルはカレントフォルダの直下の capture フォルダに保存されます。 -
写真撮影 ボタンをクリックすると原画の静止画が capture フォルダに保存されます。
以下は動画ファイルのフォルダ構成の例です。
vegetable-videoフォルダの下に onion, potato, tomato のフォルダがあり、それぞれのフォルダの中に動画ファイルが入っています。
この例ではonionには3個の動画ファイル、potatoとtomatoには2個の動画ファイルが入っています。
学習データを作成するとき、onion, potato, tomatoがクラス名(カテゴリー名)になります。 動画ファイルのファイル名は何でも構いません。
ただしOpenCVは日本語のファイル名に対応していないので、フォルダ名やファイル名には日本語を含めないでください。
背景画像ファイルとして何でも良いのですが、COCOデータセットの 2017 Val images を使っています。
COCOの2017 Val imagesは5000枚あります。
main.pyを実行します。
python main.py -i 動画ファイルのフォルダ -bg 背景画像のフォルダ -o 出力先のフォルダ -dtsz 1クラス当たりの学習データの数 -imsz 出力画像のサイズ
実行すると出力先のフォルダに train.json と img フォルダができます。
┳ train.json ┗ img ┣ 画像ファイル ⋮ ┗ 画像ファイル
train.jsonはCOCO形式でアノテーションの情報が書かれています。
imgフォルダの下に学習用の画像ファイルが作成されます。
- -i
- 動画ファイルのフォルダ
- -bg
- 背景画像ファイルのフォルダ
- -o
- 学習データの出力先のフォルダ
- -dtsz
- 1クラスあたりの学習データの数。デフォルトは1000。
- -imsz
- 出力画像のサイズ。 デフォルトは720。
- -v
- 明度の閾値。デフォルトは250。
GUIアプリはデータ拡張などのデバッグに使っています。
起動の引数はmain.pyと同じです。
python gui.py -i 動画ファイルのフォルダ -bg 背景画像のフォルダ -o 出力先のフォルダ