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> :可选项,可以指定为i8fpi8表示进行量化,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文件夹!

相关推荐
lolo大魔王8 小时前
Linux 文件系统超全面详解(原理、结构、挂载、分区、inode、日志、管理命令)
linux·运维·服务器
磊 子9 小时前
详细讲解一下epoll
linux·io·epoll·io多路复用
printfLILEI10 小时前
php中的类与对象以及反序列化
linux·开发语言·php
叠叠乐11 小时前
redmi k90 pro max 强解BL,刷海外rom, 并刷入sukisu ultra
linux
xiaoye-duck12 小时前
《Linux系统编程》Linux 进程间通信之管道基础解析:从匿名管道原理到基于管道的进程池实现
linux
z2005093012 小时前
【Linux学习】Linux中的进程程序替换
linux·服务器·学习
bush413 小时前
嵌入式linux学习记录四
linux·运维·学习
lihao lihao14 小时前
软硬链接
linux·运维·服务器
YY&DS14 小时前
Qt 嵌入 CEF 在 Linux 下必须设置 `QT_XCB_GL_INTEGRATION=xcb_egl才能加载网页
linux·开发语言·qt