当前位置: 首页 > news >正文

yolov11、yolov8部署的7种方法(yolov11、yolov8部署rknn的7种方法),一天一种部署方法,7天入门部署

  由于涉及量化、部署两个领域,本博文难免有不对之处,欢迎指正。

  本博客对 yolov11(yolov8)尝试了7种不同的部署方法,在最基础的模型上一步一步的去掉解码相关的操作(移到后处理种进行),直到不能再删减,保留到模型最本质的部分。

  随着解码相关的操作越来越多的移入后处理,模型的推理的时耗在减少,后处理的时耗在增加;但也随着解码操作从模型种移除,量化的效果也在逐步变好。

  对每种方法的优势进行了简单总结,不同的平台、不同的时耗或CPU占用需求,总有一种方法是适用的。当然对想了解部署的也是一个很好的参考学习资料。

  春节期间一天一种部署方法,这个春节收获满满。

  yolov11的7种部署方法代码链接

  本博客种使用的板端芯片rk3588,模型yolov11n,模型输入分辨率640x640,检测类别80类。

0 七种方法汇总

编号推理时耗ms后处理时耗ms总时耗msCPU占用相比上一种方法int8量化友好性
第1种最少最简单不友好
第2种33.754.497238.2472同1不友好
第3种32.444.497136.4971增多不友好
第4种30.784.5535.33增多较友好
第5种30.754.8435.58增多,增加到最多较友好
第6种30.247.0837.32同5较友好
第7种30.177.3437.51同5友好

  若NPU负载不是瓶颈,当然可以考虑把多的操作放在NPU上,反之将操作往CPU上挪一部分;若量化掉点较多,则可以考虑量化稍微友好的方式。

1 代码目录结构

  yolov11的 7 种部署方法

yolov11_onnx  # onnx 推理脚本、模型、测试图片、测试效果图
yolov11_rknn  # 转并推理 rknn 脚本、模型、测试图片、测试效果图
yolov11_cpp   # 部署 rk388 完整 C++ 代码、模型、测试图片、测试效果图

2 yolov11(v8)的7种部署方法

2.1 第1种部署方法

模型结构

  按照yolov11官方导出的onnx模型,模型输出直接是类别和解码后的框,模型结构如下图。
在这里插入图片描述

onnx效果

  很遗憾的是转换成rknn的int8模型,检测不到任何结果。转换rknn的int8时把模型输出结果都打印出来发现,模型输出的84这个维度,前4个坐标框值正常,后80个得分输出全为0。导致这样的原因:坐标框值取值范围是1-640,而得分输出的值取值范围0-1,使得对量化很不友好,导致模型得分输出的值基本都为0。尝试转rknn的时不进行量化结果输出正常。因此该方法对量化不友好。这种部署方式模型时耗最长,后处理操作最少。
在这里插入图片描述

板端效果

  由于该种部署方法转rknn的int8时量化效果非常差,因此不做板端部署。

2.2 第2种部署方法

模型结构

  在第1种部署方法的模型基础上,去掉了最后的把坐标框和得分concat在一起的操作。
在这里插入图片描述

onnx效果

  onnx的测试效果和第一种一样,就不再贴图了。

板端效果

  第1种部署方法由于坐标框值取和得分的取值范围差异较大,concat在一起使得量化成int8模型基本不可用。这种方法是去掉了最后的concat,量化能正常输出结果,但在板端测试效果不是很好。
在这里插入图片描述

板端时耗

在这里插入图片描述

2.3 第3种部署方法

模型结构

  在第2种部署方法的模型基础上,去掉坐标框解码到模型输入尺寸的计算。
在这里插入图片描述

onnx效果

  onnx的测试效果和第一种一样,就不再贴图了。

板端效果

在这里插入图片描述

板端时耗

在这里插入图片描述

2.4 第4种部署方法

模型结构

  在第3种部署方法的模型基础上,继续去掉坐标框的DFL,输出2个头。第2、3两种部署方法,可能是对于量化不友好,导致检测效果明显有问题。该种方法检测效果没有明显问题。
在这里插入图片描述

onnx效果

  onnx的测试效果和第一种一样,就不再贴图了。

板端效果

在这里插入图片描述

板端时耗

在这里插入图片描述

2.5 第5种部署方法

模型结构

  在第4种署方法的模型基础上,继续去掉把坐标框和得分进行分开的split,以及得分的sigmoid函数,输出1个头。到达这一种部署方法后,后处理占用cpu不会在增加。
在这里插入图片描述

onnx效果

  onnx的测试效果和第一种一样,就不再贴图了。

板端效果

在这里插入图片描述

板端时耗在这里插入图片描述

2.6 第6种部署方法

模型结构

  在第5种署方法的模型基础上,继续把三个检测头concat在一起的操起去掉,输出3个头。

在这里插入图片描述

onnx效果

  onnx的测试效果和第一种一样,就不再贴图了。

板端效果

在这里插入图片描述

板端时耗

在这里插入图片描述

2.7 第7种部署方法

模型结构

  在第6种署方法的模型基础上,继续把三个检测头的坐标框和得分concat在一起的操起去掉,输出6个头。到这一步模型内封装的操作能去的都去了,模型的速度达到了最快,量化友好性达到了最好。

在这里插入图片描述

onnx效果

  onnx的测试效果和第一种一样,就不再贴图了。

板端效果

在这里插入图片描述

板端时耗

在这里插入图片描述

相关文章:

yolov11、yolov8部署的7种方法(yolov11、yolov8部署rknn的7种方法),一天一种部署方法,7天入门部署

由于涉及量化、部署两个领域,本博文难免有不对之处,欢迎指正。 本博客对 yolov11(yolov8)尝试了7种不同的部署方法,在最基础的模型上一步一步的去掉解码相关的操作(移到后处理种进行)&#xff0…...

【ArcGIS遇上Python】批量提取多波段影像至单个波段

本案例基于ArcGIS python,将landsat影像的7个波段影像数据,批量提取至单个波段。 相关阅读:【ArcGIS微课1000例】0141:提取多波段影像中的单个波段 文章目录 一、数据准备二、效果比对二、python批处理1. 编写python代码2. 运行代码一、数据准备 实验数据及完整的python位…...

Node.js MySQL:深度解析与最佳实践

Node.js MySQL:深度解析与最佳实践 引言 Node.js作为一种流行的JavaScript运行时环境,以其轻量级、高性能和事件驱动模型受到开发者的青睐。MySQL则是一款功能强大的关系型数据库管理系统,广泛应用于各种规模的应用程序中。本文将深入探讨Node.js与MySQL的集成,分析其优势…...

wordpress外贸独立站常用询盘软件

LiveChat LiveChat是一家提供实时聊天软件的公司,帮助企业通过其平台与客户进行即时通讯,提高客户满意度和忠诚度。他们的产品允许企业在网站、应用程序或电子邮件等多个渠道与客户互动,从而提升客户体验并促进销售增长。 LiveChat的软件特…...

Kotlin 委托详解

Kotlin 委托详解 引言 Kotlin 作为一种现代化的编程语言,在 Android 开发等领域得到了广泛的应用。在 Kotlin 中,委托(Delegation)是一种强大的特性,它可以让我们以更简洁的方式实现代码的复用和扩展。本文将详细解析…...

Cursor 简介:AI 如何改变编程体验

在软件开发领域,效率和质量始终是开发者们追求的目标。随着人工智能技术的飞速发展,编程工具也在不断进化,Cursor 便是这一趋势下的产物。它不仅仅是一个代码编辑器,更是一个集成了 AI 能力的智能编程助手,旨在通过 AI…...

Fiddler(一) - Fiddler简介_fiddler软件

文章目录 一、为什么选择Fiddler作为抓包工具? 二、什么是Fiddler?三、Fiddler使用界面简介四、延伸阅读 一、为什么选择Fiddler作为抓包工具? 抓包工具有很多,小到最常用的web调试工具firebug,大到通用性强大的抓包工具wireshark。为什么使用fid…...

实测数据处理(Wk算法处理)——SAR成像算法系列(十二)

系列文章目录 《SAR学习笔记-SAR成像算法系列(一)》 《wk算法-SAR成像算法系列(五)》 文章目录 前言 一、算法流程 1.1、回波信号生成 2.2 Stolt插值 2.3 距离脉冲压缩 2.4 方位脉冲压缩 2.5 SAR成像 二、仿真实验 2.1、仿真参数…...

