はじめに
このコンテンツではパブリックモデルとして公開されている YOLOv3 を題材として OpenVINO™ ツールキットで使用する IR と呼ばれる形式 (.bin / .xml) への変換方法について紹介します。使用する YOLOv3 のパブリックモデルは下記 URL のものです。
本コンテンツ内容は執筆時点(2019/4/24 現在)で最新バージョンである Windows 版 2020.2 をターゲットとして記載しております。
主な手順としては以下の通りです。
- YOLOv3 TensowFlow モデルを GitHub レポジトリからダンプ
- YOLOv3 のフローズンモデルへ変換 (.pb)
- YOLOv3 のフローズンモデルを IR へ変換
1. YOLOv3 TensowFlow モデルを GitHub レポジトリからダンプ
まず初めに Tensowflow モデルを GitHub レポジトリ (https://github.com/mystic123/tensorflow-yolo-v3) からダンプする手順を紹介します。
1.1 GitHub に公開されている YOLOv3 をクローンします。
git clone https://github.com/mystic123/tensorflow-yolo-v3.git
クローンが完了するとこのようなディレクトリが作成されます。(ここではC:\home 配下にクローンしたことを前提に解説を進めます。 )
1.2 クローンしたディレクトリ (C:\home\tensorflow-yolo-v3) に移動します。
cd tensorflow-yolo-v3
1.3 DarkNet サイトから coco.names をダウンロードして、C:\home\tensorflow-yolo-v3 に保存します。
上記リンクにカーソルを合わせ、右クリック後に「リンク先を名前を付けて保存」でダウンロードできます。
ダウンロードしたファイルを同じディレクトリーに保存します。
1.4 coco.names を少し修正します。coco.names をテキストエディタで開き、最終行のスペースだけになっている 81行目を削除して上書き保存します。
- 編集前
- 編集後
1.5 yolov3.weights を 下記 URL よりダウンロードして、C:\home\tensorflow-yolo-v3 に保存します。
- https://pjreddie.com/media/files/yolov3.weights
ダウンロード出来ました。
2. YOLOv3 のフローズンモデルへ変換 (.pb)
クローンした YOLOv3 ディレクトリに格納される Python ライブラリ(コンバーター)を実行します。
python converter_weights_pb.py --class_names coco.names --data_format NHWC --weights_file yolov3.weights
変換されると下記のようなメッセージが生成されます。
ファイルが生成されていることも確認できました。
注記:ModuleNotFoundError: No module named 'PIL' というエラーが発生する場合は、Python の画像処理ライブラリの pillow をインストールして下さい。
3. YOLOv3 のフローズンモデルを IR へ変換
ここからは OpenVINO™ ツールキットの搭載される変換用 Python ライブラリであるモデル・オプティマイザー(Model Optimizer) を使用します。
今回の変換の入力ファイルには、frozen_darknet_yolov3_model.pb 以外に yolov3.json というコンフィグレーション・ファイルが必要です。yolov3.json は 下記のディレクトリーに格納されます。
- <OPENVINO_INSTALL_DIR>\deployment_tools\model_optimizer\extensions\front\tf
データタイプに合わせて下記コマンドを実行し変換します。
- データタイプ FP32
python C:\IntelSWTools\openvino\deployment_tools\model_optimizer\mo_tf.py ^
--input_model C:\home\tensorflow-yolo-v3\frozen_darknet_yolov3_model.pb ^
--transformations_config C:\IntelSWTools\openvino\deployment_tools\model_optimizer\extensions\front\tf\yolo_v3.json ^
--input_shape [1,416,416,3] ^
--data_type=FP32 ^
--model_name yolov3 ^
--output_dir C:\home\tensorflow-yolo-v3\FP32
変換されると下記のようなメッセージが生成されます。
ファイルが生成されていることも確認できました。
- データタイプ FP16
python C:\IntelSWTools\openvino\deployment_tools\model_optimizer\mo_tf.py ^
--input_model C:\home\tensorflow-yolo-v3\frozen_darknet_yolov3_model.pb ^
--transformations_config C:\IntelSWTools\openvino\deployment_tools\model_optimizer\extensions\front\tf\yolo_v3.json ^
--input_shape [1,416,416,3] ^
--data_type=FP16 ^
--model_name yolov3 ^
--output_dir C:\home\tensorflow-yolo-v3\FP16
変換されると下記のようなメッセージが生成されます。
ファイルが生成されていることも確認できました。
4. まとめ
このように OpenVINO™ ツールキットを使えば公開されている汎用的なモデルを簡単に専用の IR 形式に変換することができます。また、インテル® では汎用モデルの他にインテル® にて学習済みの様々な学習済みモデルを提供しています。これらは商用利用可能な学習済みモデルとして提供されており、必要なモデルを組み合わせた独自のアプリケーションの構築も容易に実施が可能です。
OpenVINO™ ツールキットはお手元のノート PC でもお試しいただけます。ぜひオリジナルの AI システムの開発にチャレンジください。
参考リンク