2.3T算力,真的强!1分钟学会NPU开发,基于NXP i.MX 8MP平台!

科技飞速发展,人工智能与工业领域的融合日益深入。NXP旗下的i.MX 8M Plus作为一款高端工业处理器,NPU算力高达2.3TOPS,正引领着工业智能化的浪潮,为众多工业场景带来了前所未有的变革潜力。

图 1

i.MX 8M Plus NPU特性

i.MX 8M Plus的NPU支持INT16/INT32/FP16/FP32等多种数据类型,兼容性卓越,与TensorFlow Lite/Arm NN/ONNX Runtime/DeepViewRT等框架无缝对接。这一特性,为开发者们打造了一个极为丰富的工具和库生态系统,更便利进行模型开发与训练工作,轻松应对各种复杂的大数据运算场景,无论是海量工业数据的分析处理,还是精准智能决策的模型构建,更加游刃有余。

i.MX 8M Plus NPU开发流程

第一步:模型开发

首先,从TensorFlow预训练模型库中选择一个合适的模型,或根据具体任务需求创建自定义模型。然后,收集和准备训练数据集。

第二步:模型训练

可通过eIQ Toolkit工具调整参数(如Weight initialization、Input size、Learning rate等)优化模型性能,配置训练参数后,开始模型训练。

第三步:模型量化

可通过量化一个训练后的模型,减少其大小,并加快在NPU上的推理时间,实现最小的精度损失。

图 2 开发流程示意图

i.MX 8M Plus 典型工业应用

图 3

NPU开发案例演示

本文主要介绍基于i.MX 8M Plus的NPU开发案例,适用开发环境如下。

Windows开发环境:Windows 7 64bit、Windows 10 64bit

虚拟机:VMware15.5.5

开发环境:Ubuntu20.04.6 64bit

U-Boot:U-Boot-2022.04

Kernel:Linux-5.15.71-rt51

LinuxSDK:Real-Time Edge Software 2.5

硬件平台:创龙科技TLIMX8MP-EVM工业评估板(基于i.MX 8M Plus)

为了简化描述,本文仅摘录部分方案功能描述与测试结果,详细产品资料请扫描文末二维码下载。

案例说明

案例基于预训练的TensorFlow Lite模型实现对图片中目标对象的分类。TensorFlow Lite模型循环测试10次,统计出推理的平均处理耗时和帧率,获取模型输出的前五个标签及置信度打印至串口终端并通过HDMI显示屏绘制标签及置信度概率最大的对象结果。

程序处理流程图如下:

图 4

案例演示

通过网线将评估板千兆网口ETH0连接至路由器,将HDMI显示器与评估板HDMI2 OUT接口(CON22)连接。

图 5

在可执行文件所在目录,执行如下命令,对图片目标对象进行推理。

Target#./mobilenetv1_label_image -m mobilenet_v1_1.0_224_quant.tflite -y ./bmp_image -l labels.txt -c 10 --external_delegate_path=/usr/lib/libvx_delegate.so

图 6

图 7

程序滚动识别多张图片,以第1张图片识别结果为例,输出结果信息如下所示。

图 8

从输出信息可知,本张图片识别为桌面电脑、屏幕、监控器、笔记本电脑、桌子的概率分别为53.7255%、20%、7.45098%、4.31373%、2.7451%,程序循环运行10次模型平均耗时为2.6519ms,帧率为377fps。

案例程序对测试图片的目标对象进行识别后,通过HDMI显示屏绘制标签及置信度概率最大的对象结果如下所示。

图 9

若您希望深入了解更多i.MX 8M Plus相关的精彩案例演示,可以通过公众号(Tronlong创龙科技)获取详细资料,快来一起试试吧!

### TensorRT 在 i.MX 8M Plus 上的边缘部署 #### 背景介绍 TensorRT 是 NVIDIA 提供的一个高性能深度学习推理库,专为优化和加速神经网络模型而设计。尽管它最初针对的是 NVIDIA 的 GPU 平台(如 Jetson 系列),但在某些情况下也可以通过交叉编译的方式将其适配到其他硬件平台上运行[^1]。 对于 NXP 的 i.MX 8M Plus 设备而言,其内置了一个专用的人工智能处理单元 (NPU),能够显著提升机器学习工作负载的性能。然而,由于 TensorRT 主要依赖于 CUDA 和 cuDNN 技术栈,这些技术通常仅适用于 NVIDIA 自家的硬件架构,在 ARM Cortex-A 架构上的移植需要额外的努以及可能涉及第三方工具链的支持。 #### 部署流程概述 以下是基于现有技术和资源实现 TensorRT 在 i.MX 8M Plus 上进行边缘计部署的主要方法: 1. **环境准备** - 安装 Yocto Project 支持的操作系统镜像至目标板卡。 这一步骤可以通过下载官方发布的 BSP 层文件并按照文档指南完成定制化构建来达成目的。 2. **软件开发套件获取** - 下载适合 Linux on ARM 版本的 TensorRT SDK 源码包或者预编译二进制版本。 如果无法直接获得对应平台的目标产物,则需自行执行跨平台编译操作以生成兼容的共享库(.so 文件). 3. **模型转换与优化** 使用 Python API 或 C++ 接口加载训练好的框架模型(例如 TensorFlow/PyTorch), 经过序列化过程转化为 ONNX 格式的中间表示形式之后再导入到 TensorRT 中进一步精简结构尺寸同时提高预测速度效率. ```python import tensorrt as trt TRT_LOGGER = trt.Logger(trt.LogLevel.WARNING) def build_engine(onnx_file_path, engine_file_path): with trt.Builder(TRT_LOGGER) as builder,\ builder.create_network() as network,\ trt.OnnxParser(network, TRT_LOGGER) as parser: builder.max_workspace_size = common.GiB(1) builder.fp16_mode = True # Parse model file with open(onnx_file_path, 'rb') as model: if not parser.parse(model.read()): print ('Failed to parse the ONNX file') for error in range(parser.num_errors): print (parser.get_error(error)) return None last_layer = network.get_layer(network.num_layers - 1) # Mark output of the network network.mark_output(last_layer.get_output(0)) serialized_engine = builder.build_serialized_network() with open(engine_file_path, "wb") as f: f.write(serialized_engine) build_engine("model.onnx", "model.trt") ``` 4. **测试验证阶段** 编写简单的应用程序调用上述创建出来的引擎实例来进行前向传播运得出最终分类结果或其他业务逻辑所需的数值输出. 需要注意的是整个过程中可能会遇到各种挑战比如驱动程序缺失、特定子不被支持等问题都需要逐一排查解决才能顺利推进到最后成功上线的地步.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tronlong创龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值