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 | rknn_toolkit2-1.5.2+b642f30c-cp36-cp36m-linux_x86_64.whl |
如上所示,1.5.2
版本的 RKNN Toolkit2
支持 Python
的 3.6
3.8
3.10
版本
然后在所下载的 rknn-toolkit2
文件夹下打开终端,安装系统的依赖:
1 | sudo apt-get install libxslt1-dev zlib1g-dev libglib2.0 libsm6 \ |
启动创建的虚拟环境:
1 | conda activate rknn |
安装 rknn_toolkit2
:
1 | pip3 install numpy opencv-python |
注意把文件名替换为自己下载的 RKNN Toolkit2
文件
使用以下命令测试安装:
1 | python |
RKNN Toolkit Lite2
的配置
注:以下操作均在开发板上进行,请提前将文件夹
rknn_toolkit_lite2
传输到开发板上
RKNN Toolkit Lite2
和 RKNN 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 | pip3 install numpy opencv-python |
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 | mkdir ~/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 | mkdir ~/server |
然后拷贝到 /usr/bin
目录下:
1 | sudo cp -r ./server /usr/bin |
查看是否移动到正确的位置:
1 | ls -l /usr/bin | grep rknn |