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

YOLOv10:实时端到端目标检测的新突破

目标检测作为计算机视觉领域的一个核心问题,其关键在于能够在图像中准确识别并定位对象。随着深度学习技术的发展,基于深度神经网络的目标检测方法不断涌现,其中YOLO(You Only Look Once)系列算法以其优异的实时性和准确性,成为实时目标检测领域的主流选择。最近,清华大学的研究团队推出了YOLO系列的最新力作——YOLOv10,本文将对这篇论文进行详细解读,并探讨YOLOv10在实时目标检测领域的新突破。

YOLOv10简介

YOLOv10是YOLO系列的最新一代算法,它继承了YOLO家族在实时目标检测上的优势,同时在模型架构和后处理上进行了创新性改进,进一步提升了检测性能和效率。YOLOv10的核心贡献可以概括为以下几点:

  1. 无NMS(Non-Maximum Suppression)训练:YOLOv10提出了一种新的一致性双重赋值策略(Consistent Dual Assignments),使得模型在训练时能够获得丰富的监督信号,在推理时则无需NMS即可实现高效的端到端检测。

  2. 全面优化的模型架构:研究者们从效率和准确性两个角度出发,全面优化了YOLO的各个组件,包括轻量级分类头、空间-通道解耦下采样、基于秩引导的模块设计等。

  3. 大核心卷积和部分自注意力模块:YOLOv10引入了大核心卷积来扩大感受野,并提出了部分自注意力模块(PSA),以较低的计算成本增强模型性能。

YOLOv10的主要贡献

一致性双重赋值策略

在传统的目标检测模型中,NMS是一个必要的后处理步骤,用于从多个候选框中选择最佳的检测结果。然而,NMS不仅增加了推理时间,还使得模型无法实现端到端的训练。YOLOv10通过一致性双重赋值策略解决了这一问题,该策略在训练时采用一对多的赋值方式提供丰富的监督信号,在推理时则切换到一对一的赋值方式,无需NMS即可快速得到检测结果。

在训练期间,YOLO 通常利用 TAL 为每个实例分配多个正样本。一对多的分配方式产生了丰富的监督信号,促进了优化并使模型实现了卓越的性能。然而,这需要 YOLO 依赖于 NMS 后处理,这导致了部署时次优的推理效率。虽然之前的研究工作探索了一对一匹配来抑制冗余预测,但它们通常引入了额外的推理开销。与一对多分配不同,一对一匹配对每个 ground truth 仅分配一个预测,避免 NMS 后处理。然而,这会导致弱监督,以至于准确率和收敛速度不理想。幸运的是,这种缺陷可以通过一对多分配来弥补。

该研究提出的「双标签分配」结合了上述两种策略的优点。如上图所示,该研究为 YOLO 引入了另一个一对一 head。它保留了与原始一对多分支相同的结构并采用相同的优化目标,但利用一对一匹配来获取标签分配。在训练过程中,两个 head 联合优化,以提供丰富的监督;在推理过程中,YOLOv10 会丢弃一对多 head 并利用一对一 head 做出预测。这使得 YOLO 能够进行端到端部署,而不会产生任何额外的推理成本。

全面优化的模型架构

除了后处理之外,YOLO 的模型架构也对效率 - 准确率权衡提出了巨大挑战。尽管之前的研究工作探索了各种设计策略,但仍然缺乏对 YOLO 中各种组件的全面检查。因此,模型架构表现出不可忽视的计算冗余和能力受限。

YOLOv10对模型架构进行了全面优化,包括:

  • 轻量级分类头:简化分类头的网络结构,减少计算量而不影响检测性能。
  • 空间-通道解耦下采样:将空间下采样和通道变换操作分离,降低计算复杂度。
  • 基于秩引导的模块设计:根据模型不同阶段的冗余程度,动态调整网络模块,提高计算效率。

大核心卷积和部分自注意力模块

