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 YOLO


if __name__ == '__main__':
    model = YOLO(model='./yolov8n.pt')
    results = model('ultralytics/assets/bus.jpg')

    # Process results list
    for result in results:
        boxes = result.boxes
        result.show()
        result.save(filename="./runs/detect/result.jpg")  # save to disk

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


欢迎关注

  • 53
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLOv10(You Only Look Once Version 10)是一个先进的目标检测算法,它是YOLO(You Only Look Once)系列的最新版本,该系列以其实时性和高效性而闻名。下面是YOLov10的基本使用教程概述: 1. **安装依赖**: - 首先,确保你的环境中已经安装了Python和相关库,如TensorFlow或PyTorch(YOLOv10通常基于这些库实现)。 - 可能还需要安装Darknet框架,因为YOLOv10最初是在Darknet上开发的。你可以从官方GitHub仓库下载预训练模型和代码:https://github.com/AlexeyAB/darknet 2. **下载预训练模型**: - 在Darknet的GitHub上,找到YOLOv10的预训练权重文件,这将用于初始化你的模型。 - 将模型下载到你的项目目录,并解压。 3. **加载模型**: - 使用Darknet的API加载模型和配置文件,通常在`cfg/`目录下找到相应的`.cfg`和`.weights`文件。 4. **数据预处理**: - 准备你的输入数据,这可能包括图像读取、调整尺寸、归一化等步骤。YOLOv10通常接受输入图像的固定大小。 5. **预测**: - 对输入图像进行前向传播,模型会返回每个检测区域及其置信度和类别。 - 可能需要对结果进行非极大值抑制(NMS),以减少重叠预测。 6. **可视化结果**: - 使用可视化库(如OpenCV)将预测结果显示出来,显示框、类别和置信度。 7. **训练自定义模型**: - 如果你想训练自己的模型,你需要准备一个包含标签的大型数据集,然后通过Darknet提供的工具进行训练。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值