启扬I.MX8MPlus开发板如何在NPU上适配Movenet 模型

在NXP I.MX8MPlus平台上,因为自带有一颗NPU,所以官方对于很多开源模型有许多适配,从官方的github网站GitHub - NXP/eiq-model-zoo: A collection of machine learning models for vision optimized for NXP products · GitHub中可以查看到具体的适配信息。本篇文章具体介绍NPU的使用过程,以自带的movenet模型为例。

首先根据github上的网址将nxp-model-zoo拉取到PC Ubuntu上。这里要注意的是Ubuntu版本最好是在20.04~24.04之间,因为对python版本有限制。命令如下:

复制代码
git clone https://github.com/NXP/eiq-model-zoo.git

拉取后生成如下文件(正常拉取没有movenet.tflite文件):

可以看到官方已经写好了docker的配置文件,可以直接根据官方的命令构建docker镜像,命令如下:

复制代码
docker build -t nxp-model-zoo .

在构建的过程中可能会遇到相关报错,比如说apt update的时候没有默认yes,亦或者dockefile里的python版本不是必须的,这里贴出修改过的文件:

成功构建后可以使用sudo docker images查看构建的镜像,如下图所示:

以上步骤完成后就可以开始启动镜像并且执行对应movenet的构建脚本,构建movenet模型的tflite文件,命令如下所示:

复制代码
docker run --rm -v "$PWD:/workspace" nxp-model-zoo /workspace/tasks/vision/pose-estimation/movenet/recipe.sh

如果发现有相关报错可能跟路径有关系,再次核对一下路径即可。

运行成功就可以在eqi-model-zoo目录下生成对应的tflite文件movenet.tflite,如下图所示:

至此,我们所需要的关键文件准备完毕,接下来需要核对目标板相关文件并且将测试脚本以及测试图片移动到目标板上用于测试。

这里以我司IAC-IMX8MP-Kit为例,搭载Linux6.6内核,如果有相关测试与文章不符,可首先查看环境是否一致。

将PC上刚刚生成的movenet.tflite、eiq-model-zoo/tasks/vision/pose-estimation/movenet/example.pyeiq-model-zoo/tasks/vision/pose-estimation/movenet/example_input.jpg放入到/root/目录下,同时也要保证板端/usr/lib/下有libtensorflow-lite.so.2.16.2库以及libvx_delegate.so,环境确认之后修改example.py脚本。

因为当前是tensorflowlite处理的模型,所以需要将import tensorflow as tf注释,添加import tflite_runtime.interpreter as tflite。修改完成后测试脚本是否能够正常运行,执行命令python3 example.py,执行正常会在当前目录生成结果图片example_output.jpg,将其拷贝到PC上查看到具体结果,如下图所示:

可以通过打印的log查看到推理所使用的时间,另外可以观察到一个信息:

复制代码
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.

这表明这次推理是发生在CPU端而不是NPU端。可以通过nxp的官方文档查看到tensorflow的模型想要使用NPU,是使用的vx delegate代理,所以我们需要再次修改脚本,让模型跑在NPU上,可以参考官方的脚本进行修改,路径如下:

复制代码
https://github.com/nxp-imx/tensorflow-imx/blob/lf-6.6.23_2.0.0/tensorflow/lite/examples/python/label_image.py,

参考修改后在example.py添加如下图所示:

即可,修改完成后运行,当出现一下log打印时说明运行在NPU上:

对比CPU比较明显的便是推理速度很快,这里指的是平均速度,对比单张可能因为缓存等一系列问题,计时会有很大差异,忽略单次推理即可。

相关推荐
jimmyleeee1 分钟前
大模型安全之二十八:Agent 权限与策略控制:从最小权限到多层监督
人工智能·安全
仙魁XAN6 分钟前
【WorkBuddy·基础入门】第 8 篇 :从材料到汇报:用 WorkBuddy 制作第一份 PPT
人工智能·workbuddy·workbuddy 基础入门·ppt 自动生成
船厂电气自动化ai大模型15 分钟前
AI大模型与数学|第81天 课程:正交向量、正交基、格拉姆‑施密特(Gram‑Schmidt)正交化
开发语言·数据结构·人工智能·线性代数·机器学习
罗狮粉 9917 分钟前
AI-Gateway — 面向 AI Agent 的本地 Runtime Gateway
人工智能·python·inscode·ai编程
FL162386312918 分钟前
电力场景变电站设备识别关键部件识别分割数据集labelme格式1660张15类别
人工智能·机器学习
武子康20 分钟前
vLLM 的 token 预算还有余量,为什么请求仍被抢占?
人工智能·llm·agent
人工智能培训21 分钟前
大语言模型:从语言理解到通用智能的跃迁
linux·服务器·前端·人工智能
程序员清风21 分钟前
生产级智能体平台设计:任务编排、工具管理与运行监控
人工智能·python·aigc
龍德明宇24 分钟前
预言机与闭环稳定性-龍德明宇
人工智能·大语言模型llm·负主体性·ai存在论·系统论·控制论
毋小黑25 分钟前
753K 参数打赢 SwinIR:CRAFT 用「高频先验」给 Transformer 超分查漏补缺
人工智能·opencv·计算机视觉