はじめに
このコンテンツではパブリックモデルとして公開されている YOLOv4 を題材として OpenVINO™ ツールキットで使用する IR と呼ばれる形式 (.bin / .xml) への変換方法について紹介します。使用する YOLOv4 のパブリックモデルは下記 URL のものです。
本コンテンツ内容は執筆時点(2020/9/29 現在)で最新バージョンである Windows 版 2020.4 をターゲットとして記載しております。
主な手順としては以下の通りです。
- TensowFlow 1.12.0 の環境のセットアップ
- YOLOv4 TensowFlow モデルを GitHub レポジトリからダンプ
- YOLOv4 のフローズンモデルへ変換 (.pb)
- YOLOv4 のフローズンモデルを IR へ変換
1. TensorFlow 1.12.0 の環境のセットアップ
まず初めに TensowFlow 1.12.0 の環境が必要ですのでバージョンを 1.12.0 にする手順をご紹介します。
1.1 Tensorflow のバージョンを確認します。
pip list
1.2 Tensorflow 1.12.0 でなければアンインストールします。
pip uninstall tensorflow -y
TensorFlow のアンインストールが出来ました。
1.3 Tensorflow 1.12.0 をインストールします。
pip install tensorflow==1.12.0
TensorFlow-1.12.0 のインストールが出来ました。
1.4 念のため Tensorflow のバージョンを確認します。
pip list
TensorFlow 1.12.0 の環境になっていました。
2. YOLOv4 TensowFlow モデルを GitHub レポジトリからダンプ
まず初めに Tensowflow モデルを GitHub レポジトリ (https://github.com/TNTWEN/OpenVINO-YOLOV4.git) からダンプする手順を紹介します。
2.1 GitHub に公開されている YOLOv4 をクローンします。
git clone https://github.com/TNTWEN/OpenVINO-YOLOV4.git
クローンが完了するとこのようなディレクトリが作成されます。(ここではC:\YV4 配下にクローンしたことを前提に解説を進めます。 )
2.2 クローンしたディレクトリ (C:\YV4\OpenVINO-YOLOV4) に移動します。
cd OpenVINO-YOLOV4
2.3 yolov4.weights を 下記 URL よりダウンロードして、C:\YV4\OpenVINO-YOLOV4 に保存します。
ダウンロード出来ました。
参考 URL:
- https://github.com/TNTWEN/OpenVINO-YOLOV4
- https://github.com/AlexeyAB/darknet
- https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights
3. YOLOv4 のフローズンモデルへ変換 (.pb)
クローンした YOLOv4 ディレクトリに格納される Python ライブラリ(コンバーター)を実行します。
python convert_weights_pb.py --class_names cfg/coco.names --weights_file yolov4.weights --data_format NHWC
変換されると下記のようなメッセージが生成されます。
ファイルが生成されていることも確認できました。
4. YOLOv4 のフローズンモデルを IR へ変換
ここからは OpenVINO™ ツールキットの搭載される変換用 Python ライブラリであるモデル・オプティマイザー(Model Optimizer) を使用します。
データタイプに合わせて下記コマンドを実行し変換します。
- データタイプ FP32
python C:\IntelSWTools\openvino\deployment_tools\model_optimizer\mo.py ^
--input_model frozen_darknet_yolov4_model.pb ^
--transformations_config yolov4.json ^
--batch 1 ^
--reverse_input_channels ^
--data_type=FP32 ^
--output_dir C:\YV4\FP32 ^
--model_name yolov4
変換されると下記のようなメッセージが生成されます。
ファイルが生成されていることも確認できました。
- データタイプ FP16
python C:\IntelSWTools\openvino\deployment_tools\model_optimizer\mo.py ^
--input_model frozen_darknet_yolov4_model.pb ^
--transformations_config yolov4.json ^
--batch 1 ^
--reverse_input_channels ^
--data_type=FP16 ^
--output_dir C:\YV4\FP16 ^
--model_name yolov4
変換されると下記のようなメッセージが生成されます。
ファイルが生成されていることも確認できました。
5. まとめ
このように OpenVINO™ ツールキットを使えば公開されている汎用的なモデルを簡単に専用の IR 形式に変換することができます。また、インテル® では汎用モデルの他にインテル® にて学習済みの様々な学習済みモデルを提供しています。これらは商用利用可能な学習済みモデルとして提供されており、必要なモデルを組み合わせた独自のアプリケーションの構築も容易に実施が可能です。
OpenVINO™ ツールキットはお手元のノート PC でもお試しいただけます。ぜひオリジナルの AI システムの開発にチャレンジください。
参考リンク