w3-RK_NPU_SDK 环境配置

本博客参考了 Rockchip_Quick_Start_RKNN_SDK_V1.5.2_CN.pdf

:本博客仅作为参考,请根据个人的实际情况进行调整,善用搜索引擎

RKNN Toolkit2 的配置(非 Docker

:以下操作均在虚拟机上进行

RKNN Toolkit2 是一个在 Linux(非板上系统)上运行的一个进行模型转化和部署的工具,提供了 Python 的接口,通过 adb 工具进行板上推理

下载 RKNN-Toolkit2

1
git clone --depth=1 https://github.com/rockchip-linux/rknn-toolkit2.git

这里使用 git 进行下载。也可以进入网站直接下载压缩包,或者直接用开发资料下的压缩包,解压后传输到虚拟机下

虚拟环境的配置

可以使用 conda 或者 venv 创建虚拟环境,这里使用 conda

1
conda create -n rknn python=3.10

其中,环境名 rknn 可以随意替换,工具支持的 Python 版本请查看所下载的 rknn-toolkit2 文件夹下的 packages 文件夹,如下所示:

1
2
3
rknn_toolkit2-1.5.2+b642f30c-cp36-cp36m-linux_x86_64.whl
rknn_toolkit2-1.5.2+b642f30c-cp310-cp310-linux_x86_64.whl
rknn_toolkit2-1.5.2+b642f30c-cp38-cp38-linux_x86_64.whl

如上所示,1.5.2 版本的 RKNN Toolkit2 支持 Python3.6 3.8 3.10 版本

然后在所下载的 rknn-toolkit2 文件夹下打开终端,安装系统的依赖:

1
2
sudo apt-get install libxslt1-dev zlib1g-dev libglib2.0 libsm6 \
libgl1-mesa-glx libprotobuf-dev gcc

启动创建的虚拟环境:

1
conda activate rknn

安装 rknn_toolkit2

1
2
3
pip3 install numpy opencv-python
pip3 install -r doc/requirements_cp310-1.5.2.txt
pip3 install packages/rknn_toolkit2-1.5.2+b642f30c-cp310-cp310-linux_x86_64.whl

注意把文件名替换为自己下载的 RKNN Toolkit2 文件

使用以下命令测试安装:

1
2
python
from rknn.api import RKNN

RKNN Toolkit Lite2 的配置

:以下操作均在开发板上进行,请提前将文件夹 rknn_toolkit_lite2 传输到开发板上

RKNN Toolkit Lite2RKNN Toolkit2 类似,可以用于在板端以完全离线的方式部署 RKNN 模型,但是提供的接口较少

在开发板使用 conda

下载 Miniconda 的安装脚本(如果下载速度过慢请自行寻找国内镜像)

1
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh

然后安装 Miniconda

1
bash Miniconda3-latest-Linux-aarch64.sh

根据指示安装即可,其中会出现一大堆的协议,可用 <C-D> 来向下翻页,注意这也是一个退出当前 shell 的快捷键

配置虚拟环境

:以下操作类似 RKNN Toolkit2虚拟环境配置,部分操作不再赘述

rknn_toolkit_lite2 文件夹下打开终端,
首先创建 conda 环境:

1
conda create -n rknn python=3.10

然后启用:

1
conda activate rknn

安装 RKNN Toolkit Lite2

1
2
pip3 install numpy opencv-python
pip3 install packages/rknn_toolkit_lite2-1.5.2-cp310-cp310-linux_aarch64.whl

RKNPU2 的安装配置

虚拟机下的配置

下载 RKNPU2

此处使用了 1.5.2 版本,需要在官方提供的 RK_NPU_SDK下载,提取码:rknn,具体原因请查看 issue
1.4.0 版本则不会出现问题,解压即可

下载交叉编译工具

这是官方提供的 交叉编译工具,提取码:rknn。也可以直接使用网盘上的编译工具 gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu,只有新旧的区别

下载编译所需的工具

1
sudo apt install make cmake

开发板下的配置

:涉及 scp 的命令可以修改为使用 WinSCP 工具进行

/usr/lib

在下载的 RKNPU2 目录下找到文件夹 ./runtime/RK356X/Linux/librknn_api/aarch64,打开有以下文件:

1
librknn_api.so librknnrt.so

这两个是库文件,需要移动到开发板的 /usr/lib 目录下

首先通过 scp 将文件夹传输到开发板的用户目录下,新建文件夹 api 进行存放:

1
2
mkdir ~/api
scp -r ./runtime/RK356X/Linux/librknn_api/aarch6 topeet@[addr]:~/api

然后拷贝到 /usr/lib 目录下:

1
sudo cp -r ./api /usr/lib

查看是否移动到正确的位置:

1
ls -l /usr/lib | grep rknn

/usr/bin

在下载的 RKNPU2 目录下找到文件夹 ./runtime/RK356X/Linux/rknn_server/aarch64/usr/bin,打开有以下文件:

1
restart_rknn.sh rknn_server start_rknn.sh

这三个是运行服务器所需的可执行文件,需要移动到开发板的 /usr/bin 目录下

首先通过 scp 将文件夹传输到开发板的用户目录下,新建文件夹 server 进行存放:

1
2
mkdir ~/server
scp -r ./runtime/RK356X/Linux/rknn_server/aarch64/usr/bin topeet@[addr]:~/server

然后拷贝到 /usr/bin 目录下:

1
sudo cp -r ./server /usr/bin

查看是否移动到正确的位置:

1
ls -l /usr/bin | grep rknn