Shortcuts

数据集准备

基础检测数据集准备

MMDetection 支持多个公共数据集,包括 COCOPascal VOCCityscapes其他更多数据集

一些公共数据集,比如 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 Panoptic 数据集,你可以下载并解压它们到 coco/annotations 文件夹下。文件夹会是如下结构:

mmdetection
├── data
│   ├── coco
│   │   ├── annotations
│   │   │   ├── panoptic_train2017.json
│   │   │   ├── panoptic_train2017
│   │   │   ├── panoptic_val2017.json
│   │   │   ├── panoptic_val2017
│   │   ├── train2017
│   │   ├── val2017
│   │   ├── test2017

Cityscape 数据集的标注格式需要转换,以与 COCO 数据集标注格式保持一致,使用 tools/dataset_converters/cityscapes.py 来完成转换:

pip install cityscapesscripts

python tools/dataset_converters/cityscapes.py \
    ./data/cityscapes \
    --nproc 8 \
    --out-dir ./data/cityscapes/annotations

COCO Caption 数据集准备

COCO Caption 采用的是 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 semantic 数据集准备

COCO 语义分割有两种类型标注,主要差别在于类别名定义不一样,因此处理方式也有两种,第一种是直接使用 stuffthingmaps 数据集,第二种是使用 panoptic 数据集。

(1) 使用 stuffthingmaps 数据集

该数据集的下载地址为 stuffthingmaps_trainval2017,请下载后解压到 data/coco 文件夹下。

mmdetection
├── data
│   ├── coco
│   │   ├── annotations
│   │   ├── train2017
│   │   ├── val2017
│   │   ├── test2017
│   │   ├── stuffthingmaps

该数据集不同于标准的 COCO 类别标注,其包括 172 个类: 80 thing 类、91 stuff 类和 1 个 ‘unlabeled’,其每个类别的说明见 https://github.com/nightrome/cocostuff/blob/master/labels.md

虽然只标注了 172 个类别,但是 stuffthingmaps 中最大标签 id 是 182,中间有些类别是没有标注的,并且第 0 类的 unlabeled 类别被移除。因此最终的 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) 使用 panoptic 数据集

通过 panoptic 标注生成的语义分割数据集类别数相比使用 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 全景分割的类别信息,包括 thing 和 stuff。

RefCOCO 数据集准备

RefCOCO系列数据集的图像和注释可以通过运行 tools/misc/download_dataset.py 下载:

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 数据集准备

ADE20K数据集的图像和注释可以通过运行 tools/misc/download_dataset.py 下载:

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 为人工智能研究者提供免费开源的数据集,通过 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

ODinW 数据集准备

ODinW 数据集来自 GLIP 论文,用于评估预训练模型泛化性能。一共包括 ODinW-13 和 ODinW-35 两个版本,其中 ODinW-35 包括了 ODinW-13 的所有数据。 目前数据托管在 huggingface

请确保你提前安装好了 git lfs, 然后按照如下命令下载

cd mmdetection

git lfs install
# 我们不需要下载权重
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/GLIPModel/GLIP

cd GLIP
git lfs pull --include="odinw_35"

下载完成后,目录结构如下所示:

mmdetection
├── GLIP
|     ├── odinw_35
|     |   ├── AerialMaritimeDrone.zip
|     |   ├── AmericanSignLanguageLetters.zip
...

你可以采用如下命令全部解压并移动到 mmdetection/data 路径下:

#!/bin/bash

folder="./GLIP/odinw_35/"

find "$folder" -type f -name "*.zip" | while read -r file; do
    unzip "$file" -d "$(dirname "$file")"
done

mv GLIP/odinw_35 data/

最终结构如下所示:

mmdetection
├── tools
├── configs
├── data
|   ├── odinw_35
|   |   ├── AerialMaritimeDrone
...
│   ├── coco
Read the Docs v: stable
Versions
latest
stable
3.x
v3.3.0
v3.2.0
v3.1.0
v3.0.0
v2.28.2
v2.28.1
v2.28.0
v2.27.0
v2.26.0
v2.25.3
v2.25.2
v2.25.1
v2.25.0
v2.24.1
v2.24.0
v2.23.0
v2.22.0
v2.21.0
v2.20.0
v2.19.1
v2.19.0
v2.18.1
v2.18.0
v2.17.0
v2.16.0
v2.15.1
v2.15.0
v2.14.0
v2.13.0
dev-3.x
dev
Downloads
epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.