网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

【迅为RK3568开发板NPU实战】别再闲置你的NPU!手

时间:2025-11-11 14:21

人气:

作者:admin

标签:

导读:【迅为RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用...


实战核心:RKNN-Toolkit2 的使用

硬件板卡:迅为iTOP-RK3568开发板

在使用RKNN SDK之前,用户需要使用RKNN-Toolkit2工具将自主研发的 算法模型转换为RKNN模型。RKNN是Rockchip NPU平台(也就是开发板)使用的模型类型,是以.rknn结尾的模型文件。得到RKNN模型之后,用户可以选择使用C接口在RK3568平台开发应用。

在第3章节,我们是直接使用的已经转换好的模型rknn来进行的实验。所以 这一章节我们来看下如何将其他模型类型转成rknpu可以使用的rknn类型。

RKNN-Toolkit2 介绍

RKNN-Toolkit2是为用户提供在PC、Rockchip NPU平台上进行模型转换、 推理和性能评估的开发套件,用户通过该工具提供的Python接口可以便捷地完 成以下功能:

Ø模型转换:支持Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、

PyTorch等模型转为RKNN模型,并支持RKNN模型导入导出,RKNN

模型能够在rk3568开发板上加载使用

Ø量化功能:支持将浮点模型量化为定点模型,目前支持的量化方法为非对称

量化( asymmetric_quantized-8及asymmetric_quantized-16 ),并支持混合量

化功能 。asymmetric_quantized-16目前版本暂不支持

Ø模型推理:能够在PC上模拟rk3568开发板运行RKNN模型并获取推理 结果;或将RKNN模型分发到iTOP-RK3568设备上进行推理并获取推理结 果

Ø性能评估:将RKNN模型分发到iTOP-RK3568设备上运行,以评估模型在实际设备上运行时的性能

Ø内存评估:评估模型运行时的内存的占用情况。使用该功能时,必须将

RKNN模型分发到iTOP-RK3568设备中运行,并调用相关接口获取内存使

用信息

Ø量化精度分析:该功能将给出模型量化前后每一层推理结果与浮点模型推理

结果的余弦距离,以便于分析量化误差是如何出现的,为提高量化模型的精 度提供思路

5.3 RKNN-Toolkit2 的使用

在rknn-toolkit2工具的examples目录下有各种功能的Toolkit Demo,这里 我们运行一个模型转换Demo为例子,这个Demo展示了在Ubuntu18.04上将yolov5.onnx模型转换成RKNN模型,然后导出、推理、部署到RK3568开发板上或者模拟器上运行并取回结果的过程。模型转换的具体实现请参考Demo内源代码。

5.3.1 模型运行在模拟器

RKNN-Toolkit2自带了一个模拟器,在Ubuntu18.04上运行demo程序即是 在仿真NPU模拟器上运行demo。以下演示如何在模拟器上运行RKNN-Toolkit2

工具自带的yolov5.onnx模型转换demo。

作者是在docker下使用RKNN-Toolkit2工具,大家在使用之前要按照“5.2.1

章节通过docker镜像安装”RKNN-Toolkit2工具。演示过程如下:

1在5.2.1小节中,已经成功安装并进入了docker镜像中,如下图所示:

wKgZPGkS1WGABNfMAAIdM5Bh6Sw262.png

2在rknn-toolkit2/examples下有各种功能的Toolkit Demo,如下图所示:

3运行一个模型转换例子,进入到onnx/yolov5目录,如下图所示:

4转换yolov5s.onnx为rknn模型并运行模型推理图片,输入以下命令:

python3 test.py

5运行模型如下图所示:

wKgZO2kS1WKAF2qMAAfsaZO2GII266.png

由上图结果可以看出,图上有三个人和一个巴士,所在坐标与原图相符,推

理图片成功。原图如下图所示:

wKgZPGkS1WGAXsSPAARi94eB-us518.png

6转换后的模型默认保存路径为“examples/onnx/yolov5/yolov5s.rknn”,如下图所

示:

wKgZO2kS1WGABk5VAAFNc0U5O4s999.png

5.3.2 模型运行在 RK3568 开发板

