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
)


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
存储 数据采集 机器学习/深度学习
谷歌大数据的三驾马车
当涉及到大规模数据处理时,谷歌公司一直是领先的技术创新者,已经在大数据技术方面有着非常强的实力。下面我将详细介绍谷歌的三项重要技术:Google Bigtable,Google MapReduce和Google File System (GFS)。
2628 1
谷歌大数据的三驾马车
|
算法 Python
请解释Python中的关联规则挖掘以及如何使用Sklearn库实现它。
使用Python的mlxtend库,可以通过Apriori算法进行关联规则挖掘。首先导入TransactionEncoder和apriori等模块,然后准备数据集(如购买行为列表)。对数据集编码并转换后,应用Apriori算法找到频繁项集(设置最小支持度)。最后,生成关联规则并计算置信度(设定最小置信度阈值)。通过调整这些参数可以优化结果。
388 9
|
安全 Windows 编解码
怎么设置服务器禁止被ping
怎么设置服务器禁止被ping 如何禁止服务器被ping--怎么设置:频繁地使用Ping命令会导致网络堵塞、降低传输效率,为了避免恶意的网络攻击,一般都会拒绝用户Ping服务器。为实现这一目的,不仅可以在防火墙中进行设置,也可以在路由器上进行设置,并且还可以利用Windows2000/2003系统自身的功能实现。
6192 0
|
6月前
|
人工智能 前端开发 JavaScript
从代码中诞生的浪漫:一个程序员的表白艺术
本文介绍了一款用代码表达爱意的表白网页项目,通过JavaScript、HTML5和CSS3技术实现。它不仅是一个简单的网页,更是一段爱情诗、情感载体和个人魅力展示。借助CodeBuddy智能助手,项目实现了动态页面效果、多媒体展示和互动游戏等功能,支持多设备兼容与性能优化。开源分享旨在激发创意,未来还将拓展多语言支持和社区模块,证明代码也能编织浪漫。
265 19
|
机器学习/深度学习 边缘计算 PyTorch
PyTorch 与 ONNX:模型的跨平台部署策略
【8月更文第27天】深度学习模型的训练通常是在具有强大计算能力的平台上完成的,比如配备有高性能 GPU 的服务器。然而,为了将这些模型应用到实际产品中,往往需要将其部署到各种不同的设备上,包括移动设备、边缘计算设备甚至是嵌入式系统。这就需要一种能够在多种平台上运行的模型格式。ONNX(Open Neural Network Exchange)作为一种开放的标准,旨在解决模型的可移植性问题,使得开发者可以在不同的框架之间无缝迁移模型。本文将介绍如何使用 PyTorch 将训练好的模型导出为 ONNX 格式,并进一步探讨如何在不同平台上部署这些模型。
1297 2
|
SQL 人工智能 Cloud Native
数据库技术全攻略:基础、应用与未来趋势
一、引言 在当今数据驱动的时代,数据库技术成为了企业和个人不可或缺的工具
|
网络协议 Ubuntu Java
如何使用MCSM搭建我的世界Java版服务器并实现远程联机游戏
如何使用MCSM搭建我的世界Java版服务器并实现远程联机游戏
688 0
|
机器学习/深度学习 算法
【阿旭机器学习实战】【31】股票价格预测案例--线性回归
【阿旭机器学习实战】【31】股票价格预测案例--线性回归
|
Linux
Linux系统查看文件大小
在 Linux 操作系统中,经常需要检查文件的大小,文件实际的大小和文件占用磁盘的大小往往是不一致的,下面梳理记录集中常见的查看文件大小的方法。
375 0
|
存储 程序员 数据库
数据库系统结构、数据库系统的组成
数据库系统结构、数据库系统的组成
493 0
下一篇
开通oss服务