次の方法で共有


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

TensorFlow を構成したので、YOLO アーキテクチャを使用してオブジェクト検出モデルをトレーニングします。 YOLO は、画像から境界ボックスとクラス確率を 1 つの評価で予測するニューラル ネットワークです。 YOLO モデルは 1 秒あたり 60 フレーム以上を処理できるため、ビデオ内のオブジェクトを検出するための優れたアーキテクチャになります。 YOLO のしくみの詳細については、 こちらをご覧ください

YOLO の使用

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

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

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

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

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

事前トレーニング済みの 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 形式に変換 する必要があります。