ultralytics官方更新 | 添加YOLOv10到ultralytics


💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 


专栏目录:《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40+篇内容,内含各种Head检测头、损失函数Loss、Backbone、Neck、NMS等创新点改进


对YOLOv10感兴趣的同学可以先看YOLOv8,因为改进方式大部分一样,我也会尽快更新相关的教程 

论文地址:YOLOv10: Real-Time End-to-End Object Detection点击即可跳转

官方代码:官方代码仓库点击即可跳转

今天看到YOLOv10已经被添加到了ultralytics的仓库中, 也就是说,以后YOLOv8的代码仓库也可以下载直接运行YOLOv10。预计以后发布的YOLO系列都会被收入到这个仓库中。

 YOLOv10启动脚本供参考:

from ultralytics import YOLOv10 
# Load a model
model = YOLOv10("ultralytics/cfg/models/v10/yolov10n.yaml")
# train
model.train(data='dataset/data.yaml',
                cache=False,
                imgsz=640,
                epochs=100,
                batch=16,
                close_mosaic=0,
                workers=4,
                device='0',
                optimizer='SGD', # using SGD
                amp=False, # close amp
                project='runs/train',
                name='exp',
                )

YOLOv10创新点回顾:

1. 创新点

无NMS的一致双分配(consistent dual assignments):

YOLOv10提出了一种通过双标签分配而不用非极大值抑制NMS的策略。这种方法结合了一对多和一对一分配策略的优势,提高了效率并保持了性能。

效率-精度驱动的模型设计(Holistic Efficiency-Accuracy Driven Model Design):

轻量化分类头:在不显著影响性能的情况下,减少了计算开销。

空间-通道解耦下采样:解耦空间下采样和通道调整,优化计算成本。

基于秩的块设计:根据各阶段的内在秩适应块设计,减少冗余,提高效率。

大核卷积和部分自注意力PSA:在不显著增加计算成本的情况下,增强了感受野和全局建模能力。

2. 一致双分配策略(Consistent Dual Assignments)

YOLOv10引入了一种新的双分配策略,用于在训练期间同时利用一对多(one-to-many)和一对一(one-to-one)标签分配。这种方法在保持模型高效训练的同时,摆脱了推理过程中对非极大值抑制NMS的依赖。

双标签分配(Dual Label Assignments)

一对多分配:在训练期间,多个预测框被分配给一个真实物体标签。这种策略提供了丰富的监督信号,优化效果更好。

一对一分配:仅一个预测框被分配给一个真实物体标签,避免了NMS,但由于监督信号较弱,容易导致收敛速度慢和性能欠佳。

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

3. 一致匹配度量(Consistent Matching Metric)

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

整体效率-精度驱动的模型设计(Holistic Efficiency-Accuracy Driven Model Design)

YOLOv10在模型架构的各个方面进行了全面优化,旨在提升效率和精度。

3.1 效率驱动的模型设计

轻量化分类头(Lightweight Classification Head)

在YOLO系列中,分类头和回归头通常共享相同的架构,但分类任务的计算开销更大。为分类头采用轻量级的架构,包括两个3×3的深度可分离卷积(depthwise separable convolutions)和一个1×1卷积,以减少计算开销。

空间-通道解耦下采样(Spatial-Channel Decoupled Downsampling)

传统的下采样方法同时进行空间和通道的转换,计算成本较高。YOLOv10首先使用逐点卷积(pointwise convolution)调整通道维度,然后使用深度卷积(depthwise convolution)进行空间下采样。这样可以最大限度地保留信息,同时减少计算成本。

3.2 基于秩的块设计(Rank-Guided Block Design)

在YOLO模型中,各阶段通常使用相同的基本构建块,容易导致深层阶段的计算冗余。因此根据各阶段的内在秩(intrinsic rank)调整块设计,减少冗余,采用紧凑的反向块(Compact Inverted Block, CIB)设计,用深度卷积进行空间混合和逐点卷积进行通道混合,提高效率。

3.3 精度驱动的模型设计

大核卷积(Large-Kernel Convolution)

大核卷积的感受野较大,能够更好地捕捉图像中的全局信息。然而,直接在所有阶段使用大核卷积可能会导致小物体特征的污染,并增加高分辨率阶段的I/O开销和延迟。因此,在深层阶段使用大核深度卷积(如7×7)来扩大感受野,增强模型能力,同时使用结构重参数化技术(structural reparameterization)优化训练。

对于小模型规模(如YOLOv10-N/S),大核卷积的使用能够显著提升性能,而对于大模型规模(如YOLOv10-M),其天然较大的感受野使得大核卷积的效果不明显,因此仅在小模型中使用。

部分自注意力(Partial Self-Attention, PSA)

部分自注意力模块通过引入全局建模能力来提升模型性能,同时保持较低的计算开销。

自注意力(self-attention)在视觉任务中因其出色的全局建模能力而被广泛使用,但其计算复杂度和内存占用较高。本文引入PSA模块,通过将特征按通道分成两部分,仅对一部分应用多头自注意力(Multi-Head Self-Attention, MHSA),然后进行融合,增强全局建模能力,降低计算复杂度。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis拦截器(Interceptor)的理解与实践

文章目录 1. 什么是MyBatis拦截器?2. 拦截器的基本原理3. 编写自定义拦截器3.1 示例:实现SQL执行时间统计拦截器3.2 配置拦截器 4. 实战应用场景5. 总结 🎉欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博…

