飞凌嵌入式
直播中

aquamanfeng

4年用户 42经验值
擅长:嵌入式技术
私信 关注
[技术]

【飞凌嵌入式OK3576-C开发板体验】rknn实现yolo5目标检测

工具链安装

环境准备

  • ubuntu22.04
  • python3.10

RKNN-Toolkit2

首先从github上拉取仓库:https://github.com/airockchip/rknn-toolkit2.git

python环境

之后需要准备python环境,官方推荐的是python3.8,但是其中packeges目录下分别提供了3.63.11的安装包,所以理论上应该python3.63.11都可以,我这里使用的是python3.10.

安装依赖和rknn-toolkit2

进入 rknn-toolkit2 目录,根据自己的python版本,选择合适的requirements.txt 安装依赖库,并通过 wheel 包安装 RKNN-Toolkit2

pip install -r packages/requirements_cp310-2.1.0.txt
pip install packages/rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl

如果安装速度太慢,可以在最后加上-i ``https://pypi.tuna.tsinghua.edu.cn/simple,换为国内镜像源进行加速。

安装验证

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

python
from rknn.api import RKNN

模型转换

以官方model_zoo中的YOLOv5为例,进行模型的转换及测试

准备模型

首先我们需要克隆项目:https://github.com/airockchip/rknn_model_zoo.git

之后进入到examples/yolov5/model目录下,运行 download_model.sh 脚本,将YOLOv5 ONNX 模型下载至当前 model 目录下

cd examples/yolov5/model
bash ./download_model.sh

模型转换

onnx模型准备完成后,需要将其转换为rknn格式。进入 rknn_model_zoo/examples/yolov5/python 目录下,运行 convert.py 脚本,该脚本有几个参数如下:

其中platform为板卡平台的芯片类型,dtype为模型的精度,可以看到不同精度的模型适用的平台有所区别,在设置时需要注意。

不同的板卡需要要选择对应的精度类型

python convert.py ../model/yolov5s_relu.onnx rk3576 i8 ../model/yolov5s_relu.rknn

转换完成后,在model目录下就会多出一个yolov5s_relu.rknn,这个就是我们推理需要用到的模型文件了。

模型推理测试

进入 rknn_model_zoo/examples/yolov5/python 目录,运行 yolov5.py 脚本,便可通过连板调试的方式在板端运行 YOLOv5 模型

板端推理

完整运行一个 RKNN C Demo,需要先将 C/C++ 源代码编译成可执行文件,然后将可执行文件、模型文

件、测试图片等相关文件推送到板端上,最后在板端运行可执行文件。

首先进入 rknn_model_zoo 目录下,在其中的 build-linux.sh 脚本开头添加

CC_COMPILER=${CROSS_COMPILE}

并将CCCXX修改如下

export CC=${GCC_COMPILER}gcc
export CXX=${GCC_COMPILER}g++

运行 build-linux.sh 脚本

bash ./build-linux.sh -t rk3576 -a aarch64 -d yolov5

编译完成后,会在 rknn_model_zoo 目录下产生 install 文件夹, 其中有编译好的可执行文件,以及测试图

片等相关文件。

将 rknn_yolov5_demo 文件夹推送到板端并执行其中的rknn_yolov5_demo可执行文件:

# 进入 rknn_yolov5_demo 目录
cd /userdata/rknn_yolov5_demo/
# 设置依赖库环境
export LD_LIBRARY_PATH=./lib
# 运行可执行文件
# 用法: ./rknn_yolov5_demo <model_path> <input_path>
./rknn_yolov5_demo model/yolov5s_relu.rknn model/bus.jpg

输出结果如下:

将输出图片传输至PC端进行查看:

更多回帖

发帖
×
20
完善资料,
赚取积分