快捷键

数据集准备

基本检测数据集准备

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.pycityscapes 注释转换为 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_train2017panoptic_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