[卷积神经网络]YOLOv10论文解读

news2024/9/20 16:31:42

原文地址:

YOLOv10: Real-Time End-to-End Object Detectionicon-default.png?t=N7T8https://arxiv.org/pdf/2405.14458

项目地址:

yolov10icon-default.png?t=N7T8https://github.com/THU-MIG/yolov10

一、概述

        YOLOv10的改进点主要由两点:①提出一种基于无NMS的一致的双重训练策略;②提出了整体效率-精度驱动的模型架构设计策略。

        这两项改进使得YOLOv10相较于RT-DETR快1.8倍,比YOLOv9-C在同性能下降低了46%的延迟,减少了1.8倍的参数。

二、无NMS的一致的双重训练

        传统的YOLO依赖于NMS的后处理,通过NMS虽然可以抑制冗余预测,但是同样会降低模型的推理效率。先前虽然有一些研究通过引入一对一匹配的方式来实现同样的效果,但是额外的推理开销也会影响模型的性能。

        1.双标签分配(Dual label assignments)

        不同于一对多分配,一对一分配只为一个gt(ground-truth)分配一个预测,可以避免NMS后处理,但是也存在监督效果不佳,在模型收敛速度和峰值精度上存在不足。本文结合了一对一分配和一对多分配的优势,提出了双标签分配。

        如上图所示,模型中除了常见的一对多分支分类头(One-to-many Head,o2m)外还额外添置了一对一分支分类头(One-to-one Head,o2o)。

        在训练过程中,这两者同时运行,o2m负责传统的目标匹配,而o2o则用来获取标签分配。由于o2m提供的丰富监督,可以解决o2o支收敛速度和峰值精度上个的不足。

        而在推理时,o2m将会被舍弃,仅依赖o2o支进行推理,这样不会产生额外推理成本,且节省了推理性能。

        2.一致匹配度量(Consistent matching metric)

        这个公式将被用来评估预测实例之间的一致性水平o2oo2m均会使用这个公式。

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

        式中,p是类别的得分,\hat{b}是预测框的坐标,b是实例框的坐标,s是空间先验(表示预测框的锚点是否位于实例框内),\alpha,\beta是两个超参数,用来平衡分类任务位置回归任务的权重。o2m使用公式m_{o2m}=m(\alpha_{o2m},\beta_{o2m})o2o使用公式m_{o2o}=m(\alpha_{o2o},\beta_{o2o})

        在训练过程中,模型会让o2o朝着o2m的方向进行优化,也就是说在训练过程中,o2m Head会为o2o提供改的样本质量,从而带来更好的性能,为了固定这个优化方向,我们需要量化两个分类头之间的差距

        对于一个给定的实例,我们将与其IoU最大的预测项记作u^*,o2m Head和o2o Head最佳的匹配分数记作m^*_{o2m}m^*_{o2o};假定o2m Head产生了足够多的正样本记作\Omega,o2o选择第 i 个预测项记作m_{o2o,i}=m^*_{o2o},我们可以推导出这个目标的分类为t_{o2m,j}=u^*\cdot\frac{m_{o2m,j}}{m^*_{o2m}}\leq u^*,其中j \in \Omega,同时将t_{o2o,i}=u^*\cdot\frac{m_{o2o,i}}{m^*_{o2o}}=u^*作为分类任务的损失函数。所以两个Head之间的差距可以表述为:

                A=t_{o2o,i}-t_{o2m,i}+\sum_{k\in\Omega \setminus \{i\}}t_{o2m,k}

三、整体效率-精度驱动的模型设计

        为了进一步提升模型效果,本文还探索了一些结构上的改进,可以分为效率驱动模块设计和精度驱动模块设计。

        上图(a)是各种YOLOv8模型在不同层处理后的通道数量;(b)是紧凑倒置模块(CIB);(c)是部分自注意力模块(PSA)

        1.效率驱动模型设计

        通过轻量化分类头、空间通道去耦下采样、秩引导区设计,模型可以大大降低计算量。

        2.精度驱动模型设计

        通过大卷积核、PSA模块,模型可以以最小的代价提升性能。

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

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

相关文章

构建高效外贸电商系统的技术探索与源码开发

在当今全球化的经济浪潮中,外贸电商作为连接国内外市场的桥梁,其重要性日益凸显。一个高效、稳定、功能全面的外贸电商系统,不仅能够助力企业突破地域限制,拓宽销售渠道,还能提升客户体验,增强品牌竞争力。…

Web网站的授权oAuth2.0 单点登录

1.Web网站的授权(oAuth2.0) Client 第三方应用(需要做鉴权的业务网站、业务系统)UserAgent 用户代理(浏览器)Resource Owner 用户授权(用户手动点击【同意】按钮,授权使用第三方登录渠道)&#…

CPU飙升 怎么定位问题

传统的方法 【top】 查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。 【top -Hp pid】 定位进程中使用 CPU 最高的线程tid 【printf ‘0x%x’ tid】 线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a 【jstack…

Spring——IOC/DI思想

