TensorFlow を使用して物体検出モデルをトレーニングする

TensorFlow を構成したので、YOLO アーキテクチャを使用して物体検出モデルをトレーニングします。 YOLO は、1 回の評価で画像から境界ボックスとクラスの確率を予測するニューラル ネットワークです。 YOLO モデルでは 1 秒あたり 60 フレームを超える処理が可能で、ビデオ内の物体を検出する場合に最適なアーキテクチャです。 YOLO のしくみの詳細については、こちらを参照してください。

YOLO の使用

まず、この YOLO サンプル ファイルをダウンロードします。これには、開始するためのヘルパー スクリプトが含まれています。

YOLO を使用する場合、次の 3 つのオプションがあります。

  1. YOLO に対して事前トレーニング済みのモデルの重みを利用します。 事前トレーニング済みのモデルは、バス、人、サンドイッチなどの日常的な物体用に 80 のクラス (カテゴリ) を持つ大規模なデータセットでトレーニングされています。事前トレーニング済みの YOLO モデルを ONNX 形式でダウンロードする場合は、こちらでダウンロードできます。 その後、このチュートリアルの最終段階では、そのモデルをアプリに統合する方法を説明します。

  2. カスタム データセットを使用して転移学習を実装します。 転移学習は、トレーニング済みのモデルを開始点として使用して、異なるが関連するタスクを解決するモデルをトレーニングするための方法です。 このチュートリアルでは、80 クラスの事前トレーニング済みの YOLO 重みを使用して、VOC データセットで 20 クラスのモデルをトレーニングします。 カスタム クラスを使用して独自のデータセットを作成する場合は、こちらを参照してください。

  3. YOLO をゼロからトレーニングします。 この手法は、収束させるのが非常に難しいため、推奨されません。 オリジナルの YOLO 論文では、ネットワーク全体をトレーニングする前に、imagenet (数十万枚の写真を含む) で darknet をトレーニングしています。

事前トレーニング済みの YOLO の重みで VOC データセットに転移学習を実装する

2 番目のオプションに進み、次の手順で転移学習を実装しましょう。

  1. miniconda ウィンドウで、yolo のサンプル ディレクトリに移動し、次のコマンドを実行して、YOLO に必要なすべての pip パッケージをインストールします。

pip install -r requirements.txt

  1. セットアップ スクリプトを実行してデータと事前トレーニング済みの重みをダウンロードします

python setup.py

  1. データセットを変換します。 実装については、tools/voc2012.py を参照してください。この形式は、tensorflow 物体検出 API に基づいています。 多くのフィールドは必須ではありませんが、公式 API との互換性のためにここに入力されています。
python tools/voc2012.py \
  --data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
  --split train \
  --output_file ./data/voc2012_train.tfrecord

python tools/voc2012.py \
  --data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
  --split val \
  --output_file ./data/voc2012_val.tfrecord
  1. トレーニング: モデルをトレーニングします。 次のコマンドを実行します。
python convert.py
python detect.py --image ./data/meme.jpg # Sanity check

python train.py \
	--dataset ./data/voc2012_train.tfrecord \
	--val_dataset ./data/voc2012_val.tfrecord \
	--classes ./data/voc2012.names \
	--num_classes 20 \
	--mode fit --transfer darknet \
	--batch_size 16 \
	--epochs 10 \
	--weights ./checkpoints/yolov3.tf \
	--weights_num_classes 80 

これで、20 クラスの再トレーニング済みモデルが作成され、すぐに使用できます。

次のステップ

TensorFlow モデルを作成したので、新しい Windows Machine Learning API で使用するために ONNX 形式に変換する必要があります。