YOLOv10引入了大核心卷积来扩大模型的感受野,增强对小目标的检测能力。同时,通过部分自注意力模块(PSA),YOLOv10在保持计算效率的同时,引入了Transformer模型的全局建模能力,进一步提升检测精度。

采用大核深度卷积是扩大感受野和增强模型能力的有效方法。然而,简单地在所有阶段利用它们可能会在用于检测小物体的浅层特征中引入污染,同时在高分辨率阶段也会带来大量的I/O开销和延迟。因此,建议在深阶段利用CIB中的大核深度卷积。具体来说,本文将CIB中第二个3×3深度卷积的核大小增加到7×7。此外,本文采用结构重参数化技术引入另一个3×3深度卷积分支,以缓解优化问题,而无需推理开销。此外,随着模型大小的增加,其感受野自然扩大,使用大核卷积的好处会减少。因此,对于小模型尺度,我们只采用大核卷积。

YOLOv10的实验结果

研究团队在COCO数据集上对YOLOv10进行了广泛的实验验证。实验结果表明,YOLOv10在不同模型规模下均取得了优异的检测性能,与当前最先进的目标检测模型相比,在保持相似精度的同时,显著降低了推理延迟。

结论

YOLOv10作为YOLO系列的最新成员,通过创新性的一致性双重赋值策略和全面优化的模型架构,实现了实时目标检测领域的新突破。它不仅在学术上具有重要意义,也为自动驾驶、机器人导航、视频监控等实际应用提供了强大的技术支持。随着YOLOv10的开源,我们期待它在未来能够在更多的应用场景中发挥重要作用。

相关参考:

论文地址:https://arxiv.org/abs/2405.14458

Github地址:https://github.com/THU-MIG/yolov10

其他:https://zhuanlan.zhihu.com/p/700329479

相关文章:

  • Springboot vue elementui 前后端分离 事故灾害案例管理系统
  • VS2015 +Qt 新建单元测试工程报错error LNK2019,error LNK2001: 无法解析的外部符号 WinMain
  • 安卓玩机搞机技巧综合资源----电脑控制手机 投屏操控的软件工具操作步骤解析【二十二】
  • 开源协议及静态链接和动态链接
  • 最新版点微同城源码34.7+全套插件+小程序前后端
  • 学习小心意——简单的循坏语句
  • Flink的简单学习二
  • 校园外卖系统的技术架构与实现方案
  • 诺亚财富——财富管理行业的进化逻辑
  • 基于深度学习的中文情感分析系统python flask
  • OpenCV-最小外接圆cv::minEnclosingCircle
  • 删除Windows网络连接的网络编号,网络号,有线网卡的网络1,网络2....,快速批量删除每次增加的网络序号
  • Pulsar 社区周报 | No.2024-05-30 | BIGO 百页小册《Apache Pulsar 调优指南》
  • fast admin实现多数据库导入数据
  • printf 一次性写
  • 《剑指offer》分解让复杂问题更简单
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • C# 免费离线人脸识别 2.0 Demo
  • git 常用命令
  • java2019面试题北京
  • Java反射-动态类加载和重新加载
  • Joomla 2.x, 3.x useful code cheatsheet
  • js操作时间(持续更新)
  • Node 版本管理
  • React系列之 Redux 架构模式
  • Sass 快速入门教程
  • socket.io+express实现聊天室的思考(三)
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • spring-boot List转Page
  • 关于springcloud Gateway中的限流
  • 前端工程化(Gulp、Webpack)-webpack
  • 全栈开发——Linux
  • 如何用vue打造一个移动端音乐播放器
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 用jQuery怎么做到前后端分离
  • 再谈express与koa的对比
  • scrapy中间件源码分析及常用中间件大全
  • 整理一些计算机基础知识!
  • !$boo在php中什么意思,php前戏
  • (2)空速传感器
  • (2.2w字)前端单元测试之Jest详解篇
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (zt)最盛行的警世狂言(爆笑)
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (六)软件测试分工
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET gRPC 和RESTful简单对比
  • .Net 路由处理厉害了