跳到主要内容

RKNN 安装

提示

本文档旨在演示如何安装 RKNN SDK,更多资料请查看 RKNN Toolkit2 源码库 的 doc 目录。

RKNN 简介

Rockchip RK3566/RK3568 系列, RK3588 系列, RK3562 系列, RK3576系列, RV1103/RV1106 系列芯片搭载神经网络处理器 NPU, 利用 RKNN 可以帮助用户快速部署 AI 模型到 Rockchip 芯片上使用 NPU 硬件加速模型推理。 为了使用 RKNPU,用户首先需要在 x86 计算机上使用 RKNN-Toolkit2 工具,将训练好的模型转换为 RKNN 格式的模型,然后在开发板上使用 RKNN C API 或 Python API进行推断。

所需工具:

  • RKNN-Toolkit2 是一个软件开发工具包,供用户在 PC 和 Rockchip NPU 平台上执行模型转换、推断和性能评估。
  • RKNN-Toolkit-Lite2 为 Rockchip NPU 平台提供了 Python 编程接口,帮助用户部署 RKNN 模型并加速实施 AI 应用。
  • RKNN Runtime 为 Rockchip NPU 平台提供了 C/C++ 编程接口,帮助用户部署 RKNN 模型并加速实施 AI 应用。
  • RKNPU 内核驱动负责与 NPU 硬件交互。

整体框架如下:

rknn-framework

环境准备

连接开发板

下面以 RK3568 为例说明如何将开发板连至计算机:

  1. 准备一台操作系统为 Ubuntu18.04 / Ubuntu20.04 / Ubuntu22.04 的计算机。
  2. 找到下图中电源接口的位置,连接开发板电源适配器。
  3. 使用数据线连接开发板(OTG口)与计算机。
  4. 打开电源开关,等待开发板系统启动完成。
  5. 查看开发板是否连接至计算机

在计算机的终端窗口(命令行界面)中,执行以下命令:

adb devices

如果开发板连接成功,则会出现开发板的设备信息,如下所示:

$ adb devices
List of devices attached
TOYBRICK device

配置 RKNN 环境

配置 RKNN 环境分为四个部分:

  • 下载 RKNN 相关仓库
  • 安装 RKNN-Toolkit2 环境
  • 安装板端 RKNPU2 环境

下载 RKNN 相关仓库

建议新建一个目录用来存放 RKNN 仓库,例如新建一个名称为 Projects 的文件夹,并将 RKNN-Toolkit2 和 RKNN Model Zoo 仓库存放至该目录下,参考命令如下:

# 新建 Projects 文件夹
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
注意
  • 参数 --depth 1 表示只克隆最近一次 commit
  • 如果遇到 git clone 失败的情况,也可以直接在 github 中下载压缩包到本地,然后解压至该目录

整体目录结构如下:

Projects
├── rknn-toolkit2
│ ├── doc
│ ├── rknn-toolkit2
│ │ ├── packages
│ │ ├── docker
│ │ └── ...
│ ├── rknpu2
│ │ ├── runtime
│ │ └── ...
│ └── ...
└── rknn_model_zoo
├── datasets
├── examples
└── ...

安装 RKNN-Toolkit2 环境

安装 Python

如果系统中没有安装 Python 3.8(建议版本),或者同时有多个版本的 Python 环境,建议使用Miniforge Conda 创建新的 Python 3.8 环境。

安装 Miniforge Conda

在计算机的终端窗口中执行以下命令,检查是否安装Miniforge Conda,若已安装则可省略此节步骤。

conda --version
# 参考输出信息:conda 23.3.1 ,表示 Miniforge conda 版本为 23.3.1
# 如果提示 conda: command not found,则表示未安装 Miniforge

如果没有安装 Miniforge Conda,可以通过下面的链接下载 Miniforge Conda 安装包:

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

下载完成后,执行以下命令安装 Miniforge Conda:

chmod 777 Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
注意
  • 安装 Miniforge Conda 时,会提示是否将 Miniforge Conda 添加到 PATH 环境变量中,选择 yes 即可
  • 安装完成后,会提示是否初始化 Miniforge Conda,选择 no 即可

