YOLOv10 简介

YOLOv10,由清华大学的研究人员基于 Ultralytics Python 包构建,引入了一种全新的实时目标检测方法,该方法解决了以往 YOLO 版本中后处理和模型架构方面的不足。通过消除非极大值抑制(NMS)并优化各种模型组件,YOLOv10 在显著降低计算开销的同时,达到了最先进的性能水平。广泛的实验证明了其在多个模型规模下,在准确性与延迟之间的卓越权衡能力。

 一、概述

实时目标检测旨在以低延迟准确预测图像中的物体类别和位置。YOLO 系列因其性能与效率的平衡而一直处于该研究领域的前沿。然而,对 NMS(非极大值抑制)的依赖以及架构上的低效性阻碍了其达到最佳性能。YOLOv10 通过引入针对无 NMS 训练的一致双重分配策略以及全面的效率-精度驱动模型设计策略,解决了这些问题。

二、架构

YOLOv10 的架构在继承以往 YOLO 模型优势的基础上,引入了多项关键创新。模型架构由以下组件构成:

  • 主干网络(Backbone):负责特征提取,YOLOv10 采用增强的 CSPNet(跨阶段部分网络)版本,以改善梯度流动并减少计算冗余。
  • 颈部(Neck):设计用于聚合不同尺度的特征并将其传递给头部。它包括 PAN(路径聚合网络)层,以实现有效的多尺度特征融合。
  • 一对多头部(One-to-Many Head):在训练过程中为每个物体生成多个预测,以提供丰富的监督信号并提高学习准确性。
  • 一对一头部(One-to-One Head):在推理过程中为每个物体生成单个最佳预测,从而消除对NMS的需求,减少延迟并提高效率。

三、关键特性

  • 无 NMS 训练:利用一致双重分配策略消除对 NMS 的需求,降低推理延迟。
  • 整体模型设计:从效率和精度两个角度对各个组件进行全面优化,包括轻量级分类头部、空间-通道解耦下采样以及基于排名的块设计。
  • 增强的模型能力:融入大核卷积和部分自注意力模块,以不显著增加计算成本的方式提升性能。

四、模型变体

YOLOv10提供多种模型规模,以满足不同的应用需求:

  • YOLOv10-N:纳米版,专为资源极度受限的环境设计。
  • YOLOv10-S:小型版,在速度和准确性之间取得平衡。
  • YOLOv10-M:中型版,适用于通用用途。
  • YOLOv10-B:平衡版,通过增加宽度来提高准确性。
  • YOLOv10-L:大型版,以增加计算资源为代价,换取更高的准确性。
  • YOLOv10-X:超大型版,追求最高准确度和性能。

五、性能

YOLOv10 在准确性和效率方面均超越了以往的 YOLO 版本以及其他最先进的模型。例如,在COCO 数据集上,YOLOv10-S 在达到与 RT-DETR-R18 相似平均精度(AP)的同时,速度是其 1.8 倍;而 YOLOv10-B 在保持与 YOLOv9-C 相同性能的情况下,延迟降低了 46%,参数减少了 25%。

ModelInput SizeAPvalFLOPs (G)Latency (ms)
YOLOv10-N64038.56.71.84
YOLOv10-S64046.321.62.49
YOLOv10-M64051.159.14.74
YOLOv10-B64052.592.05.74
YOLOv10-L64053.2120.37.28
YOLOv10-X64054.4160.410.70

延迟是在 T4 GPU 上使用 TensorRT FP16 测量的。

1. 实验与结果

YOLOv10 已在 COCO 等标准基准测试集上进行了广泛测试,展示了卓越的性能和效率。该模型在不同变体上均取得了最先进的成果,与以往版本和其他当代检测器相比,在延迟和准确性方面均实现了显著提升。

2.对比

3.与其他最先进的检测器相比
  • YOLOv10-S / X 在相似精度下,分别比 RT-DETR-R18 / R101 快 1.8 倍 / 1.3 倍。
  • YOLOv10-B 在相同精度下,比 YOLOv9-C 的参数少 25%,延迟低 46%。
  • YOLOv10-L / X 在参数比 YOLOv8-L / X 少 1.8 倍 / 2.3 倍的情况下,平均精度(AP)高出0.3 / 0.5。
