(12)YOLOv10算法基本原理

yolov--10--目标检测模型的参数评估指标详解、概念解析 Yolov-1-TX2上用YOLOv3训练自己数据集的流程(VOC2007-TX2-GPU) Yolov--2--一文全面了解深度学习性能优化加速引擎---TensorRT Yolov--3--TensorRT中yolov3性能优化加速(基于caffe) yolov-5-目标检测:YOLOv2算法原理详解 yolov--8--Tensorflow实现YOLO v3 yolov--9--Y... 阅读详情
AI摘要

本文介绍了清华大学开源的YOLOv10,包括不同型号以满足多样场景。阐述其主要贡献,如一致双重分配策略、一致匹配度量。指出YOLOv10针对的依赖NMS、计算冗余、小目标检测挑战等问题,介绍其改进点及效果,还回顾了往期YOLO相关教程。

一、YOLOv10的介绍

目前,由清华大学开源的最新的 YOLOv10,包括从n到x各种型号的模型,其中 YOLOv10n 最小,YOLOv10x 最大,以满足

不同应用场景。

二、YOLOv10的主要贡献

一致的双重分配策略(Consistent Dual Assignments):YOLOv10提出了一种新的训练策略,用于无需非极大值抑制(NMS)的YOLO训练。这种策略结合了一对一(one-to-one)和多对一(one-to-many)的标签分配方式,以提供丰富的训练监督信号,并在推理时保持高效率。

在传统的YOLO系列模型中,通常采用多对一的标签分配策略,即一个真实目标对应多个正样本(anchor boxes)。这种方法虽然能够提供丰富的监督信号,有助于模型性能的提升,但需要依赖非极大值抑制(NMS)来进行后处理,这限制了模型的端到端部署,并增加了推理延迟。

为了解决这个问题,YOLOv10引入了双重标签匹配策略,它包括两个部分:一对多(one-to-many)和一对一(one-to-one)的头部(head)。在训练期间,两个头部一起被优化,其中一对多头部提供丰富的监督信号,而一对一头部则用于标签分配。这样,模型在训练时可以利用一对多头部的丰富监督,而在推理时则只使用一对一头部进行预测,从而避免了NMS的使用。

一致匹配度量(Consistent matching metric)

image-20241213161504788

为了使一对一头部在训练和推理时与一对多头部保持一致,YOLOv10提出了一致匹配度量。这个度量标准使用了一个统一的匹配度量公式,它考虑了分类得分p、预测框与真实框之间的IoU(Intersection over Union)以及空间先验s。通过调整这个匹配度量的参数α和β,可以使得一对一头部的预测与一对多头部的预测更加一致,从而提高模型的推理性能。具体来说,一致匹配度量的公式为:

$$
m(\alpha, \beta) = s \cdot p^\alpha \cdot IoU(\hat{b}, b)^\beta
$$

其中,p 是分类得分,\hat{b}和b分别表示预测框和真实框,s 表示空间先验,\alpha和\beta是平衡分类和定位任务影响的超参数。

一致匹配度量是YOLOv10中的一个重要创新,它通过统一的匹配度量标准,优化了一对一和一对多标签分配策略之间的协调性,减少了训练过程中的监督差距,并提高了模型的端到端性能。

image-20241213155916118

在YOLOv10的训练配置中,双重标签分配策略是通过配置文件来实现的。这部分代码定义了模型的头部结构,包括上采样、连接和检测层的配置。以下是配置文件中的一段示例代码:

head:
  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 6], 1, Concat, [1]] # cat backbone P4
  - [-1, 3, C2f, [512]] # 13
  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 4], 1, Concat, [1]] # cat backbone P3
  - [-1, 3, C2f, [256]] # 16 (P3/8-small)
  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 13], 1, Concat, [1]] # cat head P4
  - [-1, 3, C2f, [512]] # 19 (P4/16-medium)
  - [-1, 1, SCDown, [512, 3, 2]]
  - [[-1, 10], 1, Concat, [1]] # cat head P5
  - [-1, 3, C2fCIB, [1024, True, True]] # 22 (P5/32-large)
  - [[16, 19, 22], 1, v10Detect, [nc]] # Detect(P3, P4, P5)

