こんにちは、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でコンパイルした場合、両方のワークフローは同じ結果を生み出しました。
~/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演算子をマッピング します。
YOLOv8またはYOLO11のオブジェクト検出モデルは、i.MX95用のNeutronコンパイラで公式にサポートされているのでしょうか?
i.MX95 NPUをターゲットにしたYOLOモデル向けの推奨エクスポートパイプラインはありますか?
現在のNeutron SDK(v3.1.3)には既知の制限はありますか?YOLO検出ヘッドに関してですか?
NXPはi.MX95 NPU向けに正常にコンパイルできるリファレンスYOLOv8/YOLO11モデルを提供していますか?
演算子マッピングを有効にするために、追加のコンパイラオプションや前処理手順が必要ですか?
i.MX95 Neutron NPUで動作することが知られているガイダンス、推奨ワークフロー、または参照モデルがあればぜひ教えていただけるとありがたいです。
よろしくお願いします。
そして、あなたの人生を本当に大切にしてください。
もし本当に 、私がこのゲームを望むなら、私はこのゲームを L に x x 95 でイノシシd.
私たちは今、AR A2 を手に入れたので、そのキャパビリのつながりと 、あなたたちの兄弟の絆を活用します。 私たちはNXで実際にデモを作ったことがあるし、あなたはこのマットで最初に知られるだろうと、もっと早くアプリに報告されるだろう.
あなたの LPに感謝します。
eIQ Model zooのyolo8mモデルをimx95ボードで試し、LF 2026年Q2リリースイメージを使いました。カーネルバージョンはNeutron SDK 3.1.2を使用して6.18.2です。うまくいく。
まずは以下から試してみることもできます:
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
さらに、モデルやコンプリエーションの詳細なログを添付することもできます。
コンバーターログに基づくと、最初に解決すべき問題は、生成された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モデルを検査・プロファイリングし、以下のことを確認することです:
また、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やその他の後処理が含まれているかどうか。
私のテストでは、 自分でトレーニングもエクスポートもしていません。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つのモデルを比較することです:
推奨されるエンドツーエンドのワークフロー
お好みのフレームワークを使用してトレーニングしてください。
物体検出に関しては、NXPはすでにeIQモデルズーでYOLO参照レシピを提供しており、YOLOv8オブジェクト検出モデルも含まれています。[github.com] 、[github.com]
例:
シェル
YOLO検出トレーニング
model=yolov8n.pt \
data=dataset.yaml \
imgsz=640 \
エポック数=100
`
NXPは一般的に、量子化および展開の前に、交換フォーマットとしてONNXを使用することを推奨しています。
YOLOエクスポート
model=best.pt \
フォーマット=onnx
Neutron イネーブルメントのプレゼンテーションは、以下に基づくフローを明示的に記述しています:
プレーンテキスト
PyTorch
↓
ONNX
↓
量子化
↓
TFLite
↓
Neutron コンバータ
訓練アーティファクトから直接展開を狙うのではなく、
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 イネーブルメント材料に明示的に記録されています。
Neutron-converter \
--ターゲット imx95 \
--input model_int8.tflite \
--出力 model_neutron.tflite
ニュートロンコンバーターは、NPUにオフロードできるNeutron特有のグラフパーティションを作成します。
NPUのデプロイが成功すると、以下のようなレポートが表示されます。
変換されたオペレーターの数 > 0
Number of Neutron graphs > 0
次のような場合:
変換された演算子: 0
Number of Neutron graphs: 0
この場合、モデルはNPUによって加速されていません。
あなたの抱えている問題は、このカテゴリーに該当します。
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モデルの加速機構として特定されています。
yolov8m_full_integer_quant.tfliteをどのように変換してIMX95のNPUで動作させたのか教えてもらえますか?
手順に従って環境設定データ(HOST)を経て...私たちにとって大いに助けになるでしょう。
こんにちは
私はUbuntu 24.04を使用していますが、eiq_toolkitは20.04.03でのみ利用可能です。
eiqToolkitとeIQ Toolkitを使った量子化の使い方