您好,
,我从 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。
你好
您遇到的 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 上执行。
此致
我们再次使用带有自定义数据集的YOLOv5s进行了训练,并尝试进行推断,因为您在之前的聊天中声称YOLOv5使用中子变流器取得了不错的结果。YOLOv5 也仍然存在这个问题。我也附上结果以供参考。在这里,我们尝试了已转换和未转换的 int8 tflite YOLOv5s 模型。
现在,如果你声称 YOLOv5 能够带来良好的效果,那么为什么不与我们分享经过验证的模型呢?请分享从导出、量化到转换的所有步骤,以及后期处理的步骤。这样我们就可以验证您的模型,并在我们这里复制您所遵循的步骤。
如果可以的话,也请与i.MX95共享您的基准测试和我的数据。
你好,@Bio_TICFSL!
我注意到恩智浦团队建议使用 --use-python-prototype 标志,但是我的中子变流器无法识别它。它是在 Windows 上支持的,还是只与 Linux eIQ 版本兼容?
这对我来说也是一个问题。我使用过 Linux eIQ,但效果不佳。因此我跳过了它,尝试只通过目标 arg 转换模型。
您好@Bio_TICFSL,
由于时间已久,我仍在等待您的回复。我们被困在这里,我们也有一些紧迫感。请尽快回复。
谨致
Vatsal