1首先连接好开发板硬件,连接好烧写线,屏幕,调试串口和电源。开发板烧写

Android11系统。在本小节中,作者使用的开发环境是Ubuntu18.04,使用pip3

安装RKNN-Toolkit2工具。

wKgZPGkS1WKAI8zNAAdWH-GlYp0315.png

2开发板系统启动之后,提示如下,我们将开发板连接到Ubuntu18.04上。

wKgZO2kS1WGAK0JBAAM8fNk6DtI738.png

3在ubuntu18.04上使用adb命令来连接开发板。如果没有安装adb命令,可以使用命令“apt install adb”安装。输入以下命令查看iTOP-RK3568开发板

adb devices

4如上图所示,iTOP-rk3568开发板设备id号为“67188a9846568f84”,说明设备已经成功通过adb工具连接到开发板。

5打开一个终端命令窗口,进入RKNPU2工程目录,

cd rknpu2

6 adb获得开发板root权限,输入以下命令:

adb root

7重新挂载开发板,输入以下命令:

adb remount

8更新板子的rknn_server和librknnrt.so,rknn_server和librknnrt.so介绍如下

所示:

librknnrt.so:是一个板端的runtime库。

rknn_server:是一个运行在板子上的后台代理服务,用于接收PC通过USB传

输过来的协议,然后执行板端runtime对应的接口,并返回结果给PC。

9推送拷贝rknn_server到开发板,输入以下命令:

adb push runtime/RK356X/Android/rknn_server/arm64/rknn_server /vendor/bin/

10推送拷贝librknnrt.so到开发板,输入以下命令:

adb push runtime/RK356X/Android/librknn_api/arm64-v8a/librknnrt.so /vendor/lib64

11打开adb shell命令行,即可操作iTOP-rk3568开发板。

adb shell

12修改rknn_server权限,并同步修改的内容,输入以下命令:

chmod +x /vendor/bin/rknn_server

13重启设备,输入以下命令:

reboot

14 Android系统启动时会自动运行rknn_server, "ps -ef|grep rknn_server"可以查看是否运行,如下图所示:

15我们进入rknn-toolkit2-1.3.0文件夹。以demo(onnx/yolov5)为例,使用rk3568

平台进行推理。输入以下命令进入examples/onnx/yolov5文件夹。

cd examples/onnx/yolov5

16修改examples/onnx/yolov5/test.py文件,我们修改对应的平台为rk3568,修改如下所示,“-”代表需要删除的内容,“+”代表需要新增的内容。

if __name__ == '__main__':

# Create RKNN object

-

rknn = RKNN(verbose=True)

+

rknn = RKNN()

# Pre-process config

print('--> Config model')

-

rknn.config(mean_values=[128, 128, 128], std_values=[128, 128, 128])

+

rknn.config(mean_values=[128, 128, 128], std_values=[128, 128, 128],

target_platform='rk3568')

print('done')

# Load model

@@ -62,7 +62,7 @@ if __name__ == '__main__':

# Init runtime environment

print('--> Init runtime environment')

-

ret = rknn.init_runtime()

+

ret = rknn.init_runtime(target='rk3568')

if ret != 0:

print('Init runtime environment failed!')

exit(ret)

修改完,保存文件并退出。

17激活虚拟化环境,输入以下命令

source venv/bin/activate

18在运行模型之前,首先检查开发板是否被识别到,输入adb devices,如下图

所示:

adb devices

19进入到examples/onnx/yolov5文件夹,输入以下命令,执行模型转换和推理模型的test.py脚本。python test.py

wKgZO2kS1WKATwuzAAiHtoXHMY4669.pngwKgZPGkS1WKALa_TAAd5LQphLUw800.png

由上图结果可以看出,图上有三个人和一个巴士,所在坐标与原图相符,推

理图片成功。原图如下图所示:

wKgZO2kS1WKAZfDLAAWJ64-FY6U540.png

通过迅为电子提供的完整工具链和详细文档,我们轻松从模型转换到真机运行,整个流程清晰明了,让开发者能够快速上手,真正发挥RK3568NPU的强大算力。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信