三、YOLOv10针对的问题

  1. 依赖于非极大值抑制(NMS):当前YOLO模型依赖于NMS进行后处理,这阻碍了YOLO模型的端到端部署,并增加了推理过程的延迟。

  2. 计算冗余:YOLO模型中各个组件的设计缺乏全面和彻底的检查,导致了显著的计算冗余,限制了模型的能力,从而导致效率不佳,并有很大的性能提升潜力。

  3. 小目标检测挑战:尽管YOLOv10通过多尺度特征融合技术在小目标检测方面取得了进步,但在极端情况下,如非常小的目标或密集排列的目标,其检测精度仍存在一定的局限性。

四、YOLOv10的改进点:

  1. 一致匹配度量(Consistent Matching Metric):为了减少一对一和多对一头之间的监督差距,YOLOv10引入了一致匹配度量,使得两个头(branch)在训练时能够更加协调。

  2. 轻量级分类头(Lightweight Classification Head):YOLOv10设计了一个轻量级的分类头,以减少分类任务的计算开销,同时保持性能。

  3. 空间-通道解耦下采样(Spatial-Channel Decoupled Downsampling):YOLOv10提出了一种新的下采样方法,将空间缩减和通道增加操作分开进行,以提高信息保留率和性能。

  4. 等级引导的块设计(Rank-Guided Block Design):YOLOv10利用内在秩分析来确定模型中哪些阶段存在冗余,并用更紧凑的架构设计替换这些阶段的基本构建块,以提高效率。

  5. Compact Inverted Block (CIB):CIB 被引入作为 YOLOv10 中的基本构建块,用于提高模型的效率。CIB 结构利用深度卷积(depthwise convolutions)进行空间混合,以及成本效益高的逐点卷积(pointwise convolutions)进行通道混合。

    image-20241213155553695

  6. 大核卷积(Large-Kernel Convolution):YOLOv10在深层阶段使用大核深度卷积来扩大感受野并增强模型能力。YOLOv10在CIB中使用了大核卷积,具体来说,将CIB中的第二个3×3深度卷积的核大小增加到7×7,同时采用结构重参数化技术引入另一个3×3深度卷积分支,以缓解优化问题,而无需推理开销。

  7. 部分自注意力模块(Partial Self-Attention, PSA):为了在保持低成本的同时增强模型性能,YOLOv10提出了一种有效的部分自注意力模块设计。

    image-20241213154917295

    部分自注意力模块 (PSA) 实现YOLOv10在关键区域引入了部分自注意力模块,以下是PSA模块的实现代码:

    class Attention(nn.Module):
        def __init__(self, dim, num_heads=8, attn_ratio=0.5):
            super().__init__()
            self.num_heads = num_heads
            self.head_dim = dim // num_heads
            self.key_dim = int(self.head_dim * attn_ratio)
            self.scale = self.key_dim ** -0.5
            nh_kd = nh_kd = self.key_dim * num_heads
            h = dim + nh_kd * 2
            self.qkv = Conv(dim, h, 1, act=False)
            self.proj = Conv(dim, dim, 1, act=False)
            self.pe = Conv(dim, dim, 3, 1, g=dim, act=False)
    ​
        def forward(self, x):
            B, _, H, W = x.shape
            N = H * W
            qkv = self.qkv(x)
            q, k, v = qkv.view(B, self.num_heads, -1, N).split([self.key_dim, self.key_dim, self.head_dim], dim=2)
            attn = (q.transpose(-2, -1) @ k) * self.scale
            attn = attn.softmax(dim=-1)
            x = (v @ attn.transpose(-2, -1)).view(B, -1, H, W) + self.pe(v.reshape(B, -1, H, W))
            x = self.proj(x)
            return x
    ​
    class PSA(nn.Module):
        def __init__(self, c1, c2, e=0.5):
            super().__init__()
            assert(c1 == c2)
            self.c = int(c1 * e)
            self.cv1 = Conv(c1, 2 * self.c, 1, 1)
            self.cv2 = Conv(2 * self.c, c1, 1)
            self.attn = Attention(self.c, attn_ratio=0.5, num_heads=self.c // 64)
            self.ffn = nn.Sequential(
                Conv(self.c, self.c*2, 1),
                Conv(self.c*2, self.c, 1, act=False)
            )
    ​
        def forward(self, x):
            a, b = self.cv1(x).split((self.c, self.c), dim=1)
            b = b + self.attn(b)
            b = b + self.ffn(b)
            return self.cv2(torch.cat((a, b), 1))

五、YOLOv10的改进效果

1、不同核尺寸的效果

随着核尺寸的增加,性能有所提升,并在7×7的核尺寸附近趋于稳定,这表明了大感知场的优势。

2、精度提升

YOLOv10通过上述改进,在保持实时目标检测的高效率的同时,也实现了优异的准确性。

image-20241213152148350

六、往期回顾

yolo入门教程:《吐血录制,yolo11猫狗实时检测实战项目,从零开始写yolov11代码》,视频全程25分钟。

(1)yolo11猫狗实时检测实战项目,从零开始写yolov11代码

(2)从零开始学yolo之yolov1的技术原理

(3)YOLOv1训练过程,新手入门

(4)YOLOv2和yolov1的差异

(5)YOLOv3和yolov1、yolov2之间的差异

(6)YOLOv4算法基本原理以及和YOLOv3 的差异

(7)YOLOv5算法基本原理大揭秘!

(8)YOLOv6算法基本原理

(9)YOLOv7算法基本原理

(10)YOLOv8算法基本原理

(11)YOLOv9算法基本原理

(13)10张结构图,深入理解YOLOv11算法各个模块

高清视频,3分钟揭秘神经网络技术原理

Transfermer的Q、K、V设计的底层逻辑

YOLOv10、YOLOv9 和 YOLOv8 在实际视频中的对比 近期yolo对比 阅读详情

相关推荐

基于yolov10的PCB检测算法研究

项目将YOLOV10创新后的PCB检测算法成功部署到GD32H757上,实现PCB缺陷的工业产线实时检测。

qq_47541315的博客 1759

YOLO V10安装、使用、训练大全

YoloV10

青啊青斯博客 2万+

YOLOv10通俗易懂!手把手教大家利用yolov10训练自己的数据集(环境搭建,YOLOv10网络结构解读 、yolov10.yaml配置文件详细解读与说明、模型训练参数详细解析)

YOLOv10入门必看系列!弄懂YOLOv10模型,看这一篇文章就够了,通俗易懂! | 手把手教大家利用yolov10训练自己的数据集(环境搭建,YOLOv10网络结构解读 、yolov10.yaml配置文件详细解读与说明、模型训练参数详细解析)

Ai缝合怪、助力小伙伴高效发论文 3万+

Yolov10:详解、部署、应用一站式齐全!

。点击蓝字关注我们关注并星标从此不迷路计算机视觉研究院公众号ID|计算机视觉研究院学习群|扫码在主页获取加入方式标题:YOLOv10: Real-Time End-to-End Object Detection论文:https://arxiv.org/pdf/2405.14458源码:https://github.com/THU-MIG/yolov10计算机视觉研究院专栏Column of Com...

gzq0723的博客 9391

YOLOv10 | 手把手教你利用yolov10训练自己数据集(含环境搭建、参数解析 、数据集查找、模型训练、推理、导出)

本文内含YOLOv10网络结构图 + 各个创新模块手撕结构图 + 训练教程 + 推理教程 + 参数解析 + 环境搭建 + 数据集获取等一些有关YOLOv10的内容!目录一、前言二、整体网络结构图三、空间-通道分离下采样3.1 SCDown介绍3.2 C2fUIB介绍3.3 PSA介绍四、环境搭建五、数据集获取六、模型获取七、模型训练7.1 训练的三种方式7.1.1 方式一7.1.2 方式二(推荐)7.1.3 方式三八、模型验证/测试九、模型推理十、模型输出官方论文地址点击此处即可跳转。

Snu77的博客 3万+

【YOLOv12原文翻译】YOLOv12: Attention-Centric Real-Time Object Detectors

长期以来,增强YOLO框架的网络架构一直是关键,但主要集中在基于CNN的改进上,尽管注意力机制在建模能力上已被证明具有优越性。这是因为基于注意力的模型无法与基于CNN的模型的速度相匹配。本文提出了一种以注意力为中心的YOLO框架,即YOLOv12,它在保持与之前基于CNN模型相当速度的同时,充分利用了注意力机制的性能优势。YOLOv12在准确性上超越了所有流行的实时目标检测器,同时保持了具有竞争力的速度。

Limiiiing的博客 2663

YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12的网络结构图

本文将给出YOLO各版本网络结构图的绘制方法及图。本文所展示均为YOLO各模型n或s相对轻量的网络结构,部分为通用。

qq_44231797的博客 1万+

保姆级教程:在LKD3588开发板上为RK3588添加SC2210摄像头驱动(含完整DTS配置)

本文提供了一份详细的教程,指导如何在LKD3588开发板上为RK3588处理器添加SC2210摄像头驱动,包括完整的DTS配置和内核编译步骤。教程涵盖了环境准备、驱动文件添加、DTS配置详解、内核编译与烧录、驱动测试以及常见问题排查,帮助开发者快速实现SC2210传感器在RK3588平台上的集成与优化。

weixin_42641741的博客 479

目标检测——YOLOv12算法解读

YOLOv12算法解读及代码分析

lishanlu136的博客 1406

实战指南:基于Windows Server构建企业级AAA认证体系

本文详细介绍了如何在Windows Server环境下构建企业级AAA认证体系,涵盖AD域服务部署、NPS服务器配置及华为设备对接实战。通过整合Radius协议与AD域账号管理,实现网络设备的统一认证与权限控制,提升企业IT安全管理效率。特别适用于需要零成本实现AAA认证的中大型企业。

weixin_28304023的博客 421

Docker一键部署NextCloud+OnlyOffice:打造企业级私有云办公环境(含HTTPS配置)

本文详细介绍了如何使用Docker Compose一键部署NextCloud与OnlyOffice,构建安全、高效的企业级私有云办公平台。内容涵盖从架构设计、Docker编排配置、HTTPS证书自动化管理,到系统初始化、性能优化及高级功能扩展的全栈实战指南,帮助企业实现数据自主可控与高效的在线文档编辑协作。

Apple的专栏 1240

【YOLO系列】YOLO算法改进史——已更新至YOLOv12

目标检测YOLO系列算法改进史

qq_51366016的博客 5562

Cocos Creator3.5.2使用Spine切换皮肤

3、然后获取当前spine中是否有皮肤数据,如果spine连皮肤数据都没有,接着写可能会error,这里的 skins[skin],是判断皮肤列表中是否有需要更换的皮肤。2、因为spine往往意味着异步加载,换肤时也经常出现频繁异步的情况,所以下一步我们要可以判断当前spine组件里是否已经加载好了spine文件。换肤前隐藏好需要换肤的节点,避免穿帮;官网文档的换肤流程太简化,对于实际使用来说会有各种各样的问题。1、首先获取对应的spine组件。这里的skin自然是外部传入的需要换肤的皮肤名。

tc654321的博客 1817

YOLOv12 目标检测算法深度解析

YOLOv12 目标检测算法在技术上实现了重大突破,首次在YOLO系列中完全采用纯注意力机制,摒弃了传统的CNN架构。其核心创新包括区域注意力机制(A2)、残差高效层聚合网络(R-ELAN)和FlashAttention优化,这些技术显著降低了计算复杂度,提升了模型训练稳定性和推理速度。YOLOv12 通过计算资源重分配、轻量化位置编码和动态感受野调整等策略,实现了速度与精度的再平衡。

sinat_34897952的博客 3513

帝国CMS v7.5存储型XSS漏洞挖掘与修复实战

存储型XSS(跨站脚本攻击)是一种常见的Web安全漏洞,其核心原理是攻击者将恶意脚本代码提交并永久存储在服务器端(如数据库),当其他用户访问包含该数据的页面时,脚本会在其浏览器中执行。这种漏洞的危害在于其持久性和广泛的影响范围,可能导致用户Cookie被窃取、会话被劫持,甚至引发蠕虫式传播。从技术价值看,理解存储型XSS有助于掌握Web应用安全的核心逻辑,即数据在输入、处理和输出全链路中的安全风险。在内容管理系统(CMS)等Web应用场景中,用户可控的输入点(如个人资料、评论、公告)若未经妥善过滤和输出编码

weixin_29327525的博客 299

Geant4 案例分析(一): B1

本文是对Geant4 B1的案例分析,其中特定的功能不做介绍,而注重于各个文件的主要功能,以及它们组织的方式。

m0_51809467的博客 1582

【麦穗检测】基于YOLOv10和半监督学习的小麦麦穗检测算法:YOLOv10_ssod

观察小麦麦穗数量有助于人为进行小麦产量评估,早期主要采用人工统计的方法,这种方法费时费力,近几年,由于深度学习技术的进步,利用无人机等设备进行视频图像检测的方法已经取得了一定的成绩。 按照深度学习方法主要分为基于单阶段和双阶段的方法,目前最为流行的即单阶段中的YOLO方法,其精度可以满足日常使用需求且计算负担较小,方便部署于边缘设备。 目前开源出来的最先进的YOLO模型已经更新到第十个版本,即YOLOv10。鉴于目前开源的麦穗数据集视角首先且场景单一,限制算法性能,因此博主结合==YOLOv10==与

weixin_46221106的博客 2240

QGIS|如何将WGS84转换为CGCS 2000坐标系?

QGIS 3中如何将WGS84转换为国家2000大地坐标系? 今天来回答一位朋友在后台留言提出的问题:怎么将WGS84坐标转换为国家2000大地坐标系。 01工程坐标系 从地图窗口右下角的状态栏可以看到当前地图窗口的坐标系,即工程坐标系(Project CRS)。当前地图可以由多个图层组成,各种来源数据的坐标参照系(Layer CRS)并不一定相同,QGIS在绘制图层之前将根据工程坐标系进行动态坐标转换,然后显示在地图画布中。 因此,在处理空间数据的过程中,一定要特别注意...

QGISClass的博客 1万+

YOLOv12 vs YOLOv10:谁更适合工业落地?

本文介绍了如何在星图GPU平台上自动化部署YOLOv12 官版镜像,显著提升工业视觉检测效率。该镜像支持一键构建TensorRT引擎与Flask服务,适用于汽车零部件质检等实时缺陷检测场景,可在边缘设备上实现38ms内稳定推理,满足产线0.02%漏检率严苛要求。

weixin_35459464的博客 609

搜索神器Perplexity的详细使用方法(持续更新)

本文主要介绍了ChatGPT的互补工具Perplexity的详细使用方法,希望对新手有所帮助。需要说明的是,Perplexity不需要上网工具,很方便新手和小白上手使用。Perplexity的官网链接为:https://www.perplexity.ai/ 。 文章目录 1. 为什么要讲Perplexity? 2. 详细使用方法 2.1 使用要点一 2.2 使用要点二 2.3 使用要点三

herosunly的博客 8万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

(10)YOLOv8算法基本原理

深入了解yolov8

qq191513的博客 1861

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

YOLOv12官版镜像与YOLOv10对比,谁更强?

本文介绍了基于星图GPU平台自动化部署YOLOv12官版镜像的实践方法。该平台支持一键拉取并运行集成Flash Attention技术的YOLOv12镜像,适用于高精度目标检测任务。在智能安防、工业质检等场景中,开发者可高效完成模型微调与推理部署,显著提升AI应用开发效率。

weixin_34618526的博客 883

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

目标检测——YOLOv10算法解读

YOLOv10目标检测算法解读

lishanlu136的博客 5042

【YOLOv10改进实战】**【1】最全YOLO系列算法介绍:从yolov1-yolov10**

YOLO的全称是“You Only Look Once”,指能够通过一次网络来完成检测任务。与先前的方案(如:RCNN系列)不同的是,YOLO是把目标检测转变为一个回归问题,利用整张图片作为网络的输入,使用单个神经网络,就可直接从完整图像上预测边界框和类别概率。YOLO(You Only Look Once)v1 是一种由 Joseph Redmon 等人在2016年提出的实时物体检测系统。它相较于传统的物体检测方法,具有显著的速度优势,并在保持较高检测精度的同时,极大地提高了效率。

up主为在读研究生,从事cv研究4余年,绝对靠谱。 4112

江大白 | YOLOv11算法详解,YOLOv11/v10/v8性能对比分析,谁才是真正的目标检测之王?

目标检测任务在AI项目落地中扮演着至关重要的角色,是众多AI任务的前置算法,本文详细阐述了YOLOv11算法的改进方向、功能和性能,并与YOLOv10和YOLOv8进行比较,充分验证了YOLOv11在速度、准确性和多样任务支持等方面的有效性。

csdn_xmj的博客 1万+

YOLO简史:从YOLOv1到YOLOv12的技术革新与演进

YOLO(You Only Look Once)系列算法自2015年诞生以来,凭借其“单次推理”的高效特性,彻底改变了目标检测领域。从初代YOLO到最新的YOLOv12,每一次迭代都凝聚了研究者的智慧与工业界的实践需求。本文梳理各版本的特性、技术突破、应用领域等,展现YOLO的进化历程。

懒人的技术笔记 4553
上一篇: (11)YOLOv9算法基本原理
下一篇: (14)D-FINE网络,爆锤yolo系列
AI莫大猫
博客等级 码龄2年 270粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值