YOLO 算法的自定义数据集制作及模型训练方法(附代码)

这篇具有很好参考价值的文章主要介绍了YOLO 算法的自定义数据集制作及模型训练方法(附代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文章主要涉及以下工作:
   (1)详细介绍了怎样制作YOLO的自定义数据集以及如何使用自定义数据集训练YOLO模型。
   (2)对YOLOv5、YOLOv6、YOLOv7、YOLOv8进行了部分修改,能够适配自定义数据集进行训练。
   (3)提供了各YOLO算法的目标检测模型的预训练权重。
   (4)提供了项目的 Python 代码以及相应的使用文档。
如果文章有用,欢迎各位→点赞👏 + 收藏💞 + 留言🔔 😁🌹🌹
项目代码:YOLO-Datasets-And-Training-Methods
如果项目代码有用,请给Github项目star一下,谢谢啦 😁🌹🌹

1. 制作自定义数据集

(1)采集数据

  • 如果使用 Intel RealSense 双目相机采集图像,可以查看 使用 Intel RealSense 采集图片并制作机器视觉数据集

(2)安装并启动标注工具

  • 打开终端,输入以下命令完成标注工具 labelimg 的安装。

    pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  • 在终端输入 labelimg,启动 labelimg,出现如下所示的界面。

yolo格式数据集,机器视觉,YOLO,深度学习,计算机视觉,目标检测,图像处理

(3)配置标注工具

  • View 菜单中找到 Auto Save mode,点击 Auto Save mode 将标注过程设置成自动保存模式

yolo格式数据集,机器视觉,YOLO,深度学习,计算机视觉,目标检测,图像处理

  • 设置数据集格式,选择 PascalVOC

yolo格式数据集,机器视觉,YOLO,深度学习,计算机视觉,目标检测,图像处理

(4)标注数据

  • 建议YOLO的自定义数据集设置成如下的目录结构。其中 YoloDataSets 为数据集的根目录,images 文件夹内放置待标注的图片,Annotations 文件夹内放置标注工具生成的标签。

    YoloDataSets/
     |——————images/
     |        └——————1.jpg
     |        └——————2.jpg  
     |        └——————3.jpg
     |        └——————...
     |——————Annotations/
     |        └——————1.xml
     |        └——————2.xml  
     |        └——————3.xml
     |        └——————...
    
  • 点击 Open Dir 选择 images 文件夹,打开待标注的图片。

  • 点击 Change Save Dir 选择 Annotations 文件夹,将标签保存在 Annotations 文件夹。

  • 开始标图,详细过程如下。

yolo格式数据集,机器视觉,YOLO,深度学习,计算机视觉,目标检测,图像处理

(5)将VOC格式数据集转换成YOLO格式数据集

  • 将标注好的数据集按以下结构保存。

    YoloDataSets/
     |——————images/
     |        └——————1.jpg
     |        └——————2.jpg  
     |        └——————3.jpg
     |        └——————...
     |——————Annotations/
     |        └——————1.xml
     |        └——————2.xml  
     |        └——————3.xml
     |        └——————...
    
  • 在终端输入以下命令,运行 DataSet.py

    python DataSet.py --yoloversion yolov5 --trainval_percent 0.9 --train_percent 0.9 --mainpath YoloDataSets --classes ['dog','man']
                                    yolov6                    ···                ···             ····                   ['','',···]
                                    yolov7                    ···                ···             ····                   ['','',···]
                                    yolov8                    ···                ···             ····                   ['','',···]
    
  • 各参数含义如下。

    • yoloversion : YOLO的版本,这里可供选择 YOLOv5、YOLOv6、YOLOv7、YOLOv8

    • trainval_percent : 训练集和验证集的总占比,即 1-trainval_percent 为测试集占比

    • train_percent : 训练集在训练集和验证集中的占比

    • mainpath : 自定义数据集的根目录

    • classes : 待检测标签的名称,请按照示例以列表的格式填写

2. 训练YOLO算法

(1)YOLOv5的训练方法

  • 在终端输入如下命令,进入 yolov5 文件夹。

    cd yolov5
    
  • 将转换后的数据集放在 yolov5 的根目录下。

  • YoloDataSets 目录下添加 .yaml 配置文件 data.yaml ,内容和格式如下。

    path : YoloDataSets
    train: train.txt
    val: val.txt
    test: test.txt
    
    # number of classes
    nc: 2
    
    # class names
    names: ['dog','man']
    
  • 在终端运行如下命令,参数按实际情况进行调整。

    python train.py --data YoloDataSets/data.yaml --epochs 300 --weights yolov5n.pt --cfg model/yolov5n.yaml  --batch-size 128
                                                                         yolov5s.pt       model/yolov5s.yaml               64
                                                                         yolov5m.pt       model/yolov5m.yaml               40
                                                                         yolov5l.pt       model/yolov5l.yaml               24
                                                                         yolov5x.pt       model/yolov5x.yaml               16
    
  • 官方提供的目标检测预训练权重如下。

    Model size
    (pixels)
    mAPval
    50-95
    mAPval
    50
    Speed
    CPU b1
    (ms)
    Speed
    V100 b1
    (ms)
    Speed
    V100 b32
    (ms)
    params
    (M)
    FLOPs
    @640 (B)
    YOLOv5n 640 28.0 45.7 45 6.3 0.6 1.9 4.5
    YOLOv5s 640 37.4 56.8 98 6.4 0.9 7.2 16.5
    YOLOv5m 640 45.4 64.1 224 8.2 1.7 21.2 49.0
    YOLOv5l 640 49.0 67.3 430 10.1 2.7 46.5 109.1
    YOLOv5x 640 50.7 68.9 766 12.1 4.8 86.7 205.7
    YOLOv5n6 1280 36.0 54.4 153 8.1 2.1 3.2 4.6
    YOLOv5m6 1280 51.3 69.3 887 11.1 6.8 35.7 50.0
    YOLOv5l6 1280 53.7 71.3 1784 15.8 10.5 76.8 111.4
    YOLOv5x6
    + [TTA]
    1280
    1536
    55.0
    55.8
    72.7
    72.7
    3136
    -
    26.2
    -
    19.4
    -
    140.7
    -
    209.8
    -

(2)YOLOv6的训练方法

  • 在终端输入如下命令,进入 yolov6 文件夹。

    cd yolov6
    
  • 将转换后的数据集放在 yolov6 的根目录下。

  • YoloDataSets 目录下添加 .yaml 配置文件 data.yaml ,内容和格式如下。

    train: YoloDataSets/images/train       # train images
    val: YoloDataSets/images/val           # val images
    test: YoloDataSets/images/test
    is_coco: False
    
    # number of classes
    nc: 2
    
    # class names
    names: ['dog','man']
    
  • 在终端运行如下命令,参数按实际情况进行调整。

    python tools/train.py --batch 64 --conf configs/yolov6s6_finetune.py --data YoloDataSets/data.yaml --epochs 300  --device 0               
    
  • 官方提供的目标检测预训练权重如下。

    Model Size mAPval
    0.5:0.95
    SpeedT4
    trt fp16 b1
    (fps)
    SpeedT4
    trt fp16 b32
    (fps)
    Params
    (M)
    FLOPs
    (G)
    YOLOv6-N 640 37.5 779 1187 4.7 11.4
    YOLOv6-S 640 45.0 339 484 18.5 45.3
    YOLOv6-M 640 50.0 175 226 34.9 85.8
    YOLOv6-L 640 52.8 98 116 59.6 150.7
    YOLOv6-N6 1280 44.9 228 281 10.4 49.8
    YOLOv6-S6 1280 50.3 98 108 41.4 198.0
    YOLOv6-M6 1280 55.2 47 55 79.6 379.5
    YOLOv6-L6 1280 57.2 26 29 140.4 673.4

(3)YOLOv7的训练方法

  • 在终端输入如下命令,进入 yolov7 文件夹。

    cd yolov7
    
  • 将转换后的数据集放在 yolov7 的根目录下。

  • YoloDataSets 目录下添加 .yaml 配置文件 data.yaml ,内容和格式如下。

    train: YoloDataSets/train.txt
    val: YoloDataSets/val.txt
    test: YoloDataSets/test.txt
    
    # number of classes
    nc: 2
    
    # class names
    names: ['dog','man']
    
  • 在终端运行如下命令,参数按实际情况进行调整。

    # finetune p5 models
    python train.py --workers 8 --device 0 --batch-size 32 --data YoloDataSets/data.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights 'yolov7_training.pt' --name yolov7-custom --hyp data/hyp.scratch.custom.yaml
    
    # finetune p6 models
    python train_aux.py --workers 8 --device 0 --batch-size 16 --data YoloDataSets/data.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6-custom.yaml --weights 'yolov7-w6_training.pt' --name yolov7-w6-custom --hyp data/hyp.scratch.custom.yaml              
    
  • 官方提供的目标检测预训练权重如下。

    Model Test Size APtest AP50test AP75test batch 1 fps batch 32 average time
    YOLOv7 640 51.4% 69.7% 55.9% 161fps 2.8ms
    YOLOv7-X 640 53.1% 71.2% 57.8% 114fps 4.3ms
    YOLOv7-W6 1280 54.9% 72.6% 60.1% 84fps 7.6ms
    YOLOv7-E6 1280 56.0% 73.5% 61.2% 56fps 12.3ms
    YOLOv7-D6 1280 56.6% 74.0% 61.8% 44fps 15.0ms
    YOLOv7-E6E 1280 56.8% 74.4% 62.1% 36fps 18.7ms

(4)YOLOv8的训练方法

  • 在终端输入如下命令,进入 yolov8 文件夹。

    cd yolov8
    
  • 将转换后的数据集放在 yolov8 的根目录下。

  • YoloDataSets 目录下添加 .yaml 配置文件 data.yaml ,内容和格式如下。

    path : ../YoloDataSets
    train: train.txt
    val: val.txt
    test: test.txt
    
    # number of classes
    nc: 2
    
    # class names
    names: ['dog','man']
    
  • 在终端运行如下命令,参数按实际情况进行调整。

    yolo task=detect mode=train model=yolov8n.yaml data=YoloDataSets/data.yaml batch=28 epochs=300 imgsz=640 workers=32 device=0
                                      yolov8s.yaml
                                      yolov8m.yaml
                                      yolov8l.yaml
                                      yolov8x.yaml
    
  • 官方提供的目标检测预训练权重如下。

    Model size
    (pixels)
    mAPval
    50-95
    Speed
    CPU ONNX
    (ms)
    Speed
    A100 TensorRT
    (ms)
    params
    (M)
    FLOPs
    (B)
    YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
    YOLOv8s 640 44.9 128.4 1.20 11.2 28.6
    YOLOv8m 640 50.2 234.7 1.83 25.9 78.9
    YOLOv8l 640 52.9 375.2 2.39 43.7 165.2
    YOLOv8x 640 53.9 479.1 3.53 68.2 257.8

3. 参考资料

[1] YOLOv5 官方代码 v7.0
[2] YOLOv6 官方代码 v0.3.0
[3] YOLOv7 官方代码 v0.1
[4] YOLOv8 官方代码 v0.0.0文章来源地址https://www.toymoban.com/news/detail-644589.html

到了这里,关于YOLO 算法的自定义数据集制作及模型训练方法(附代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pytorch实战5——DataLoader数据集制作

    目录 1.如何自定义数据集: 咱们以花朵数据集为例: 任务1:读取txt文件中的路径和标签 任务2:通过上面字典返回数据,分别把数据和标签都存在list里 任务3:图像数据路径得完整 任务4:把上面那几个事得写在一起,整合到一个类。 任务5:数据预处理(transform)¶ 任务6:根据

    2024年02月04日
    浏览(41)
  • 基于arcgis的遥感深度学习数据集制作

    由于很多时候,我们在研究过程中往往需要根据实际情况使用自己的影像数据来提取目标物,如果没有合适的公开数据集的话,为了满足实际需要,我们就需要制作符合自己要求的数据集。 今天我们就根据实际情况来详细讲解如何利用arcgis,来制作属于自己的数据集。 首先

    2024年02月01日
    浏览(49)
  • 通信调制信号及时频图数据集制作(MATLAB)

    实现平台:MATLAB2022b         首先产生调制信号,包括八种数字调制类型和三种模拟调制类型: 二相相移键控 (BPSK) 四相相移键控 (QPSK) 八相相移键控 (8-PSK) 十六相正交幅值调制 (16-QAM) 六十四相正交幅值调制 (64-QAM) 四相脉冲幅值调制 (PAM4) 高斯频移键控 (GFSK) 连续相位频移

    2024年02月08日
    浏览(44)
  • 使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)

    目录 1.前言 2. 数据集简介 2.1采集区域 2.2采集平台 3. 激光雷达数据位置 4. 激光雷达数据标签含义 5. 数据预处理与训练 5.1配置openpcdet 5.2数据预处理 5.2.1数据集目录整理 5.2.2数据集格式转化 5.3训练 做激光雷达感知相关工作离不开数据集,激光雷达数据标注价格较高,可选的开

    2024年02月09日
    浏览(55)
  • yolov8-pose姿态估计数据集制作(一)

    最近在搞yolo-pose姿态识别算法,现成的模型已经挺好用了,但是在某些特定的场景下,还是识别不准。所以想着自己搞搞数据,查了网上相关的博客,基本思路都是先按照coco格式来标,然后再转化成yolo格式。不废话,直接说咋干。 这里推荐使用CVAT,好用,没啥说。GitHub链接

    2024年02月11日
    浏览(44)
  • 【计算机图形学】【代码复现】A-SDF中的数据集制作与数据生成

    Follow A-SDF 的 Data Generation 部分: We follow (1) ANSCH to create URDF for shape2motion dataset (1-2) URDF2OBJ(本人认为是1-2之间需要进行的重要的过渡部分) (2) Manifold to create watertight meshes (3) and modified mesh_to_sdf for generating sampled points and sdf values. follow这个github: ANSCH 在 global_info.py 中,主要修改

    2024年02月08日
    浏览(55)
  • python实现视频抽帧,文件批量操作,文件批量处理(数据集制作的工具箱)

    环境准备 数据集制作 文件批量重命名 文件批量移动 将文件批量按照一定格式进行重命名 修改xml文件内容的方法 Pathlib库的常用接口 在计算机视觉项目中,文件批量操作和文件批量预处理是必不可少的步骤。它们涉及处理大量的图像文件,包括读取、处理、保存和预处理。

    2024年02月09日
    浏览(72)
  • win11系统AVA2.1数据集制作、训练、测试、本地视频验证(完整已跑通)

    本文参照杨帆老师的博客,根据自己的需要进行制作,杨帆老师博客原文链接如下: 自定义ava数据集及训练与测试 完整版 时空动作/行为 视频数据集制作 yolov5, deep sort, VIA MMAction, SlowFast-CSDN博客 文章浏览阅读2.2w次,点赞31次,收藏165次。前言这一篇博客应该是我花时间最多

    2024年02月19日
    浏览(54)
  • YOLOv5训练大规模的遥感实例分割数据集 iSAID从切图到数据集制作及训练

    最近想训练遥感实例分割,纵观博客发现较少相关 iSAID数据集的切分及数据集转换内容,思来想去应该在繁忙之中抽出时间写个详细的教程。 iSAID数据集链接 下载上述数据集。 百度网盘中的train和val中包含了实例和语义分割标签。 上述过程只能下载标签,原始图像为DOTA,

    2024年02月04日
    浏览(67)
  • YOLOV3 SPP 目标检测项目(针对xml或者yolo标注的自定义数据集)

    项目下载地址:YOLOV3 SPP网络对自定义数据集的目标检测(标注方式包括xml或者yolo格式) 目标检测边界框的表现形式有两种: YOLO(txt) : 第一个为类别,后面四个为边界框,x,y中心点坐标以及h,w的相对值  xml文件:类似于网页的标注文件,里面会存放图像名称、高度宽度信息

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包