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

YOLOv10使用教程及导读


         首先推荐一下我的YOLOv8/v10项目,仅需一个v8的钱(69.9),付费进群,即可获取v8/v10的全部改进,欢迎进群。


1 YOLOv10简介

        论文链接:https://arxiv.org/pdf/2405.14458

        官方代码链接:https://github.com/THU-MIG/yolov10

        本文代码链接:https://github.com/ultralytics/ultralytics

论文摘要:

        在过去的几年里,由于有效的平衡了计算成本和检测性能,YOLO已经成为实时目标检测领域的主导范式。研究人员对yolo的架构设计、优化目标、数据增强策略等进行了探索,并取得了显著进展。然而,后处理中依赖的非最大抑制(NMS)阻碍了yolo的端到端部署,并对产生推理延迟。此外,YOLO中各部件的设计缺乏全面的检查,导致计算冗余明显,限制了模型的能力。它提供了次优的效率,以及相当大的性能改进潜力。在这项工作中,我们的目标是从后处理和模型架构两个方面进一步推进YOLO模型的性能效率边界。为此,我们首先提出了一种一致的双任务方法,用于无nms训练的YOLOs,它具有优良的性能和较低的推理延迟。此外,我们还提出了整体效率-精度驱动的模型设计策略。我们从效率和精度两个角度对YOLOs的各个组成部分进行了全面优化,大大降低了计算开销,增强了性能。我们的努力成果是用于实时端到端目标检测的新一代YOLO系列,称为YOLOv10。大量的实验表明,YOLOv10在各种模型尺度上都达到了最先进的性能和效率。例如,YOLOv10-S在COCO上类似的AP下比RT-DETR-R18快1.8倍,同时参数数量和FLOPs减少2.8倍。与YOLOv9-C相比,在相同性能下,YOLOv10-B的延迟减少了46%,参数减少了25%。

YOLOv10创新点简述:

        在YOLOv8的基础上取消了NMS,提出了新模块CfCIB, 基础框架仍为YOLOv8。


2 作者所用方法

        作者提出了一种无NMS训练策略,通过双重标签分配和一致的匹配度量,实现了高效率和准确率。

双重标签分配策略:简单点说就是为yolo加入了另一个一对一的检测头。它保留了与原始一对多分支相同的结构和优化目标,但利用一对一匹配来获得标签分配。在训练过程中,两个头部与模型共同优化,使主干和颈部网络享受到一对多分配所提供的丰富监督。在推理过程中,抛弃了一对多的检测头,利用一对一检测头进行预测。

一致的匹配度量:为了使两个分支在训练过程中保持一致,作者采用了一致的匹配度量。匹配度量用于评估预测边界框与真实边界框之间的一致性。

The compact inverted block (CIB)和The partial self-attention module (PSA).


3 YOLOv10使用教程

3.1 模型训练

        前往上方提供的链接下载代码,本文教程演示代码链接:ultralytics

         解压并使用Pycharm(或者VsCode等软件)打开。准备一个数据集或点击此链接下载:https://pan.baidu.com/s/ ,新建一个train.py脚本,并选择配置好的torch环境,并修改相关信息。此处我使用的epochs值为10,读者可自行调大epochs(训练次数)的值,使得模型达到更好的效果。

from ultralytics.models import YOLO
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'if __name__ == '__main__':model = YOLO(model='ultralytics/cfg/models/v10/yolov10n.yaml')# model.load('yolov10n.pt')model.train(pretrained=True, data='./data.yaml', epochs=10, batch=1, device='0', imgsz=640, workers=2, cache=False,amp=True, mosaic=False, project='runs/train', name='exp')

         运行脚本,显示模型信息。

         训练完成。

3.2 模型验证

        创建val脚本,并填入图中代码,运行脚本即可获得相关性能指标。

from ultralytics.models import YOLO
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'if __name__ == '__main__':model = YOLO(model='./runs/train/exp/weights/best.pt')model.val(data='./data.yaml', batch=5, device='0', imgsz=640, workers=2, project='runs/val/', name='exp')

3.3 模型推理 

        创建检测脚本,并填入相关信息,运行即可进行检测。

from ultralytics.models import YOLOif __name__ == '__main__':model = YOLO(model='./yolov8n.pt')results = model('ultralytics/assets/bus.jpg')# Process results listfor result in results:boxes = result.boxesresult.show()result.save(filename="./runs/detect/result.jpg")  # save to disk

         检测效果演示,以下为使用yolov8n.pt检测的结果,读者可使用相关训练好的权重检测相应图片。


欢迎关注

相关文章:

YOLOv10使用教程及导读

首先推荐一下我的YOLOv8/v10项目,仅需一个v8的钱(69.9),付费进群,即可获取v8/v10的全部改进,欢迎进群。 1 YOLOv10简介 论文链接:https://arxiv.org/pdf/2405.14458 官方代码链接:ht…...

AIGC 在前端流式获取内容SSE

