質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

108閲覧

【python】OpenVINOのモデル変換のコードをnuitkaでexe化するとエラーが発生する。

kkjiji

総合スコア45

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2024/12/15 14:10

編集2024/12/15 14:46

実現したいこと

pythonでonnxモデルファイルをOpenVINOのIRモデルファイルへ変換するコードをnuitkaでexe化したいです。
nuitka以外のツールでも良くて、openvinoのモデル変換コードをexe化できれば問題ありません。pyintallerでも試しましたが、同様のエラーが発生しました。

◯仕様・条件
・pythonでopenvino変換コードをexe化する。変換の仕方にこだわりはない。
・ファイルを移動すれば、pythonが入っていないオフラインのpcでも実行できる

発生している問題・分からないこと

pythonのコードでは実行できているのですが、nuitkaでexe化するとエラーが発生します。

exeを実行すると、モデル変換ov.convert_modelのところで
[ ERROR ] Cannot recognize input model.
というエラーが発生しました。

nuitkaで変換する際はvenv仮想環境で実行している。pythonのバージョンは3.10.11です。
python -m venv env_test
pip install openvino==2024.4.0 nuitka onnx
python -m nuitka test.py --standalone
で変換しました。

エラーメッセージ

error

1[ ERROR ] Cannot recognize input model.

該当のソースコード

python

1import openvino as ov 2import onnx 3 4def get_onnx_input_shape(onnx_model_path): 5 """ 6 Get the input shape of an ONNX model. 7 8 Parameters: 9 onnx_model_path (str): Path to the ONNX model file. 10 11 Returns: 12 dict: A dictionary with input names as keys and their shapes as values. 13 """ 14 # Load the ONNX model 15 model = onnx.load(onnx_model_path) 16 17 # Parse the model graph 18 input_shapes = {} 19 for input_tensor in model.graph.input: 20 # Extract the input name 21 input_name = input_tensor.name 22 23 # Extract the tensor type and shape 24 tensor_type = input_tensor.type.tensor_type 25 shape = [] 26 for dim in tensor_type.shape.dim: 27 # Handle dynamic shapes (unknown dimensions) 28 shape.append(dim.dim_value if dim.dim_value > 0 else None) 29 30 input_shapes[input_name] = shape 31 32 return list(input_shapes.keys())[0] 33 34def main(): 35 try: 36 # ov.convert_model returns an openvino.runtime.Model object 37 ONNX_NLP_MODEL_PATH = r"onnxファイルのパス" 38 MODEL_DIRECTORY_PATH = r"保存先パス" 39 print(ONNX_NLP_MODEL_PATH) 40 41 input = get_onnx_input_shape(ONNX_NLP_MODEL_PATH) 42 ov_model = ov.convert_model(ONNX_NLP_MODEL_PATH, input=str(input), verbose=True) 43 ov.save_model(ov_model, MODEL_DIRECTORY_PATH + "\\" +"result.xml") 44 print("OK") 45 except : 46 print("error") 47 input("enter") 48 49if __name__ == "__main__": 50 main()

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

nuitkaの変換コマンドで--standaloneを抜いた
python -m nuitka test.py
で変換したあと、python.dllをコピーしてくると実行できました。
ただ、これでは他のPCでは実行できないので没にしました。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問