yolov11、yolov8部署的7种方法(yolov11、yolov8部署rknn的7种方法),一天一种部署方法,7天入门部署
由于涉及量化、部署两个领域,本博文难免有不对之处,欢迎指正。
本博客对 yolov11(yolov8)尝试了7种不同的部署方法,在最基础的模型上一步一步的去掉解码相关的操作(移到后处理种进行),直到不能再删减,保留到模型最本质的部分。
随着解码相关的操作越来越多的移入后处理,模型的推理的时耗在减少,后处理的时耗在增加;但也随着解码操作从模型种移除,量化的效果也在逐步变好。
对每种方法的优势进行了简单总结,不同的平台、不同的时耗或CPU占用需求,总有一种方法是适用的。当然对想了解部署的也是一个很好的参考学习资料。
春节期间一天一种部署方法,这个春节收获满满。
yolov11的7种部署方法代码链接
本博客种使用的板端芯片rk3588,模型yolov11n,模型输入分辨率640x640,检测类别80类。
0 七种方法汇总
编号 | 推理时耗ms | 后处理时耗ms | 总时耗ms | CPU占用相比上一种方法 | int8量化友好性 |
---|---|---|---|---|---|
第1种 | – | – | 最少 | 最简单 | 不友好 |
第2种 | 33.75 | 4.4972 | 38.2472 | 同1 | 不友好 |
第3种 | 32.44 | 4.4971 | 36.4971 | 增多 | 不友好 |
第4种 | 30.78 | 4.55 | 35.33 | 增多 | 较友好 |
第5种 | 30.75 | 4.84 | 35.58 | 增多,增加到最多 | 较友好 |
第6种 | 30.24 | 7.08 | 37.32 | 同5 | 较友好 |
第7种 | 30.17 | 7.34 | 37.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种不同的部署方法,在最基础的模型上一步一步的去掉解码相关的操作(移到后处理种进行)࿰…...

【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 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...