触觉智能RK3588核心板/开发板SDK即将迎来更新,其中内核将更新至全新Linux6.1。

数十项软硬件资料更新与bug优化。本文将基于全新SDK,讲解瑞芯微RK3588 RKNN端侧模型的开发环境搭建方法与测试方法。

【测试环境说明】

开发板系统:Ubuntu22.04

开发环境:Ubuntu22.04虚拟机

演示设备:触觉智能RK3588开发板EVB3588,开发板基于核心板+底板设计

可通过核心板二次开发设计底板,用于项目

RKNN

RKNN,全程Rockchip Neural Network)是瑞芯微专为自家 NPU (神经网络处理单元) 开发的端侧神经网络计算框架,提供完整的 "模型转换 - 部署 - 推理" 解决方案。瑞芯微官方软件栈可以帮助用户快速地将AI模型部署到Rockchip芯片,整体的框架如下。

图片

RKNN-Toolkit2是用户模型转换、推理与性能评估的开发套件。使用 RKNPU 时,需先通过该工具将训练好的模型转为 RKNN 格式,再借助 RKNN C API 或 Python API 在开发板上部署。其 Python 接口可快速实现模型转换、量化、推理、性能与内存评估、量化精度分析、模型加密等功能。。

图片

RKNN Runtime 负责加载 RKNN 模型并调用 NPU 驱动完成推理,推理流程包含输入预处理、NPU运算、输出后处理,并根据模型输入格式与量化方式,提供通用 API 和零拷贝 API 两种处理流程。

  • 通用API推理

提供一套简洁易用的推理 API,流程如图所示。数据归一化、量化、格式转换、反量化等在 CPU 上运行,模型推理在 NPU 上执行。

图片

  • 零拷贝API推理

优化了通用 API 数据处理流程,归一化、量化与模型推理均在 NPU 上执行,数据排布与反量化可在CPU或NPU完成;零拷贝 API 的输入处理效率高于通用 API。

图片

开发环境搭建

  • RKNN-Toolkit2安装

首先,执行如下命令进行安装Miniforge Conda:

wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
chmod 777 Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh

图片

图片

图片

图片

图片

进入Conda base环境,创建一个RKNN-Toolkit2 Conda环境,命令如下:
 

source ~/miniforge3/bin/activate
conda create -n RKNN-Toolkit2 python=3.8

图片

进入RKNN-Toolkit2 Conda环境:

conda activate RKNN-Toolkit2

图片

激活RKNN-Toolkit2 Conda环境后,可通过 pip 源安装RKNN-Toolkit2:

pip install rknn-toolkit2 -i https://pypi.org/simple

图片

验证RKNN-Toolkit2,若执行以下命令没有报错,则安装成功。​​​​​​​

python3
>>> from rknn.api import RKNN

图片

  • 下载RKNN相关仓库

执行如下命令从github上拉群RKNN相关仓库,后续编译、测试会用到。

mkdir Projects
cd Projects
# 下载 RKNN-Toolkit2 仓库
git clone https://github.com/airockchip/rknn-toolkit2.git --depth 1
# 下载 RKNN Model Zoo 仓库
git clone https://github.com/airockchip/rknn_model_zoo.git --depth 1

图片

图片

  • 安装编译工具

执行如下命令安装cmake工具:

sudo apt install cmake

下载GCC 交叉编译器工具链:

https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

下载后拷贝到Ubuntu虚拟机并解压软件包,建议将GCC软件包解压到 Projects的文件夹中,后面编译RKNN C Demo时会用到:

图片

  • 安装板端RKNPU环境

开发板硬件连接如下图所示,烧录网盘固件(全新SDK网盘即将发布):

IDO_EVB3588_V1B_Ubuntu22.04_2HDMI4K_251219.img。

图片

注意:OTG接口需要连接到Ubuntu虚拟机,Ubuntu虚拟机需要安装adb命令:

sudo apt install adb

接下来,确认板卡系统支持的RKNPU驱动版本,开发板上电进入系统,执行以下命令查询NPU驱动版本

adb shell
dmesg | grep -i rknpu

图片

默认出厂固件已支持NPU驱动,若以上命令查询不到NPU驱动版本,在内核源中使能如下配置以集成NPU驱动:

CONFIG_ROCKCHIP_RKNPU=y 

RKNN-Toolkit2的调试功能要求板端安装RKNPU2环境,并启动

rknn_server服务。以下是RKNPU2 环境中的两个基本概念:

RKNN Server:一个运行在开发板上的后台代理服务。该服务的主要功能是调用板端 Runtime 对应的接口处理计算机通过USB传输过来的数据,并将处理结果返回给计算机。

RKNPU2 Runtime 库(librknnrt.so):主要职责是负责在系统中加载 RKNN 模型,并通过调用专用的神经处理单元(NPU)执行RKNN模型的推理操作。

如果能够启动 rknn_server 服务,则代表板端已经安装 RKNPU2 环境。

# 进入板端
adb shell
# 启动 rknn_server
restart_rknn.sh

图片

检查rknn_server、librknnrt.so版本是否一致,命令如下:

# 查询rknn_server版本
strings /usr/bin/rknn_server | grep -i "rknn_server version"
# 查询librknnrt.so库版本
strings /usr/lib/librknnrt.so | grep -i "librknnrt version"

如果出现以下输出信息,则代表rknn_server版本为x.x.x,librknnrt.so的版本为x.x.x。

图片

默认出厂的固件rknn_server、librknnrt.so已经一致,若版本不一致需要更新库。​​​​​​​

# 进入前面下载的rknn-toolkit2仓库的 rknpu2 目录
cd Projects/rknn-toolkit2/rknpu2

图片

拷贝上述脚本和库替换开发板系统对应的文件进行更新:

图片

完成以上步骤,瑞芯微原厂RKNN模型推理的开发环境就完成搭建了,下集为您带来RK3588 RKNN详细测试方法。本文相关资料请关注深圳触觉智能CSDN,私信索取。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