数据集准备¶
基本检测数据集准备¶
MMDetection 支持多个公共数据集,包括 COCO、Pascal VOC、CityScapes 以及 更多。
像 Pascal VOC 这样的公共数据集,或镜像和 COCO 可从官方网站或镜像获取。注意:在检测任务中,Pascal VOC 2012 是 Pascal VOC 2007 的扩展,没有重叠,我们通常将它们一起使用。建议将数据集下载并解压缩到项目目录之外的某个位置,并将数据集根目录符号链接到 $MMDETECTION/data
,如下所示。如果您的文件夹结构不同,您可能需要更改配置文件中的相应路径。
我们提供了一个脚本用于下载数据集,例如 COCO,您可以运行 python tools/misc/download_dataset.py --dataset-name coco2017
来下载 COCO 数据集。对于中国用户,可以从开源数据集平台下载更多数据集:OpenDataLab。
有关更多用法,请参考 数据集下载
mmdetection
├── mmdet
├── tools
├── configs
├── data
│ ├── coco
│ │ ├── annotations
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
│ ├── cityscapes
│ │ ├── annotations
│ │ ├── leftImg8bit
│ │ │ ├── train
│ │ │ ├── val
│ │ ├── gtFine
│ │ │ ├── train
│ │ │ ├── val
│ ├── VOCdevkit
│ │ ├── VOC2007
│ │ ├── VOC2012
一些模型需要额外的 COCO-stuff 数据集,例如 HTC、DetectoRS 和 SCNet,您可以下载、解压缩,然后将它们移动到 coco 文件夹。目录结构应如下所示。
mmdetection
├── data
│ ├── coco
│ │ ├── annotations
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
│ │ ├── stuffthingmaps
全景分割模型,例如 PanopticFPN,需要额外的 COCO 全景分割 数据集,您可以下载、解压缩,然后将它们移动到 coco 注释文件夹。目录结构应如下所示。
mmdetection
├── data
│ ├── coco
│ │ ├── annotations
│ │ │ ├── panoptic_train2017.json
│ │ │ ├── panoptic_train2017
│ │ │ ├── panoptic_val2017.json
│ │ │ ├── panoptic_val2017
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
使用 tools/dataset_converters/cityscapes.py
将 cityscapes 注释转换为 coco 格式。
pip install cityscapesscripts
python tools/dataset_converters/cityscapes.py \
./data/cityscapes \
--nproc 8 \
--out-dir ./data/cityscapes/annotations
COCO 图像描述数据集准备¶
COCO 图像描述使用 COCO2014 数据集图像,并使用 karpathy 的注释。
首先,您需要下载 COCO2014 数据集。
python tools/misc/download_dataset.py --dataset-name coco2014 --unzip
数据集将下载到当前路径下的 data/coco
。然后下载 karpathy 的注释。
cd data/coco/annotations
wget https://storage.googleapis.com/sfr-vision-language-research/datasets/coco_karpathy_train.json
wget https://storage.googleapis.com/sfr-vision-language-research/datasets/coco_karpathy_val.json
wget https://storage.googleapis.com/sfr-vision-language-research/datasets/coco_karpathy_test.json
wget https://storage.googleapis.com/sfr-vision-language-research/datasets/coco_karpathy_val_gt.json
wget https://storage.googleapis.com/sfr-vision-language-research/datasets/coco_karpathy_test_gt.json
可以直接用于训练和测试的数据集文件夹的最终目录结构如下
mmdetection
├── data
│ ├── coco
│ │ ├── annotations
│ │ │ ├── coco_karpathy_train.json
│ │ │ ├── coco_karpathy_test.json
│ │ │ ├── coco_karpathy_val.json
│ │ │ ├── coco_karpathy_val_gt.json
│ │ │ ├── coco_karpathy_test_gt.json
│ │ ├── train2014
│ │ ├── val2014
│ │ ├── test2014
COCO 语义分割数据集准备¶
COCO 语义分割有两种类型的注释,它们主要在类别名称的定义上有所不同,因此有两种处理方法。第一种是直接使用 stuffthingmaps 数据集,第二种是使用全景分割数据集。
(1) 使用 stuffthingmaps 数据集
此数据集的下载链接是 stuffthingmaps_trainval2017。请将其下载并解压缩到 data/coco
文件夹中。
mmdetection
├── data
│ ├── coco
│ │ ├── annotations
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
│ │ ├── stuffthingmaps
此数据集不同于标准 COCO 类别注释,它包含 172 个类别:80 个“事物”类别、91 个“材料”类别和 1 个“未标记”类别。每个类别的描述可以在 https://github.com/nightrome/cocostuff/blob/master/labels.md 找到。
虽然只注释了 172 个类别,但在 stuffthingmaps
中,最大标签 ID 为 182,中间一些类别没有注释。此外,类别 0 的“未标记”类别已删除。因此,最终 stuffthingmaps
图像中每个位置的值之间的关系可以在 https://github.com/kazuto1011/deeplab-pytorch/blob/master/data/datasets/cocostuff/labels.txt 找到。
为了有效地训练并方便用户,我们需要在开始训练或评估之前删除 12 个未注释的类别。这 12 个类别的名称是:street sign, hat, shoe, eye glasses, plate, mirror, window, desk, door, blender, hair brush
。可用于训练和评估的类别信息可在 mmdet/datasets/coco_semantic.py
中找到。
您可以使用 tools/dataset_converters/coco_stuff164k.py
将下载的 stuffthingmaps
转换为可以直接用于训练和评估的数据集。转换后的数据集的目录结构如下所示
mmdetection
├── data
│ ├── coco
│ │ ├── annotations
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
│ │ ├── stuffthingmaps
│ │ ├── stuffthingmaps_semseg
stuffthingmaps_semseg
是新生成的可直接用于训练和测试的 COCO 语义分割数据集。
(2) 使用全景分割数据集
通过全景分割注释生成语义分割数据集的类别数量将少于使用 stuffthingmaps
数据集生成的类别数量。首先,您需要准备全景分割注释,然后使用以下脚本完成转换。
python tools/dataset_converters/prepare_coco_semantic_annos_from_panoptic_annos.py data/coco
转换后的数据集的目录结构如下所示
mmdetection
├── data
│ ├── coco
│ │ ├── annotations
│ │ │ ├── panoptic_train2017.json
│ │ │ ├── panoptic_train2017
│ │ │ ├── panoptic_val2017.json
│ │ │ ├── panoptic_val2017
│ │ │ ├── panoptic_semseg_train2017
│ │ │ ├── panoptic_semseg_val2017
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
panoptic_semseg_train2017
和 panoptic_semseg_val2017
是新生成的可直接用于训练和测试的 COCO 语义分割数据集。请注意,它们的类别信息与 COCO 全景分割相同,包括“事物”和“材料”类别。
RefCOCO 数据集准备¶
通过运行 tools/misc/download_dataset.py
可以下载 RefCOCO 系列数据集的图像和注释。
python tools/misc/download_dataset.py --dataset-name refcoco --save-dir data/coco --unzip
然后目录结构应如下所示
data
├── coco
│ ├── refcoco
│ │ ├── instances.json
│ │ ├── refs(google).p
│ │ └── refs(unc).p
│ ├── refcoco+
│ │ ├── instances.json
│ │ └── refs(unc).p
│ ├── refcocog
│ │ ├── instances.json
│ │ ├── refs(google).p
│ │ └── refs(umd).p
│ │── train2014
ADE20K 2016 数据集准备¶
通过运行 tools/misc/download_dataset.py
可以下载 ADE20K 数据集的图像和注释。
python tools/misc/download_dataset.py --dataset-name ade20k_2016 --save-dir data --unzip
然后将注释移动到 data/ADEChallengeData2016
目录,并运行预处理脚本以生成 coco 格式注释。
mv data/annotations_instance data/ADEChallengeData2016/
mv data/categoryMapping.txt data/ADEChallengeData2016/
mv data/imgCatIds.json data/ADEChallengeData2016/
python tools/dataset_converters/ade20k2coco.py data/ADEChallengeData2016 --task panoptic
python tools/dataset_converters/ade20k2coco.py data/ADEChallengeData2016 --task instance
目录结构应如下所示。
data
├── ADEChallengeData2016
│ ├── ade20k_instance_train.json
│ ├── ade20k_instance_val.json
│ ├── ade20k_panoptic_train
│ │ ├── ADE_train_00000001.png
│ │ ├── ADE_train_00000002.png
│ │ ├── ...
│ ├── ade20k_panoptic_train.json
│ ├── ade20k_panoptic_val
│ │ ├── ADE_val_00000001.png
│ │ ├── ADE_val_00000002.png
│ │ ├── ...
│ ├── ade20k_panoptic_val.json
│ ├── annotations
│ │ ├── training
│ │ │ ├── ADE_train_00000001.png
│ │ │ ├── ADE_train_00000002.png
│ │ │ ├── ...
│ │ ├── validation
│ │ │ ├── ADE_val_00000001.png
│ │ │ ├── ADE_val_00000002.png
│ │ │ ├── ...
│ ├── annotations_instance
│ │ ├── training
│ │ │ ├── ADE_train_00000001.png
│ │ │ ├── ADE_train_00000002.png
│ │ │ ├── ...
│ │ ├── validation
│ │ │ ├── ADE_val_00000001.png
│ │ │ ├── ADE_val_00000002.png
│ │ │ ├── ...
│ ├── categoryMapping.txt
│ ├── images
│ │ ├── training
│ │ │ ├── ADE_train_00000001.jpg
│ │ │ ├── ADE_train_00000002.jpg
│ │ │ ├── ...
│ │ ├── validation
│ │ │ ├── ADE_val_00000001.jpg
│ │ │ ├── ADE_val_00000002.jpg
│ │ │ ├── ...
│ ├── imgCatIds.json
│ ├── objectInfo150.txt
│ │── sceneCategories.txt
上述文件夹包含 ADE20K 语义分割、实例分割和全景分割的所有数据。
从 OpenDataLab 下载¶
通过使用 OpenDataLab,研究人员可以获取各种领域的免费格式化数据集。通过平台的搜索功能,研究人员可以快速轻松地找到他们想要的数据集。使用平台上的格式化数据集,研究人员可以高效地在不同数据集上执行任务。
目前,MIM 支持使用一条命令行从 OpenDataLab 下载 VOC 和 COCO 数据集。未来将支持更多数据集。您也可以直接从 OpenDataLab 平台下载所需的数据集,然后将其转换为 MMDetection 所需的格式。
如果您使用 MIM 下载,请确保版本大于 v0.3.8。您可以使用以下命令进行更新
pip install -U openmim
# install OpenXLab CLI tools
pip install -U openxlab
# log in OpenXLab, registry
openxlab login
# download voc2007 and preprocess by MIM
mim download mmdet --dataset voc2007
# download voc2012 and preprocess by MIM
mim download mmdet --dataset voc2012
# download coco2017 and preprocess by MIM
mim download mmdet --dataset coco2017