yolo-v3-tf

ユースケースと概要説明

YOLO v3 は、このリポジトリーの Keras* を使用して実装され、TensorFlow* フレームワークに変換されたリアルタイム物体検出モデルです。このモデルは、80 クラスの Common Objects in Context (COCO) データセットで事前トレーニングされました。

変換

  1. 公式のリポジトリーをダウンロードまたはクローンします (d38c3d8 コミットでテスト済み)。

  2. 次のコマンドで、元のモデル (リポジトリー内の yolov3 という名前) を取得し、それを Keras* 形式に変換します (詳細は、公式リポジトリーの README.md ファイルを参照してください)。

    1. YOLO v3 の重みをダウンロードします。

      wget -O weights/yolov3.weights https://pjreddie.com/media/files/yolov3.weights
      
    2. モデルの重みを Keras* に変換します。

      python tools/model_converter/convert.py cfg/yolov3.cfg weights/yolov3.weights weights/yolov3.h5
      
  3. モデルを protobuf に変換します。

    python tools/model_converter/keras_to_tensorflow.py --input_model weights/yolov3.h5 --output_model=weights/yolo-v3.pb
    

仕様

メトリック

タイプ

検出

GFLOPs

65.984

MParams

61.922

ソース・フレームワーク

Keras*

精度

変換されたモデルの Common Objects in Context (COCO) 検証データセットで取得された精度メトリック。

メトリック

mAP

62.27%

COCO mAP

67.7%

入力

元のモデル

画像、名前: input_1、形状: 1, 416, 416, 3、形式: B, H, W, C

説明:

  • B - バッチサイズ

  • H - 高さ

  • W - 幅

  • C - チャネル

チャネルの順番は RGB です。スケール値 - 255。

変換されたモデル

画像、名前: input_1、形状: 1, 416, 416, 3、形式: B, H, W, C

説明:

  • B - バッチサイズ

  • H - 高さ

  • W - 幅

  • C - チャネル

チャネルの順番は BGR です。

出力

元のモデル

  1. 検出概要情報の配列、名前 - conv2d_58/BiasAdd、形状 - 1, 13, 13, 255。anchor 値は、116,90,  156,198,  373,326 です。

  2. 検出概要情報の配列、名前 - conv2d_66/BiasAdd、形状 - 1, 26, 26, 255。anchor 値は、30,61,  62,45,  59,119 です。

  3. 検出概要情報の配列、名前 - conv2d_74/BiasAdd、形状 - 1, 52, 52, 255。anchor 値は、10,13,  16,30,  33,23 です。

各ケースの形式は B, Cx, Cy, N*85, です。
説明:

  • B - バッチサイズ

  • CxCy - セル・インデックス

  • N - セルの検出ボックスの数

検出ボックスの形式は、[x, y, h, w, box_score, class_no_1, …, class_no_80]。

説明:

  • (x, y) - ボックスの中心の生の座標。sigmoid 関数を適用してセル座標に対する相対値を取得します

  • h, w - ボックスの生の高さと幅、指数関数を適用し、対応するアンカーを乗算して、絶対的な高さと幅の値を取得します

  • box_score - 検出の信頼度ボックス。sigmoid 関数を適用して [0, 1] 範囲の信頼度を取得します

  • class_no_1, …, class_no_80 - クラス全体の確率分布をロジット形式で計算し、sigmoid 関数を適用し、取得した信頼値を乗算して各クラスの信頼度を取得します

このモデルは、80 カテゴリーのオブジェクトを含む Common Objects in Context (COCO) データセットでトレーニングされました。<omz_dir>/data/dataset_classes/coco_80cl.txt ファイルで提供されるクラス名へのマッピング。

変換されたモデル

  1. 検出概要情報の配列、名前 - conv2d_58/BiasAdd/YoloRegion、形状 - 1, 13, 13, 255。anchor 値は、116,90,  156,198,  373,326 です。

  2. 検出概要情報の配列、名前 - conv2d_66/BiasAdd/YoloRegion、形状 - 1, 26, 26, 255。anchor 値は、30,61,  62,45,  59,119 です。

  3. 検出概要情報の配列、名前 - conv2d_74/BiasAdd/YoloRegion、形状 - 1, 52, 52, 255。anchor 値は、10,13,  16,30,  33,23 です。

各ケースの形式は B, Cx, Cy, N*85 です。
説明:

  • B - バッチサイズ

  • N - セルの検出ボックスの数

  • CxCy - セル・インデックス

検出ボックスの形式は、[x, y, h, w, box_score, class_no_1, …, class_no_80]。

説明:

  • (x,y) - セルに対するボックスの中心の座標

  • hw - ボックスの生の高さと幅、指数関数を適用し、対応するアンカーと乗算して、絶対的な高さと幅の値を取得します

  • box_score - [0, 1] 範囲の検出ボックスの信頼度

  • class_no_1、…、class_no_80 - [0, 1] 範囲のクラスにわたる確率分布。信頼値を乗算して各クラスの信頼度を取得します

このモデルは、80 カテゴリーのオブジェクトを含む Common Objects in Context (COCO) データセットでトレーニングされました。<omz_dir>/data/dataset_classes/coco_80cl.txt ファイルで提供されるクラス名へのマッピング。

モデルをダウンロードして OpenVINO™ IR 形式に変換

以下の例に示すように、モデルをダウンロードし、必要に応じてモデル・ダウンローダーやその他の自動化ツールによってモデルを OpenVINO™ IR 形式に変換できます。

モデル・ダウンローダーの使用例:

omz_downloader --name <model_name>

モデル・コンバーターの使用例:

omz_converter --name <model_name>

デモの使い方

Open Model Zoo が提供する次のデモでこのモデルを使用して、その機能を確認できます。