2254236_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2254236_zh-CN

2254236_zh-CN

中子转换后的 YOLOv8n 模型无法在 i.MX95 中正常输出

您好,

,我从 ultralytics 导出了完全量化的 int8 YOLOv8n 物体检测模型。我已经使用最新的 eIQ Toolkit 版本 1.17 中的中子变流器将其转换成在 NPU 上运行,我曾尝试在 i.MX95 硬件上执行它。

我用 NPU 委托试过转换模型和非转换模型,但似乎只有转换模型上的中子图才能在 NPU 上执行。

当我比较两个模型的原始输出时,转换后的模型给出了多个假阳性,得分超过 95% 。我对已转换和未转换的模型都使用了相同的脚本,但只对已转换的模型有问题。我用多种方法进行了验证,但每次的结果都一样。

当我用 netron 应用程序检查这两个模型时,我发现转换后的模型在结构上发生了重大变化。

在此,我想问几点:

1.eIQ Toolkit 版本 1.17 的 Neutron 变流器是否支持像 YOLOv8 和 YOLOv11 这样的最新物体检测架构?

2.您在 i.MX95 上使用 NPU 测试过 YOLOv8 和 YOLOv11 吗?如果回答为 "是",请将模型和后处理步骤一并发送到

3.如果我们要在 i.MX95 中的 Neutron NPU 上执行 Neutron Graph 以外的操作,流程是什么?

4. 如果我们要在 i.MX95 中的 GPU 上执行上述模型,流程是什么?

我也翻阅了《机器学习用户指南》,但没有找到相关细节。

谢谢,
Vatsal。

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

你好

您遇到的 Neutron 转换 YOLOv8n 模型误报问题是一个已知的难题。目前 i.MX95 NPU 对 YOLOv8 模型的支持仍在优化中,转换过程中的架构变化可能会影响性能。

关于您的具体问题:

1. eIQ 工具包 1.17 中的 YOLOv8 架构支持仍在改进中。推荐的转换工作流程是:
- 在导出模型时确保正确的 int8 量化
- 使用最新的 eIQ 工具包 (v1.17) 使用变流器进行转换
- 命令:`./变流器 --input [你的模型].tflite`--target imx95 --use-python-prototype`

2.虽然支持 YOLOv8,但可能尚未完全优化。YOLOv5 与当前的 NPU 实现具有更好的兼容性。恩智浦团队正在积极改进对 YOLOv8/YOLOv11 的支持。

3. 要在 NPU 上执行 Neutron Graph 以外的操作,需要使用 eIQ 或 netron 工具分析模型,以确定哪些运算符已成功转换为在 NPU 上运行(显示为 neutronop 内容)。未转换的运算符将在 CPU 上运行。

4.在 i.MX95 上执行 GPU 运算时,应使用 TensorFlow Lite GPU 委托而不是 NPU 委托。这需要修改推理代码以使用 GPU 委托。

您可以通过在 netron 中检查转换后的模型来验证模型操作的分布情况--任何含有"neutronop" 内容的运算符都在 NPU 上执行,而其他运算符仍在 CPU 上执行。


此致


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

我们再次使用带有自定义数据集的YOLOv5s进行了训练,并尝试进行推断,因为您在之前的聊天中声称YOLOv5使用中子变流器取得了不错的结果。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

我注意到恩智浦团队建议使用 --use-python-prototype 标志,但是我的中子变流器无法识别它。它是在 Windows 上支持的,还是只与 Linux eIQ 版本兼容?

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

这对我来说也是一个问题。我使用过 Linux eIQ,但效果不佳。因此我跳过了它,尝试只通过目标 arg 转换模型。

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

您好@Bio_TICFSL,

由于时间已久,我仍在等待您的回复。我们被困在这里,我们也有一些紧迫感。请尽快回复。

谨致
Vatsal

[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 版本)
  • 操作系统/内核: 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(Ultralytics)

工作流程步骤和使用的命令

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. 中子汇编

TFLite 模型是使用 MCU_SDK_25.09.00+Linux_6.12.34_2.1.0 中的 Neutron 转换器为 i.MX95 NPU 编译的:
./neutron-converter --input yolov8n_full_integer_quant.tflite --target imx95 --output yolov8n_full_integer_quant_neutron.tflite
 
  • 状态:无法在 NPU 上检测到对象。编译后的模型可以加载并运行推理,不会抛出语法或执行错误,但对于完全相同的测试图像,输出张量返回零检测结果。

观察到的症状和疑似根本原因

 
  1. 操作回退:变流器是否会针对特定的 YOLO 层(如自定义锚点、SiLU/Swin 激活或非最大值抑制)回退到 CPU?
  2. 量化缩放/不对称性:通过 Ultralytics 导出的 YOLO 模型通常使用不对称量化或具有 Neutron NPU 驱动程序可能误解的特定输出张量缩放。
  3. 输出张量格式:推理运行正常,这表明输入管道没有问题,但输出边界框/分数要么为空白,要么完全是垃圾值。

向恩智浦专家提问

 
  1. 中子变流器是否存在针对 Ultralytics YOLO 架构的已知限制或必需的优化标志?
  2. 在将 TFLite 模型传递给 Neutron 转换器之前,是否应该去除 NMS(非极大值抑制)层?
  3. i.MX95 Neutron SDK 是否需要对称量化(per_channel=True 或 False)才能正确解析输出层?
任何关于 i.MX95 NPU 的指导、参考脚本或 YOLO 部署说明都将不胜感激。
 
 
 
 
标记 (1)
无评分
版本历史
最后更新:
3 周之前
更新人: