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
    1. (オプション) 変換がテストされたコミットをチェックアウトします:

    git checkout c841508a88faa5aa1ffc7a4947c3809ea4ec1228
    1. keras_to_tensorflow.py.patch を適用します:

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

    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 が提供する次のデモで使用して、その機能を示します: