Luckfox Pico RKNN 推理测试

rknn-Toolkit2 安装(PC ubuntu22.0

在前面的文章中,我曾经介绍过虚拟机软件安装、Ubuntu系统安装、conda软件安装和它的简单操作命令,如果有不懂的地方请查看之前教程。
- 环境要求
操作系统版本 | Ubuntu18.04(x64) | Ubuntu20.04(x64) | Ubuntu22.04(x64) |
Python版本 | 3.6/3.7 | 3.8/3.9 | 3.10/3.11 |
- 下载rknn-toolkit2
git clone https://github.com/rockchip-linux/rknn-toolkit2
- 创建 RKNN-Toolkit2 开发 Conda 环境
conda create -n rknn-toolkit2 python=3.10
conda activate rknn-toolkit2
- 安装RKNN-ToolKit2依赖包
pip3 install -r rknn-toolkit2/packages/requirements_cpxx-1.6.0.txt
# such as:
pip3 install -r rknn-toolkit2/packages/requirements_cp310-1.6.0.txt
根据不同的Python版本,选择安装对应的依赖包:
Python版本 | RKNN-Toolkit2依赖包 |
3.6 | requirements_cp36-1.6.0.txt |
3.7 | requirements_cp37-1.6.0.txt |
3.8 | requirements_cp38-1.6.0.txt |
3.9 | requirements_cp39-1.6.0.txt |
3.10 | requirements_cp310-1.6.0.txt |
3.11 | requirements_cp311-1.6.0.txt |
- 安装RKNN-ToolKit2
pip3 install rknn-toolkit2/packages/rknn_toolkit2-x.x.x+xxxxxxxx-cpxx-cpxx-linux_x86_64.whl
# such as:
pip3 install rknn-toolkit2/packages/rknn_toolkit2-1.6.0+81f21f4d-cp310-cp310-linux_x86_64.whl
包名格式为:rknn_toolkit2-{版本号}+{commit 号}-cp{Python 版本}-cp{Python 版本}-linux_x86_64.whl,根据不同的Python版本,选择安装对应的安装包:
Python版本 | RKNN-Toolkit2安装包 |
3.6 | rknn_toolkit2-{版本号}+{commit 号}-cp36-cp36m-linux_x86_64.whl |
3.7 | rknn_toolkit2-{版本号}+{commit 号}-cp36-cp37m-linux_x86_64.whl |
3.8 | rknn_toolkit2-{版本号}+{commit 号}-cp36-cp38m-linux_x86_64.whl |
3.9 | rknn_toolkit2-{版本号}+{commit 号}-cp36-cp39m-linux_x86_64.whl |
3.10 | rknn_toolkit2-{版本号}+{commit 号}-cp36-cp310m-linux_x86_64.whl |
3.11 | rknn_toolkit2-{版本号}+{commit 号}-cp36-cp311m-linux_x86_64.whl |
若执行以下命令没有报错,则安装成功:
python3
from rknn.api import RKNN
下载rknn-moel-zoo

1、下载代码
git clone git@github.com:airockchip/rknn_model_zoo.git # ssh下载
git clone https://github.com/airockchip/rknn_model_zoo.git # http下载
2、编译示例代码
./build-linux.sh -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m]
-t : target (rk356x/rk3588/rk3576/rv1106/rk1808/rv1126)
-a : arch (aarch64/armhf)
-d : demo name
-b : build_type(Debug/Release)
-m : enable address sanitizer, build_type need set to Debug
Note: 'rk356x' represents rk3562/rk3566/rk3568, 'rv1106' represents rv1103/rv1106, 'rv1126' represents rv1109/rv1126
# Here is an example for compiling yolov5 demo for 64-bit Linux RK3566.
./build-linux.sh -t rk356x -a aarch64 -d yolov5
转换模型

关于yolov5的模型本次不再赘述,直接使用脚本下载官方的模型。
cd rknn_model_zoo/examples/yolov5/model
./download_model.sh
或者将自己的ONNX模型文件拷贝至 rknn_model_zoo/examples/yolov5/model 目录
cp your_yolov5s.onnx rknn_model_zoo/examples/yolov5/model
执行 rknn_model_zoo/examples/yolov5/python 目录下的模型转换程序 convert.py,使用方法:
conda activate RKNN-Toolkit2
cd ~/rknn_model_zoo/examples/yolov5/python
python3 convert.py ../model/yolov5s.onnx rv1106
# output model will be saved as ../model/yolov5.rknn
python3 convert.py <onnx_model> <TARGET_PLATFORM> <dtype(optional)> <output_rknn_path(optional)>
编译推理代码

- 成功将 ONNX 模型转换成 RKNN 模型后,现在对 rknn_model_zoo/examples/yolov5 目录下的例程进行交叉编译,编译例程前需要设置如下环境变量:
export GCC_COMPILER=<SDK目录>/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf
我的代码
export GCC_COMPILER=/home/mxf/linux/luckfox-pico/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf
- 执行 rknn_model_zoo 目录下的 build-linux.sh 脚本。该脚本将编译例程:
运行程序




将编译好的程序和库文件模型文件拷贝到开发板,运行结果如图所示。
./rknn_yolov5_demo model/yolov5.rknn model/bus.jpg











