TensorFlow EfficientDet モデルの変換

危険

ここで説明されているコードは非推奨になりました。従来のソリューションの適用を避けるため使用しないでください。下位互換性を確保するためにしばらく保持されますが、最新のアプリケーションでは使用してはなりません

このガイドでは、非推奨となった変換方法について説明します。新しい推奨方法に関するガイドは、Python チュートリアルに記載されています。

このチュートリアルでは、EfficientDet パブリック・オブジェクト検出モデルを中間表現 (IR) に変換する方法について説明します。

EfficientDet モデルを IR に変換

EfficientDet モデル実装の公開バージョンが GitHub で入手できます。このチュートリアルでは、モデルをリポジトリー (コミット 96e1fee) から OpenVINO 形式に変換する方法について説明します。

モデル・リポジトリーの事前トレーニングされた EfficientDet チェックポイント・セクションで参照されているモデルのチェックポイント efficientdet-d4.tar.gz をダウンロードして抽出します。

wget https://storage.googleapis.com/cloud-tpu-checkpoints/efficientdet/coco2/efficientdet-d4.tar.gz tar zxvf efficientdet-d4.tar.gz

EfficientDet TensorFlow モデルを IR に変換

EfficientDet TensorFlow モデルの IR を生成するには、次を実行します。

mo \ --input_meta_graph efficientdet-d4/model.meta \ --input_shape [1,$IMAGE_SIZE,$IMAGE_SIZE,3] \ --reverse_input_channels

$IMAGE_SIZE は、元の TensorFlow モデルの入力画像のサイズが変更されるサイズです。異なる EfficientDet モデルは、異なる入力画像サイズでトレーニングされました。正しい判断には、hparams_config.py ファイルの efficientdet_model_param_dict 辞書を参照してください。属性 image_size は、モデル変換に定義される形状を指定します。

入力データのカラーチャネルの順序 (RGB または BGR) は、モデルのトレーニング・データセットのチャネルの順序と一致する必要があります。異なる場合は、コマンドライン・パラメーター --reverse_input_channels を指定して RGB<->BGR 変換を実行します。そうしないと、推論結果が正しくなくなる可能性があります。パラメーターの詳細については、モデルを中間表現 (IR) に変換するガイドの入力チャネルを反転するセクションを参照してください。

OpenVINO ツールキットは、EfficientDet モデルの推論に使用できるサンプルを提供します。詳細は、Open Model Zoo デモを参照してください。

TensorFlow モデルと IR の結果の解釈

TensorFlow モデルは、出力として 7 要素タプルのリストを生成します: [image_id, y_min, x_min, y_max, x_max, confidence, class_id]

説明:

  • image_id – 画像のバッチインデックス。

  • y_min – 検出されたオブジェクトの左下隅の絶対 y 座標。

  • x_min – 検出されたオブジェクトの左下隅の絶対 x 座標。

  • y_max – 検出されたオブジェクトの右上隅の絶対 y 座標。

  • x_max – 検出されたオブジェクトの右上隅の絶対 x 座標。

  • confidence – 検出されたオブジェクトの信頼度。

  • class_id – 検出されたオブジェクト・クラスの ID を 1 から数えます。

IR の出力は 7 要素タプルのリストです: [image_id, class_id, confidence, x_min, y_min, x_max, y_max]

説明:

  • image_id – 画像のバッチインデックス。

  • class_id – 検出されたオブジェクト・クラスの ID を 0 から数えます。

  • confidence – 検出されたオブジェクトの信頼度。

  • x_min – 検出されたオブジェクトの左下隅の正規化された x 座標。

  • y_min – 検出されたオブジェクトの左下隅の正規化された y 座標。

  • x_max – 検出されたオブジェクトの右上隅の正規化された x 座標。

  • y_max – 検出されたオブジェクトの右上隅の正規化された y 座標。

image_id = -1 の最初の要素はデータの終わりを意味します。