データセットの準備¶
基本的な検出データセットの準備¶
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_train2017
と panoptic_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