AIGC 在前端流式获取内容SSE 简介具体实现 简介 在 OpenAI 的 API 中,SSE 通常用于实现实时数据传输。例如,在聊天模型(如 ChatGPT)中,使用 SSE 可以让客户端实时接收到生成的对话内容,而不需要等待整个响…...

深度解析安全阀检测技术:方法与挑战

在工业生产中,安全阀作为防止压力容器和管道发生过压事故的关键部件,其性能和可靠性对于保证设备安全和人员安全具有重要意义。随着工业化进程的不断深入,对安全阀的检测和维护工作也日益受到重视。 接下来,佰德旨在探讨安全阀检…...

网络安全--安全设备(一)Dos

安全设备--Dos 一、Dos 是什么二、DDos是什么三、Dos&DDos的区别四、产品防御Dos&DDos方式五、常见的DDoS攻击类型包括但不限于以下几种: 一、Dos 是什么 Dos(拒绝服务攻击,Denial-of-Service),是一种试图通过压倒网络或服务器来阻止合法用户访…...

<电力行业> - 《第3课:国家电网公司100条名词解释》

序号术语解 释1十不干一、无票的不干;二、工作任务、危险点不清楚的不干;三、危险点控制措施未落实的不干;四、超出作业范围未经审批的不干;五、未在接地保护范围内的不干;六、现场安全措施布置不到位、安全工器具不合…...

“论数据访问层设计技术及其应用”写作框架,系统架构设计师

论文真题 在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模…...

Docker部署前端,动态配置后端地址

本文介绍了使用Docker环境变量动态配置nginx。采用的是通过docker run -e xxxxxxx先往容器注入环境变量,然后进一步通过envsubst指令将环境变量写入到conf文件中,实现动态配置文件内容。 背景 前后端分离的架构下,经常会用到nginx反向代理来…...

k8s强制删除一个 Pod

在Kubernetes(K8s)中强制删除一个Pod,通常是因为Pod处于错误状态或无法正常终止。以下是强制删除Pod的步骤和相关信息: ### 步骤一:获取Pod的名称 首先,你需要知道要删除的Pod的名称。可以使用kubectl get …...

docker的安装配置及使用

一.Docker的由来 Docker 最初是 dotCloud 公司创始人Solomon Hykes 在法国期间发起的一个公司内部项目。 2010年的专门做PAAS平台,但是到了2013年的时候,像亚马逊,微软,Google都开始做PAAS平台。 到了2013年,公司资金链…...

初阶 《操作符详解》 10. 逗号表达式

10. 逗号表达式 exp1, exp2, exp3, …expN 注&#xff1a; 1.逗号表达式&#xff0c;就是用逗号隔开的多个表达式 2.逗号表达式&#xff0c;从左向右依次执行&#xff0c;整个表达式的结果是最后一个表达式的结果 代码1 #include <stdio.h> int main() {int a 1;int b…...

【区分vue2和vue3下的element UI Loading 加载组件,分别详细介绍属性,事件,方法如何使用,并举例】

首先&#xff0c;需要澄清的是&#xff0c;Element UI 是为 Vue 2 设计的&#xff0c;而 Element Plus 是 Element UI 的 Vue 3 版本。在 Element UI 和 Element Plus 中&#xff0c;并没有一个直接名为 “Loading 加载” 的独立组件。相反&#xff0c;加载效果通常是通过指令、…...

数据结构:栈(stack)详解 c++信息学奥赛基础知识讲解

目录 一、栈的定义 二、栈的操作 三、代码实操 四、栈的实现 1、string实现stack 2、vector实现stack 3、deque实现栈 一、栈的定义 stack是一个比较简单易用的数据结构&#xff0c;stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff…...

电商返利系统的高并发处理与性能优化

电商返利系统的高并发处理与性能优化 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在电子商务平台中&#xff0c;返利系统是吸引用户和提升用户粘性的重要功…...

NPM 常用命令

NPM 常用命令 NPM&#xff08;Node Package Manager&#xff09;是 JavaScript 生态系统中最流行的包管理工具&#xff0c;它不仅可以管理 Node.js 项目的依赖&#xff0c;还提供了丰富的命令来管理和发布你的代码。本文将从不同角度&#xff0c;深入浅出地介绍 NPM 的常用命令…...

C++进修——C++核心编程

内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制编码&#xff0c;由操作系统进行管理全局区&#xff1a;存放全局变量和静态变量以及常量栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#xff…...

【信息系统项目管理师知识点速记】项目文档管理

