LoginSignup
11
13

More than 3 years have passed since last update.

YOLOのオリジナルデータ学習手順 #2 アノテーション

Last updated at Posted at 2020-10-04

Chapters

📘 Chapter #0 YOLOとは
📘 Chapter #1 環境設定
📘 Chapter #2 アノテーション
📘 Chapter #3
 📗 Chapter #3-1 YOLOv3 Keras版実装
 📗 Chapter #3-2 YOLOv3 Darknet版
📘 Chapter #A
 📗 Chapter #A-1 YOLOの各バージョンについてまとめ
 📗 Chapter #A-2 YOLOv3 Keras版実装に関して関連記事のまとめ
 📗 Chapter #A-3 ONNX変換・確認ライブラリ、アプリケーションまとめ


TL:DR

環境

  • Windows 10 Pro 1909
  • IrfanView 4.5.1
  • Vott 2.2.0

YOLOの学習に必要な画像数について

最低:1カテゴリに対して100枚
基準:1カテゴリ1000枚
推奨:1カテゴリ5000、10000枚(高い精度と検出率、差異が少ない対象を扱っている場合、汎化性能を求める場合)
1カテゴリ当たり100枚で「試しにやってみる」
⇒ PoC(Proof of Concept:仮説検証)
角度、大きさ、色相、明度の異なる複数のバリエーションを偏りなく集め、1カテゴリ1000枚を達成します。
⇒ 精度を向上します。
誤検知のデータを修正、データの水増しをしながらブラッシュアップを繰り返していくと、結果的に5000枚、10000枚になります。

引用:https://www.nakasha.co.jp/future/ai/yolov3train.html

1. スクリプトの準備

git clone https://github.com/tfukumori/keras-yolo3

2. 実施手順(画像の整理とリサイズ)

※手戻りがないように、各工程作業毎にファイルを保持しておくことをお勧めします。

2.1. 画像の収集

  • 後の作業で削除等しますので、「コピー」し原本は残しておきます

2.2. 選別

IrfanViewで確認しながら、良質な画像を選択し不要な画像を除きます。

  • NGファイル(目的のものが写っておらず or ピンボケ):Deleteキー
  • OKファイル(目的のものが写っていて、ピントがあっている):→キー

良質な画像とは

  • 対象とする物体が、大きく、くっきりと写っていること。学習段階で大きい物体を使用してもYOLOv3は仕組み上小さい物体も検知できます。

途中で中断するときは

途中で中断するときはIrfanViewの左下の数字を覚えておきます。

💡 参考:より良い機械学習のためのアノテーションの機械学習
  ・アノテーションはAIの開発・運用にとってクリティカル
  ・精度の良い、大量のアノテーションデータを作ることが重要
  ・機械学習によりアノテーションプロセスを解析・改善が可能

2.3. 残ったものについてテスト用の画像を適当に選別

必要に応じて1割程度をテスト用に取っておきます。

※目的は、Train、Validateで使用した画像はテスト用として妥当ではないためです。
※リサイズ前の画像をテストとして選別しておいて構いませんが、実際の使用目的によりリサイズ後の画像をテストとして使用することを検討します。

2.4. リサイズの準備

トレーニング対象の画像を以下のフォルダの直下にコピーします(ない場合には新規作成します)。

keras-yolo3\images

2.5. リサイズ

以下を実行しリサイズします。
この処理でimagesフォルダの画像ファイルがリサイズされ、resize_imageフォルダに生成されます。(正方形でない場合は空白が白で埋められます)

画像のリサイズ
python resize_images.py

今回はYOLOv3の既定値に合わせて変更しています。

この416 x 416は学習のサイズ、推論のサイズどちらにも影響するので、実際に推論に使用するサイズと合わせておく必要があります。
推論時は必ずこの画像サイズにリサイズしてから推論させることになります。

3. 実施手順(アノテーション)

作業を分担する場合は、Azureクラウドを使用して作業するか、作業担当者ローカルでファイルを分担して作業してから後で手作業でまとめます(train.txtはエディタ等で結合します)。

3.1. アノテーション

Vottを使用してアノテーションを行います。

image.png
※クリックで開く。引用元:https://sleepless-se.net/2019/06/21/how-to-use-vott/

ここではローカルでの作業を記載しますが、Azureクラウドを使用した作業も可能です。
参考:https://dev.classmethod.jp/articles/annotation-vott-azure-blob/

また、Vottアプリケーションは2重起動すると正常に動作しないようです。

  1. 新規プロジェクトの作成
  2. Add Connectionから、ローカルファイルシステムのコネクションを作成する

    image.png

    このローカルファイルシステムには、resize_imageフォルダのパスを指定します。

  3. ソース接続とターゲット接続に作成したConnectionを指定しプロジェクトを作成する

  4. image.pngからエクスポート設定を行う

    設定名 設定値
    プロバイダー Pasca VOC
    アセットの状態 タグ付きアセットのみ
    テスト/トレーニング分割 100(既定値 80)
    未割り当てをエクスポート OFF

    image.png

  5. タグがない場合はタグを作成する

  6. キーボードショートカットを使用しながらアノテーション(囲み作業とタグ付け)を行う

    操作 ショートカットキー
    前の画像 wキー
    次の画像 sキー
    タグ付け 数字キー ※マウスで領域を囲んで数字キー

    ※アノテーションするときは、大きい物体がくっきり写ってる良質な写真を選ぶ必要があります(小さい物体は学習させないほうが良い)。YOLOv3はネットワークの構造上、大きい物体を学習しておけば、推論時には小さい物体も検知できます。
    ※大量のデータセットで学習する必要があります。

  7. image.pngから保存する

  8. image.pngでエクスポートする

    次のフォルダにエクスポートされます。

    <項2で指定した`resize_image`フォルダ>\<Vottのプロジェクト名>-PascalVOC-export
    

参考文献

11
13
0

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
11
13