踩坑RV1106板端部署rknn模型

发布时间:2023年12月28日

1、交叉编译

官方给的一个流程: RKNN 模型推理测试为了避免踩坑在开头提出来

按照官方的流程可以跑通,他自己提供的yolov5s.rknn(640*640)的模型,但是跑自己的模型的时候加载就会出错E RKNN: failed to decode config data!Segmentation fault (core dumped),应该是这个地址的链接版本太老了,并且给出来的demo预处理也没有使用librga做硬件加速,直接跳过,官方也给出来了说这个github链接不在维护(https://github.com/rockchip-linux/rknpu2)
在这里插入图片描述

官方最新地址: rknn-toolkit2
所有实例程序就都在这里了
工具包库: rknn_model_zoo
下载下来
在这里插入图片描述

交叉编译需要先安装 LuckFox Pico SDK

git clone https://gitee.com/LuckfoxTECH/luckfox-pico.git
Pico SDK:https://github.com/LuckfoxTECH/luckfox-pico/

在 rknn_model_zoo目录下我们现在对这些例程进行交叉编译,编译例程前需要设置如下环境变量:

export RK_RV1106_TOOLCHAIN=<SDK目录>/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf

# 这个SDK目录目录就是你刚才Pico SDK放的地址

cmake要求必须大于3.15,不满足自行百度解决

chmod a+x ./build-linux.sh
./build-linux.sh -t rv1106 -a armv7l -d yolov5

-t : target (rk356x/rk3588/rv1106)
-a : arch (aarch64/armhf)
-d : demo name
-b : build_type(Debug/Release)
-m : enable address sanitizer, build_type need set to Debug

编译完成之后会在当前目录下生成一个install目录进入里面就可以找到编译出来的程序和库和模型文件
在这里插入图片描述

2、板上跑通

通过adb,将库和model下的文件文件都推上去
在这里插入图片描述在这里插入图片描述

# 跑通官方模型
./rknn_yolov5_demo ./model/exp415_best.onnx_sim_new1.rknn ./model/car_1012.jpg

# 通过adb将图片从板子上取出来
adb pull /root/yolov5/out.jpg .

可以看到没有任何问题,但是这就是最大的问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、验证自己模型

如果直接拿自己的模型不修改代码,直接推理,会出现这种报错,就是类别没有对上
在这里插入图片描述

从原本80修改成实际类别数,还有板上model目录下的coco_80_labels_list.txt文件也需要修改成你的类别名
在这里插入图片描述
进行推理

# 我的模型输出
model input height=224, width=384, channel=3

在这里插入图片描述

推理出来的结果就是这样子了
在这里插入图片描述
这个文件就是源码里面埋了很大一个坑,取反了,模型输入要求是NHWC,但是他将h取到w上面了,所以出现错乱,为什么官方自己的模型没问题推理是正常的,因为官方的是640*640,高宽尺寸是一致的,所以没有出现这个bug
在这里插入图片描述
修改之后再次验证正常了
在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_45715405/article/details/135262705
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。