准备数据集¶
在这份文档将指导如何为 MMPose 准备数据集,包括使用内置数据集、创建自定义数据集、结合数据集进行训练、浏览和下载数据集。
使用内置数据集¶
步骤一: 准备数据
MMPose 支持多种任务和相应的数据集。你可以在 数据集仓库 中找到它们。为了正确准备你的数据,请按照你选择的数据集的指南进行操作。
步骤二: 在配置文件中进行数据集设置
在开始训练或评估模型之前,你必须配置数据集设置。以 td-hm_hrnet-w32_8xb64-210e_coco-256x192.py
为例,它可以用于在 COCO 数据集上训练或评估 HRNet 姿态估计器。下面我们浏览一下数据集配置:
基础数据集参数
# base dataset settings dataset_type = 'CocoDataset' data_mode = 'topdown' data_root = 'data/coco/'
dataset_type
指定数据集的类名。用户可以参考 数据集 API 来找到他们想要的数据集的类名。data_mode
决定了数据集的输出格式,有两个选项可用:'topdown'
和'bottomup'
。如果data_mode='topdown'
,数据元素表示一个实例及其姿态;否则,一个数据元素代表一张图像,包含多个实例和姿态。data_root
指定数据集的根目录。
数据处理流程
# pipelines train_pipeline = [ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(type='RandomFlip', direction='horizontal'), dict(type='RandomHalfBody'), dict(type='RandomBBoxTransform'), dict(type='TopdownAffine', input_size=codec['input_size']), dict(type='GenerateTarget', encoder=codec), dict(type='PackPoseInputs') ] val_pipeline = [ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(type='TopdownAffine', input_size=codec['input_size']), dict(type='PackPoseInputs') ]
train_pipeline
和val_pipeline
分别定义了训练和评估阶段处理数据元素的步骤。除了加载图像和打包输入之外,train_pipeline
主要包含数据增强技术和目标生成器,而val_pipeline
则专注于将数据元素转换为统一的格式。数据加载器
# data loaders train_dataloader = dict( batch_size=64, num_workers=2, persistent_workers=True, sampler=dict(type='DefaultSampler', shuffle=True), dataset=dict( type=dataset_type, data_root=data_root, data_mode=data_mode, ann_file='annotations/person_keypoints_train2017.json', data_prefix=dict(img='train2017/'), pipeline=train_pipeline, )) val_dataloader = dict( batch_size=32, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False, round_up=False), dataset=dict( type=dataset_type, data_root=data_root, data_mode=data_mode, ann_file='annotations/person_keypoints_val2017.json', bbox_file='data/coco/person_detection_results/' 'COCO_val2017_detections_AP_H_56_person.json', data_prefix=dict(img='val2017/'), test_mode=True, pipeline=val_pipeline, )) test_dataloader = val_dataloader
这个部分是配置数据集的关键。除了前面讨论过的基础数据集参数和数据处理流程之外,这里还定义了其他重要的参数。
batch_size
决定了每个 GPU 的 batch size;ann_file
指定了数据集的注释文件;data_prefix
指定了图像文件夹。bbox_file
仅在 top-down 数据集的 val/test 数据加载器中使用,用于提供检测到的边界框信息。
我们推荐从使用相同数据集的配置文件中复制数据集配置,而不是从头开始编写,以最小化潜在的错误。通过这样做,用户可以根据需要进行必要的修改,从而确保更可靠和高效的设置过程。
使用自定义数据集¶
自定义数据集 指南提供了如何构建自定义数据集的详细信息。在本节中,我们将强调一些使用和配置自定义数据集的关键技巧。
确定数据集类名。如果你将数据集重组为 COCO 格式,你可以简单地使用
CocoDataset
作为dataset_type
的值。否则,你将需要使用你添加的自定义数据集类的名称。指定元信息配置文件。假设你的数据集标注文件存储路径为
aaa/annotations/xxx.json
,图片存储路径为aaa/train/c.jpg
,你应该按照以下方式指定元信息配置文件:train_dataloader = dict( ... dataset=dict( type=dataset_type, data_root='aaa', # 标注文件路径为 {data_root}/{ann_file} # 例如: aaa/annotations/xxx.json ann_file='annotations/xxx.json', # 图片路径为 {data_root}/{img}/ # 例如: aaa/train/c.jpg data_prefix=dict(img='train'), # 指定元信息配置文件 metainfo=dict(from_file='configs/_base_/datasets/custom.py'), ...), )
注意,
metainfo
参数必须在 val/test 数据加载器中指定。
浏览数据集¶
tools/analysis_tools/browse_dataset.py
帮助用户可视化地浏览姿态数据集,或将图像保存到指定的目录。
python tools/misc/browse_dataset.py ${CONFIG} [-h] [--output-dir ${OUTPUT_DIR}] [--max-item-per-dataset ${MAX_ITEM_PER_DATASET}] [--not-show] [--phase ${PHASE}] [--mode ${MODE}] [--show-interval ${SHOW_INTERVAL}]
ARGS | Description |
---|---|
CONFIG |
配置文件的路径 |
--output-dir OUTPUT_DIR |
保存可视化结果的目标文件夹。如果不指定,可视化的结果将不会被保存 |
--not-show |
不适用外部窗口显示可视化的结果 |
--phase {train, val, test} |
数据集选项 |
--mode {original, transformed} |
指定可视化图片类型。 original 为不使用数据增强的原始图片及标注可视化; transformed 为经过增强后的可视化 |
--show-interval SHOW_INTERVAL |
显示图片的时间间隔 |
--max-item-per-dataset |
定义每个数据集可视化的最大样本数。默认为 50 |
例如,用户想要可视化 COCO 数据集中的图像和标注,可以使用:
python tools/misc/browse_dataset.py configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w32_8xb64-e210_coco-256x192.py --mode original
检测框和关键点将被绘制在原始图像上。下面是一个例子:
原始图像在被输入模型之前需要被处理。为了可视化预处理后的图像和标注,用户需要将参数 mode
修改为 transformed
。例如:
python tools/misc/browse_dataset.py configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w32_8xb64-e210_coco-256x192.py --mode transformed
这是一个处理后的样本:
热图目标将与之一起可视化,如果它是在 pipeline 中生成的。
用 MIM 下载数据集¶
通过使用 OpenXLab,您可以直接下载开源数据集。通过平台的搜索功能,您可以快速轻松地找到他们正在寻找的数据集。使用平台上的格式化数据集,您可以高效地跨数据集执行任务。
如果您使用 MIM 下载,请确保版本大于 v0.3.8。您可以使用以下命令进行更新、安装、登录和数据集下载:
# upgrade your MIM
pip install -U openmim
# install OpenXLab CLI tools
pip install -U openxlab
# log in OpenXLab
openxlab login
# download coco2017 and preprocess by MIM
mim download mmpose --dataset coco2017
已支持的数据集¶
下面是支持的数据集列表,更多数据集将在之后持续更新:
人体数据集¶
Dataset name | Download command |
---|---|
COCO 2017 | mim download mmpose --dataset coco2017 |
MPII | mim download mmpose --dataset mpii |
AI Challenger | mim download mmpose --dataset aic |
CrowdPose | mim download mmpose --dataset crowdpose |
人脸数据集¶
Dataset name | Download command |
---|---|
LaPa | mim download mmpose --dataset lapa |
300W | mim download mmpose --dataset 300w |
WFLW | mim download mmpose --dataset wflw |
手部数据集¶
Dataset name | Download command |
---|---|
OneHand10K | mim download mmpose --dataset onehand10k |
FreiHand | mim download mmpose --dataset freihand |
HaGRID | mim download mmpose --dataset hagrid |
全身数据集¶
Dataset name | Download command |
---|---|
Halpe | mim download mmpose --dataset halpe |
动物数据集¶
Dataset name | Download command |
---|---|
AP-10K | mim download mmpose --dataset ap10k |
服装数据集¶
Coming Soon