MMsegmentation教程 2: 自定义数据集

简介: MMsegmentation教程 2: 自定义数据集

通过重新组织数据来定制数据集


最简单的方法是将您的数据集进行转化,并组织成文件夹的形式。

如下的文件结构就是一个例子。

├── data
│   ├── my_dataset
│   │   ├── img_dir
│   │   │   ├── train
│   │   │   │   ├── xxx{img_suffix}
│   │   │   │   ├── yyy{img_suffix}
│   │   │   │   ├── zzz{img_suffix}
│   │   │   ├── val
│   │   ├── ann_dir
│   │   │   ├── train
│   │   │   │   ├── xxx{seg_map_suffix}
│   │   │   │   ├── yyy{seg_map_suffix}
│   │   │   │   ├── zzz{seg_map_suffix}
│   │   │   ├── val


一个训练对将由 img_dir/ann_dir 里同样首缀的文件组成。

如果给定 split 参数,只有部分在 img_dir/ann_dir 里的文件会被加载。

我们可以对被包括在 split 文本里的文件指定前缀。

除此以外,一个 split 文本如下所示:

xxx
zzz


只有

data/my_dataset/img_dir/train/xxx{img_suffix},

data/my_dataset/img_dir/train/zzz{img_suffix},

data/my_dataset/ann_dir/train/xxx{seg_map_suffix},

data/my_dataset/ann_dir/train/zzz{seg_map_suffix} 将被加载。

注意:标注是跟图像同样的形状 (H, W),其中的像素值的范围是 [0, num_classes - 1]

您也可以使用 pillow'P' 模式去创建包含颜色的标注。


通过混合数据去定制数据集



MMSegmentation 同样支持混合数据集去训练。

当前它支持拼接 (concat) 和 重复 (repeat) 数据集。


重复数据集


我们使用 RepeatDataset 作为包装 (wrapper) 去重复数据集。

例如,假设原始数据集是 Dataset_A,为了重复它,配置文件如下:

dataset_A_train = dict(
        type='RepeatDataset',
        times=N,
        dataset=dict(  # 这是 Dataset_A 数据集的原始配置
            type='Dataset_A',
            ...
            pipeline=train_pipeline
        )
    )


拼接数据集


有2种方式去拼接数据集。

  1. 如果您想拼接的数据集是同样的类型,但有不同的标注文件,您可以按如下操作去拼接数据集的配置文件:
  1. 您也许可以拼接两个标注文件夹 ann_dir
dataset_A_train = dict(
    type='Dataset_A',
    img_dir = 'img_dir',
    ann_dir = ['anno_dir_1', 'anno_dir_2'],
    pipeline=train_pipeline
)


  1. 您也可以去拼接两个 split 文件列表


dataset_A_train = dict(
    type='Dataset_A',
    img_dir = 'img_dir',
    ann_dir = 'anno_dir',
    split = ['split_1.txt', 'split_2.txt'],
    pipeline=train_pipeline
)


  1. 您也可以同时拼接 ann_dir 文件夹和 split 文件列表


dataset_A_train = dict(
    type='Dataset_A',
    img_dir = 'img_dir',
    ann_dir = ['anno_dir_1', 'anno_dir_2'],
    split = ['split_1.txt', 'split_2.txt'],
    pipeline=train_pipeline
)


  1. 在这样的情况下, ann_dir_1ann_dir_2 分别对应于 split_1.txtsplit_2.txt
  1. 如果您想拼接不同的数据集,您可以如下去拼接数据集的配置文件:


dataset_A_train = dict()
dataset_B_train = dict()
data = dict(
    imgs_per_gpu=2,
    workers_per_gpu=2,
    train = [
        dataset_A_train,
        dataset_B_train
    ],
    val = dataset_A_val,
    test = dataset_A_test
    )


一个更复杂的例子如下:分别重复 Dataset_ADataset_B N 次和 M 次,然后再去拼接重复后的数据集

dataset_A_train = dict(
    type='RepeatDataset',
    times=N,
    dataset=dict(
        type='Dataset_A',
        ...
        pipeline=train_pipeline
    )
)
dataset_A_val = dict(
    ...
    pipeline=test_pipeline
)
dataset_A_test = dict(
    ...
    pipeline=test_pipeline
)
dataset_B_train = dict(
    type='RepeatDataset',
    times=M,
    dataset=dict(
        type='Dataset_B',
        ...
        pipeline=train_pipeline
    )
)
data = dict(
    imgs_per_gpu=2,
    workers_per_gpu=2,
    train = [
        dataset_A_train,
        dataset_B_train
    ],
    val = dataset_A_val,
    test = dataset_A_test
)


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
7月前
|
机器学习/深度学习 Python
Scikit-Learn 高级教程——自定义评估器
Scikit-Learn 高级教程——自定义评估器【1月更文挑战第17篇】
127 1
|
机器学习/深度学习 存储 PyTorch
【14】自定义宝可梦数据集
【14】自定义宝可梦数据集
259 0
【14】自定义宝可梦数据集
|
PyTorch 算法框架/工具
MMsegmentation教程 4: 自定义模型
MMsegmentation教程 4: 自定义模型
642 0
|
2月前
|
PyTorch 算法框架/工具
数据集学习笔记(三):调用不同数据集获取trainloader和testloader
本文介绍了如何使用PyTorch框架调用CIFAR10数据集,并获取训练和测试的数据加载器(trainloader和testloader)。
43 4
数据集学习笔记(三):调用不同数据集获取trainloader和testloader
|
2月前
|
XML 机器学习/深度学习 数据可视化
目标检测笔记(六):如何通过界面化操作YOLOv5完成数据集的自动标注
这篇文章介绍了如何通过界面化操作YOLOv5来完成数据集的自动标注,包括修改源码、自动标注的前期准备、开始自动标注、可视化标注效果以及将XML文件转换为YOLO训练所需的TXT格式。
91 1
目标检测笔记(六):如何通过界面化操作YOLOv5完成数据集的自动标注
|
1月前
|
存储 JSON API
如何创建自己的数据集!!!
本文介绍了如何创建和使用自定义数据集,特别是针对GitHub Issues的语料库。内容涵盖了从获取数据、清理数据到扩充数据集的全过程,最终将数据集上传到Hugging Face Hub并与社区分享。具体步骤包括使用GitHub REST API下载Issues,通过Python脚本进行数据处理,以及添加评论信息。此外,还介绍了如何创建数据集卡片,以提供详细的背景信息和使用指南。
33 0
|
2月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
148 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
4月前
|
Python
python 随机划分图片数据集以及移动标注
这篇文章提供了一个Python脚本,用于随机划分图片数据集为训练集和测试集,并将对应的标注文件移动到相应的子文件夹中,以减少训练使用的数据量。
|
7月前
|
机器学习/深度学习 JSON 自然语言处理
python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)
python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)
|
机器学习/深度学习 算法 大数据
Dataset之CASIA-WebFace:CASIA-WebFace 数据集的简介、安装、使用方法之详细攻略
Dataset之CASIA-WebFace:CASIA-WebFace 数据集的简介、安装、使用方法之详细攻略
Dataset之CASIA-WebFace:CASIA-WebFace 数据集的简介、安装、使用方法之详细攻略