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

    文章

    234

    浏览量

    16544
  • 数据集
    +关注

    关注

    4

    文章

    1240

    浏览量

    26261

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件上的简单硬件设计。
    的头像 发表于 04-09 09:53 219次阅读
    使用Python/MyHDL创建<b class='flag-5'>自定义</b>FPGA IP

    MCUXpresso SDK创建自定义清单

    概述 MCUXpresso SDK 24.12 介绍塞德恩汉CED支持自定义清单,使开发人员能够精确定义其工作区中包含哪些组件、驱动程序、中间件和板支持包。此功能在极简主义、可重复性和 CI/CD
    发表于 04-07 07:11

    极海APM32F427如何实现自定义USB HID设备与PC进行通信

    最近需要使用到 APM32F427 枚举成Custom HID设备进行用户自定义通信,但是官方的例程只有提供的HID枚举为鼠标或者键盘类型的设备。这里记录一下,怎么使用Geehy官方的USB中间件,实现自定义的USB HID设备进行用户通信。
    的头像 发表于 03-30 09:30 2772次阅读
    极海APM32F427如何实现<b class='flag-5'>自定义</b>USB HID设备与PC进行通信

    如何为 Vision Five 2 编译自定义 Linux 内核?

    Vision Five 2 的 Debian 用户指南只提供了半页关于如何编译自己的内核的相当稀疏的内容。仅从该文档中,我无法制作我的自定义内核。那里的信息似乎相当不完整。如果有人能提供一些
    发表于 02-24 07:44

    电能质量监测装置可自定义监测时段吗?

    电能质量监测装置普遍支持自定义监测时段,现代中高端装置还具备分时差异化监测与灵活触发能力,可按时间、事件或混合策略定制采集与存储,兼顾精度、效率与存储成本。 一、自定义监测时段的核心实现方式 1.
    的头像 发表于 12-10 16:49 1174次阅读

    电能质量在线监测装置的自定义监测时段功能有哪些应用场景?

    电能质量在线监测装置的 自定义监测时段功能 ,核心价值是通过 “按需配置监测时间、采样频率和数据策略”,实现精准监测、资源优化与数据针对性分析,其应用场景覆盖工业生产、商业运营、电网运维、特殊保障等
    的头像 发表于 12-10 14:01 520次阅读
    电能质量在线监测装置的<b class='flag-5'>自定义</b>监测时段功能有哪些应用场景?

    电能质量在线监测装置的自定义监测时段功能与离线监测有什么区别?

    电能质量在线监测装置的 自定义监测时段功能 与 离线监测 是两个不同维度的功能,核心区别在于 设计目标、网络依赖、数据流转方式 及 应用场景 ,具体差异可从以下多维度展开: 一、核心定义与设计
    的头像 发表于 12-10 14:00 615次阅读
    电能质量在线监测装置的<b class='flag-5'>自定义</b>监测时段功能与离线监测有什么区别?

    无图形界面模式下自定义检查工具的应用

    此前文章已介绍 ANSA 中的自定义检查工具。本文将探讨该功能在无图形界面(No-GUI)模式下的应用,旨在满足标准化工作流程的需求,适用于需要高度自动化的前处理场景。通过集成自定义检查,用户可实现工作流程的高效自动化运行。
    的头像 发表于 11-30 14:13 777次阅读
    无图形界面模式下<b class='flag-5'>自定义</b>检查工具的应用

    采用汇编指示符来使用自定义指令

    具体实现 1、采用.word .half .dword等汇编指示符直接插入自定义指令,这种方法需要自己指定寄存器。其中.word为插入一个字的数据即32位,.half为插入半字即16位
    发表于 10-28 06:02

    如何使用SDK进行自定义音频播放功能

    在上一篇文章安信可离线语音模组 VC-01、VC-02 系列教程 【二次开发篇】自定义音频替换失败过程中,简要概述了res_build_tool.py 文件, 其主要的作用就是将音频文件进行转换,从而使编译固件的时候能够将音频文件编译到BIN中,然后在各项事件触发的时候实现播放。
    的头像 发表于 09-25 15:52 4338次阅读
    如何使用SDK进行<b class='flag-5'>自定义</b>音频播放功能

    LOTO示波器自定义解码功能—CANFD解码

    LOTO示波器软件更新了自定义解码功能,并在bilibili上传了演示视频,视频链接: https://www.bilibili.com/video/BV1wq3ezjEjQ
    的头像 发表于 07-11 10:34 1200次阅读
    LOTO示波器<b class='flag-5'>自定义</b>解码功能—CANFD解码

    大彩讲堂:VisualTFT软件如何自定义圆形进度条

    VisualTFT软件如何自定义圆形进度条
    的头像 发表于 07-07 17:10 1913次阅读
    大彩讲堂:VisualTFT软件如何<b class='flag-5'>自定义</b>圆形进度条

    KiCad 中的自定义规则(KiCon 演讲)

    设计规则 展开,重点探讨了 那些复杂却强大的特性。 由于这些规则本质上是基于文本表达的,需要用户细致入微的理解。演讲的 核心目标 是引导用户有效实施这些规则,从而 规避布线问题、提升制造良率,并优化设计流程 。 讨论 始于对自定义设计规则的
    的头像 发表于 06-16 11:17 2559次阅读
    KiCad 中的<b class='flag-5'>自定义</b>规则(KiCon 演讲)

    HarmonyOS应用自定义键盘解决方案

    自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义键盘可以
    的头像 发表于 06-05 14:19 2616次阅读

    如何使用自定义设置回调函数?

    你好,我正在尝试编写自己的自定义设置回调函数,并使用 fastEnum=false。 是否有任何代码示例或资料可供我参考? void CyU3PUsbRegisterSetupCallback
    发表于 05-21 06:11