2393422_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2393422_zh-CN

2393422_zh-CN

无法为 i.MX95 Neutron NPU 编译 YOLOv8/YOLO11 TFLite 模型

您好,NXP支持团队,

我们正在使用Neutron SDK v3.1.3FRDM i.MX95平台上评估目标检测功能。并且无法生成与 NPU 兼容的模型。Neutron 变流器成功加载了模型,但报告称0 个算子映射到 Neutron NPU

环境

  • 目标板: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=models \ 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 编译时,两种工作流程都产生了相同的结果。

 

中子汇编

〜/下载/eiq-neutron-sdk-linux-3.1.3/bin/neutron-变流器--target imx95 --input best_int8.tflite --output my_model_int8_npu.tflite

 

变流器输出

变流器报告:

  • 导入后运算符:341

  • 优化后的运算符数:367

  • 已转换运算符:0

  • 操作员转换率:0 / 367

  • 中子图数量:0

警告

  • 警告:图中所有运算符均未映射到 Neutron。
  • 警告:转换后的模型与输入模型相同,因为没有将任何算符映射到 Neutron。
  • 警告:图表中包含不支持的 FLOAT 运算符!这会导致转化率低。

更多信息

我们观察到以下情况也存在同样的现象:

  • YOLO11

  • YOLOv8

  • 直接 Ultralytics TFLite 导出

  • ONNX → eIQ 工具包 → INT8 TFLite

所有生成的 TFLite 模型都导致 Neutron 编译器映射 0 个算符

问题

  1. Neutron 编译器是否正式支持 i.MX95 的 YOLOv8 或 YOLO11 目标检测模型?

  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

谢谢回复

咨询一下是否标准程序用于IM X95板上进行模型训练导出部署

由于我们目前拥有ARA2 我们正在寻求充分利用功能定制我们模型我们NXP技术进行演示如果方面提供帮助我们不胜感激

感谢
帮助

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

在 imx95 主板上尝试了 eIQ 模型库中的 yolo8m 模型,使用了 LF 2026 Q2 版本镜像。内核版本为 6.18.20,使用 Neutron SDK 3.1.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/vision/object-detection/yolov8 at main · NXP/eiq-model-zoo

此外,您还可以附加转换/编译的模型和详细日志。


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

根据变流器日志,首先要解决的问题是生成的 TFLite 模型仍然包含 FLOAT 运算符:


警告:图表中包含不受支持的浮点运算符!


对于 i.MX95 Neutron,中子变流器的输入必须是 TFLite 模型,其算符和量化格式与 Neutron 编译器兼容。具体来说,i.MX95 中子流需要量化的 TFLite 和对称的 int8 权重。如果模型在 Ultralytics 导出或 ONNX 到 TFLite 转换后仍然包含 FLOAT 运算符/张量,则变流器可能无法创建任何 Neutron 兼容的子图,这与报告的结果一致:


已转换运算符:0

中子图数量:0


YOLOv8 已在 i.MX95 上进行过一些流程的评估,但对于任意 Ultralytics 导出,不应假定完全端到端的 YOLOv8/YOLO11 卸载。根据导出的 TFLite 图,模型可能只有一部分会转换为 NeutronGraph,而不支持的操作符将保留在 CPU 上。因此,建议的下一步是检查/分析生成的 TFLite 模型并确认:

  1. 该图已完全量化。
  2. 没有浮动操作商。
  3. 权重是对称的int8,
  4. 输入/输出张量类型兼容,或者如果适用,可以使用 Neutron 变流器 uint8 到 int8 选项进行转换。
  5. 除非 SDK 确认支持确切的操作符,否则 YOLO 后处理(例如解码/NMS)将保留在 NPU 图之外。

另外,请确保板上的 Neutron 变流器版本和 Neutron 运行时/固件/委托来自同一个兼容的 SDK/电路板支持包 版本。


建议采用 NXP/eIQ 转换路径:

PyTorch -> ONNX(静态输入形状) -> NXP/eIQ 量化(使用代表性校准数据) -> 量化后的 TFLite -> 中子变流器 --target imx95


如果模型具有 uint8 输入/输出张量,请同时进行以下测试:

--将输入的 uint8 转换为 int8

--convert-outputs-uint8-to-int8


如果移除浮点运算符后,转换结果仍然显示 0 个已映射运算符,请分享:

- 完整的 中子变流器 日志,如有详细/分析输出,请提供。

- TFLite 操作员列表,

- 张量数据类型和量化参数,

- FRDM i.MX95 板上确切的 电路板支持包/运行时 Neutron 代理/固件版本,

- YOLO 检测头是否包含 NMS 或 TFLite 图中的其他后处理。

Tags (1)
No ratings
Version history
Last update:
18 hours ago
Updated by: