瑞芯微RK3588 RKNN模型推理环境部署与功能测试技巧(上)

描述

触觉智能(RK方案商)分享瑞芯微RK3588 RKNN端侧模型的开发环境搭建方法与测试方法。

 

【测试环境说明】

开发板系统:Ubuntu22.04

开发环境:Ubuntu22.04虚拟机

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

 

RKNN

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

RK3588

 

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

RK3588

 

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

 

  • 通用API推理

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

RK3588

 

  • 零拷贝API推理

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

RK3588

 

开发环境搭建

 

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

RK3588RK3588RK3588RK3588RK3588

 

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

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

RK3588

 

进入RKNN-Toolkit2 Conda环境:

conda activate RKNN-Toolkit2

RK3588

 

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

 

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

RK3588

 

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

python3 >>> from rknn.api import RKNN

 

RK3588

 

  • 下载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

 

RK3588RK3588

 

  • 安装编译工具

执行如下命令安装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时会用到:

RK3588
  • 安装板端RKNPU环境

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

IDO_EVB3588_V1B_Ubuntu22.04_2HDMI4K_251219.img。

RK3588

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

sudo apt install adb

 

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

adb shell dmesg | grep -i rknpu

RK3588

默认出厂固件已支持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

RK3588

检查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。

RK3588

 

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

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

 

RK3588

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

RK3588

完成以上步骤,瑞芯微原厂RKNN模型推理的开发环境就完成搭建了

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分