2393422_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2393422_ja-JP

2393422_ja-JP

i.MX95 Neutron NPU用にYOLOv8/YOLO11 TFLiteモデルをコンパイルできません

こんにちは、NXPサポートチームの皆さん、

私たちはNeutron SDK v3.1.3を用いてFRDM i.MX95プラットフォーム上の物体検出を評価していますまた、NPU互換モデルを生成できません。Neutronコンバータはモデルを正常にロードしますが、 Neutron NPUに割り当てられたオペレーターは0個と報告します。

環境

  • 対象ボード:FRDM i.MX95

  • Neutron SDK: 3.1.3

  • Ultralytics: YOLO11とYOLOv8の両方でテスト済み

  • eIQツールキット:ONNXからTFLiteへの変換に使用

  • モデル:カスタムの単一クラスペグ検出器

トレーニング司令部

$ yolo detect train \ model=yolov11n.pt \ data=/visual_inspect_yolo/dataset/dataset.yaml \ imgsz=640 \ epochs=100 \ batch=16 \ project=モデル \ name=peg_detector_v8

エクスポートコマンド


$ yolo export \ model=models/peg_detector_v84/weights/best.pt \ format=tflite \ int8=True \ data=/visual_inspect_yolo/dataset/dataset.yaml

また、別のワークフローもテストしました。

  • PyTorchをエクスポート → ONNX

  • NXP eIQツールキットを使用してONNXをINT8 TFLiteに変換する

Neutron SDKでコンパイルした場合、両方のワークフローは同じ結果を生み出しました。

 

Neutron コンパイル

~/Downloads/eiq-neutron-sdk-linux-3.1.3/bin/neutron-converter--target imx95 --input best_int8.tflite --output my_model_int8_npu.tflite

 

コンバータ出力

コンバーターは次のように報告しています:

  • インポート後のオペレーター数:341

  • 最適化後の演算子数:367

  • 変換された演算子: 0

  • オペレーター変換率:0 / 367

  • Number of Neutron graphs: 0

警告

  • 警告:グラフの演算子はニュートロンにマッピングされていません。
  • 警告:変換されたモデルは入力モデルと同じで、演算子が中性子にマッピングされていないためです。
  • 警告:グラフにはサポートされていない浮動小数点演算子が含まれています!これによりコンバージョン率が低くなることがあります。

その他の情報

以下のケースでも同様の挙動が観察されました。

  • YOLO11

  • YOLOv8

  • ダイレクトUltralytics TFLiteエクスポート

  • ONNX → eIQ ツールキット → INT8 TFLite

生成されたすべてのTFLiteモデルは、Neutronコンパイラによって 0演算子をマッピング します。

質問

  1. YOLOv8またはYOLO11のオブジェクト検出モデルは、i.MX95用のNeutronコンパイラで公式にサポートされているのでしょうか?

  2. i.MX95 NPUをターゲットにしたYOLOモデル向けの推奨エクスポートパイプラインはありますか?

  3. 現在のNeutron SDK(v3.1.3)には既知の制限はありますか?YOLO検出ヘッドに関してですか?

  4. NXPはi.MX95 NPU向けに正常にコンパイルできるリファレンスYOLOv8/YOLO11モデルを提供していますか?

  5. 演算子マッピングを有効にするために、追加のコンパイラオプションや前処理手順が必要ですか?

i.MX95 Neutron NPUで動作することが知られているガイダンス、推奨ワークフロー、または参照モデルがあればぜひ教えていただけるとありがたいです。

よろしくお願いします。

Re: Unable to compile YOLOv8/YOLO11 TFLite models for i.MX95 Neutron NPU

そして、あなたの人生を本当に大切にしてください

本当に 、私がこのゲームを望むなら、私はこのゲームを L に x x 95 イノシシd.

私たちは今、AR A2 を手に入れたので、そのキャビリのつながり あなたたちの兄弟の絆を活用します 私たちはNXで実際にデを作ったことがあるし、あなたはこのマット最初に知られるだろうと、もっと早くアプリ報告されるだろう.

あなたの LPに感謝します

Re: Unable to compile YOLOv8/YOLO11 TFLite models for i.MX95 Neutron NPU

eIQ Model zooのyolo8mモデルをimx95ボードで試し、LF 2026年Q2リリースイメージを使いました。カーネルバージョンはNeutron SDK 3.1.2を使用して6.18.2です。うまくいく。

