2254236_ja-JP

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

2254236_ja-JP

2254236_ja-JP

Neutron 変換された YOLOv8n モデルが i.MX95 で適切な出力を生成しない

やあ、

Ultralytics から完全に量子化された int8 YOLOv8n オブジェクト検出モデルをエクスポートしました。最新の eIQ Toolkit バージョン 1.17 の Neutron コンバーターを使用して NPU で実行できるように変換し、i.MX95 ハードウェアで実行しようとしました。

NPU デリゲートを使用して、変換されたモデルと変換されていないモデルの両方を試しましたが、変換されたモデルに存在する Neutron Graph のみが NPU で実行されるようです。

両方のモデルからの生の出力を比較すると、変換されたモデルは 95% を超えるスコアで複数の誤検知を示しています。変換されたモデルと変換されていないモデルの両方に同じスクリプトを使用していますが、変換されたモデルでのみ問題が発生します。複数のアプローチで検証しましたが、毎回同じ結果になりました。

両方のモデルを Netron アプリで調べたところ、変換されたモデルに大きなアーキテクチャ上の変更があることがわかりました。

ここで私が聞きたいのは、

1.YOLOv8 や YOLOv11 などの最新のオブジェクト検出アーキテクチャは、eIQ Toolkit バージョン 1.17 を搭載した Neutron コンバータでサポートされていますか?もしそうなら、どのような手順を踏んでいるのか教えてください。

2. i.MX95 で NPU を使用して YOLOv8 と YOLOv11 をテストしましたか?はい、そうであれば、検証とポストプロセッシング手順用のモデルも送信していただけますか。

3.i.MX95 の Neutron NPU で Neutron Graph とは別の操作を実行したい場合、どのようなプロセスになりますか?

4. 上記のモデルを i.MX95 の GPU で実行する場合のプロセスはどのようなものですか?

機械学習ユーザーガイドも確認しましたが、関連する詳細は見つかりませんでした。これをデバッグするために私の側から詳細を知りたい場合は、遠慮なく質問してください。

ありがとう、
ヴァツサル

Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95

こんにちは、

Neutron に変換された YOLOv8n モデルからの誤検出で発生している問題は、既知の課題です。i.MX95 NPU 上の YOLOv8 モデルの現在のサポートはまだ最適化中であり、変換中のアーキテクチャの変更がパフォーマンスに影響する可能性があります。

具体的なご質問に関して:

1. eIQ Toolkit 1.17 の YOLOv8 アーキテクチャ サポートはまだ改善中です。推奨される変換ワークフローは次のとおりです。
- モデルをエクスポートする際に適切な int8 量子化を保証する
- Neutronコンバータによる変換には最新のeIQ Toolkit (v1.17)を使用してください
- コマンド: `./neutron-converter --input [your-model].tflite--target imx95 --use-python-prototype`

2. YOLOv8 はサポートされていますが、まだ完全に最適化されていない可能性があります。YOLOv5 は、現在の NPU 実装との互換性が優れていることが示されています。NXP チームは、YOLOv8/YOLOv11 サポートの改善に積極的に取り組んでいます。

3. NPU で Neutron Graph を超える操作を実行するには、eIQ または netron ツールを使用してモデルを分析し、どの演算子が NPU で実行できるように正常に変換されているかを特定する必要があります (neutronop コンテンツとして表示されます)。変換されない演算子は CPU 上で実行されます。

4. i.MX95 での GPU 実行では、NPU デリゲートの代わりに TensorFlow Lite GPU デリゲートを使用します。これには、GPU デリゲートを使用するように推論コードを変更する必要があります。

変換されたモデルを netron で調べることで、モデル操作の分散を確認できます。つまり、「neutronop」コンテンツを持つすべての演算子は NPU で実行され、その他の演算子は CPU に残ります。


よろしくお願いします。


Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95

前回のチャットでYOLOv5がNeutronコンバータで良好な結果をもたらしていると主張していたように、カスタムデータセットを使用してYOLOv5sで再度トレーニングを実行し、推論を試みました。YOLOv5 でもこの問題は依然として存在します。参考までに結果も添付します。変換済みおよび非変換済みの int8 tflite YOLOv5s モデルを試しました。

さて、YOLOv5 が良い結果をもたらしていると主張するのであれば、検証済みのモデルを私たちと共有してみませんか。エクスポート、量子化から変換までのすべての手順と、ポストプロセッシングで実行している手順も共有してください。これにより、お客様のモデルを検証し、お客様が実行した手順を当社側で再現できるようになります。

