RKNN demo运行

导出 RKNN 模型

下载 rknn_model_zoo

git clone ``git@gitcode.com``:qq_36813351/rknn_model_zoo.git

这个项目就是RKNN代码的Demo完全好使,一点问题都没有:

获取 Yolov5 ONNX模型文件

bash 复制代码
cd <rknn_model_zoo Path>/rknn_model_zoo/examples/yolov5/model 
chmod a+x download_model.sh
./download_model.sh

执行 rknn_model_zoo/examples/yolov5/python 目录下的模型转换程序 convert.py,使用方法:

bash 复制代码
conda activate RKNN-Toolkit2
cd <rknn_model_zoo Path>/rknn_model_zoo/examples/yolov5/python
python3 convert.py ../model/yolov5s.onnx rv1106
# output model will be saved as ../model/yolov5.rknn
bash 复制代码
python3 convert.py <onnx_model> <TARGET_PLATFORM> <dtype(optional)> <output_rknn_path(optional)>

参数介绍:

  • <onnx_model>:ONNX 模型路径。

  • <TARGET_PLATFORM>:指定NPU平台名称。例如"rv1106"。

  • <quant_dtype> :可选项,可以指定为i8或fp。i8表示进行量化,fp表示不量化,默认为i8。

  • <output_rknn_path>:可选项,用于指定 RKNN 模型的保存路径,默认保存在 ONNX 模型同一目录下,名称为 'yolov5.rknn'

python3 convert.py ../model/yolov5s.onnx rv1106

这个是错的,因为下载的模型叫:yolov5s_relu.onnx

python3 convert.py ../model/yolov5s_relu.onnx rv1106

编译和构建

成功将 ONNX 模型转换成 RKNN 模型后,现在对 rknn_model_zoo/examples/yolov5 目录下的例程进行交叉编译,编译例程前需要设置如下环境变量:

bash 复制代码
export GCC_COMPILER=<SDK目录>/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf

执行 rknn_model_zoo 目录下的 build-linux.sh 脚本。该脚本将编译例程:

bash 复制代码
chmod +x ./build-linux.sh
./build-linux.sh -t rv1106 -a armv7l -d yolov5
bash 复制代码
(RKNN-Toolkit2) luckfox@luckfox:~/rknn_model_zoo$ ./build-linux.sh -t rv1106 -a armv7l -d yolov5

交叉编译完成后在 rknn_model_zoo 目录下会生成一个 install 目录,包含编译出来的程序和库文件。

bash 复制代码
(RKNN-Toolkit2) luckfox@luckfox:~/rknn_model_zoo/install/rv1106_linux_armv7l/rknn_yolov5_demo$ ls
lib  model  rknn_yolov5_demo

运行程序

先将整个 rknn_yolov5_demo 目录传输至开发板,然后执行下面指令运行程序:

bash 复制代码
cd /root/rknn_yolov5_demo/
./rknn_yolov5_demo model/yolov5.rknn model/bus.jpg

重点:rknn_yolov5_demo 是文件夹!!!!

推理完成后生成图片 out.png

bash 复制代码
# ls
lib               model             out.png           rknn_yolov5_demo

因为代码里把库的路径写死了!!!!!!!!

set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")

是当前运行文件的./lib文件夹!

相关推荐
云梦谭12 分钟前
让 Linux 主动连接 Windows:配置 Windows 11 SSH 服务端
linux·windows·ssh
刚入门的大一新生21 分钟前
Linux-信号
linux·运维·服务器
GeW5 小时前
新质生产力路线图解读:数据库性能优化与Linux调优专场
linux
mounter6255 小时前
深入理解 gccrs:GCC 如何实现 Rust 编译器,以及编译 Linux 内核面临的挑战
linux·驱动开发·rust
垚垚学技术_聚焦云原生5 小时前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
无足鸟ICT6 小时前
【RHCA+】type命令(判断命令类型)
linux·ssh·bash
咸鱼梦想家π6 小时前
Linux开发工具(下)
linux·运维·服务器
LHICOD6 小时前
Linux-1
linux·ip·vmware·虚拟机·cmd·ping
丰锋ff8 小时前
用户管理命令
linux·运维·服务器
刚入门的大一新生9 小时前
Linux-线程概念
linux·jvm