airpocketのアイコン画像
airpocket 2023年12月01日作成 (2023年12月01日更新)
セットアップや使用方法 セットアップや使用方法 閲覧数 551
airpocket 2023年12月01日作成 (2023年12月01日更新) セットアップや使用方法 セットアップや使用方法 閲覧数 551

onnx2tfでtfliteモデルを作ってみる

onnx2tfでtfliteモデルを作ってみる

はじめに

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で動かす方法は次の記事にて。

1
airpocketのアイコン画像
電子工作、プログラミング、AI、DIY、XR、IoT M5Stack / Raspberry Pi / Arduino / spresense / K210 / ESP32 / Maix / maicro:bit / oculus / Jetson Nano / minipupper etc
ログインしてコメントを投稿する