共有できる場合は、i.MX95 のベンチマークとプロファイリング データも共有してください。
yolov5-pill-result.jpgyolov5-pill-result-non-convrt.jpg

Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95

こんにちは@Bio_TICFSL

NXPチームが--use-python-prototype フラグの使用を推奨しているようですが、私のNeutronコンバーターでは認識されません。Windowsでもサポートされているのでしょうか、それともLinux eIQリリースのみ対応しているのでしょうか?

Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95

それは私にとっても疑問です。Linux eIQ を試してみましたが、うまく動作しませんでした。SO、私はそれをスキップし、ターゲット引数のみを渡してモデルを変換しようとしました。

Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95

こんにちは、 @Bio_TICFSL

長い時間が経っているので、まだあなたの方からの返事を待っています。私たちはここで行き詰まっており、また緊急性も抱えています。できるだけ早くご返信いただきますようお願いいたします。

よろしくお願いいたします。
ヴァツサル

[i.MX95 NPU] YOLOv5n/v8n/v11n Neutron-converted Models Run but Return No Detections (Zero Output)

問題の説明

私はNeutronコンバーターを使ってi.MX95 NPU上のYOLO物体検出モデルを評価しています。
INT8量子化されたTFLiteモデルはCortex-A55 CPU上で正常に動作しオブジェクトを検出しますが、コンパイルされたneutron.tflite版は、推論をクラッシュせずに実行しても、NPUにオフロードしても検出ゼロ(空/出力なし)ができません。

環境およびハードウェアのセットアップ

 
  • ハードウェア: i.MX95 19x19 LPDDR5 EVK(A1リビジョン)
  • OS/カーネル: Linux 6.12.34-lts-next-gbe78e49cb433 #1 SMP PREEMPT (aarch64)
  • NXPツールチェーン: MCU-SDK v25.09.00 + Linux 6.12.34_2.1.0
  • テストされたモデル: YOLOv5nu、YOLOv8n、YOLOv11n(ウルトラリティクス)

ワークフローの手順と使用されるコマンド

1. 量子化(Ultralyticsエクスポート)

モデルはINT8のフル整数量子化で320x320解像度でエクスポートされました。
yolo export model=yolov8n.pt format=tflite int8=True imgsz=320# (Repeated identically for yolov11n.pt and yolov5nu.pt)
 
  • 状態: CPU上で完全に動作します。yolovXn_full_integer_quant.tflite は、A55 コア上でオブジェクトを正しく検出します。

2. Neutron 編纂

TFLiteモデルは、Neutronコンバータを用いてi.MX95 NPU向けにMCU_SDK_25.09.00+Linux_6.12.34_2.1.0でコンパイルされました:
./neutron-converter --input yolov8n_full_integer_quant.tflite --target imx95 --output yolov8n_full_integer_quant_neutron.tflite
 
  • 状態: NPU上のオブジェクトを検出できませんでした。コンパイルされたモデルは構文や実行エラーを投げることなく推論を読み込み実行しますが、出力テンソルはまったく同じテスト画像に対して検出をゼロ返します。

観察された症状と疑われる根本原因

 
  1. オペレーターの代替手段: コンバーターは特定のYOLOレイヤー(カスタムアンカー、SiLU/Swinのアクティベーション、Non-Max Suppressionなど)でCPUにフォールバックしましたか?
  2. 量子化のスケーリング/非対称性: Ultralytics経由でエクスポートされるYOLOモデルは、しばしば非対称量子化を用いたり、特定の出力テンソルスケーリングを用いており、Neutron NPUドライバーが誤解することがあります。
  3. 出力テンソルのフォーマット:推論は実行されるため、入力パイプラインは問題ないと思われますが、出力バウンディングボックス/スコアが空白であるか、完全にゴミ値になっています。

NXPのエキスパートへの質問

 
  1. Ultralytics YOLOアーキテクチャ特有のNeutron変換器には既知の制限や必須の最適化フラグはありますか?
  2. TFLiteモデルをNeutronコンバーターに渡す前に、NMS(Non-Max Suppression)レイヤーを取り除くべきでしょうか?
  3. i.MX95 Neutron SDKは、出力層を正しく解析するために対称量子化(per_channel=TrueまたはFalse)を必要としますか?
i.MX95 NPU向けのガイダンス、リファレンススクリプト、またはYOLOの導入に関する作業手順書などがあれば、大変ありがたいです。
 
 
 
 
タグ(1)
評価なし
バージョン履歴
最終更新日:
土曜日
更新者: