CV Method:YOLOv10 vs YOLOv8

文章目录

  • 前言
  • 一、介绍
  • 二、YOLOv8 and YOLOv10 Comparison
    • 1.模型结构
      • YOLOv8:
      • YOLOv10:
    • 2. 推理和时延
    • 3. 检测表现
    • 4. 参数利用
    • 5. 关键比较
  • 总结


前言

YOLOv10已经开源一段时间了,经过我实际使用测试,也确实性能更好一些,YOLOv10基于v8代码框架改进,so 之前v8可用的大部分trick在v10上可直接代码移植过去(我自己尝试了下,大部分code不需要改动,直接实现装备继承)。本文主要比较一下v10 和 v8之间的区别和改进。


一、介绍

yolov10最重要的point就是它的 NMS-free 检测功能,我们知道NMS是检测发展中重要的一环,yolov10通过one-to-onehead实现了不需要NFS的检测模型,这可以有效提升模型的执行速度。此外提升性能的trick还有——
Key features as follow
1) 轻量分类head
2)空间-通道解藕下采样
3)rank-guided block design

二、YOLOv8 and YOLOv10 Comparison

1.模型结构

YOLOv8:

使用C2f模块完成多尺度特征交互,需要依赖NMS完成post process
请添加图片描述

YOLOv10:

neck部分采用简单的PAN模块,head部分使用两个一致的head,分别为One-to-many, 和 One-to-One。

One-to-many:在训练期间,多个预测框被分配给一个真实物体标签。这种策略提供了丰富的监督信号,优化效果更好。(此部分仍需使用NMS,比如取top100置信度的box)

One-to-One:仅一个预测框被分配给一个真实物体标签,避免了NMS,但由于监督信号较弱,容易导致收敛速度慢和性能欠佳。(该部分code实现中只需要取top1置信度的box即可(TAA分配算法中取top1),则不需要过NMS)

双头架构:模型在训练期间使用两个预测头,一个使用一对多分配,另一个使用一对一分配。这样,模型可以在训练期间利用一对多分配的丰富监督信号,而在推理期间则使用一对一分配的预测结果,从而实现无NMS的高效推理。

请添加图片描述
请添加图片描述

一致性度量: 为了在训练期间保持两个预测头的一致性,提出了一致匹配度量。通过调整匹配度量参数,使得一对一和一对多分配的监督信号一致,减少了训练期间的监督差距,提升了模型的预测质量。

整体优化:轻量级分类头和其他架构优化减少了计算冗余(such 使用depthwise & pointwise & 结构重参数化(类似repvgg)),另外一些很多结构化策略的设计还是很值得学习的,可以看看原文。

2. 推理和时延

请添加图片描述
在相同的COCO AP下,YOLOv10-S is 1.8× faster than RT-DETR-R18.

3. 检测表现

通过国外大佬的实际评测发现,V10在小目标检测上相比V8有着更好的效果在V8中,针对小目标检测,通常需要调整box置信度阈值。V10由于one-to-one特性,只需要使用较低的阈值即可。

4. 参数利用

YOLOv10-B 相比YOLOv9-C 降低了46%的latency, 和25%的参数量,且有着相同的性能。

5. 关键比较

Speed and Efficiency: YOLOv10 由于NMS-free方法在后处理速度上优于yolov8,更适合real-time检测。

Detection Accuracy: v8和v10检测精度都很不错,但v10在小目标上有着更直观的优势。

Parameter Optimization: YOLOv10 由于更多结构优化,其参数量相比v8更少,模型更紧凑。


总结

v10有效解决了YOLO系列一直以来的限制,比如NMS,小目标检测问题,确实是很大的启发。v10是基于v8框架进行修改的,v8的框架确实很强大,同样很值得学习!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

静态IP地址在网络安全中的角色解析与实测分析

在这个网络边界日益模糊的时代,每一次点击、每一次数据传输都有着安全问题。作为网络安全体系中的基石,静态IP地址的角色显得尤为重要而复杂。今天,我们的测评团队将带您深入剖析静态IP地址在网络安全中的多重角色,并通过两家代理…

背单词工具(C++)

功能分析 生词本管理: 创建生词本文件:在构造函数中创建了“生词本.txt”“背词历史.log”“历史记录.txt”三个文件。添加单词:用户可以输入单词、词性和解释,将其添加到生词本中。查询所有单词:展示生词本中所有的单…

AWS免费层之后:了解和管理您的云服务成本

Amazon Web Services (AWS) 为新用户提供了12个月的免费层服务,这是许多人开始使用云服务的绝佳方式。但是,当这一年结束后,您的AWS使用会如何变化?我们九河云通过本文将探讨免费层结束后的AWS成本情况,以及如何有效管…

JavaScript(16)——定时器-间歇函数

开启定时器 setInterval(函数,间隔时间) 作用:每隔一段时间调用这个函数,时间单位是毫秒 例如:每一秒打印一个hello setInterval(function () { document.write(hello ) }, 1000) 注:如果是具名函数的话不能加小括号&#xf…

THC/THC.h: No such file or directory 问题原因及一系列解决方案

问题原因 出现THC/THC.h: No such file or directory 这个问题的原因主要是:pytorch在1.11版本之后,THC/THC.h就被移除了,所以出现这个问题的原因是因为pytorch版本太高的原因。所以,解决这个问题一个最直观的方法就是降版本&…

