您好,NXP支持团队,
我们正在使用Neutron SDK v3.1.3在FRDM 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
警告:
我们观察到以下情况也存在同样的现象:
YOLO11
YOLOv8
直接 Ultralytics TFLite 导出
ONNX → eIQ 工具包 → INT8 TFLite
所有生成的 TFLite 模型都导致 Neutron 编译器映射 0 个算符。
Neutron 编译器是否正式支持 i.MX95 的 YOLOv8 或 YOLO11 目标检测模型?
对于目标平台为 i.MX95 NPU 的 YOLO 模型,是否有推荐的导出流程?
当前 Neutron SDK (v3.1.3) 是否存在任何已知限制?关于YOLO检测头?
NXP 是否提供可在 i.MX95 NPU 上成功编译的 YOLOv8/YOLO11 参考模型?
启用运算符映射是否需要额外的编译器选项或预处理步骤?
我们非常希望获得任何与 i.MX95 Neutron NPU 兼容的指导、推荐工作流程或参考模型。
谢谢!
谢谢你的回复。
我想咨询一下是否有标准程序可用于在IM X95板上进行模型的训练、导出和部署。
由于我们目前拥有ARA2 ,我们正在寻求充分利用其功能并定制我们的模型。我们将在NXP技术日上进行演示,如果您能在这方面提供帮助,我们将不胜感激。
感谢您的帮助。
在 imx95 主板上尝试了 eIQ 模型库中的 yolo8m 模型,使用了 LF 2026 Q2 版本镜像。内核版本为 6.18.20,使用 Neutron SDK 3.1.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/vision/object-detection/yolov8 at main · NXP/eiq-model-zoo
此外,您还可以附加转换/编译的模型和详细日志。
根据变流器日志,首先要解决的问题是生成的 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 模型并确认:
另外,请确保板上的 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 图中的其他后处理。