yolov11 部署瑞芯微rk3588、RKNN部署工程难度小、模型推理速度快

news/2024/10/7 15:08:59/

   yolov8还没玩溜,yolov11又来了,那么部署也又来了。

特别说明:如有侵权告知删除,谢谢。

完整代码:包括onnx转rknn和测试代码、rknn板端部署C++代码
【onnx转rknn和测试代码】
【rknn板端部署C++代码】

1 模型训练

  yolov11训练官方开源的已经非常详细了,参考官方代码。

2 导出 yolov11 onnx

   导出onnx修改以下几处。
第一处:修改导出onnx的检测头
在这里插入图片描述

        # 导出 onnx 增加y = []for i in range(self.nl):t1 = self.cv2[i](x[i])t2 = self.cv3[i](x[i])y.append(t1)y.append(t2)return y

第二处:增加保存onnx代码
在这里插入图片描述

        print("===========  onnx =========== ")import torchdummy_input = torch.randn(1, 3, 640, 640)input_names = ["data"]output_names = ["reg1", "cls1", "reg2", "cls2", "reg3", "cls3"]torch.onnx.export(self.model, dummy_input, "/root/zhangqian/ultralytics-main/yolov11n_80class_ZQ.onnx",verbose=False, input_names=input_names, output_names=output_names, opset_version=11)print("======================== convert onnx Finished! .... ")

修改完以上两处,运行以下代码:

from ultralytics import YOLO
model = YOLO(model='yolov11n.pt')  # load a pretrained model (recommended for training)
results = model(task='detect', source='./test.jpg', save=True)  # predict on an image

特别说明: 修改完以上两处后运行会报错,但不影响onnx的生成;生成onnx后强烈建议用from onnxsim import simplify 处理一下再转rknn。

3 测试onnx效果

pytorch效果
在这里插入图片描述
onnx效果(测试onnx代码链接)
在这里插入图片描述

4 onnx转rknn

onnx转rknn代码链接

转rknn后仿真结果
在这里插入图片描述

5 rk3588板子测试yolov11模型

使用的 rknn_toolkit 版本:rknn_toolkit2-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
C++代码中的库和工具链的版本注意对应适配。

1)编译

cd examples/rknn_yolov11_demo_dfl_openbash build-linux_RK3588.sh

2)运行

cd install/rknn_yolo_demo_Linux./rknn_yolo_demo 

注意:修改模型、测试图像、保存图像的路径,修改文件为src下的main.cc


int main(int argc, char **argv)
{char model_path[256] = "/home/zhangqian/rknn/examples/rknn_yolov11_demo_dfl_open/model/RK3588/yolov11n_80class_ZQ.rknn";char image_path[256] = "/home/zhangqian/rknn/examples/rknn_yolov11_demo_dfl_open/test.jpg";char save_image_path[256] = "/home/zhangqian/rknn/examples/rknn_yolov11_demo_dfl_open/test_result.jpg";detect(model_path, image_path, save_image_path);return 0;
}

3)板端效果和时耗

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/1535747.html

相关文章

Acwing 数位统计DP

Acwing 338.计数问题 输入样例: 1 10 44 497 346 542 1199 1748 1496 1403 1004 503 1714 190 1317 854 1976 494 1001 1960 0 0 输出样例: 1 2 1 1 1 1 1 1 1 1 85 185 185 185 190 96 96 96 95 93 40 40 40 93 136 82 40 40 40 40 115 666 215 215 214…

系统设计,如何设计一个秒杀功能

需要解决的问题 瞬时流量的承接防止超卖预防黑产避免对正常服务的影响兜底方法 前端设计 利用 CDN 缓存静态资源,减轻服务器的压力在前端随机限流按钮防抖,防止用户重复点击 后端设计 Nginx 做统一接入,进行负载均衡与限流用 sentinel 等…

Android15车载音频之Virtualbox中QACT实时调试(八十八)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…

设计模式之装饰器模式(Decorator)

一、装饰器模式介绍 装饰模式(decorator pattern) 的原始定义是:动态的给一个对象添加一些额外的职责。 就扩展功能而言,装饰器模式提供了一种比使用子类更加灵活的替代方案。 在软件设计中,装饰器模式是一种用于替代继承的技术,它…

【信息系统项目管理师考题预测】合同管理

信息系统项目合同管理是项目管理中的重要环节,其常考题目通常涉及合同管理的各个方面,包括合同的订立、履行、变更、终止以及违约索赔管理等。 一、选择题 以下哪项不属于合同管理的范畴? A. 合同的订立 B. 回答潜在卖方的问题 C. 合同的履行 D. 合同的变更 解析:B。回答潜…

C++ list 容器类的模拟实现

前言: 我们不仅仅要熟悉使用c标准库中的 list 容器,我们更要学习了解标准库是如何将 list 容器实现出来的,这就是我们常说的知其然也要知其所以然,学习源码中优秀的部分,将 list 容器进行模拟实现出来,使得…

C++ 泛型编程指南 类模板,类型推断,特化,别名模板

文章目录 [TOC]1.声明一个类模板2.模板类成员函数实现3. 使用 Stack 类模板 4.部分使用类模板5.模板类的特例化6. 模板类的偏特化6.1 区分偏特化和全特化6.1.1 偏特化6.1.2 全特化 6.2 偏特化 例子6.2.1 指针类型偏特化6.2.2 多个参数的偏特化 解释:6.3 偏特化匹配歧…

解决CentOS 7 yum install 出现 No such file or directory 错误的方案

CentOS 7 yum install之后 出现No such file or directory错误的解决方案: [rootcentos7 ~]# yum install -y git File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid syntax [rootcentos7 ~]# yum -bash: /usr/bin/yum:…