面试题:简单介绍一下快速失败和安全失败。简单介绍一下快速失败和安全失败和集合类的关联。

一. 简单介绍一下快速失败和安全失败 Java 中的快速失败(Fast-fail)和安全失败(Safe-fail)是两种异常处理机制,它们在处理程序运行过程中出现的错误或异常时有所不同。 1. 快速失败(Fast-fail&#xff09…

【图像标签转换】XML转为TXT图像数据集标签

引言 该脚本用于将包含对象标注的 XML 文件转换为 YOLO(You Only Look Once)对象检测格式的 TXT 文件。脚本读取 XML 文件,提取对象信息,规范化边界框坐标,并将数据写入相应的 TXT 文件。此外,它还生成一个…

做视频混剪都是去哪里找高清素材的?分享10个高清视频素材库

提升视频混剪质感的10个高清素材库推荐 在这个视觉体验至上的时代,视频的视觉质量对吸引观众至关重要。如果你正在寻找高清素材以提升视频混剪作品的层次,那么你来对地方了。今天,我将为你揭秘10个视频混剪达人常用的高清素材库,…

ABAP:成本中心计划批量KP06导入BAPI

KP06需要传入成本要素,这里就比较麻烦,目前找了很多BAPI都没有合适的,经过两天的查找资料才找到,下面详细见代码:一个批量导入程序: *&---------------------------------------------------------------------* *& 包含 *&----------------…

Kylin Cube资源使用限制:优化大数据查询性能的策略

Kylin Cube资源使用限制:优化大数据查询性能的策略 Apache Kylin作为一个高效的大数据分析平台,其核心功能之一是构建Cube来预计算和存储多维数据集。随着数据量的增长,合理地管理和限制Cube的资源使用变得尤为重要。本文将探讨Kylin是否支持…

学习笔记-系统框图传递函数公式推导

目录 *待了解 现代控制理论和自动控制理论区别 自动控制系统的组成 信号流图 1、系统框图 1.1、信号线、分支点、相加点 1.2、系统各环节间的连接 1.3、 相加点和分支点的等效移动(比较点、引出点) 2、反馈连接公式推导 2.1、前向通路传递函数…

YOLO训练触发早停

YOLO训练触发早停 日志: Stopping training early as no improvement observed in last 100 epochs. Best results observed at epoch 0, best model saved as best.pt. To update EarlyStopping(patience100) pass a new patience value, i.e. python train.py -…

斐波那契数列(Fibonacci)数列 c++详解

Fibonacci数列是一个在数学和计算机科学中非常著名的数列。这个数列以其特殊的递推关系而闻名,也因其在自然界中的多次出现而引人注目。 定义: Fibonacci数列的定义如下: F(0) 0F(1) 1对于 n > 1,F(n) F(n-1) F(n-2) 也就…

robotframework语法易错点总结(更新中...)

1.列表使用还是$ 1、若想把列表用Set Global Variable设置全局变量时,必须用,当使$设置全局变量时为字符串。 Set Global Variable ${name} Jack Set Global Variable {animals} cat monkey duck dog 2、使用FOR循环遍历列表…

Windows:批处理脚本学习

目录 一、第一个批处理文件 1. &&和 | | 2. | 和 & 二、变量 1.传参变量%name 2.初始化变量set命令 3.变量的使用 4.局部变量与全局变量 5.使用环境变量 6.扩充变量语法 三、注释REM和 :: 四:函数 1.定义函数 2.…

力扣984.不含AAA或BBB的字符串

力扣984.不含AAA或BBB的字符串 贪心 如下 class Solution {public:string strWithout3a3b(int a, int b) {string res;while(a > b && b > 0){res "aab";a--,a--;b--;}while(b > a && a > 0){res "bba";b--,b--;a--;}whi…

js 习题 1

文章目录 前言T1T2T3T4T5T6T7T8T9结语 前言 『最孤独的人最亲切,受过伤的人总是笑的最灿烂。』—— 「素媛」 T1 let buf""; process.stdin.on("readable",function(){let chunkprocess.stdin.read();if(chunk){bufchunk.toString();} });pr…

Python3网络爬虫开发实战(2)爬虫基础库

文章目录 一、urllib1. urlparse 实现 URL 的识别和分段2. urlunparse 用于构造 URL3. urljoin 用于两个链接的拼接4. urlencode 将 params 字典序列化为 params 字符串5. parse_qs 和 parse_qsl 用于将 params 字符串反序列化为 params 字典或列表6. quote 和 unquote 对 URL的…

GIS前沿技术

无论是初步接触到GIS的学生,还是对GIS已经有一定的了解的从业者,肯定都非常关心两个问题:GIS有没有发展前景,GIS有哪些应用价值? 关于这两个问题,笔者的答案是GIS作为一门融合了空间数据采集、存储、处理、…

【数据结构】堆,优先级队列

目录 堆堆的性质大根堆的模拟实现接口实现构造方法建堆入堆判满删除判空获取堆顶元素 Java中的PriorityQueue实现的接口构造方法常用方法PriorityQueue注意事项 练习 堆 如果有一个集合K {k0,k1, k2,…,kn-1},把它的…