ショートカット

データセットの準備

基本的な検出データセットの準備

MMDetection は、COCO、Pascal VOC、CityScapes、およびその他を含む複数の公開データセットをサポートしています。

Pascal VOCやミラー、COCOなどの公開データセットは、公式 Web サイトまたはミラーから入手できます。注意:検出タスクでは、Pascal VOC 2012 は重複のない Pascal VOC 2007 の拡張であり、通常は一緒に使用します。データセットをプロジェクト ディレクトリの外側のどこかにダウンロードして展開し、以下のようにデータセットのルートを $MMDETECTION/data にシンボリックリンクすることをお勧めします。フォルダー構造が異なる場合は、設定ファイルで対応するパスを変更する必要がある場合があります。

COCO などのデータセットをダウンロードするためのスクリプトが用意されています。python tools/misc/download_dataset.py --dataset-name coco2017 を実行して COCO データセットをダウンロードできます。中国のユーザー向けに、より多くのデータセットをオープンソース データセット プラットフォームからダウンロードできます: OpenDataLab

詳細な使用法については、dataset-download を参照してください。

mmdetection
├── mmdet
├── tools
├── configs
├── data
│   ├── coco
│   │   ├── annotations
│   │   ├── train2017
│   │   ├── val2017
│   │   ├── test2017
│   ├── cityscapes
│   │   ├── annotations
│   │   ├── leftImg8bit
│   │   │   ├── train
│   │   │   ├── val
│   │   ├── gtFine
│   │   │   ├── train
│   │   │   ├── val
│   ├── VOCdevkit
│   │   ├── VOC2007
│   │   ├── VOC2012

一部のモデルでは、HTC、DetectoRS、SCNet など、追加のCOCO-stuffデータセットが必要です。ダウンロード、解凍して、coco フォルダーに移動できます。ディレクトリは次のようになります。

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

PanopticFPN のような全景セグメンテーション モデルでは、追加の COCO Panoptic データセットが必要です。ダウンロード、解凍して、coco アノテーション フォルダーに移動できます。ディレクトリは次のようになります。

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

cityscapes アノテーションは、tools/dataset_converters/cityscapes.py を使用して 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 セマンティック セグメンテーションには 2 種類のアノテーションがあり、主にカテゴリ名の定義が異なるため、2 つの処理方法があります。1 つ目は stuffthingmaps データセットを直接使用する方法、2 つ目はパノプティック データセットを使用する方法です。

(1) stuffthingmaps データセットを使用する

このデータセットのダウンロード リンクは stuffthingmaps_trainval2017 です。ダウンロードして、data/coco フォルダーに展開してください。

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

このデータセットは、80 個の「もの」クラス、91 個の「もの」クラス、1 個の「ラベルなし」クラスを含む 172 クラスが含まれている点で、標準の COCO カテゴリ アノテーションとは異なります。各クラスの説明は、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 データセットの準備

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 2016 データセットの準備

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 を使用することで、研究者はさまざまな分野で自由な形式のデータセットを入手できます。プラットフォームの検索機能を通じて、研究者は探しているデータセットを迅速かつ簡単に見つけることができます。プラットフォームからのフォーマットされたデータセットを使用することで、研究者はデータセット間でタスクを効率的に実行できます。

現在、MIMは、OpenDataLabからVOCおよびCOCOデータセットを1つのコマンドラインでダウンロードすることをサポートしています。今後、より多くのデータセットがサポートされる予定です。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