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

embedded/2024/10/18 10:17:08/

   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/embedded/124126.html

相关文章

从0到1:企事业单位知识竞赛答题小程序迭代开发笔记一

背景调研 企事业单位知识竞赛答题小程序,在信息技术迅猛发展的时代,企业和事业单位在提升员工素质和知识水平方面面临着新的挑战。为了增强员工的学习积极性、提高团队凝聚力和整体素质,越来越多的单位开始组织知识竞赛活动。传统的知识竞赛…

R语言绘制面积图

面积图是一种数据可视化图表。它通过填充区域来展示数据随某个变量(如时间)的变化趋势及累积效果。面积图能清晰地呈现数据的上升、下降和波动情况,直观反映数据的大小关系。适用于多种领域,如经济数据分析展示 GDP 变化及产业贡献…

OpenCV-OCR

文章目录 一、OCR技术的基本原理二、OpenCV在OCR识别中的应用1.图像预处理2.文字区域检测3.OCR识别:4.后处理: 三、OCR识别示例代码四、注意事项 OpenCV-OCR主要涉及使用OpenCV库进行光学字符识别(OCR)的技术。OCR技术可以识别图像…

Exams/ece241 2014 q4

Given the finite state machine circuit as shown, assume that the D flip-flops are initially reset to zero before the machine begins. Build this circuit. 错误代码: module top_module (input clk,input x,output z ); reg q1,q2,q3;initial beginq1 0…

Java使用RabbitMQ的详细教程(原生框架)

RabbitMQ是一个实现了高级消息队列协议(AMQP)的开源消息代理软件,它使用Erlang编程语言编写,具有高并发、分布式、可靠性强等特点,非常适合用于构建分布式消息中间件。Java可以通过RabbitMQ的客户端库与其进行通信&…

CSP-J模拟赛三补题报告

前言 挂了110pts( ⇑ \Uparrow ⇑ \hspace{14em} 有史以来最大傻逼 T1: 100 p t s \color{green}100pts 100pts T2: 100 p t s → 80 p t s \color{green}100pts\color{yellow}\rightarrow\color{red}80pts 100pts→80pts T3: 100 p t s → 10 p t s \color{gre…

wordpress Contact form 7发件人邮箱设置

此教程仅适用于演示站有留言的主题,演示站没有留言的主题,就别往下看了,免费浪费时间。 使用了Contact form 7插件的简站WordPress主题,在有人留言时,就会发邮件到网站的系统邮箱(一般与管理员邮箱为同一个)里。上面显…

iOS 18.1 將於 2024 年 10 月 28 日發布,並包含 Apple Intelligence 功能

在 9 月的活動中,Apple 發布了 iPhone 16 系列,Apple Intelligence 成為焦點功能。然而,最新的 iPhone 系列並未內建 Apple Intelligence 功能,這一點受到分析師和粉絲的廣泛批評。Apple 在活動中透露,Apple Intellige…