YOLO v5 PyTorch 训练数据标注文件 YAML 格式

更新日期: 2023-03-26 阅读次数: 2288 字数: 488 分类: AI

从 roboflow 标注数据之后,导出的 YOLO v5 PyTorch 配置文件 YAML 格式 (TXT annotations and YAML config used with YOLOv5),里面的文件路径非常不友好,每次都需要修改调整。

特别是要上传到 colab 训练,在 google drive 里在线修改 yaml 文件非常麻烦。因为为了防止

Exception: Dataset not found

我都是用的绝对路径。

我的疑问是,是否存在一种路径组织方式可以同时满足本地和线上 (colab / kaggle),不需要来回改本地绝对路径。

周末陪我妈在毓璜顶医院排队做 CT 的时候,我翻看公众号上关于 yolo v5 的一些使用经验,无意发现原来 yolo v5 自带了一些标注好的训练数据,当然只是配置文件,里面包含了对应的下载地址。以 GlobalWheat2020.yaml 为例,里面有个 path 参数,其定义了数据文件目录与 train.py 的相对路径,这样就方便多了。

合理的数据文件夹存放目录

与 yolov5 代码平级的目录 datasets,然后 datasets 目录下是不同的数据集,例如:GlobalWheat2020,如下图的结构

yolov5 训练集目录结构

path 里使用相对路径即可。

path: ../datasets/some_app      # 相对 train.py 的路径
train: some_dir    # 相对 path 的路径
test: some_dir
val: some_dir

下面是两种格式的对比,显然第二种方式更合理。

roboflow 导出的 yaml 格式

train: ../train/images
val: ../valid/images
test: ../test/images

nc: 1
names: ['elephant']

yolo v5 自带的 GlobalWheat2020.yaml 格式

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# Global Wheat 2020 dataset http://www.global-wheat.com/ by University of Saskatchewan
# Example usage: python train.py --data GlobalWheat2020.yaml
# parent
# ├── yolov5
# └── datasets
#     └── GlobalWheat2020  ← downloads here (7.0 GB)


# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/GlobalWheat2020  # dataset root dir
train: # train images (relative to 'path') 3422 images
  - images/arvalis_1
  - images/arvalis_2
  - images/arvalis_3
  - images/ethz_1
  - images/rres_1
  - images/inrae_1
  - images/usask_1
val: # val images (relative to 'path') 748 images (WARNING: train set contains ethz_1)
  - images/ethz_1
test: # test images (optional) 1276 images
  - images/utokyo_1
  - images/utokyo_2
  - images/nau_1
  - images/uq_1

# Classes
names:
  0: wheat_head

tags: pytorch yolov5

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式