yolo-v1-tiny-tf

ユースケースと概要説明

YOLO v1 Tiny は、TensorFlow.js* フレームワークによるリアルタイムの物体検出モデルです。このモデルは、20 クラスの VOC データセットで事前トレーニングされました。

変換

  1. 追加の依存関係をインストールします。

    h5py
    keras
    tensorflowjs
    
  2. ここからモデルをダウンロードします (aa4354c コミットでテスト済み)。

  3. tensorflowjs_converter スクリプトを使用してモデルを Keras* 形式に変換します。
    例:

    tensorflowjs_converter --input_format tfjs_layers_model --output_format keras <model_in>.json <model_out>.h5
    
  4. 生成されたモデルを protobuf 形式に変換します。

    1. リポジトリーから変換スクリプトを取得します。

      git clone https://github.com/amir-abdi/keras_to_tensorflow
      
    2. (オプション) 変換がテストされたコミットをチェックアウトします。

      git checkout c841508a88faa5aa1ffc7a4947c3809ea4ec1228
      
    3. keras_to_tensorflow.py.patch を適用します。

      git apply keras_to_tensorflow.py.patch
      
    4. スクリプトを実行:

      python keras_to_tensorflow.py --input_model=<model_in>.h5 --output_model=<model_out>.pb
      

仕様

メトリック

タイプ

検出

GFLOPs

6.988

MParams

15.858

ソース・フレームワーク

TensorFlow.js*

精度

変換されたモデルの VOC2007 データセットからのテストデータで取得された精度メトリック。

メトリック

mAP

54.79%

入力

元のモデル

画像、名前: 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 です。

出力

元のモデル

検出概要情報の配列、名前 - conv2d_9/BiasAdd、形状 - 1, 13, 13, 125、形式 - B, Cx, Cy, N*25

説明:

  • B - バッチサイズ

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

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

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

説明:

  • (x, y) - ボックスの中心の生の座標。sigmoid 関数を適用してセルを基準とした座標を取得します。

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

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

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

<omz_dir>/data/dataset_classes/voc_20cl.txt ファイルで提供されるクラス名へのマッピング。

anchor 値は、1.08,1.19, 3.42,4.41, 6.63,11.38, 9.42,5.11, 16.62,10.52 です。

変換されたモデル

検出概要情報の配列、名前 - conv2d_9/BiasAdd/YoloRegion、形状 - 1, 21125、形式 - B, N*25, Cx, Cy

説明:

  • B - バッチサイズ

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

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

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

説明:

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

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

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

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

<omz_dir>/data/dataset_classes/voc_20cl.txt ファイルで提供されるクラス名へのマッピング。

anchor 値は、1.08,1.19, 3.42,4.41, 6.63,11.38, 9.42,5.11, 16.62,10.52 です。

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

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

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

omz_downloader --name <model_name>

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

omz_converter --name <model_name>

デモの使い方

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