やあ、
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 で実行する場合のプロセスはどのようなものですか?
機械学習ユーザーガイドも確認しましたが、関連する詳細は見つかりませんでした。これをデバッグするために私の側から詳細を知りたい場合は、遠慮なく質問してください。
ありがとう、
ヴァツサル
こんにちは、
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 に残ります。
よろしくお願いします。
前回のチャットでYOLOv5がNeutronコンバータで良好な結果をもたらしていると主張していたように、カスタムデータセットを使用してYOLOv5sで再度トレーニングを実行し、推論を試みました。YOLOv5 でもこの問題は依然として存在します。参考までに結果も添付します。変換済みおよび非変換済みの int8 tflite YOLOv5s モデルを試しました。
さて、YOLOv5 が良い結果をもたらしていると主張するのであれば、検証済みのモデルを私たちと共有してみませんか。エクスポート、量子化から変換までのすべての手順と、ポストプロセッシングで実行している手順も共有してください。これにより、お客様のモデルを検証し、お客様が実行した手順を当社側で再現できるようになります。
共有できる場合は、i.MX95 のベンチマークとプロファイリング データも共有してください。
こんにちは@Bio_TICFSL !
NXPチームが--use-python-prototype フラグの使用を推奨しているようですが、私のNeutronコンバーターでは認識されません。Windowsでもサポートされているのでしょうか、それともLinux eIQリリースのみ対応しているのでしょうか?
それは私にとっても疑問です。Linux eIQ を試してみましたが、うまく動作しませんでした。SO、私はそれをスキップし、ターゲット引数のみを渡してモデルを変換しようとしました。
こんにちは、 @Bio_TICFSL 、
長い時間が経っているので、まだあなたの方からの返事を待っています。私たちはここで行き詰まっており、また緊急性も抱えています。できるだけ早くご返信いただきますようお願いいたします。
よろしくお願いいたします。
ヴァツサル
yolo export model=yolov8n.pt format=tflite int8=True imgsz=320# (Repeated identically for yolov11n.pt and yolov5nu.pt)
./neutron-converter --input yolov8n_full_integer_quant.tflite --target imx95 --output yolov8n_full_integer_quant_neutron.tflite