springboot学习01-[springboot介绍、配置文件介绍、自动配置读取原理]

springboot介绍、配置文件介绍、自动配置读取原理 springBoot学习代码说明为什么java -jar springJar包后项目就可以启动 配置文件介绍配置文件加载顺序其他约定配置文件加载顺序profile配置文件加载配置文件绑定类属性通过Value的方式进行属性注入通过ConfigurationProperties…

python爬虫学习笔记一(基本概念urllib基础)

学习资料:尚硅谷_爬虫 学习环境: pycharm 一.爬虫基本概念 爬虫定义 > 解释1:通过程序,根据URL进行爬取网页,获取有用信息 > 解释2:使用程序模拟浏览器,向服务器发送请求,获取相应信息…

如何设置Excel单元格下拉列表

如何设置Excel单元格下拉列表 在Excel中设置单元格下拉列表可以提高数据输入的准确性和效率。以下是创建下拉列表的步骤: 使用数据验证设置下拉列表: 1. 选择单元格: 选择你想要设置下拉列表的单元格或单元格区域。 2. 打开数据验证&…

Emacs之实现目录替换(一百四十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

2024年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题是由安全生产模拟考试一点通提供,P气瓶充装证模拟考试题库是根据P气瓶充装最新版教材,P气瓶充装大纲整理而成(含2024年P气瓶…

yolov8训练初体验

最近在爬一些数据,有些网址的验证码比较难搞,于是使用yolov8来解决。 一、数据打标签并转为txt 使用的软件为X-AnyLabeling。内置各种模型,方便打标。 打标完成后由于是json格式,所以我们使用python转换即可 import json import…

2024各省自考报名时间汇总❗所需材料❗

天津:5月27日-5月31日(已结束) 河北:6月10日~6月15日(已结束) 贵州:6月17日~26日 山东:6月18日~6月24日 江西:6月26日-7月7日(6月下旬) 浙江&…

【Liunx-后端开发软件安装】Liunx安装FDFS并整合nginx

【Liunx-后端开发软件安装】Liunx安装nacos 文章中涉及的相关fdfs相关软件安装包请点击下载: https://download.csdn.net/download/weixin_49051190/89471122 一、简介 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括…

详解互联网基石之HTTPS

一、HTTPS简介 HTTPS(HyperText Transfer Protocol Secure)是一种用于安全通信的网络传输协议。它是HTTP的加密版本,通过使用TLS(Transport Layer Security)或其前身SSL(Secure Sockets Layer)来…

我不太建议大家早睡!

自从我早晨5点开始睡,这身体是越来越差了...... 开个玩笑~~ 大家好,我是前端队长, 自从上次科学减脂挑战完毕,我一个月瘦了6.4斤,我还是挺满意的, 唯一不开心的是,我这样…

vscode配置vue格式化代码不管用

所有配置都配好了就是无法使用自己想要的vetur格式化代码 后台发现调整默认格式化代码的顺序就可以, 修改该后就可以了

[面试题]MongoDB

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…

AI时代的音乐革命:创作更简单,灵魂在哪里?

#AI在创造还是毁掉音乐# 我是李涛,一名音乐创作者,最近一直在思考一个问题:AI到底是在创造音乐,还是在毁掉音乐? 几个月前,我第一次接触到AI音乐创作工具。它让我震惊,只需要输入几个关键词&a…

【Android面试八股文】自定义View执行invalidate()方法为什么有时候不会回调onDraw()?

文章目录 一、自定义View执行invalidate()方法为什么有时候不会回调onDraw()?1.1 invalidate 软件绘制流程1.2 invalidate源码分析1.2.1 skipInvalidate()方法1.2.2 invalidateChild方法1.2.2.1 硬件加速绘制1.2.2.2 软件刷新1.2.3 小结一、自定义View执行invalidate()方法为什…

论文《Universal Graph Convolutional Networks》笔记

【UGCN】论文提出一个基本问题,即是否不同的网络结构属性应该采用不同的传播机制。通过实验发现,对于完全同配性、完全异配性和随机性的网络,1-hop、2-hop和k-nearest neighbor(kNN)邻居分别更适合作为信息传播的邻域。…

怎么优化ArcEngine组件开发mfc程序界面?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

【Linux详解】缓冲区优化 | 进度条的实现 | Linux下git 的上传

目录 一. 缓冲区 1. 缓冲区概念 2. 缓冲区作用 2.1 提升读写效率 2.2 减少等待时间 3. 缓冲区刷新策略 3.4 特殊策略 4. 缓冲区存储位置 5. 总结 二. 实现进度条 引入:倒计时 process.c 三. Linux下git的上传 sum 一. 缓冲区 1. 缓冲区概念 缓冲区是…

数据库设计文档编写

PS:建议使用第三种方法 方法1:使用 Navicat 生成数据库设计文档 效果 先看简单的效果图,如果效果合适,大家在进行测试使用,不合适直接撤退,也不浪费时间。 随后在docx文档中生成目标字段的表格&#xf…

【必看】每个开发人员都应该知道的 10 个 GitHub 库

GitHub🌟:155K 被难题困住了?还是需要一些建议来指导你进入开发者行业?这个 仓库 将为你提供帮助。它拥有想要成为前端、后端或 DevOps 工程师需要的所有技术。你可以选择符合需求的或适合自己的,因为它提供了多种多…