0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

YOLOv10自定义目标检测之理论+实践

新机器视觉 来源:新机器视觉 2024-11-16 10:23 次阅读

概述

YOLOv10 是由清华大学研究人员利用 Ultralytics Python 软件包开发的,它通过改进模型架构并消除非极大值抑制(NMS)提供了一种新颖的实时目标检测方法。这些优化使得模型在保持先进性能的同时,降低了计算需求。大量实验表明,YOLOv10 在各种模型规模上提供了更优的准确率-延迟权衡。

正如读过我之前文章的朋友所知道的,我分享了使用 YOLO 模型的各种项目,因为在预训练模型中,YOLO 模型在性能和效率方面明显优于其他模型。然而,实时目标检测由于依赖非极大值抑制(NMS)和架构效率低下而面临挑战。YOLOv10 通过消除 NMS 并采用专注于效率和准确性的设计策略解决了这些问题。

架构

7e74ea22-907e-11ef-a511-92fbcf53809c.png

来自 Ultralytics 的图示

骨干网络:负责特征提取,YOLOv10 的骨干网络使用增强版的 CSPNet(交叉阶段部分网络)来改善梯度流动并减少计算冗余。

颈部网络:设计用于聚合不同尺度的特征并将其传递到头部网络。它包含用于有效多尺度特征融合的 PAN(路径聚合网络)层。

一对多头:在训练过程中为每个对象生成多个预测,以提供丰富的监督信号并提高学习准确性。

一对一头:在推理过程中为每个对象生成一个最佳预测,消除 NMS 的需要,从而减少延迟并提高效率。

模型变体及性能YOLOv10 提供六种模型:

YOLOv10-N:用于极其资源受限环境的纳米版。

YOLOv10-S:平衡速度和准确性的小型版。

YOLOv10-M:用于通用的中型版。

YOLOv10-B:增加宽度以提高准确性的平衡版。

YOLOv10-L:在增加计算资源成本的情况下提高准确性的高级版。

YOLOv10-X:用于最大化准确性的超大型版。

7ea01b02-907e-11ef-a511-92fbcf53809c.png

来自 Ultralytics 的图示

比较让我们看看在标准基准(如 COCO)上测试的不同模型在延迟和准确性方面的比较。

7eb47d86-907e-11ef-a511-92fbcf53809c.png

7ed6e9e8-907e-11ef-a511-92fbcf53809c.png

很明显,YOLOv10 是实时目标检测应用的前沿技术,以更少的参数提供更高的准确性和速度性能。

训练 YOLOv10 进行自定义目标检测首先,克隆官方 YOLOv10 GitHub 仓库以下载必要的 yolov10n 模型。

!pip install -q git+https://github.com/THU-MIG/yolov10.git


!wget -P -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10n.pt

您可以在 Roboflow Universe 上尝试任何自定义项目,创建自己的数据集,甚至使用由 Intel 赞助的 RF100 数据集。对于本文,我将使用一个预先准备好的数据集,用于检测 X 射线图像中的危险物品。数据集链接:https://universe.roboflow.com/vladutc/x-ray-baggage

使用 Roboflow API 以 YOLOv8 格式下载您的模型。

!pip install -q roboflow
from roboflow import Roboflow
rf = Roboflow(api_key="your-api-key")
project = rf.workspace("vladutc").project("x-ray-baggage")
version = project.version(3)
dataset = version.download("yolov8")

配置参数,开始训练:

!yolo task=detect mode=train epochs=25 batch=32 plots=True 
model='/content/-q/yolov10n.pt' 
data='/content/X-Ray-Baggage-3/data.yaml'

示例 data.yaml 文件

names:
- Gun
- Knife
- Pliers
- Scissors
- Wrench


nc: 5


roboflow:
  license: CC BY 4.0
  project: x-ray-baggage
  url: https://universe.roboflow.com/vladutc/x-ray-baggage/dataset/3
  version: 3
  workspace: vladutc


test: /content/X-Ray-Baggage-3/test/images
train: /content/X-Ray-Baggage-3/train/images
val: /content/X-Ray-Baggage-3/valid/images

让我们看看结果。

Image(filename='/content/runs/detect/train/results.png', width=1000)

7f01287a-907e-11ef-a511-92fbcf53809c.png

让我们预测测试数据并在 5x2 网格中显示结果。

from ultralytics import YOLOv10


model_path = '/content/runs/detect/train/weights/best.pt'
model = YOLOv10(model_path)
results = model(source='/content/X-Ray-Baggage-3/test/images', conf=0.25,save=True)
import glob
import matplotlib.pyplot as plt
import matplotlib.image as mpimg


images = glob.glob('/content/runs/detect/predict/*.jpg')


images_to_display = images[:10]


fig, axes = plt.subplots(2, 5, figsize=(20, 10))


for i, ax in enumerate(axes.flat):
    if i < len(images_to_display):
        img = mpimg.imread(images_to_display[i])
        ax.imshow(img)
        ax.axis('off')  
    else:
        ax.axis('off')  


plt.tight_layout()
plt.show()

7f26fb68-907e-11ef-a511-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 目标检测
    +关注

    关注

    0

    文章

    211

    浏览量

    15655
  • 数据集
    +关注

    关注

    4

    文章

    1209

    浏览量

    24799

原文标题:YOLOv10 自定义目标检测 | 理论+实践

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    Altium Designer 15.0自定义元件设计

    电子发烧友网站提供《Altium Designer 15.0自定义元件设计.pdf》资料免费下载
    发表于 01-21 15:04 0次下载
    Altium Designer 15.0<b class='flag-5'>自定义</b>元件设计

    think-cell:自定义think-cell(四)

    C.5 设置默认议程幻灯片布局 think-cell 议程可以在演示文稿中使用特定的自定义布局来定义议程、位置和议程幻灯片上的其他形状,例如标题或图片。通过将此自定义布局添加到模板,您可以为整个组织
    的头像 发表于 01-13 10:37 89次阅读
    think-cell:<b class='flag-5'>自定义</b>think-cell(四)

    think-cell;自定义think-cell(一)

    本章介绍如何自定义 think-cell,即如何更改默认颜色和其他默认属性;这是通过 think-cell 的样式文件完成的,这些文件将在前四个部分中进行讨论。 第五部分 C.5 设置默认议程幻灯片
    的头像 发表于 01-08 11:31 132次阅读
    think-cell;<b class='flag-5'>自定义</b>think-cell(一)

    Flexus X 实例 ultralytics 模型 yolov10 深度学习 AI 部署与应用

    前言: ���深度学习新纪元,828 B2B 企业节 Flexus X 实例特惠!想要高效训练 YOLOv10 模型,实现精准图像识别?Flexus X 以卓越算力,助您轻松驾驭大规模数据集,加速
    的头像 发表于 12-24 12:24 369次阅读
    Flexus X 实例 ultralytics 模型 <b class='flag-5'>yolov10</b> 深度学习 AI 部署与应用

    YOLOv10:引领无NMS实时目标检测的新纪元

    。 YOLO(You Only Look Once)系列一直是实时目标检测的基准,成功平衡了计算成本和检测性能。尽管在架构设计和优化策略方面取得了进展,但对非最大值抑制(NMS)的依赖阻碍了端到端部署,影响了推理延迟。
    的头像 发表于 11-13 17:12 985次阅读
    <b class='flag-5'>YOLOv10</b>:引领无NMS实时<b class='flag-5'>目标</b><b class='flag-5'>检测</b>的新纪元

    创建自定义的基于闪存的引导加载程序(BSL)

    电子发烧友网站提供《创建自定义的基于闪存的引导加载程序(BSL).pdf》资料免费下载
    发表于 09-19 10:50 0次下载
    创建<b class='flag-5'>自定义</b>的基于闪存的引导加载程序(BSL)

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划。
    的头像 发表于 08-15 11:49 706次阅读
    EtherCAT运动控制器PT/PVT实现用户<b class='flag-5'>自定义</b>轨迹规划

    NVIDIA NeMo加速并简化自定义模型开发

    如果企业希望充分发挥出 AI 的力量,就需要根据其行业需求量身定制的自定义模型。
    的头像 发表于 07-26 11:17 806次阅读
    NVIDIA NeMo加速并简化<b class='flag-5'>自定义</b>模型开发

    用OpenVINO C# API在intel平台部署YOLOv10目标检测模型

    的模型设计策略,从效率和精度两个角度对YOLOs的各个组成部分进行了全面优化,大大降低了计算开销,增强了性能。在本文中,我们将结合OpenVINO C# API使用最新发布的OpenVINO 2024.1部署YOLOv10目标检测
    的头像 发表于 06-21 09:23 1124次阅读
    用OpenVINO C# API在intel平台部署<b class='flag-5'>YOLOv10</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b>模型

    HarmonyOS开发案例:【 自定义弹窗】

    基于ArkTS的声明式开发范式实现了三种不同的弹窗,第一种直接使用公共组件,后两种使用CustomDialogController实现自定义弹窗
    的头像 发表于 05-16 18:18 1441次阅读
    HarmonyOS开发案例:【 <b class='flag-5'>自定义</b>弹窗】

    TSMaster 自定义 LIN 调度表编程指导

    LIN(LocalInterconnectNetwork)协议调度表是用于LIN总线通信中的消息调度的一种机制,我们收到越来越多来自不同用户希望能够通过接口实现自定义LIN调度表的需求。所以在
    的头像 发表于 05-11 08:21 742次阅读
    TSMaster <b class='flag-5'>自定义</b> LIN 调度表编程指导

    HarmonyOS开发案例:【UIAbility和自定义组件生命周期】

    本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
    的头像 发表于 05-10 15:31 1326次阅读
    HarmonyOS开发案例:【UIAbility和<b class='flag-5'>自定义</b>组件生命周期】

    maixcam部署yolov5s 自定义模型

    maixcam部署yolov5s 自定义模型 本博客将向你展示零基础一步步的部署好自己的yolov5s模型(博主展示的是安全帽模型),训练就引用我自己之前写过的,已经训练好的可以跳过该部分,其中有
    发表于 04-23 15:43

    HarmonyOS开发实例:【自定义Emitter】

    使用[Emitter]实现事件的订阅和发布,使用[自定义弹窗]设置广告信息。
    的头像 发表于 04-14 11:37 1047次阅读
    HarmonyOS开发实例:【<b class='flag-5'>自定义</b>Emitter】

    鸿蒙ArkUI实例:【自定义组件】

    组件是 OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自带系统组件,比如 `Text` 、 `Button` 等,也可以是自定义组件,本节笔者简单介绍一下自定义组件的语法规范。
    的头像 发表于 04-08 10:17 694次阅读