xing_lei_0-1783672312304 (1).png

まずは以下から試してみることもできます:

wget https://huggingface.co/EdgeFirst/yolov8-det/resolve/main/imx95/yolov8n-det-int8-smart.imx95.tflite

root@imx95evk:/usr/bin/tensorflow-lite-2.19.0/examples# ./benchmark_model--graph=yolov8n-det-int8-Smart.imx95.tflite --external_delegate_path=/USR/LIB/libneutron_delegate.so

詳細はREADMEのeiq-model-zoo/tasks/ビジョン/object-detection/yolov8を参照してください。NXP/eiq-model-zoo

さらに、モデルやコンプリエーションの詳細なログを添付することもできます。


Re: Unable to compile YOLOv8/YOLO11 TFLite models for i.MX95 Neutron NPU

コンバーターログに基づくと、最初に解決すべき問題は、生成されたTFLiteモデルに依然としてFLOAT演算子が含まれていることです。


警告:グラフにはサポートされていない浮動小数点演算子が含まれています!


i.MX95 Neutronの場合、ニュートロンコンバータへの入力は、演算子と量子化フォーマットがNeutronコンパイラと互換性のあるTFLiteモデルでなければなりません。特に、i.MX95中性子流は量子化されたTFLiteと対称int8重みを期待しています。UltralyticsエクスポートやONNXからTFLiteへの変換後もモデルにFLOAT演算子/テンソルが残っている場合、コンバーターは報告された結果と整合するNeutron互換の部分グラフを作成できない可能性があります。


変換された演算子: 0

中性子グラフの数:0


YOLOv8はi.MX95上で一部のフローにおいて評価されていますが、任意のUltralyticsエクスポートにおいて、エンドツーエンドのYOLOv8/YOLO11オフロードが完全に実現されるとは限りません。エクスポートされたTFLiteグラフによっては、モデルの一部のみがNeutronGraphに変換され、サポートされていない演算子はCPU上に残ります。したがって、次の推奨ステップは生成されたTFLiteモデルを検査・プロファイリングし、以下のことを確認することです:

  1. グラフは完全に量子化されており、
  2. FLOAT演算子はありません。
  3. 重みは対称な int8、
  4. 入出力テンソルタイプは互換性があり、該当する場合はNeutron変換器のuint8からint8への変換オプションで変換されます。
  5. デコードやNMSなどのYOLO後処理は、SDKで正確な演算子がサポートされていることが確認されない限り、NPUグラフの外に保管されます。

また、Neutron-Converter版とボード上のNeutronランタイム/ファームウェア/デリゲートが同じ互換性のあるSDK/BSPリリースから来ていることも確認してください。


推奨される手順として、NXP/eIQ変換パスをお試しください。

PyTorch -> 静的入力形状のONNX -> 代表的な較正データを用いたNXP/eIQ量子化 ->量子化されたTFLite -> Neutron-converter --ターゲットIMX95


モデルにuint8の入力/出力テンソルがある場合は、以下もテストしてください:

--入力値をuint8からint8に変換

--出力をuint8からint8に変換


FLOAT演算子を削除した後も変換結果にマッピングされた演算子が0と表示される場合は、以下の情報を共有してください。

- 詳細/プロファイリング出力を含む完全な中性子変換ログ

- TFLiteオペレーターリスト、

- テンソルデータ型と量子化パラメータ、

- FRDM i.MX95ボード上のBSP/実行時Neutronデリゲート/ファームウェアバージョンの正確なバージョン、

- YOLO検出ヘッドにNMSやその他の後処理が含まれているかどうか。

Re: Unable to compile YOLOv8/YOLO11 TFLite models for i.MX95 Neutron NPU

私のテストでは、 自分でトレーニングもエクスポートもしていません。eIQ Model Zooのプリ生成されたYOLOv8モデルを使い、i.MX95プラットフォームで動作することを確認しました。

私が実際に使用したコマンドはこれだけです。

./benchmark_model \

--graph=yolov8n-det-int8-smart.imx95.tflite \

--external_delegate_path=/usr/lib/libneutron_delegate.so

モデルでは:

wget https://huggingface.co/EdgeFirst/yolov8-det/resolve/main/imx95/yolov8n-det-int8-smart.imx95.tflite


カスタムモデルの場合、推奨されるNXPフローは以下の通りです:

