本文参考“【北京迅为】itop-3588开发板NPU例程测试手册V1.2”在Ubuntu24.04上进行rknn-toolkit2 环境搭建和使用。第1 部分 瑞芯微原厂NPU 资料介绍1.1 rknn-toolkit2介绍rknn-toolkit2的github链接地址为https://github.com/airockchip/rknn-toolkit2有两种方法可以进行获取首先可以在ubuntu上安装git后使用以下命令进行拉取如下所示git clonehttps://github.com/airockchip/rknn-toolkit2 --depth 1git clone https://github.com/airockchip/rknn-toolkit2 --depth 1或者点击github 中的下载ZIP 压缩包进行下载然后拷贝到ubuntu 上解压即可如下图所示下载后拷贝到Ubuntu上/work目录下解压sudo unzip rknn-toolkit2-master.ziprknn-toolkit2 文件目录内容如下图所示要想进行模型转换需要先成功安装rknn-toolkit2在packages 目录下已经提供了各个python 版本的依赖项文件以及rknn_toolkit2 whl 文件如下图所示而在examples 目录中提供了一些常用模型的转换和推理例程如下图所示1.2 rknn-toolkit-lite2 介绍RKNN-Toolkit-Lite2 工具属于RKNN-Toolkit2 的阉割版本只保留了模型推理的功能并且他们的运行环境不同RKNN-Toolkit-Lite2 只能运行在arm 架构的开发板上而RKNN-Toolkit2 只能运行在X86 架构的Linux 系统上。RKNN-Toolkit-Lite2 只保留了模型推理相关的功能用于在开发板端使用。python 语言进行快速的RKNN 模型部署RKNN-Toolkit-Lite2 目录内容如下所示1.3 RKNPU2 介绍RKNPU2 与RKNN-Toolkit-Lite2 的功能类似也是只能在开发板上运行实现RKNN 模型的部署和推理唯一不同的区别就是调用的接口不同RKNN-Toolkit-Lite2 调用的是Python 接口而RKNPU2 调用的是C接口C相较于Python 会有更高的性能所以一般在实际的使用中大多数都是使用RKNPU2 进行模型部署和推理RKNN-Toolkit-Lite2 只适用于前期的验证测试。RKNPU2 目录内容如下所示examples 文件夹中存放了非常多的由C API 编写的RKNN 例程可以根据这些例程来学习CAPI 的使用具体例程如下图所示而runtime 目录中存放了C 例程运行时要用到的动态库以及编写C 推理程序要用到的头文件如下图所示除此之外还有使用RKNN-Toolkit2 连板推理时要用到的rknn_server 可执行程序如下图所示至此对于RKNPU2 的初步介绍就完成了。第2 部分 rknn-toolkit2 环境搭建和使用2.1 rknn-toolkit2 环境搭建rknn-toolkit2 的环境搭建实际上就是安装瑞芯微提供的rknn-toolkit2 whl 文件但由于各个Linux 环境有着不同的Python 版本所以RK 也提供了不同版本的安装包具体如下图所示而根据不同的场景提供了三种knn-toolkit2 的安装方法分别为直接安装、conda 虚拟环境安装以及docker 环境安装直接安装的方法最为省时省力建议大家使用第一种方法但直接安装会更改当前的环境如果不想更改当前的环境可以使用第二种方法conda 虚拟环境安装而docker 环境安装为瑞芯微已经提供了一个安装好knn-toolkit2 的ubuntu20 docker 环境加载docker 环境后就可直接使用每种方法有各自的优点和缺点大家可以根据自己的情况选择对应的安装方法。2.1.2 conda 虚拟环境安装conda下载完整安装包用官方链接下载wgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh然后使用chmod 命令赋予该文件可执行权限然后运行如下图所示robotrobot:/work$ sudo chmod 777 Miniconda3-latest-Linux-x86_64.sh根据步骤进行安装即可如下图所示按下pg dn键安装完成之后重新打开一个终端或者使用下面的source 命令重新加载环境变量就会在终端的最前面多出base 的字符如下图所示最前方为bash表示处在默认的配置环境这时候需要创建rknn_toolkit2专属python环境可以使用以下命令创建一个名为rknn的、Python版本为3.12的虚拟环境如下图所示注这里的Python版本可以任意设置只需要选择同版本的rknn_toolkit2 whl包即可。conda create -n rknn python3.12输入两次a回车虚拟环境创建完成如下图所示然后使用“conda activate rknn”命令激活刚刚创建完成的rknn 环境激活完成之后终端最前方的base 字符会更改为rknn如下图所示然后来到rknn-toolkit2/rknn-toolkit2/packages 目录下如下图所示由于前面创建的是Python 版本为3.12 的环境所以这里要用到的为Python3.12的依赖项文件以及rknn_toolkit2 whl 文件具体如下所示首先使用以下命令安装依赖项如下图所示pip install -r requirements_cp312-2.3.2.txt -ihttps://repo.huaweicloud.com/repository/pypi/simple/安装完成如下图所示然后使用以下命令安装rknn_toolkit2 whl 文件安装过程如下图所示pip install rknn_toolkit2-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -i https://repo.huaweicloud.com/repository/pypi/simple/安装完成之后输入python3 进入python 命令行然后依次输入以下内容能打印出rknn_toolkit2 版本证明安装成功如下图所示from rknn.api import RKNNRKNN(verboseTrue)出现下面错误报错原因ModuleNotFoundError: No module named pkg_resources参考文献【已解决】ModuleNotFoundError: No module named ‘pkg_resources‘ | Setuptools 82.0.0 版本断层深度复盘-CSDN博客强制降级最快、最稳妥推荐由于 pkg_resources 在 81.x 版本中仍保留了兼容层我们只需要将 setuptools 强制锁定在 82.0.0 版本以下 即可。在你的虚拟环境中执行# 强制重新安装 81.0.0 版本pip install setuptools82.0.0 --force-reinstall3. 验证修复重新进入 Python 测试python运行from rknn.api import RKNNrknn RKNN(verboseTrue)print(RKNN 初始化成功)补充说明Python3.12 新版会把老旧的 pkg_resources 从默认内置库移除很多老工具包RKNN-Toolkit2还在调用它所以必须手动重装 setuptools 才能补全这个模块。至此使用conda 虚拟环境安装rknn_toolkit2 就演示完成了在后面的小节中会对rknn_toolkit2 的实际功能进行演示。2.2 rknn-toolkit2功能演示2.2.1 模型转换上面提到了rknn_toolkit2 最重要的功能就是进行模型转换将常用的Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、PyTorch 等模型转为RK 支持RKNN 模型在rknn-toolkit2/rknn-toolkit2/examples 目录下提供了上述各个模型的转换和推理例程如下图所示这里以pytorch 的resnet18 例程进行演示首先来到rknn-toolkit2/rknn-toolkit2/examples/pytorch/resnet18 目录下如下图所示sudo chmod 777 /work/rknn-toolkit2sudo chmod 777 /work/rknn-toolkit2/rknn-toolkit2/examples/*/*由于默认没提供resnet18模型所以需要手动拷贝到该目录下resnet18.pt见资源包拷贝完成如下图所示然后修改test.py 内容将第53 行config 接口的target_platform 参数设置从rk3566 修改为rk3588target_platform 参数决定了要构建具体SOC 类型的RKNN 模型其他地方不需要改动修改完成如下图所示然后注释掉test.py的第81行加入下面几行每行前是4个空格img_origin cv2.imread(./space_shuttle_224.jpg)# 显示图片窗口cv2.imshow(Input Image, img_origin)print(按任意键盘按键关闭图片窗口继续推理)cv2.waitKey(0)cv2.destroyAllWindows()然后保存退出运行test.py需要注意的是必须确保已经安装了rknn-toolkit2使用上一小节描述的三种方法均可这里使用的是第一种方法安装的rknn-toolkit2运行过程如下所示报错原因AttributeError: module onnx has no attribute mappingonnx和onnxruntime版本太高了使用rknn-toolkit2 2.3.2代码硬编码调用onnx.mappingONNX 1.14.0及以上版本彻底移除了onnx.mapping而当前环境安装了高版本onnxAPI不兼容直接崩溃。解决方法降级onnx到兼容版本推荐无需换RKNN工具查看ONNX版本pip show onnx降级onnx和onnxruntimepip install onnx1.18.0 onnxruntime1.18.0验证版本再次运行test.py运行完成只会会生成RK3588 对应的RKNN 模型以及推理结果如下图所示推理结果为space shuttle推理的图片为航天飞机。点击图片然后按任意键盘按键关闭图片窗口继续推理