[YOLO专题-13]:YOLO V5 - ultralytics制作自己的训练数据集

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[YOLO专题-13]:YOLO V5 - ultralytics制作自己的训练数据集相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

  本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122288423


目录

前言:

步骤1:采集自己的自定义数据集的图片数据

步骤2:为自己的自定义图片数据集打标签

步骤3:把json格式的标签文件转换成yolo-v5所需格式的标签文件

3.1 Yolo Text格式:(Cx, Cy, W, H) ,  且需要归一化后的数据格式

3.2 转换工具:基于现有的工具进行转换

3.3 转换后图片与标签,按照YOLO的方式进行组织

第4步骤:为数据创建YOLO的配置文件


前言:

在实际项目中,有时候,没有开源的数据集可用,或者开源的数据集与我们自己业务需要的数据集不同,因此,我们需要自定义我们的数据集,为我们自己的数据集打标签。

不同的公开数据集有不同的数据集格式,YOLO对数据集也有自身的要求,不同版本,也有不同格式要求。本文探讨如何为YOLO V5制作自己的自定义数据集。

制作过程如下:

步骤1:采集自己的自定义数据集的图片数据

(1)方法1:人工拍照片,每一张照片就是数据集中的一张图片。

(2)方法2:拍视频,把视频转换成一张张图片(通过工具,截取视频帧,转换成原始图片)

(3)方法3:数据增强,基于已有的图片数据,通过数据集增强处理,生成新的图片。

备注:

  • 采集到所有原始图片,会存放在同一个目录中:xxx.jpg

步骤2:为自己的自定义图片数据集打标签

(1)使用labelme工具,选择合适的图片,为他们进行目标框分类的标注

具体操作方法如下:

[人工智能-深度学习-68]:数据集 - 如何使用labelme给自定义图片打标签_文火冰糖(王文兵)的博客-CSDN博客

(2)输出:labelme工具生成的标签文件是Json格式的。

  • 标签文件与图片文件同名:xxx.json
  • 标签文件与图片文件在同一个目录中

这种格式的标签,可视化好,易读,但文本信息比较多,如下图所示:


  "version": "4.6.0",
  "flags": ,
  "shapes": [
    
      "label": "circal",
      "points": [
        [
          280.66666666666663,
          721.6666666666666
        ],
        [
          424.66666666666663,
          868.3333333333334
        ]
      ],
      "group_id": null,
      "shape_type": "rectangle",
      "flags": 
    
  ],
  "imagePath": "173_1384.jpg",
  "imageData": 
  "imageHeight": 1282,
  "imageWidth": 720

Json格式:(x1, y1, x2, y2) ,实际坐标数据格式。这与yolo-v3所期望的格式并不相同。

步骤3:把json格式的标签文件转换成yolo-v5所需格式的标签文件

3.1 Yolo Text格式:(Cx, Cy, W, H) ,  且需要归一化后的数据格式

通过图片的尺寸信息和实际坐标数据,就可以对标签数据进行转换。

5 0.229438 0.16684 0.000854 0.001
5 0.202522 0.183007 0.000977 0.001333

3.2 转换工具:基于现有的工具进行转换

3.3 转换后图片与标签,按照YOLO的方式进行组织

XXX/train/

-----/train/images/

-----/train/labels/

XXX/valid/

-----/valid/images/

-----/valid/labels/

XXX/test/   # 可选

-----/test/images/

-----/test/labels/

三个数据的比例 = train:valid:test = 9  :3:1, 基本上是3  :1的阶梯

第4步骤:为数据创建YOLO的配置文件

按照如下的案例:创建数据集的配置文件,并放在数据的根目录中:

  • path(可选):数据集的根目录
  • train(必选):训练图片的子目录
  • val(必选):验证图片的子目录
  • nc(必选):分类的数目
  • names(必选):每个分类的名称
  • download(可选):远程下载数据集的路径(如果本地没有,则从网络下载)

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122288423

以上是关于[YOLO专题-13]:YOLO V5 - ultralytics制作自己的训练数据集的主要内容,如果未能解决你的问题,请参考以下文章

[YOLO专题-18]:YOLO V5 - ultralytics代码解析-总体架构

[YOLO专题-22]:YOLO V5 - ultralytics代码解析-超参数详解

[YOLO专题-21]:YOLO V5 - ultralytics代码解析-网络配置文件与总体结构

[YOLO专题-19]:YOLO V5 - ultralytics代码解析-dataloader数据加载机制

[YOLO专题-16]:YOLO V5 - 如何把labelme json训练数据集批量转换成yolo数据集

[YOLO专题-17]:YOLO V5 - 如何把YOLO训练数据集批量转换成带矩形框的图片