PyTorch

ONNX(静的入力形状)

eIQツールキット ONNX2Quant

eIQツールキット ONNX2TFLite

量子化されたTFLite

Neutron-converter --ターゲットIMX95


あなたのモデルが報告しているので:

プレーンテキスト

変換された演算子: 0

Number of Neutron graphs: 0

警告:グラフにはサポートされていない浮動小数点演算子が含まれています!


あなたの生成されたTFLiteグラフは、eIQ Model Zooの参照モデルとは構造的に異なるのではないかと推測しています。まず最初におすすめしたいのは、以下の2つのモデルを比較することです:

  • 入力/出力テンソル型(INT8 vs UINT8)
  • FLOAT演算子の存在
  • グラフ内のデコード/NMSレイヤー
  • Netron / TFLiteアナライザーによって報告されたオペレーターリスト
Re: Unable to compile YOLOv8/YOLO11 TFLite models for i.MX95 Neutron NPU

推奨されるエンドツーエンドのワークフロー

  1. モデルトレーニング(PC)

お好みのフレームワークを使用してトレーニングしてください。

  • ウルトラリティクス YOLOv8
  • PyTorch
  • テンソルフロー
  • ONNXネイティブワークフロー

物体検出に関しては、NXPはすでにeIQモデルズーでYOLO参照レシピを提供しており、YOLOv8オブジェクト検出モデルも含まれています。[github.com][github.com]

例:

シェル

YOLO検出トレーニング

model=yolov8n.pt \

data=dataset.yaml \

imgsz=640 \

エポック数=100

`

  1. ONNX形式でエクスポート

NXPは一般的に、量子化および展開の前に、交換フォーマットとしてONNXを使用することを推奨しています。


YOLOエクスポート

model=best.pt \

フォーマット=onnx


Neutron イネーブルメントのプレゼンテーションは、以下に基づくフローを明示的に記述しています:

プレーンテキスト

PyTorch

ONNX

量子化

TFLite

Neutron コンバータ

訓練アーティファクトから直接展開を狙うのではなく、

  1. eIQツールキットを使用した量子化

Neutronのワークフロードキュメントでは、eIQ Toolkitの量子化ユーティリティの使用を推奨しています:

python -m onnx2quant \

model.onnx \

-o model_quant.onnx \

-c input::

に続く:

python -m onnx2tflite \

model_quant.onnx \

-o model_int8.tflite

もっと行を表示

この流れはi.MX95 Neutron イネーブルメント材料に明示的に記録されています。

  1. i.MX95 Neutron NPU用にコンパイル

Neutron-converter \

--ターゲット imx95 \

--input model_int8.tflite \

--出力 model_neutron.tflite

ニュートロンコンバーターは、NPUにオフロードできるNeutron特有のグラフパーティションを作成します。

  1. コンバージョン率の検証

NPUのデプロイが成功すると、以下のようなレポートが表示されます。

変換されたオペレーターの数 > 0

Number of Neutron graphs > 0

次のような場合:

変換された演算子: 0

Number of Neutron graphs: 0

この場合、モデルはNPUによって加速されていません。

あなたの抱えている問題は、このカテゴリーに該当します。

  1. FRDM-i.MX95に展開する

TensorFlow LiteでNeutronデリゲートを使い実行します:

./benchmark_model \

--graph=model_neutron.tflite \

--external_delegate_path=/usr/lib/libneutron_delegate.so

または

./label_image \

--external_delegate_path=/usr/lib/libneutron_delegate.so

i.MX Machine Learning User Guideでは、 Neutron Delegate がi.MX95 TensorFlow Liteモデルの加速機構として特定されています。

Re: Unable to compile YOLOv8/YOLO11 TFLite models for i.MX95 Neutron NPU

yolov8m_full_integer_quant.tfliteをどのように変換してIMX95のNPUで動作させたのか教えてもらえますか?
手順に従って環境設定データ(HOST)を経て...私たちにとって大いに助けになるでしょう。


Re: Unable to compile YOLOv8/YOLO11 TFLite models for i.MX95 Neutron NPU

こんにちは
私はUbuntu 24.04を使用していますが、eiq_toolkitは20.04.03でのみ利用可能です。

eiqToolkitとeIQ Toolkitを使った量子化の使い方

タグ(1)
評価なし
バージョン履歴
最終更新日:
13 時間前
更新者: