2186646_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2186646_zh-CN

2186646_zh-CN

恩智浦 iMX95 EVK - NPU TensorFlow Lite 模型


你好、


我们在 NPU 上运行了 eIQ TensorFlow Lite 示例模型,但却出现了以下错误:


信息:加载模型 mobilenet_v1_1.0_224_quant.tflite
INFO: 解决了记者问题
INFO:已创建外部代表。
remoteproc remoteproc 0:正在启动几个镜像 neutronFirmware.elf
remoteproc remoteproc0:远程处理器 neutron-rproc 已启动
INFO:NeutronDelegate 委托:31 个节点中已委托 29 个节点,1 个分区。
信息:应用了外部委托。
信息:为 CPU 创建了 TensorFlow Lite XNNPACK 代理。
中子 4ab00004.imx95-neutron:ioctl 无效。cmd=1075577096,arg=549719032088
无法创建中子推理任务
错误:元器件="Neutron Driver",category="内部故障",代码=442
错误:节点编号 31(NeutronDelegate)无法调用。
错误:调用 tflite 失败!

这些示例是使用以下代码包构建的:

# AI/ML
IMAGE_INSTALL:append =" tensorflow-lite-neutron-delegate"

目前,远程处理器显示为脱机:


root@toradex-smarc-imx95-12593622:/sys/class/remoteproc/remoteproc0# cat state
脱机

在尝试手动启动远程处理器时,我遇到了权限错误:


root@toradex-smarc-imx95-12593622:~# echo rproc-neutron-rproc-fw> /sys/class/remoteproc/remoteproc0/firmware
-sh:/sys/class/remoteproc/remoteproc0/firmware:权限被拒绝

root@toradex-smarc-imx95-12593622:~# echo start> /sys/class/remoteproc/remoteproc0/state
-sh:/sys/class/remoteproc/remoteproc0/state:权限被拒绝


我们目前正在参照 IMX_ML_User_Guide,在 NPU 上运行 eIQ Toolkit TensorFlow Lite 示例,但遇到了微码不匹配错误。

我们的设置使用 电路板支持包 版本 scarthgap-6.6.36-2.1.0和 eIQ 工具包 1.16.0 版。我们将 TensorFlow Lite 模型 .tflite但在执行过程中,出现了以下错误:

Screenshot from 2025-10-10 17-05-43 (1).pngScreenshot from 2025-10-10 17-05-43 (1).png


为了排除故障,我们测试了多个电路板支持包和 eIQ Toolkit 版本组合(电路板支持包 6.6.52_2.2.0、6.12.34_2.1.0、6.12.34_2.1.0), lf-6.6.3_1.0.0 6.6.23_2.0.0 和 6.6.36_2.1.0使用 eIQ 1.16.0、1.15.1 和 1.14.0)。但是,任何微码版本都与预期版本不符。

请提供预期的微码二进制文件 (NeutromFirmware.elf)执行或提出任何修改意见。

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

你好,

电路板支持包 版本从 6.12.20 升级到 6.12.34,并执行了 eIQ 工具包中的默认示例。所附截图显示了结果--示例成功运行,并在恩智浦 i.MX95 EVK 上生成了默认图像分类输出。然而,在执行过程中,31 个节点中没有一个被委托。

NXP_iMX95.pngNXP_iMX95.png

我转换了我的 .tflite该模型使用最新的 eIQ 工具包第 17 版。但是,当我使用 TensorFlow Lite 17 版本运行该示例时,却没有显示图像分类结果。我附上了显示此问题的截图。

v17.pngv17.png

上述两个案例都是在恩智浦 i.MX95 EVK 上执行的。
不过,我们的主要目标是在 Toradex SMARC i.MX95 EVK 上运行这些示例。
由于Toradex i.MX95 EVK尚未发布6.12.34版本的稳定电路板支持包,因此Toradex主板上的电路板支持包升级仍然不稳定,导致在NPU上运行人工智能工作负载时出现多个错误。

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

又见面了

你应该这样转换你的模型:

/opt/nxp/eIQ_Toolkit_v1.17.0/bin/neutron-converter/MCU_SDK_25.09.00+Linux_6.12.34_2.1.0/neutron-converter \
    --input you_model_quant.tflite \
    --output your_model_neutron.tflite \
    --target imx95 \
    --convert-inputs-uint8-to-int8 \
    --convert-outputs-uint8-to-int8

我让 YOLOv11 Nano 以 27 FPS 的速度运行。我仍然收到版本不匹配警告,但这些都不会造成问题。有警告并不好玩,但现在也无能为力。

希望对您有所帮助。

干杯

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

又见面了

我设法用最新版本(6.12.34)转换了更多的节点和操作符。从 3% 到 62 美元的运营商转换,这对于基于 YOLOv11 的机型来说真是不错。

现在我也遇到了版本不匹配的问题。但这是我主板上的版本造成的。因此,我试图将它从 6.12.20 升级到 6.12.34。请检查您拥有的版本和用于转换的版本。

干杯

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

您好,

我不知道这个错误,也许恩智浦公司的人可以插话。

我也按照指南,成功转换了我的定制单级探测器(基于 CNN)。遗憾的是,只有 1 个节点被加载到委托中(其余节点仍由 CPU XNNPACK 处理):

====== V4L2ENC: 1.26.0 build on May  7 2025 08:46:20. ======
INFO: NeutronDelegate delegate: 1 nodes delegated out of 697 nodes with 1 partitions.

INFO: Neutron delegate version: v1.0.0-a5d640e6, zerocp enabled.
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.

这可能是因为转换后,697 个中子图中只创建了 1 个。只有 27 名操作员进行了转换。lol

Conversion statistics:
  Number of operators after import    = 678
  Number of operators after optimize  = 723
    Number of operators converted     = 27
    Number of operators NOT converted = 696
  Number of operators after extract   = 697
    Number of Neutron graphs          = 1
    Number of operators NOT converted = 696
  Operator conversion ratio           = 27 / 723 = 0.0373444
  Operators converted                 = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,

我再次联系了 Variscite 的支持人员,看看他们是否有什么好主意。很遗憾恩智浦没有真正回复。

希望你能找到解决办法。我会继续调查,如果有什么发现,我会告诉你。

干杯

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

您好,

感谢您的支持。我查看了您分享的链接,并按照提供的步骤进行了操作,但还是遇到了微码不匹配错误。我附上了一张屏幕截图供你参考。

Screenshot from 2025-10-31 17-54-09.pngScreenshot from 2025-10-31 17-54-09.png


能否请您检查一下并帮助我们解决问题?

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

恩智浦的支持真的很糟糕,他们的文档也没有提供我们所需要的一切,更不用说那些不带 Neutron 兼容模型的映像了--因为他们没有将其转换并添加到映像中。

我联系了Variscite,该公司提供了集成恩智浦iMX 95的板,他们为我提供了帮助。即使是使用 NPX 示例,也必须自己转换模型才能正常工作。请按此处说明操作: https://dev.variscite.com/dart-mx95/mx95-yocto-walnascar-6.12.20_2.0.0-v1.2/machine-learning/

我还没有进行转换,因为忙于其他事情。

希望对你有所帮助。

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

我们已经更新到最新的电路板支持包版本,但问题仍然存在。您能帮助我们解决这个问题吗?

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

您好,

我面临着同样的问题,却无法解决。

我测试了图片附带的示例代码 - 在示例下。我也遇到了同样的问题,NeutroDelegate 无法正确委托节点。我用我们的检测模型试了试,结果和预想的一样。

====== V4L2ENC: 1.26.0 build on May 7 2025 08:46:20. ======
INFO: NeutronDelegate delegate: 0 nodes delegated out of 678 nodes with 0 partitions.

Error in cpuinfo: prctl(PR_SVE_GET_VL) failed
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.

任何这样的尝试:

echo start > /sys/class/remoteproc/remoteproc0/state

结果是拒绝许可

我试过很多图片:

  • 6.12.20_2.0.0-v1.1:可以工作,可以启动,但委托没有得到正确分配。
  • 6.6.52_2.2.0-v1.1:不起作用-甚至无法启动。
  • 6.6.23_2.0.0-v1.1:不起作用-甚至无法启动。
  • 6.6.1_1.0.0-v1.. 00:不起作用-甚至无法启动。

我们正在测试或试图测试 Variscite DART DM95 附带的 NXP i.MX 95。图片是从他们的网站上下载的。我也尝试过最新的恩智浦版本,但这也行不通。

您知道权限被拒绝的原因是什么吗?如果您有特定的工作图像,能否分享下载链接?

提前感谢您的支持。

干杯

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

你好。

这很奇怪,所以请确保你有最新的电路板支持包,擦掉板上的 linux 再烧掉,我不能再说了,因为它在这里运行良好。


此致

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

你好,

我们按照你的建议尝试了下面的命令,但仍然遇到了权限被拒绝等错误。我们也在尝试使用 root 和 sudo 命令,但仍然面临权限被拒绝的问题。已添加屏幕截图供您参考。

1.echo stop> /sys/class/remoteproc/remoteproc0/state

2.cat /sys/class/remoteproc/remoteproc0/state

3.ls /lib/firmware

4.echo NeutronFirmware.elf> /sys/class/remoteproc/remoteproc0/firmware

Screenshot from 2025-10-16 14-57-17.pngScreenshot from 2025-10-16 14-57-17.png

Re: NXP iMX95 EVK - NPU TensorFlow Lite Model

你好

根据你的错误信息,你同时遇到了 RemoteProc 权限问题和 NPU 委托失败。让我来帮你逐步解决这些问题。

1.RemoteProc 权限问题

您在尝试手动控制远程处理器时看到的权限错误很常见。根据 RemoteProc 文档,在进行更改之前,需要确保远程处理器处于正确状态。

# cat /sys/class/remoteproc/remoteproc0/state

如果出现权限拒绝错误,请先尝试停止远程处理器:

# echo stop> /sys/class/remoteproc/remoteproc0/state

然后验证是否脱机:

# cat /sys/class/remoteproc/remoteproc0/state
offline

2.固件加载过程

在加载固件时,RemoteProc 框架默认会查找存储在/lib/firmware 内的*.elf 固件(1)。您可以将固件复制到该位置:

$ scp hello_world.elf root@:/lib/firmware
如果固件存储在其他地方,可以更新固件路径:

# echo -n new_path> /sys/module/firmware_class/parameters/path

3.加载和启动远程处理器

要加载固件,请将其名称写入固件文件:

# echo.elf> /sys/class/remoteproc/remoteproc0/firmware

重要: 确保运行*.elf 固件,否则将无法运行

使用新固件启动远程处理器:

# echo start> /sys/class/remoteproc/remoteproc0/state

您应该会看到类似的输出结果:

[12594.692880] remoteproc remoteproc0:启动 imx-rproc
[12594.698629]remoteproc remoteproc 0:正在启动 fw 图片 hello_world.elf,size 240736
[12594.706192]remoteproc remoteproc0: no dtb rsrc-table
[12594.761474]remoteproc remoteproc0:远程处理器 imx-rproc 已启动

4.NPU 配置要求

根据社区讨论,设置 NPU 有几个重要的考虑因素:

  1. 验证 NPU 支持:确保您的硬件支持 NPU 执行,且您使用的 TensorFlow Lite 版本与 NPU 加速兼容

  2. 安装 NPU 驱动程序:确保正确安装和配置 NPU 驱动程序

  3. 使用正确的 TensorFlow Lite 委托:确保使用合适的委托执行 NPU

5.故障排除步骤

  1. 检查硬件支持:验证硬件配置是否支持 NPU 代理
  2. 固件验证:确保已加载正确的 NPU 固件
  3. 驱动程序状态:检查中子驱动程序是否已正确加载并可访问
  4. 委托配置:验证 TensorFlow Lite 委托是否针对特定硬件进行了正确配置

6.替代方法

如果继续遇到问题,请考虑先使用纯 CPU 推理进行测试,以确定问题是否与 NPU 加速有关。您可以使用 USE_HW_ACCELERATED_INFERENCE=0

此致

 
タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-20-2025 10:52 PM
更新者: