YOLOv5数据集配置文件参数作用和用法

坚持写博客,分享自己的在学习、工作中的所得

  1. 给自己做备忘
  2. 对知识点记录、总结,加深理解
  3. 给有需要的人一些帮助,少踩一个坑,多走几步路

尽量以合适的方式排版,图文兼有
如果写的有误,或者有不理解的,均可在评论区留言
如果内容对你有帮助,欢迎点赞 收藏 ⭐留言 。
虽然平台并不会有任何奖励,但是我会很开心,可以让我保持写博客的热情



文章目录

  • YOLOv5数据集配置文件
    • COCO数据集
      • path
      • train
      • val
      • test
      • nc
      • names
      • download

YOLOv5数据集配置文件

时间:2021年11月3日16:53:47

版本:当前代码的release版本为v6.0

命令:git clone -b v6.0 https://github.com/ultralytics/yolov5.git

注意:v6.0使用wandb会有问题,这个bug目前已经修复 5308

数据集配置文件:data\coco.yaml

目前已经实现的公开数据集有9个,如果是使用公开数据集的配置文件,训练公开数据集,按照文件的配置,会把公开数据集下载到代码父级目录下的datasets文件夹下

COCO数据集

以COCO数据集为例,文件结构为:

# data\coco.yaml

parent
├── yolov5
└── datasets
    └── coco  ← downloads here

在COCO数据集的配置文件中有以下参数:

path

path: …/datasets/coco # dataset root dir

这是数据集的路径,相对于代码的根目录;如果没有这个参数,则默认当前路径,也就是代码根目录;

使用path的路径与后面的trainvaltest的路径或文件或文件名进行拼接,得到对应路径

    # train.py
    # Parse yaml
    path = extract_dir or Path(data.get('path') or '')  # optional 'path' default to '.'
    for k in 'train', 'val', 'test':
        if data.get(k):  # prepend path
            data[k] = str(path / data[k]) if isinstance(data[k], str) else [str(path / x) for x in data[k]]

train

train: train2017.txt # train images (relative to ‘path’) 118287 images

这是训练集,路径相对于前面的path,这里不能为绝对路径,因为代码(utils\general.py中的check_dataset函数)中会将路径进行拼接;文件中每一行存储训练集中的一张图片的路径;

.txt中的路径需要有/images/,因为datasets.py中的img2label_paths()会自动将images替换为labels

额外数据集或者增强的数据可以单独放在一个文件夹,换行,缩进,加-(参考data\GlobalWheat2020.yaml),具体代码:utils\general.py中的check_dataset()

即:

train: 
  - train1.txt
  - train2.txt
  - train3.txt

val

val: val2017.txt # train images (relative to ‘path’) 5000 images

这是验证集,参考train

test

test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

这是测试集,参考train

nc

nc: 80 # number of classes

类别数,这个参数必须要有,否则将报错;

names

names: [‘person’, …, ‘toothbrush’] # class names

类别名称,按照索引与标注数据对应;如果没有这个参数,则会根据参数nc自动命名类别名对class_i,i为索引;

如果训练的命令设置了--single-cls,那么nc会被设置为1,同时names如果提供了不止一个类别名,那么类别名将被设置为item

    # train.py
    names = ['item'] if single_cls and len(data_dict['names']) != 1 else data_dict['names']  # class names

download

download: …

下载数据集的代码或命令行。如果是使用自己的数据集,不需要下载的话,需要把这个参数去掉。



如果内容对你有帮助,或者觉得写的不错
️‍欢迎点赞 收藏 ⭐留言
有问题,请在评论区留言

你可能感兴趣的:(Deep,Learning,python,yolov5)