0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

北京迅为电子 2025-11-11 14:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


实战核心: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、TensorFlowTensorFlow 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的强大算力。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    26

    文章

    6411

    浏览量

    120686
  • NPU
    NPU
    +关注

    关注

    2

    文章

    386

    浏览量

    21341
  • RK3568
    +关注

    关注

    5

    文章

    654

    浏览量

    8106
  • 迅为电子
    +关注

    关注

    0

    文章

    98

    浏览量

    399
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3568手册上新 | RK3568开发板NPU例程测试

    《iTOP-3568开发板NPU例程测试》 教程目录 第1章 瑞芯微原厂NPU资料介绍 1.1瑞芯微官方github 1.2 rknn-toolk
    发表于 07-12 14:44

    手册上新 |RK3568开发板NPU例程测试

    ●教程更新 《iTOP-3568开发板NPU例程测试》 教程目录第1章 瑞芯微原厂NPU资料介绍 1.1瑞芯微官方github 1.2 rknn-t
    发表于 08-12 11:03

    手册上新 |RK3568开发板NPU例程测试

    ●教程更新 《iTOP-3568开发板NPU例程测试》 教程目录第1章 瑞芯微原厂NPU资料介绍 1.1瑞芯微官方github 1.2 rknn-t
    发表于 10-23 14:06

    RK3568开发板NPU使用安装步骤

    输入以下命令升级 pippython3 -m pip install --upgrade pip5 下载网盘资料中“iTOP-3568 开发板\\02_【iTOP-RK3568 开发板
    发表于 09-13 17:37

    RK3588开发板使用RKNN-Toolkit-lite2运行测试程序

    图所示: 2 下载网盘资料中“iTOP-3588 开发板\\\\02_【iTOP-RK3588 开发板开发资料\\\\12_
    发表于 10-16 11:12

    iTOP-RK3568开发板npu手册更新

    安装 5.2.2通过pip install 安装 5.3 RKNN-Toolkit2 的使用 5.3.1 模型运行在模拟器 5.3.2 模型运行在RK3568开发板 第6章 其他模型转换 6.1
    发表于 11-03 14:40

    爆款推荐 | RK3568开发板4核处理器+1T算力NPU+好用到爆的配套资料和视频!

    爆款推荐 | RK3568开发板4核处理器+1T算力NPU+好用到爆的配套资料和视频!
    的头像 发表于 03-19 13:41 1609次阅读
    爆款推荐 | <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>4核处理器+1T算力<b class='flag-5'>NPU</b>+好用到爆的配套资料和视频!

    RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用

    RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用
    的头像 发表于 06-17 13:46 1977次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b><b class='flag-5'>NPU</b>例程测试-<b class='flag-5'>rknn-toolkit2</b>环境搭建和使用

    RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示模型转换

    RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示模型转换
    的头像 发表于 06-19 10:53 1537次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b><b class='flag-5'>NPU</b>环境搭建和使用<b class='flag-5'>rknn-toolkit2</b>功能演示模型转换

    RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示连推理

    RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示连
    的头像 发表于 06-23 13:54 1364次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b><b class='flag-5'>NPU</b>环境搭建和使用<b class='flag-5'>rknn-toolkit2</b>功能演示连<b class='flag-5'>板</b>推理

    高情性6TOPS算力的RK3576开发板NPU rknn-model-zoo例程演示

    RK3576开发板NPU rknn-model-zoo例程演示
    的头像 发表于 07-01 14:54 1844次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>高情性6TOPS算力的<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b><b class='flag-5'>NPU</b> <b class='flag-5'>rknn</b>-model-zoo例程演示

    RK3568开发板模型推理测试实战LPRNet 车牌识别

    RK3568开发板模型推理测试实战LPRNet 车牌识别
    的头像 发表于 08-25 14:55 1545次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>模型推理测试<b class='flag-5'>实战</b>LPRNet 车牌识别

    实战RK3568性能调优:如何利用资料压榨NPU潜能-在Android系统中使用NPU

    实战RK3568性能调优:如何利用资料压榨NPU潜能-在Android系统中使用NPU
    的头像 发表于 11-07 13:42 1044次阅读
    <b class='flag-5'>实战</b><b class='flag-5'>RK3568</b>性能调优:如何利用<b class='flag-5'>迅</b><b class='flag-5'>为</b>资料压榨<b class='flag-5'>NPU</b>潜能-在Android系统中使用<b class='flag-5'>NPU</b>

    RK3568 NPU实战别再闲置NPU手把手带你用资料跑通Android AI检测Demo,附完整流程与效果

    RK3568 NPU实战别再闲置NPU
    的头像 发表于 11-10 15:58 1241次阅读
    【<b class='flag-5'>RK3568</b> <b class='flag-5'>NPU</b><b class='flag-5'>实战</b>】<b class='flag-5'>别再</b><b class='flag-5'>闲置</b><b class='flag-5'>你</b>的<b class='flag-5'>NPU</b>!<b class='flag-5'>手把手</b>带你用<b class='flag-5'>迅</b><b class='flag-5'>为</b>资料跑通Android AI检测Demo,附完整流程与效果

    工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战RK3568内核模块符号导出详解

    工业RK3568稳定可靠】itop-3568开发板Linux驱动开发
    的头像 发表于 11-21 13:25 1607次阅读
    【<b class='flag-5'>迅</b><b class='flag-5'>为</b>工业<b class='flag-5'>RK3568</b>稳定可靠】itop-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>Linux驱动<b class='flag-5'>开发</b><b class='flag-5'>实战</b>:<b class='flag-5'>RK3568</b>内核模块符号导出详解