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文件夹!

相关推荐
草莓熊Lotso2 小时前
Linux 线程深度剖析:线程 ID 本质、地址空间布局与 pthread 源码全解
android·linux·运维·服务器·数据库·c++
殇者知忧2 小时前
Tmux快速上手
linux·tmux
草莓熊Lotso3 小时前
MySQL 从入门到实战:视图特性 + 用户权限管理全解
linux·运维·服务器·数据库·c++·mysql
雾岛听蓝3 小时前
进程信号机制深度解析
linux·开发语言·经验分享·笔记
菜菜艾11 小时前
基于llama.cpp部署私有大模型
linux·运维·服务器·人工智能·ai·云计算·ai编程
重生的黑客11 小时前
Linux开发工具:条件编译、动静态库与 make/makefile 入门
linux·运维·服务器
minji...12 小时前
Linux 线程同步与互斥(三) 生产者消费者模型,基于阻塞队列的生产者消费者模型的代码实现
linux·运维·服务器·开发语言·网络·c++·算法
w61001046612 小时前
cka-2026-ConfigMap
java·linux·cka·configmap
cc_yy_zh13 小时前
Win10 家庭版找不到Device Guard; 无法处理 VMware Workstation与Device Guard不兼容问题
linux·vmware