19.3 项目文档管理 信息系统相关信息(文档)是指某种数据媒体和其中所记录的数据。文档具有永久性,并可以由人或机器阅读,通常用于描述人工可读的内容。在软件工程中,文档常常用来表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息(包…...

服务器硬件,raid配置

文章目录 服务器硬件RAID磁盘阵列RAID 0RAID 1RAID 5RAID 6RAID 10 阵列卡&#xff0c;阵列卡的缓存阵列卡阵列卡的缓存 软RAID磁盘阵列RAID阵列的管理及设备恢复mdadm 服务器硬件 处理器(CPU)&#xff1a;服务器的核心组件&#xff0c;负责执行计算和指令操作。服务器常使用多…...

fc-list命令使用指南

fc-list命令使用指南 一、什么是fc-list? fc-list是FontConfig库的一部分&#xff0c;最初为Linux和其他Unix-like系统开发。我们可以用这个命令行快速查询和列出系统中安装的字体。 现在&#xff0c;Windows用户也集成了这个工具&#xff0c;所以我们来讲解一下用法。 二、…...

NAS安全存储怎样实现更精细的数据权限管控?

NAS存储&#xff0c;即网络附属存储&#xff08;Network Attached Storage&#xff09;&#xff0c;是一种专用数据存储服务器&#xff0c;其核心特点在于将数据存储设备与网络相连&#xff0c;实现集中管理数据的功能。 NAS存储具有以下明显优势&#xff0c;而被全球范围内的企…...

第三十篇——等价性:如何从等价信息里找答案?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 知道了等价性的逻辑&#xff0c;通过等价性去衡量事物&#xff0c;像是给…...

IDEA 2018.2.3 下 Maven 依赖包消失?别慌,可能是版本兼容性在作祟

IDEA 2018.2.3 下 Maven 依赖包消失的深度排查指南 当你打开一个尘封已久的老项目&#xff0c;准备继续维护或迁移时&#xff0c;突然发现IDEA的External Libraries里空空如也&#xff0c;只剩下孤零零的JDK包&#xff0c;整个项目文件一片飘红——这种场景对许多维护历史代码库…...

终极指南:10分钟掌握SPT-AKI存档编辑器完整使用教程

终极指南&#xff1a;10分钟掌握SPT-AKI存档编辑器完整使用教程 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_mirrors/sp/…...

模拟IC设计避坑指南:用Cadence Virtuoso仿真,揭秘电流镜精度下降的3个元凶

模拟IC设计避坑指南&#xff1a;用Cadence Virtuoso仿真&#xff0c;揭秘电流镜精度下降的3个元凶 在模拟CMOS集成电路设计中&#xff0c;电流镜作为基础模块广泛应用于偏置电路、有源负载等场景。然而许多工程师在Cadence Virtuoso IC617中完成电流镜设计后&#xff0c;常会遇…...

如何用nmrpflash拯救你的Netgear路由器:从“变砖“到重生的完整指南

如何用nmrpflash拯救你的Netgear路由器&#xff1a;从"变砖"到重生的完整指南 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当你的Netgear路由器固件升级失败、意外断电或系统崩溃后无法启动…...

10分钟掌握Autovisor:智慧树网课自动化学习的完整解决方案

10分钟掌握Autovisor&#xff1a;智慧树网课自动化学习的完整解决方案 【免费下载链接】Autovisor 2025智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor 还在为繁重的智慧树网课任务而烦恼吗&am…...

从开源物理拼图游戏学习Unity 2D物理引擎与游戏架构设计

1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“openclaw-puzzle-game”。光看名字&#xff0c;你可能会觉得这又是一个普通的开源拼图游戏&#xff0c;但点进去仔细研究后&#xff0c;我发现它的设计思路和实现方式&#xff0c;对于想学习游戏开…...

AI项目脚手架:标准化与自动化提升工程效率

1. 项目概述&#xff1a;一个为AI项目量身定制的“脚手架”如果你和我一样&#xff0c;在AI领域摸爬滚打多年&#xff0c;从早期的机器学习模型到现在的深度学习、大语言模型应用&#xff0c;肯定经历过无数次从零开始搭建项目的“阵痛”。每次新建一个项目&#xff0c;都要重复…...

大语言模型与多模态生成融合:架构、工具与实践指南

1. 项目概述&#xff1a;当大语言模型遇见多模态生成最近两年&#xff0c;AI领域最激动人心的进展&#xff0c;莫过于大语言模型&#xff08;LLMs&#xff09;和多模态生成模型的“双向奔赴”。前者以ChatGPT、GPT-4为代表&#xff0c;展现了惊人的语言理解、推理和生成能力&am…...

MQ-3与MiCS-5524气体传感器对比:从原理到实战的选型指南

1. 项目概述与核心价值在嵌入式开发、环境监测乃至一些创意DIY项目中&#xff0c;气体检测是一个常见且关键的需求。无论是为了安全预警&#xff08;如天然气泄漏&#xff09;&#xff0c;还是进行环境质量评估&#xff08;如VOC监测&#xff09;&#xff0c;选择一款合适的传感…...

Akebi-GC游戏辅助工具:免费开源的游戏体验增强终极指南

Akebi-GC游戏辅助工具&#xff1a;免费开源的游戏体验增强终极指南 【免费下载链接】Akebi-GC (Fork) The great software for some game that exploiting anime girls (and boys). 项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GC Akebi-GC是一款开源免费的游戏…...