ModelParams
(M)
FLOPs
(G)
mAPval
50-95
Latency
(ms)
Latency-forward
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8-N3.28.737.36.161.77
YOLOv9t2.07.738.3
YOLOv10-N2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8-S11.228.644.97.072.33
YOLOv9s7.226.746.8
YOLOv10-S7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8-M25.978.950.69.505.09
YOLOv9m20.176.851.4
YOLOv10-M15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8-L43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv9c25.5102.853.0
YOLOv10-L24.4120.353.47.287.21
YOLOv8-X68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv9e58.1192.555.6
YOLOv10-X29.5160.454.410.7010.60

六、使用示例

1.使用 YOLOv10 预测新图像:
  • 命令行:

# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
        yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

  • Python 编程:
from ultralytics import YOLO# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")# Perform object detection on an image
results = model("image.jpg")# Display the results
results[0].show()
2.在自定义数据集上训练 YOLOv10
  • 命令行:

        # Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
        yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

        # Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
        yolo predict model=yolov10n.yaml source=path/to/bus.jpg

  • Python 编程:
from ultralytics import YOLO# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)

七、结论

YOLOv10 通过解决之前 YOLO 版本的不足并融入创新的设计策略,在实时目标检测领域树立了新的标准。它以低计算成本实现高准确度的能力,使其成为众多实际应用场景中的理想选择。

                                                                                 老徐,2024/9/21

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

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

相关文章

【解决】chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标

chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标 今天打开电脑的时候,网页中任何文本的地方,只要鼠标点击,就会出现一个输入的光标,无论在哪个站点哪个页面都是如此。 我知道…

十四、运算放大电路

运算放大电路 1、理想运算放大器的概念。运放的输入端虚拟短路、虚拟断路之间的区别; 2、反相输入方式的运放电路的主要用途,以及输入电压与输出电压信号的相位 3、同相输入方式下的增益表达式(输入阻抗、输出阻抗)

Redis-01 入门和十大数据类型

Redis支持两种持久化方式:RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上,可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照,可以通过恢复RDB文件来恢复数据。 2.AOF持久化…

55. QTableWidget的基本使用

1. 说明 在软件界面开发中,基本上离不开数据的展示以供客户查看一些比较关注的信息,比如公司做一个员工个人信息管理系统,需要一个界面能够展示员工个人基本信息,实现这种效果可以采用多种形式,其中比较简单的一种是使用QT提供的QTableWidget控件,这个控件已经封装了一些…

LeetCode 面试经典150题 190.颠倒二进制位

复习知识:正数的原码、反码、补码相同,负数的反码在其原码的基础上, 符号位不变,其余各个位取反,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后1 (即在反码的基础上1)。 题目:颠倒给定的 32 位无符号…

Springboot3 + MyBatis-Plus + MySql + Uniapp 商品加入购物车功能实现(最新教程附源码)

Springboot3 MyBatis-Plus MySql Uniapp 商品加入购物车功能实现(针对上一篇sku) 1、效果展示2、后端代码2.1 model2.2 mapper server serverImpl 参照上一篇自动生成2.3 controller 3、前端代码3.1 index.js3.2 shop-info.vue3.3 ShopBottomButton.v…

计算机毕业设计hadoop+spark+hive新能源汽车销售数据分析系统 二手车销量分析 新能源汽车推荐系统 可视化大屏 汽车爬虫 机器学习

《HadoopSparkHive新能源汽车销售数据分析系统》开题报告 一、选题背景与意义 1.1 选题背景 随着全球对环境保护意识的增强和能源结构的转型,新能源汽车市场迅速崛起。新能源汽车的销售数据不仅反映了市场趋势和消费者偏好,还为企业决策、政府监管和政…

【玉米田】

题目 代码 #include <bits/stdc.h> using namespace std; typedef long long LL;const int mod 1e8; const int M 1 << 12; LL f[13][M]; int g[13]; vector<int> state; vector<int> p[M]; int n, m; bool check(int x) {return !(x & x <&…

“一屏显江山”,激光显示重构「屏中世界」

【潮汐商业评论/原创】 2024年国庆期间&#xff0c;曾感动过无数国人的舞蹈诗剧《只此青绿》改编的同名电影即将上映&#xff0c;而这一次观众们不必走进电影院&#xff0c;在家里打开官方合作的海信激光电视也能享受到同等的视听效果&#xff0c;这是激光电视在观影场景领域的…

