retinanet-tf

ユースケースと概要説明

RetinaNet は、ResNet50 バックボーンを備えた高密度オブジェクト検出モデルであり、最初は Keras* でトレーニングされ、その後 TensorFlow* protobuf 形式に変換されました。詳細についてはこちらリポジトリーを参照してください。

Keras* から TensorFlow* への変換を再現する手順

  1. インストール手順に従って、元のリポジトリー (47fdf189 コミットでテスト済み) を複製してインストールします。リポジトリーのルートから python setup.py build_ext --inplace を実行したことを確認してください。

  2. オリジナルモデルはこちらからダウンロードできます

  3. 変換スクリプトを取得します。

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

    git clone https://github.com/amir-abdi/keras_to_tensorflow.git
    
    1. 変換がテストされたコミットをチェックアウトします。

    git checkout c841508a88faa5aa1ffc7a4947c3809ea4ec1228
    
    1. <omz_dir>/models/public/retinanet-tf から keras_to_tensorflow.patch を適用します。

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

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

注: 変換は、keras==2.3.1、tensorflow==1.15、および h5py<3.0.0 でテストされました。

仕様

メトリック

タイプ

物体検出

GFlops

238.9469

MParams

64.9706

ソース・フレームワーク

TensorFlow*

精度

メトリック

coco_precision

33.15%

入力

元のモデル

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

説明:

  • B - バッチサイズ

  • H - 画像の髙さ

  • W - 画像の幅

  • C - チャネル数

予想される色の順序: BGR。平均値: [103.939、116.779、123.68]

変換されたモデル

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

説明:

  • B - バッチサイズ

  • H - 画像の髙さ

  • W - 画像の幅

  • C - チャネル数

予想される色の順序: BGR

出力

元のモデル

  1. 分類子、名前: filtered_detections/map/TensorArrayStack_2/TensorArrayGatherV3。範囲 [1, 80] の予測された境界ボックスクラスが含まれます。モデルは、80 カテゴリのオブジェクト (0 クラスは背景用) を含む Common Objects in Context (COCO) データセットでトレーニングされました。<omz_dir>/data/dataset_classes/coco_80cl_bkgr.txt ファイルで提供されるクラス名へのマッピング。

  2. 確率、名前: filtered_detections/map/TensorArrayStack_1/TensorArrayGatherV3。検出された境界ボックスの確率が含まれます。

  3. 検出ボックス、名前: filtered_detections/map/TensorArrayStack/TensorArrayGatherV3。次の形式の検出ボックスの座標が含まれます:[y_min, x_min, y_max, x_max]、ここで (x_min, y_min) は左上隅の座標、(x_max, y_max) は右下隅の座標です。座標は入力画像サイズに合わせて再スケールされます。

変換されたモデル

概要検出情報の配列、名前 - DetectionOutput、形状 - 1, 1, 300, 7 形式の 1, 1, N, 7、ここで N は検出された境界ボックスの数です。各検出の形式は次のとおりです。
[image_id, label, conf, x_min, y_min, x_max, y_max]

説明:

  • image_id - バッチ内の画像の ID

  • label - 範囲 [1, 80] の予測クラス ID、<omz_dir>/data/dataset_classes/coco_80cl_bkgr.txt ファイルで提供されるクラス名にマッピングされます。

  • conf - 予測されたクラスの信頼度

  • (x_min, y_min) - 境界ボックスの左上隅の座標 (座標は正規化された形式で、範囲 [0, 1])

  • (x_max, y_max) - 境界ボックスの右下隅の座標 (座標は正規化された形式で、範囲 [0, 1])

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

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

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

omz_downloader --name <model_name>

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

omz_converter --name <model_name>

デモの使い方

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