环境
- ubuntu 18.04 64位
- python 3.6
- rockchip 1808开发板
前言
本篇我们来看看,如何在 RK1808
开发板上运行 YOLOv5 目标检测。基本思路是,yolov5
–> ONNX
–> rknn
,我们一步步来。
实践
官方工程 https://github.com/rockchip-linux/rknpu 从 rknn-toolkit
1.7.0 版本后增加了对 yolov5
的支持,所以,在虚拟环境中,我们需要将 rknn
升级到 1.7.0 以上版本。
首先从 github
上下载安装包 https://github.com/rockchip-linux/rknn-toolkit/releases/tag/v1.7.0,选择其中的 zip
包,解压缩后得到 whl
文件,通过 pip install
安装即可,注意保持 python
版本和你使用的一致
pip install rknn_toolkit-1.7.0-cp36-cp36m-linux_x86_64.whl
然后,下载 rknpu
的源码
git clone https://github.com/rockchip-linux/rknpu.git
进入到 yolov5
的示例目录
cd rknpu/rknn/rknn_api/examples/rknn_yolov5_demo
# 安装下工具链,默认安装路径是/usr/bin;或者不用安装直接使用rknn源码包中的工具链
sudo apt install gcc-aarch64-linux-gnu
接着,修改下 build.sh
,将变量 GCC_COMPILER
的值替换成自己的目录 /usr/bin/aarch64-linux-gnu
;如果是使用 rknn
源码中自带的工具链,就改成对应的路径
完成后,执行
./build.sh
这个脚本会将编译后生成的可执行文件、测试图片和模型文件都拷贝到目录 install
中,我们将开发板通过 usb
线连接电脑,然后将 install
文件夹发送到开发板中
adb push install /userdata
接着进入到开发板测试
adb shell
cd /userdata/rknn_yolov5_demo
./run_rk180x.sh
测试的结果保存在 out.bmp
中,需要下载到本机的,可以在电脑端执行
adb pull /userdata/rknn_yolov5_demo/out.bmp .
这个示例中,使用的是原生的模型(yolov5s.pt
),通过 export.py
转换成 onnx
,最后再转换成 rknn
前一部分,pt
转 onnx
,可以参考之前的文章 https://xugaoxiang.com/2021/02/02/android-ncnn-yolov5/ 进行转换;后一部分,仓库中为我们提供了转换脚本
cd convert_rknn_demo/yolov5/
python onnx2rknn.py