はじめに
GOLD_YOLOの凄いモデルをRaspberry Pi 5上のtfliteで動かしたいという衝動に見舞われたもののモデルがonnxだったので何とかしたいと思って苦しんだ記録です。
この記事では、こちらの"魂を削って作られた" GOLD_YOLOのスペシャルバージョンのonnxモデルをWindows PCでtfliteモデルに変換します。
できればPi5上でモデル変換を行いたかったのですが、onnx-graphsurgeonというライブラリがRaspberry Pi OS上で動いてくれなかったので妥協してWinPCで変換しました。(Bullseye 64bitとBookworm 64bitでは動かなかったので早々にあきらめました)
魂を削って作られている様子はこちら。たしかにゴリゴリ削れる音が響いてきそうです。
環境
ANACONDAでpython 3.11の仮想環境を作って変換しました。他のバージョンは確認していません。
Windowsは 10,11で確認しています。
ANACONDAのインストール
ANACONDAはGUIベースでpythonなどの仮想環境を管理できる便利ツールです。こちらのサイトからダウンロードしてインストールします。
python 3.11環境を作る
ANACONDAを起動するとこんな画面が開きます。
新しい環境を作るには、画面左の「Environments」を選択します。
環境制作用の画面が開いたら、画面したの「Create」をクリックするとダイアログが開きます。
Nameにこれから作る環境に名前を入力します。Packageで構築する環境を選択します。今回はPython 3.11.5としました。
しばらく待つと環境が構築されてリストに追加されます。
構築した仮想環境の動作を確認しておきます。
「」から「Open Terminal」を選択してTerminalを開きます。プロンプトの前に仮想環境名が表示されています。pythonを実行すると、Python 3.11.5のREPLが起動しました。
「Open with Python」を選択すると直接REPLが起動します。
(onnx2tf) C:\Users\user>python
Python 3.11.5 | packaged by Anaconda, Inc. | (main, Sep 11 2023, 13:26:23) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
onnx2rtをインストール
onnx2rtはPINTさんのリポジトリ通りに操作すればインストール可能です。いくつか方法がありますが、ここでは地道にpipでインストールしていきます。
pip install onnx==1.14.1
pip install nvidia-pyindex
pip install onnx-graphsurgeon U
pip install onnxruntime==1.16.0
pip install onnxsim==0.4.33
pip install simple_onnx_processing_tools
pip install onnx2tf
pip install h5py==3.8.0
pip install psutil==5.9.5
pip install ml_dtypes==0.2.0
pip install tensorflow==2.15.0
h5pyはversion 3.7.0が指定されていますが、今回の環境ではインストールできませんでした。python自体のバージョンを下げる必要があるかもしれませんが、python 3.11.5でもh5py==3.8.0で動いたため今回はこのまま進みます。
Gold YOLOのモデルをダウンロード
"魂を削って作られた"モデルはこちらにあります。
ダウンロードしたファイルを解凍するとファイルが多数つくられますので、適宜作業用フォルダを作ってその中でダウンロード、解凍しましょう。
curl "https://s3.ap-northeast-2.wasabisys.com/pinto-model-zoo/425_Gold-YOLO-Body-Head-Hand/resources_n.tar.gz" -o resources.tar.gz
tar -zxvf resources.tar.gz
del resources.tar.gz
モデルを変換
onnx2tf -i gold_yolo_n_body_head_hand_post_0461_0.4428_1x3x128x160.onnx -oiqt -coion -cotof
-iで変換モデルのpath指定、-oiqtで量子化変換した出力を追加、-coionと-cotofは変換時のOP名の一致など(よくわかりません(TT)
変換の対象としたモデルは最も小さいモデルです。変換されたファイルは作業フォルダ下のsaved_model内に保存されています。
出来たモデルをraspberry pi 5に移動して実行すると
gold_yolo_n_body_head_hand_0461_0.4428_1x3x128x160_integer_quant.tflite
を使って推論時間最短5msという爆速で動作しました。
このモデルをRaspberry Piで動かす方法は次の記事にて。
投稿者の人気記事
-
airpocket
さんが
2023/12/01
に
編集
をしました。
(メッセージ: 初版)
-
airpocket
さんが
2023/12/01
に
編集
をしました。
-
airpocket
さんが
2023/12/01
に
編集
をしました。
-
airpocket
さんが
2023/12/01
に
編集
をしました。
-
airpocket
さんが
2023/12/01
に
編集
をしました。
-
airpocket
さんが
2023/12/01
に
編集
をしました。
-
airpocket
さんが
2023/12/01
に
編集
をしました。
ログインしてコメントを投稿する