使用 Miniforge Conda 创建 Python 环境,在计算机的终端窗口中,执行以下命令进入 Conda base 环境:

source ~/miniforge3/bin/activate # Miniforge 安装的目录
# 成功后,命令行提示符会变成以下形式:
# (base) xxx@xxx:~$

通过以下命令创建名称为 toolkit2 的 Python 3.8 环境:

conda create -n toolkit2 python=3.8

激活 toolkit2 环境,后续将在此环境中安装 RKNN-Toolkit2:

conda activate toolkit2
# 成功后,命令行提示符会变成以下形式:
# (toolkit2) xxx@xxx:~$

当不用toolkit2环境或者更换别的python环境时,运行如下命令,实现环境切换或者退出:

conda deactivate

安装 RKNN-Toolkit2

激活 toolkit2 环境后,可通过 pip 源或者本地 wheel 包这两种方式安装 RKNN-Toolkit2:

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

如果已安装 RKNN-Toolkit2,可通过以下命令升级 RKNN-Toolkit2

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

验证是否安装成功

执行以下命令,若没有报错,则代表 RKNN-Toolkit2 环境安装成功。

python
>>> from rknn.api import RKNN

安装板端 RKNPU2 环境

可以在板端执行以下命令查询 RKNPU2 驱动版本:

dmesg | grep -i rknpu

如下图所示,当前 RKNPU2 驱动版本为 0.9.3,默认固件已经安装RKNPU2驱动,如版本过低,可以重新编译kernel后更新 rknpu-version

检查 RKNPU2 环境是否安装

RKNN-Toolkit2 的连板调试功能要求板端已安装 RKNPU2 环境,并且启动 rknn_server 服务,以下是 RKNPU2 环境中的两个基本概念:

  • RKNN Server:一个运行在开发板上的后台代理服务。该服务的主要功能是调用板端 Runtime 对应的接口处理计算机通过USB传输过来的数据,并将处理结果返回给计算机。
  • RKNPU2 Runtime 库(librknnrt.so):主要职责是负责在系统中加载 RKNN 模型,并通过调用专用的神经处理单元(NPU)执行 RKNN 模型的推理操作。 如果开发板板端没有安装 RKNN Server 和 Runtime 库,或者 RKNN Server 和 Runtime 库的版本不一致,都需要重新安装 RKNPU2 环境。
注意
  • 若使用动态维度输入的 RKNN 模型,则要求 RKNN Server 和 Runtime 库版本 >= 1.5.0
  • 要保证 RKNN Server 、Runtime 库的版本、RKNN-Toolkit2 的版本是一致的,建议都安装最新的版本。

通过下面命令确认开发板的 RKNPU2 环境版本是否一致:

# 进入板端
adb shell
# 启动 rknn_server
restart_rknn.sh
# 如果出现以下输出信息,则代表启动rknn_server服务成功,且能确认rknn_server版本
# start rknn server, version: x.x.x

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

rknpu-version2

RKNN-Toolkit-Lite2

RKNN Toolkit Lite2为带有Rockchip NPU平台提供 Python 编程接口,帮助用户部署使用RKNN-Toolkit2导出的RKNN模型。 RKNN Toolkit Lite2开发文档位于external/rknn/rknn-toolkit2/rknn-toolkit-lite2/doc目录下

edge/external/rknn/rknn-toolkit2/rknn-toolkit-lite2/doc$ tree -L 1
.
├── change_log.txt
├── Rockchip_User_Guide_RKNN_Toolkit_Lite2_V1.2.0_CN.pdf
└── Rockchip_User_Guide_RKNN_Toolkit_Lite2_V1.2.0_EN.pdf
信息

在Toybrick Debian11系统中已经预装了 RKNN Toolkit Lite2的whl包。

普通用户 toybrick执行如下命令升级到最新版本:

pip3 install --user --upgrade rknn-toolkit-lite2

(可选) 板端安装 RKNN Model Zoo

# 下载 RKNN Model Zoo 仓库
git clone https://github.com/airockchip/rknn_model_zoo.git