1、IOC(Inversion of Control)控制反转 何为控制反转? 在业务层中我们如果要调用数据层的方法那么必然牵扯到对象的创建,如果我想要改变上述数据层的方法中的内容,那么我就要改变业务层的代码,重新创建对…

R语言的矩阵运算

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接: 3章4节:R的逻辑运算和矩阵运算-CSDN博客文章浏览阅读165次。在 R 语言的丰…

PHP概述、环境搭建与基本语法讲解

目录 【学习目标、重难点知识】 什么是网站? 1. PHP 介绍 1.1. PHP 概述 1.1.1. PHP 是什么? 1.1.2. PHP 都能做什么? 1.2. PHP 环境搭建 1.2.1. PhpStudy 2. PHP 基本语法 2.1. PHP 语法入门 2.1.1. 第一个 PHP 程序 2.1.2. PHP …

Postman入门指南

前言 当前最为主流的开发模式:前后端分离 在这种模式下,前端技术人员基于"接口文档",开发前端程序;后端技术人员也基于"接口文档",开发后端程序。 由于前后端分离,对我们后端技术人…

PHP 无参数RCE总结

在这篇文章中,我总结了在参与CTF比赛过程中积累的关于PHP无参数远程代码执行(RCE)的经验。由于一直以来时间有限,今天终于有机会整理这些知识点。 可能用到的函数(PHP的内置函数) localeconv() 函数返回一…

String 事务

目录 一、什么是事务 二、Spring事务的实现方式 1、编程式事务 2、声明式事务 三、自动操作事务的注解的三个属性 1、rollbackFor 2、isolation 3、propagation 前言:本文所见围绕的主题是事务,所以笔者先讲解什么是事务,先让大家了解…

Selenium + Python 自动化测试15(模块化测试)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用SMTP 对象的sendmail 发送HTML报告的方法。 本篇文章我们接着讲测试代码的一些优化,提高我们测试代码的易读性,维护方便性。大家也…

ZooKeeper 集群的详细部署

ZooKeeper 集群部署 一、ZooKeeper 简介1.1 什么是 ZooKeeper1.2 ZooKeeper 特点 二 ZooKeeper 的架构和设计4.1 ZooKeeper 数据模型4.1.1 Znode 节点特性 三、ZooKeeper 的集群安装前准备工作3.1 需要的准备工作3.2 Linux 系统 3 个节点准备3.2.1 克隆3.2.2 配置另外两台服务器…

评论系统如何不崩溃?揭开海量评论背后的技术秘密

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米!今天我们来聊聊一个非常实际的场景:海量新闻评论的入库问题。假设你在某个新闻平台工作,某条热门新闻突然火爆,用户的评论量如潮水…

SpringBoot Web开发(请求,响应,分层解耦)

Author_T17🥥 目录 一.请求响应概述 1.Servlet 2.DispatcherServlet 3.请求响应工作概图 4.BS/CS架构 二.API测试工具 三.请求 1.简单参数 (1)原始方式(不推荐) ​编辑 (2)Spring Boo…

【剑指 offer】删除链表中重复的结点

目 录 描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5 思路: 通过快慢…

2024年阳光电源社招校招入职测评:前程无忧智鼎题库全解析

在职场竞争日益激烈的今天,企业对人才的选拔标准越来越高。阳光电源,作为行业的领军企业,采用了前程无忧智鼎题库进行社招校招入职测评,旨在通过科学的方法选拔出与企业文化和价值观高度契合的人才。 测评概览 测评名称&#xff1…

大模型RAG企业级项目实战:Chatdoc智能助手文档(从零开始,适合新手)

大模型RAG企业级项目实战:Chatdoc智能助手文档(从零开始,适合新手) 大模型RAG企业级项目实战完整链接 LLM模型缺陷: ​ 知识是有局限性的(缺少垂直领域/非公开知识/数据安全) ​ 知识实时性(训练周期长、成本高) …

5计算机网络全面解析

网络功能和分类 计算机网络是计算机技术与通信技术相结合的产物,它实现了远程通信、远程信息处理和资源共享。 计算机网络的功能:数据通信、资源共享、管理集中化、实现分布式处理、负载均衡。 网络性能指标:速率、带宽(频带宽…

1.微服务发展阶段

单体应用阶段 简介 系统业务量很小的时候我们把所有的代码都放在一个项目中,然后将这个项目部署在一台服务器上,整个项目所有的服务都由这台服务器去提供 优点 1.展现层、控制层、持久层全都在一个应用里面,调用方便、快速,单个请…

Unity URP 曲面细分学习笔记

Unity URP 曲面细分学习笔记 1.曲面细分与镶嵌1.1 外壳着色器 Hull Shader1.2 镶嵌器阶段 Tessellator1.3 域着色器阶段 Domain Shader 2.具体实现2.1 不同的细分策略2.1.1 平面镶嵌 Flat Tessellation2.1.2 PN Tessellation(Per-Node Tessellation)2.1.…

NPM使用教程:从入门到精通

NPM使用教程:从入门到精通,掌握Node.js包管理神器 引言 随着Node.js的流行,JavaScript已经成为服务器端开发的主力军。NPM(Node Package Manager)作为Node.js的官方包管理工具,为开发者提供了一个庞大的代…