java 获取集合a比集合b多出来的对象元素

public class OrderListEntity {/*** deprecated 对象集合的处理* param aData 集合a* param bData 集合b* return 返回集合a比集合b多出来的部分, 通过id判断*/public static List<OrderListEntity> AHasMoreThanBData(List<OrderListEntity> aData, List<Ord…

Stable Diffusion 使用详解(11)--- 场景ICON制作

目录 背景 controlNet 整体描述 Canny Lineart Depth 实际使用 AI绘制需求 绘制过程 PS打底 场景模型选择 设置提示词及绘制参数 controlnet 设置 canny 边缘 depth 深度 lineart 线稿 效果 背景 这段时间不知道为啥小伙伴似乎喜欢制作很符合自己场景的ICON。…

鸿蒙开发(HarmonyOS)组件化浅谈

众所周知&#xff0c;现在组件化在移动开发中是很常见的&#xff0c;那么组件化有哪些好处&#xff1a; 1. 提高代码复用性&#xff1a;组件化允许将应用程序的不同功能模块化&#xff0c;使得这些模块可以在不同的项目中重复使用&#xff0c;从而提高开发效率并减少重复工作。…

LabVIEW编程能力如何能突飞猛进

要想让LabVIEW编程能力实现突飞猛进&#xff0c;需要采取系统化的学习方法&#xff0c;并结合实际项目进行不断的实践。以下是一些提高LabVIEW编程能力的关键策略&#xff1a; 1. 扎实掌握基础 LabVIEW的编程本质与其他编程语言不同&#xff0c;它是基于图形化的编程方式&…

行业人工智能研究-Python自监督方式学习图像表示算法

学术界人工智能研究落后于工业界 摘要 行业或工业界在人工智能研究上超出学术界&#xff0c;并占据着大量的计算力&#xff0c;数据集和人才诱人的薪水和明朗的预期吸引大量人才离开学术界&#xff0c;涌入行业或工业界即使&#xff0c;比如Meta开源其人工智能模型&#xff0…

小程序地图展示poi帖子点击可跳转

小程序地图展示poi帖子点击可跳转 是类似于小红书地图功能的需求 缺点 一个帖子只能有一个点击事件&#xff0c;不适合太复杂的功能&#xff0c;因为一个markers只有一个回调回调中只有markerId可以使用。 需求介绍 页面有地图入口&#xff0c;点开可打开地图界面地图上展…

python:编写一个函数查找字符串中的最长公共前缀

最近在csdn网站上刷到一个题目&#xff0c;题目要求编写一个函数查找字符串中的最长公共前缀&#xff0c;题目如下&#xff1a; 给出的答案如下&#xff1a; from typing import List def longestCommonPrefix(strs:List[str]) -> str:if len(strs) 0:return i 0 #代…

2024/9/21 数学20题

常见概率可加性&#xff1a;

网络安全详解

目录 引言 一、网络安全概述 1.1 什么是网络安全 1.2 网络安全的重要性 二、网络安全面临的威胁 2.1 恶意软件&#xff08;Malware&#xff09; 2.2 网络钓鱼&#xff08;Phishing&#xff09; 2.3 中间人攻击&#xff08;Man-in-the-Middle Attack&#xff09; 2.4 拒…

Mac 搭建仓颉语言开发环境(Cangjie SDK)

文章目录 仓颉编程语言通用版本SDK Beta试用报名仓颉语言文档注册 GitCode登录 GitCode 下载 Cangjie SDK配置环境变量VSCode 插件VSCode 创建项目 仓颉编程语言通用版本SDK Beta试用报名 https://wj.qq.com/s2/14870499/c76f/ 仓颉语言文档 https://developer.huawei.com/c…

Redis——持久化策略

Redis持久化 Redis的读写操作都是在内存上&#xff0c;所以Redis性能高。 但是当重启的时候&#xff0c;或者因为特殊情况导致Redis崩了&#xff0c;就可能导致数据的丢失。 所以Redis采取了持久化的机制&#xff0c;重启的时候利用之间持久化的文件实现数据的恢复。 Redis提…