P1775 石子合并(弱化版)

P1775 石子合并(弱化版) 题目描述 设有 N ( N ≤ 300 ) N(N \le 300) N(N≤300) 堆石子排成一排,其编号为 1 , 2 , 3 , ⋯ , N 1,2,3,\cdots,N 1,2,3,⋯,N。每堆石子有一定的质量 m i ( m i ≤ 1000 ) m_i\ (m_i \le 1000) mi​ (mi​≤…...

一文回顾讲解Java中的集合框架

这篇文章以提问的方式总结回顾下Java中常见的集合框架 Java中的集合框架可以分为两条大的支线:Collection和Map Collection,主要由List、Set、Queue组成; List是有序,可重复的集合,典型代表有封装了动态数组的ArrayList和封装了链…...

多模态论文笔记——NaViT

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文NaViT(Native Resolution ViT),将来自不同图像的多个patches打包成一个单一序列——称为Patch n’ Pack—…...

智能小区物业管理系统推动数字化转型与提升用户居住体验

内容概要 在当今快速发展的社会中,智能小区物业管理系统的出现正在改变传统的物业管理方式。这种系统不仅仅是一种工具,更是一种推动数字化转型的重要力量。它通过高效的技术手段,将物业管理与用户居住体验紧密结合,无疑为社区带…...

I2C基础知识

引言 这里祝大家新年快乐!前面我们介绍了串口通讯协议,现在我们继续来介绍另一种常见的简单的串行通讯方式——I2C通讯协议。 一、什么是I2C I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司在上个世纪80年代开发的&#…...

护眼好帮手:Windows显示器调节工具

在长时间使用电脑的过程中,显示器的亮度和色温对眼睛的舒适度有着重要影响。传统的显示器调节方式不仅操作繁琐,而且在低亮度下容易导致色彩失真。因此,今天我想为大家介绍一款适用于Windows系统的护眼工具,它可以帮助你轻松调节显…...

MongoDb user自定义 role 添加 action(collStats, EstimateDocumentCount)

使用 mongosh cd mongsh_bin_path mongosh “mongodb://user:passip:port/db”这样就直接进入了对应的db 直接输入: 这样 role “read_only_role" 就获得了3个 action, 分别是 查询,列举集合,集合元数据查询 P.S: 如果没有 …...

mysql学习笔记-数据库其他调优策略

1、如何定位调优问题 用户的反馈(主要) 日志分析(主要) 服务器资源使用监控 数据库内部状况监控 2、调优的维度和步骤 第1步:选择适合的 DBMS 第2步:优化表设计 第3步:优化逻辑查询 第4步&am…...

Office / WPS 公式、Mathtype 公式输入花体字、空心字

注:引文主要看注意事项。 1、Office / WPS 公式中字体转换 花体字 字体选择 “Eulid Math One” 空心字 字体选择 “Eulid Math Two” 使用空心字时,一般不用斜体,取消勾选 “斜体”。 2、Mathtype 公式输入花体字、空心字 2.1 直接输…...

(done) MIT6.S081 2023 学习笔记 (Day6: LAB5 COW Fork)

网页:https://pdos.csail.mit.edu/6.S081/2023/labs/cow.html 任务1:Implement copy-on-write fork(hard) (完成) 现实中的问题如下: xv6中的fork()系统调用会将父进程的用户空间内存全部复制到子进程中。如果父进程很大,复制过程…...

SYN Flooding的攻击原理

SYN Flooding是一种常见的网络攻击方式,属于拒绝服务攻击(DoS)的一种,其攻击原理主要是利用了TCP协议的三次握手过程,以下是具体介绍: TCP三次握手正常流程 第一次握手:客户端向服务器发送一个…...

MYSQL--一条SQL执行的流程,分析MYSQL的架构

文章目录 第一步建立连接第二部解析 SQL第三步执行 sql预处理优化阶段执行阶段索引下推 执行一条select 语句中间会发生什么? 这个是对 mysql 架构的深入理解。 select * from product where id 1;对于mysql的架构分层: mysql 架构分成了 Server 层和存储引擎层&a…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

管理学院权限管理系统开发总结

文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...