MMPretrain项目数据集准备完全指南

MMPretrain项目数据集准备完全指南

mmpretrain OpenMMLab Pre-training Toolbox and Benchmark mmpretrain 项目地址: https://gitcode.com/gh_mirrors/mm/mmpretrain

作为深度学习项目的重要组成部分,数据集准备是模型训练的基础环节。本文将全面介绍MMPretrain框架支持的数据集格式及准备方法,帮助开发者快速上手数据准备工作。

一、CustomDataset通用数据集类

MMPretrain提供了CustomDataset通用数据集类,支持两种主流的数据组织方式,适用于不同场景的需求。

1.1 子文件夹组织方式

这种方式最为简单直观,特别适合快速实验和小型数据集。

监督学习场景

对于分类等监督学习任务,目录结构如下:

data_prefix/
├── 类别A
│   ├── 图片1.jpg
│   ├── 图片2.jpg
│   └── ...
├── 类别B
│   ├── 图片1.jpg 
│   └── ...
└── ...

配置示例:

train_dataloader = dict(
    dataset=dict(
        type='CustomDataset',
        data_prefix='path/to/data_prefix',
        with_label=True,
        pipeline=...
    )
)
无监督学习场景

对于自监督等无监督任务,目录结构更简单:

data_prefix/
├── 图片1.jpg
├── 图片2.jpg
└── ...

配置只需将with_label设为False。

注意:子文件夹方式在数据集较大时初始化较慢,建议大型数据集使用标注文件方式。

1.2 标注文件组织方式

这种方式更适合中大型数据集,通过文本文件管理样本和标签。

监督学习标注格式

每行格式:图片路径 类别索引

folder1/img1.jpg 0
folder2/img2.jpg 1
img3.jpg 2
无监督学习标注格式

每行只需图片路径:

folder1/img1.jpg
folder2/img2.jpg 
img3.jpg

完整目录结构示例:

data_root
├── meta
│   ├── train.txt
│   ├── val.txt
│   └── test.txt
├── train
│   ├── 图片文件...
└── val
    ├── 图片文件...

配置示例:

train_dataloader = dict(
    dataset=dict(
        type='CustomDataset',
        data_root='path/to/data_root',
        ann_file='meta/train.txt',
        data_prefix='train',
        classes=['类别A', '类别B', ...],
        pipeline=...,
    )
)

二、ImageNet数据集准备

ImageNet是计算机视觉领域最常用的基准数据集之一,MMPretrain提供了完善的支持。

2.1 数据集获取方式

通过MIM工具下载(推荐)
# 安装OpenXLab CLI
pip install -U openxlab
# 登录
openxlab login
# 下载数据集
mim download mmpretrain --dataset imagenet1k
手动下载
  1. 从官网下载ILSVRC2012数据集
  2. 解压训练集和验证集

2.2 目录结构

支持两种组织形式:

子文件夹格式
imagenet/
├── train/
│   ├── n01440764/
│   │   ├── n01440764_10026.JPEG
│   │   └── ...
│   └── ...
└── val/
    ├── n01440764/
    │   ├── ILSVRC2012_val_00000293.JPEG
    │   └── ...
    └── ...
标注文件格式
imagenet/
├── meta/
│   ├── train.txt
│   └── val.txt
├── train/
│   ├── n01440764_10026.JPEG
│   └── ...
└── val/
    ├── ILSVRC2012_val_00000001.JPEG
    └── ...

2.3 配置示例

train_dataloader = dict(
    dataset=dict(
        type='ImageNet',
        data_root='data/imagenet/',
        split='train',
        pipeline=...,
    )
)

三、其他支持的数据集

MMPretrain内置支持多种常用视觉数据集:

| 数据集名称 | 适用任务 | 特点说明 | |----------------|-----------------|---------------------------| | CIFAR-10/100 | 图像分类 | 小型数据集,适合快速实验 | | MNIST/FashionMNIST | 手写数字/服饰分类 | 经典入门数据集 | | CUB-200-2011 | 细粒度分类 | 鸟类细粒度分类数据集 | | Oxford-IIIT Pet | 细粒度分类 | 宠物细粒度分类数据集 | | Flowers102 | 细粒度分类 | 花卉分类数据集 | | Stanford Cars | 细粒度分类 | 车辆分类数据集 |

四、OpenMMLab 2.0标准数据集格式

为统一多任务数据接口,OpenMMLab制定了2.0标准数据集格式规范。

4.1 标注文件格式要求

  • 必须是json/yaml/yml/pickle/pkl格式
  • 必须包含两个顶级字段:
    • metainfo: 数据集元信息
    • data_list: 样本数据列表

示例结构:

{
    "metainfo": {
        "classes": ["cat", "dog"],
        ...
    },
    "data_list": [
        {
            "img_path": "xxx/xxx_0.jpg",
            "gt_label": 0,
            ...
        },
        ...
    ]
}

4.2 目录结构示例

data
├── annotations
│   └── train.json
└── train
    ├── xxx_0.jpg
    └── ...

4.3 配置方式

dataset_cfg = dict(
    type='CustomDataset',
    ann_file='path/to/train.json',
    data_prefix='path/to/train',
    pipeline=...
)

五、高级功能

5.1 数据集包装器

MMPretrain支持多种数据集包装器,实现高级功能:

  1. ConcatDataset: 合并多个数据集
  2. RepeatDataset: 重复采样数据集
  3. ClassBalancedDataset: 类别平衡采样
  4. KFoldDataset: K折交叉验证

5.2 自定义数据集

对于特殊格式的数据集,可以通过继承基础数据集类实现自定义数据集类,具体实现方法可参考MMPretrain高级教程。

六、最佳实践建议

  1. 小型数据集推荐使用子文件夹方式,简单直观
  2. 大型数据集推荐使用标注文件方式,效率更高
  3. 生产环境建议采用OpenMMLab 2.0标准格式
  4. 注意文件路径的相对位置关系
  5. 类别索引应从0开始连续编号

通过本文介绍,您应该已经掌握了MMPretrain框架下的各种数据集准备方法。合理的数据集组织方式能够显著提升训练效率,建议根据实际项目需求选择最适合的方案。

mmpretrain OpenMMLab Pre-training Toolbox and Benchmark mmpretrain 项目地址: https://gitcode.com/gh_mirrors/mm/mmpretrain

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋素萍Marilyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值