mirror of
https://github.com/open-mmlab/mmsegmentation.git
synced 2025-06-03 22:03:48 +08:00
[Doc] Update dataset_prepare & inference (#2798)
This commit is contained in:
parent
871e7ac1ff
commit
a7d2e28dca
@ -1,4 +1,4 @@
|
||||
## Prepare datasets
|
||||
# Tutorial 2: Prepare datasets
|
||||
|
||||
It is recommended to symlink the dataset root to `$MMSEGMENTATION/data`.
|
||||
If your folder structure is different, you may need to change the corresponding paths in config files.
|
||||
@ -179,20 +179,19 @@ mmsegmentation
|
||||
| │ │ │ └── polygons
|
||||
```
|
||||
|
||||
### Cityscapes
|
||||
## Cityscapes
|
||||
|
||||
The data could be found [here](https://www.cityscapes-dataset.com/downloads/) after registration.
|
||||
|
||||
By convention, `**labelTrainIds.png` are used for cityscapes training.
|
||||
We provided a [scripts](https://github.com/open-mmlab/mmsegmentation/blob/1.x/tools/dataset_converters/cityscapes.py) based on [cityscapesscripts](https://github.com/mcordts/cityscapesScripts)
|
||||
to generate `**labelTrainIds.png`.
|
||||
We provided a [script](https://github.com/open-mmlab/mmsegmentation/blob/1.x/tools/dataset_converters/cityscapes.py) based on [cityscapesscripts](https://github.com/mcordts/cityscapesScripts)to generate `**labelTrainIds.png`.
|
||||
|
||||
```shell
|
||||
# --nproc means 8 process for conversion, which could be omitted as well.
|
||||
python tools/dataset_converters/cityscapes.py data/cityscapes --nproc 8
|
||||
```
|
||||
|
||||
### Pascal VOC
|
||||
## Pascal VOC
|
||||
|
||||
Pascal VOC 2012 could be downloaded from [here](http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar).
|
||||
Beside, most recent works on Pascal VOC dataset usually exploit extra augmentation data, which could be found [here](http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/semantic_contours/benchmark.tgz).
|
||||
@ -204,14 +203,14 @@ If you would like to use augmented VOC dataset, please run following command to
|
||||
python tools/dataset_converters/voc_aug.py data/VOCdevkit data/VOCdevkit/VOCaug --nproc 8
|
||||
```
|
||||
|
||||
Please refer to [concat dataset](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/docs/en/advanced_guides/datasets.md) for details about how to concatenate them and train them together.
|
||||
Please refer to [concat dataset](../advanced_guides/add_datasets.md#concatenate-dataset) and [voc_aug config example](../../../configs/_base_/datasets/pascal_voc12_aug.py) for details about how to concatenate them and train them together.
|
||||
|
||||
### ADE20K
|
||||
## ADE20K
|
||||
|
||||
The training and validation set of ADE20K could be download from this [link](http://data.csail.mit.edu/places/ADEchallenge/ADEChallengeData2016.zip).
|
||||
We may also download test set from [here](http://data.csail.mit.edu/places/ADEchallenge/release_test.zip).
|
||||
|
||||
### Pascal Context
|
||||
## Pascal Context
|
||||
|
||||
The training and validation set of Pascal Context could be download from [here](http://host.robots.ox.ac.uk/pascal/VOC/voc2010/VOCtrainval_03-May-2010.tar). You may also download test set from [here](http://host.robots.ox.ac.uk:8080/eval/downloads/VOC2010test.tar) after registration.
|
||||
|
||||
@ -223,7 +222,7 @@ If you would like to use Pascal Context dataset, please install [Detail](https:/
|
||||
python tools/dataset_converters/pascal_context.py data/VOCdevkit data/VOCdevkit/VOC2010/trainval_merged.json
|
||||
```
|
||||
|
||||
### COCO Stuff 10k
|
||||
## COCO Stuff 10k
|
||||
|
||||
The data could be downloaded [here](http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/cocostuff-10k-v1.1.zip) by wget.
|
||||
|
||||
@ -243,7 +242,7 @@ python tools/dataset_converters/coco_stuff10k.py /path/to/coco_stuff10k --nproc
|
||||
|
||||
By convention, mask labels in `/path/to/coco_stuff164k/annotations/*2014/*_labelTrainIds.png` are used for COCO Stuff 10k training and testing.
|
||||
|
||||
### COCO Stuff 164k
|
||||
## COCO Stuff 164k
|
||||
|
||||
For COCO Stuff 164k dataset, please run the following commands to download and convert the augmented dataset.
|
||||
|
||||
@ -267,7 +266,7 @@ By convention, mask labels in `/path/to/coco_stuff164k/annotations/*2017/*_label
|
||||
|
||||
The details of this dataset could be found at [here](https://github.com/nightrome/cocostuff#downloads).
|
||||
|
||||
### CHASE DB1
|
||||
## CHASE DB1
|
||||
|
||||
The training and validation set of CHASE DB1 could be download from [here](https://staffnet.kingston.ac.uk/~ku15565/CHASE_DB1/assets/CHASEDB1.zip).
|
||||
|
||||
@ -279,7 +278,7 @@ python tools/dataset_converters/chase_db1.py /path/to/CHASEDB1.zip
|
||||
|
||||
The script will make directory structure automatically.
|
||||
|
||||
### DRIVE
|
||||
## DRIVE
|
||||
|
||||
The training and validation set of DRIVE could be download from [here](https://drive.grand-challenge.org/). Before that, you should register an account. Currently '1st_manual' is not provided officially.
|
||||
|
||||
@ -291,7 +290,7 @@ python tools/dataset_converters/drive.py /path/to/training.zip /path/to/test.zip
|
||||
|
||||
The script will make directory structure automatically.
|
||||
|
||||
### HRF
|
||||
## HRF
|
||||
|
||||
First, download [healthy.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/healthy.zip), [glaucoma.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/glaucoma.zip), [diabetic_retinopathy.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/diabetic_retinopathy.zip), [healthy_manualsegm.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/healthy_manualsegm.zip), [glaucoma_manualsegm.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/glaucoma_manualsegm.zip) and [diabetic_retinopathy_manualsegm.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/diabetic_retinopathy_manualsegm.zip).
|
||||
|
||||
@ -303,7 +302,7 @@ python tools/dataset_converters/hrf.py /path/to/healthy.zip /path/to/healthy_man
|
||||
|
||||
The script will make directory structure automatically.
|
||||
|
||||
### STARE
|
||||
## STARE
|
||||
|
||||
First, download [stare-images.tar](http://cecas.clemson.edu/~ahoover/stare/probing/stare-images.tar), [labels-ah.tar](http://cecas.clemson.edu/~ahoover/stare/probing/labels-ah.tar) and [labels-vk.tar](http://cecas.clemson.edu/~ahoover/stare/probing/labels-vk.tar).
|
||||
|
||||
@ -315,15 +314,15 @@ python tools/dataset_converters/stare.py /path/to/stare-images.tar /path/to/labe
|
||||
|
||||
The script will make directory structure automatically.
|
||||
|
||||
### Dark Zurich
|
||||
## Dark Zurich
|
||||
|
||||
Since we only support test models on this dataset, you may only download [the validation set](https://data.vision.ee.ethz.ch/csakarid/shared/GCMA_UIoU/Dark_Zurich_val_anon.zip).
|
||||
|
||||
### Nighttime Driving
|
||||
## Nighttime Driving
|
||||
|
||||
Since we only support test models on this dataset, you may only download [the test set](http://data.vision.ee.ethz.ch/daid/NighttimeDriving/NighttimeDrivingTest.zip).
|
||||
|
||||
### LoveDA
|
||||
## LoveDA
|
||||
|
||||
The data could be downloaded from Google Drive [here](https://drive.google.com/drive/folders/1ibYV0qwn4yuuh068Rnc-w4tPi0U0c-ti?usp=sharing).
|
||||
|
||||
@ -338,25 +337,24 @@ wget https://zenodo.org/record/5706578/files/Val.zip
|
||||
wget https://zenodo.org/record/5706578/files/Test.zip
|
||||
```
|
||||
|
||||
For LoveDA dataset, please run the following command to download and re-organize the dataset.
|
||||
For LoveDA dataset, please run the following command to re-organize the dataset.
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/loveda.py /path/to/loveDA
|
||||
```
|
||||
|
||||
Using trained model to predict test set of LoveDA and submit it to server can be found [here](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/docs/en/user_guides/3_inference.md).
|
||||
Using trained model to predict test set of LoveDA and submit it to server can be found [here](https://codalab.lisn.upsaclay.fr/competitions/421).
|
||||
|
||||
More details about LoveDA can be found [here](https://github.com/Junjue-Wang/LoveDA).
|
||||
|
||||
### ISPRS Potsdam
|
||||
## ISPRS Potsdam
|
||||
|
||||
The [Potsdam](https://www2.isprs.org/commissions/comm2/wg4/benchmark/2d-sem-label-potsdam/)
|
||||
dataset is for urban semantic segmentation used in the 2D Semantic Labeling Contest - Potsdam.
|
||||
The [Potsdam](https://www2.isprs.org/commissions/comm2/wg4/benchmark/2d-sem-label-potsdam/) dataset is for urban semantic segmentation used in the 2D Semantic Labeling Contest - Potsdam.
|
||||
|
||||
The dataset can be requested at the challenge [homepage](https://www2.isprs.org/commissions/comm2/wg4/benchmark/data-request-form/).
|
||||
The '2_Ortho_RGB.zip' and '5_Labels_all_noBoundary.zip' are required.
|
||||
|
||||
For Potsdam dataset, please run the following command to download and re-organize the dataset.
|
||||
For Potsdam dataset, please run the following command to re-organize the dataset.
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/potsdam.py /path/to/potsdam
|
||||
@ -364,29 +362,28 @@ python tools/dataset_converters/potsdam.py /path/to/potsdam
|
||||
|
||||
In our default setting, it will generate 3456 images for training and 2016 images for validation.
|
||||
|
||||
### ISPRS Vaihingen
|
||||
## ISPRS Vaihingen
|
||||
|
||||
The [Vaihingen](https://www2.isprs.org/commissions/comm2/wg4/benchmark/2d-sem-label-vaihingen/)
|
||||
dataset is for urban semantic segmentation used in the 2D Semantic Labeling Contest - Vaihingen.
|
||||
The [Vaihingen](https://www2.isprs.org/commissions/comm2/wg4/benchmark/2d-sem-label-vaihingen/) dataset is for urban semantic segmentation used in the 2D Semantic Labeling Contest - Vaihingen.
|
||||
|
||||
The dataset can be requested at the challenge [homepage](https://www2.isprs.org/commissions/comm2/wg4/benchmark/data-request-form/).
|
||||
The 'ISPRS_semantic_labeling_Vaihingen.zip' and 'ISPRS_semantic_labeling_Vaihingen_ground_truth_eroded_COMPLETE.zip' are required.
|
||||
|
||||
For Vaihingen dataset, please run the following command to download and re-organize the dataset.
|
||||
For Vaihingen dataset, please run the following command to re-organize the dataset.
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/vaihingen.py /path/to/vaihingen
|
||||
```
|
||||
|
||||
In our default setting (`clip_size` =512, `stride_size`=256), it will generate 344 images for training and 398 images for validation.
|
||||
In our default setting (`clip_size`=512, `stride_size`=256), it will generate 344 images for training and 398 images for validation.
|
||||
|
||||
### iSAID
|
||||
## iSAID
|
||||
|
||||
The data images could be download from [DOTA-v1.0](https://captain-whu.github.io/DOTA/dataset.html) (train/val/test)
|
||||
|
||||
The data annotations could be download from [iSAID](https://captain-whu.github.io/iSAID/dataset.html) (train/val)
|
||||
|
||||
The dataset is a Large-scale Dataset for Instance Segmentation (also have segmantic segmentation) in Aerial Images.
|
||||
The dataset is a Large-scale Dataset for Instance Segmentation (also have semantic segmentation) in Aerial Images.
|
||||
|
||||
You may need to follow the following structure for dataset preparation after downloading iSAID dataset.
|
||||
|
||||
@ -415,7 +412,7 @@ You may need to follow the following structure for dataset preparation after dow
|
||||
python tools/dataset_converters/isaid.py /path/to/iSAID
|
||||
```
|
||||
|
||||
In our default setting (`patch_width`=896, `patch_height`=896, `overlap_area`=384), it will generate 33978 images for training and 11644 images for validation.
|
||||
In our default setting (`patch_width`=896, `patch_height`=896, `overlap_area`=384), it will generate 33978 images for training and 11644 images for validation.
|
||||
|
||||
## LIP(Look Into Person) dataset
|
||||
|
||||
@ -435,7 +432,7 @@ mv val_segmentations ../
|
||||
cd ..
|
||||
```
|
||||
|
||||
The contents of LIP datasets include:
|
||||
The contents of LIP datasets include:
|
||||
|
||||
```none
|
||||
├── data
|
||||
@ -456,10 +453,9 @@ The contents of LIP datasets include:
|
||||
|
||||
## Synapse dataset
|
||||
|
||||
This dataset could be download from [this page](https://www.synapse.org/#!Synapse:syn3193805/wiki/)
|
||||
This dataset could be download from [this page](https://www.synapse.org/#!Synapse:syn3193805/wiki/).
|
||||
|
||||
To follow the data preparation setting of [TransUNet](https://arxiv.org/abs/2102.04306), which splits original training set (30 scans)
|
||||
into new training (18 scans) and validation set (12 scans). Please run the following command to prepare the dataset.
|
||||
To follow the data preparation setting of [TransUNet](https://arxiv.org/abs/2102.04306), which splits original training set (30 scans) into new training (18 scans) and validation set (12 scans). Please run the following command to prepare the dataset.
|
||||
|
||||
```shell
|
||||
unzip RawData.zip
|
||||
@ -532,10 +528,9 @@ Then, use this command to convert synapse dataset.
|
||||
python tools/dataset_converters/synapse.py --dataset-path /path/to/synapse
|
||||
```
|
||||
|
||||
Noted that MMSegmentation default evaluation metric (such as mean dice value) is calculated on 2D slice image,
|
||||
which is not comparable to results of 3D scan in some paper such as [TransUNet](https://arxiv.org/abs/2102.04306).
|
||||
Noted that MMSegmentation default evaluation metric (such as mean dice value) is calculated on 2D slice image, which is not comparable to results of 3D scan in some paper such as [TransUNet](https://arxiv.org/abs/2102.04306).
|
||||
|
||||
### REFUGE
|
||||
## REFUGE
|
||||
|
||||
Register in [REFUGE Challenge](https://refuge.grand-challenge.org) and download [REFUGE dataset](https://refuge.grand-challenge.org/REFUGE2Download).
|
||||
|
||||
@ -624,4 +619,4 @@ It includes 400 images for training, 400 images for validation and 400 images fo
|
||||
```
|
||||
|
||||
- You could set Datasets version with `MapillaryDataset_v1` and `MapillaryDataset_v2` in your configs.
|
||||
View the Mapillary Vistas Datasets config file here [V1.2](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/configs/_base_/datasets/mapillary_v1.py) and [V2.0](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/configs/_base_/datasets/mapillary_v2.py)
|
||||
View the Mapillary Vistas Datasets config file here [V1.2](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/configs/_base_/datasets/mapillary_v1.py) and [V2.0](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/configs/_base_/datasets/mapillary_v2.py)
|
||||
|
@ -19,7 +19,7 @@ MMSegmentation provides several interfaces for users to easily use pre-trained m
|
||||
|
||||
## Inferencer
|
||||
|
||||
We provides the most **convenient** way to use the model in MMSegmentation `MMSegInferencer`. You can get segmentation mask for an image with only 3 lines of code.
|
||||
We provide the most **convenient** way to use the model in MMSegmentation `MMSegInferencer`. You can get segmentation mask for an image with only 3 lines of code.
|
||||
|
||||
### Basic Usage
|
||||
|
||||
@ -36,7 +36,7 @@ The following example shows how to use `MMSegInferencer` to perform inference on
|
||||
The visualization result should look like:
|
||||
|
||||
<div align="center">
|
||||
https://user-images.githubusercontent.com/76149310/221507927-ae01e3a7-016f-4425-b966-7b19cbbe494e.png
|
||||
<img src='https://user-images.githubusercontent.com/76149310/221507927-ae01e3a7-016f-4425-b966-7b19cbbe494e.png' />
|
||||
</div>
|
||||
|
||||
Moreover, you can use `MMSegInferencer` to process a list of images:
|
||||
@ -44,7 +44,7 @@ Moreover, you can use `MMSegInferencer` to process a list of images:
|
||||
```
|
||||
# Input a list of images
|
||||
>>> images = [image1, image2, ...] # image1 can be a file path or a np.ndarray
|
||||
>>> inferencer(images, show=True, wait_time=0.5) # wait_time is delay time, and 0 means forever.
|
||||
>>> inferencer(images, show=True, wait_time=0.5) # wait_time is delay time, and 0 means forever
|
||||
|
||||
# Or input image directory
|
||||
>>> images = $IMAGESDIR
|
||||
@ -56,13 +56,12 @@ Moreover, you can use `MMSegInferencer` to process a list of images:
|
||||
>>> inferencer(images, out_dir='outputs', img_out_dir='vis', pred_out_dir='pred')
|
||||
```
|
||||
|
||||
There is a optional parameter of inferencer, `return_datasamples`, whose default value is False, and
|
||||
return value of inferencer is a `dict` type by default, including 2 keys 'visualization' and 'predictions'.
|
||||
There is a optional parameter of inferencer, `return_datasamples`, whose default value is False, and return value of inferencer is a `dict` type by default, including 2 keys 'visualization' and 'predictions'.
|
||||
If `return_datasamples=True` inferencer will return [`SegDataSample`](../advanced_guides/structures.md), or list of it.
|
||||
|
||||
```
|
||||
result = inferencer('demo/demo.png')
|
||||
# result is a `dict` including 2 keys 'visualization' and 'predictions'.
|
||||
# result is a `dict` including 2 keys 'visualization' and 'predictions'
|
||||
# 'visualization' includes color segmentation map
|
||||
print(result['visualization'].shape)
|
||||
# (512, 683, 3)
|
||||
@ -92,18 +91,12 @@ print(type(results[0]))
|
||||
### Initialization
|
||||
|
||||
`MMSegInferencer` must be initialized from a `model`, which can be a model name or a `Config` even a path of config file.
|
||||
The model names can be found in models' metafile, like one model name of maskformer is `maskformer_r50-d32_8xb2-160k_ade20k-512x512`, and if input model name and the weights of the model will be download automatically. Below are other input parameters:
|
||||
The model names can be found in models' metafile (configs/xxx/metafile.yaml), like one model name of maskformer is `maskformer_r50-d32_8xb2-160k_ade20k-512x512`, and if input model name and the weights of the model will be download automatically. Below are other input parameters:
|
||||
|
||||
- weights (str, optional) - Path to the checkpoint. If it is not specified and model is a model name of metafile, the weights will be loaded
|
||||
from metafile. Defaults to None.
|
||||
- classes (list, optional) - Input classes for result rendering, as the prediction of segmentation
|
||||
model is a segment map with label indices, `classes` is a list which includes
|
||||
items responding to the label indices. If classes is not defined, visualizer will take `cityscapes` classes by default. Defaults to None.
|
||||
- palette (list, optional) - Input palette for result rendering, which is a list of color palette
|
||||
responding to the classes. If palette is not defined, visualizer will take `cityscapes` palette by default. Defaults to None.
|
||||
- dataset_name (str, optional)[Dataset name or alias](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/mmseg/utils/class_names.py#L302-L317)
|
||||
visulizer will use the meta information of the dataset i.e. classes and palette,
|
||||
but the `classes` and `palette` have higher priority. Defaults to None.
|
||||
- weights (str, optional) - Path to the checkpoint. If it is not specified and model is a model name of metafile, the weights will be loaded from metafile. Defaults to None.
|
||||
- classes (list, optional) - Input classes for result rendering, as the prediction of segmentation model is a segment map with label indices, `classes` is a list which includes items responding to the label indices. If classes is not defined, visualizer will take `cityscapes` classes by default. Defaults to None.
|
||||
- palette (list, optional) - Input palette for result rendering, which is a list of colors responding to the classes. If the palette is not defined, the visualizer will take the palette of `cityscapes` by default. Defaults to None.
|
||||
- dataset_name (str, optional) - [Dataset name or alias](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/mmseg/utils/class_names.py#L302-L317), visualizer will use the meta information of the dataset i.e. classes and palette, but the `classes` and `palette` have higher priority. Defaults to None.
|
||||
- device (str, optional) - Device to run inference. If None, the available device will be automatically used. Defaults to None.
|
||||
- scope (str, optional) - The scope of the model. Defaults to 'mmseg'.
|
||||
|
||||
@ -113,8 +106,7 @@ The model names can be found in models' metafile, like one model name of maskfor
|
||||
|
||||
- show (bool) - Whether to display the image in a popup window. Defaults to False.
|
||||
- wait_time (float) - The interval of show (s). Defaults to 0.
|
||||
- img_out_dir (str) - Subdirectory of `out_dir`, used to save rendering color segmentation mask, so `out_dir` must be defined
|
||||
if you would like to save predicted mask. Defaults to 'vis'.
|
||||
- img_out_dir (str) - Subdirectory of `out_dir`, used to save rendering color segmentation mask, so `out_dir` must be defined if you would like to save predicted mask. Defaults to 'vis'.
|
||||
- opacity (int, float) - The transparency of segmentation mask. Defaults to 0.8.
|
||||
|
||||
The examples of these parameters is in [Basic Usage](#basic-usage)
|
||||
@ -245,7 +237,7 @@ vis_image = show_result_pyplot(model, img_path, result)
|
||||
# save the visualization result, the output image would be found at the path `work_dirs/result.png`
|
||||
vis_iamge = show_result_pyplot(model, img_path, result, out_file='work_dirs/result.png')
|
||||
|
||||
# Modify the time of displaying images, note that 0 is the special value that means "forever".
|
||||
# Modify the time of displaying images, note that 0 is the special value that means "forever"
|
||||
vis_image = show_result_pyplot(model, img_path, result, wait_time=5)
|
||||
```
|
||||
|
||||
|
@ -1,3 +1,618 @@
|
||||
## 准备数据集(待更新)
|
||||
# 教程2:准备数据集
|
||||
|
||||
中文版文档支持中,请先阅读[英文版本](../../en/user_guides/2_dataset_prepare.md)
|
||||
我们建议将数据集根目录符号链接到 `$MMSEGMENTATION/data`。
|
||||
如果您的目录结构不同,您可能需要更改配置文件中相应的路径。
|
||||
|
||||
```none
|
||||
mmsegmentation
|
||||
├── mmseg
|
||||
├── tools
|
||||
├── configs
|
||||
├── data
|
||||
│ ├── cityscapes
|
||||
│ │ ├── leftImg8bit
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ │ ├── gtFine
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ ├── VOCdevkit
|
||||
│ │ ├── VOC2012
|
||||
│ │ │ ├── JPEGImages
|
||||
│ │ │ ├── SegmentationClass
|
||||
│ │ │ ├── ImageSets
|
||||
│ │ │ │ ├── Segmentation
|
||||
│ │ ├── VOC2010
|
||||
│ │ │ ├── JPEGImages
|
||||
│ │ │ ├── SegmentationClassContext
|
||||
│ │ │ ├── ImageSets
|
||||
│ │ │ │ ├── SegmentationContext
|
||||
│ │ │ │ │ ├── train.txt
|
||||
│ │ │ │ │ ├── val.txt
|
||||
│ │ │ ├── trainval_merged.json
|
||||
│ │ ├── VOCaug
|
||||
│ │ │ ├── dataset
|
||||
│ │ │ │ ├── cls
|
||||
│ ├── ade
|
||||
│ │ ├── ADEChallengeData2016
|
||||
│ │ │ ├── annotations
|
||||
│ │ │ │ ├── training
|
||||
│ │ │ │ ├── validation
|
||||
│ │ │ ├── images
|
||||
│ │ │ │ ├── training
|
||||
│ │ │ │ ├── validation
|
||||
│ ├── coco_stuff10k
|
||||
│ │ ├── images
|
||||
│ │ │ ├── train2014
|
||||
│ │ │ ├── test2014
|
||||
│ │ ├── annotations
|
||||
│ │ │ ├── train2014
|
||||
│ │ │ ├── test2014
|
||||
│ │ ├── imagesLists
|
||||
│ │ │ ├── train.txt
|
||||
│ │ │ ├── test.txt
|
||||
│ │ │ ├── all.txt
|
||||
│ ├── coco_stuff164k
|
||||
│ │ ├── images
|
||||
│ │ │ ├── train2017
|
||||
│ │ │ ├── val2017
|
||||
│ │ ├── annotations
|
||||
│ │ │ ├── train2017
|
||||
│ │ │ ├── val2017
|
||||
│ ├── CHASE_DB1
|
||||
│ │ ├── images
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ │ ├── annotations
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ ├── DRIVE
|
||||
│ │ ├── images
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ │ ├── annotations
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ ├── HRF
|
||||
│ │ ├── images
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ │ ├── annotations
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ ├── STARE
|
||||
│ │ ├── images
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ │ ├── annotations
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
| ├── dark_zurich
|
||||
| │ ├── gps
|
||||
| │ │ ├── val
|
||||
| │ │ └── val_ref
|
||||
| │ ├── gt
|
||||
| │ │ └── val
|
||||
| │ ├── LICENSE.txt
|
||||
| │ ├── lists_file_names
|
||||
| │ │ ├── val_filenames.txt
|
||||
| │ │ └── val_ref_filenames.txt
|
||||
| │ ├── README.md
|
||||
| │ └── rgb_anon
|
||||
| │ | ├── val
|
||||
| │ | └── val_ref
|
||||
| ├── NighttimeDrivingTest
|
||||
| | ├── gtCoarse_daytime_trainvaltest
|
||||
| | │ └── test
|
||||
| | │ └── night
|
||||
| | └── leftImg8bit
|
||||
| | | └── test
|
||||
| | | └── night
|
||||
│ ├── loveDA
|
||||
│ │ ├── img_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ │ │ ├── test
|
||||
│ │ ├── ann_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ ├── potsdam
|
||||
│ │ ├── img_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ │ ├── ann_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ ├── vaihingen
|
||||
│ │ ├── img_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ │ ├── ann_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ ├── iSAID
|
||||
│ │ ├── img_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ │ │ ├── test
|
||||
│ │ ├── ann_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ ├── synapse
|
||||
│ │ ├── img_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ │ ├── ann_dir
|
||||
│ │ │ ├── train
|
||||
│ │ │ ├── val
|
||||
│ ├── REFUGE
|
||||
│ │ ├── images
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ │ │ ├── test
|
||||
│ │ ├── annotations
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ │ │ ├── test
|
||||
│ ├── mapillary
|
||||
│ │ ├── training
|
||||
│ │ │ ├── images
|
||||
│ │ │ ├── v1.2
|
||||
| │ │ │ ├── instances
|
||||
| │ │ │ ├── labels
|
||||
| │ │ │ └── panoptic
|
||||
│ │ │ ├── v2.0
|
||||
| │ │ │ ├── instances
|
||||
| │ │ │ ├── labels
|
||||
| │ │ │ ├── panoptic
|
||||
| │ │ │ └── polygons
|
||||
│ │ ├── validation
|
||||
│ │ │ ├── images
|
||||
| │ │ ├── v1.2
|
||||
| │ │ │ ├── instances
|
||||
| │ │ │ ├── labels
|
||||
| │ │ │ └── panoptic
|
||||
│ │ │ ├── v2.0
|
||||
| │ │ │ ├── instances
|
||||
| │ │ │ ├── labels
|
||||
| │ │ │ ├── panoptic
|
||||
| │ │ │ └── polygons
|
||||
```
|
||||
|
||||
## Cityscapes
|
||||
|
||||
Cityscapes [官方网站](https://www.cityscapes-dataset.com/)可以下载 Cityscapes 数据集,按照官网要求注册并登陆后,数据可以在[这里](https://www.cityscapes-dataset.com/downloads/)找到。
|
||||
|
||||
按照惯例,`**labelTrainIds.png` 用于 cityscapes 训练。
|
||||
我们提供了一个基于 [cityscapesscripts](https://github.com/mcordts/cityscapesScripts) 的[脚本](https://github.com/open-mmlab/mmsegmentation/blob/1.x/tools/dataset_converters/cityscapes.py)用于生成 `**labelTrainIds.png`。
|
||||
|
||||
```shell
|
||||
# --nproc 表示 8 个转换进程,也可以省略。
|
||||
python tools/dataset_converters/cityscapes.py data/cityscapes --nproc 8
|
||||
```
|
||||
|
||||
## Pascal VOC
|
||||
|
||||
Pascal VOC 2012 可从[此处](http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar)下载。
|
||||
此外,Pascal VOC 数据集的最新工作通常利用额外的增强数据,可以在[这里](http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/semantic_contours/benchmark.tgz)找到。
|
||||
|
||||
如果您想使用增强的 VOC 数据集,请运行以下命令将增强数据的标注转换为正确的格式。
|
||||
|
||||
```shell
|
||||
# --nproc 表示 8 个转换进程,也可以省略。
|
||||
python tools/dataset_converters/voc_aug.py data/VOCdevkit data/VOCdevkit/VOCaug --nproc 8
|
||||
```
|
||||
|
||||
请参考[拼接数据集文档](../advanced_guides/add_datasets.md#拼接数据集)及 [voc_aug 配置示例](../../../configs/_base_/datasets/pascal_voc12_aug.py)以详细了解如何将它们拼接并合并训练。
|
||||
|
||||
## ADE20K
|
||||
|
||||
ADE20K 的训练和验证集可以从这个[链接](http://data.csail.mit.edu/places/ADEchallenge/ADEChallengeData2016.zip)下载。
|
||||
如果需要下载测试数据集,可以在[官网](http://host.robots.ox.ac.uk/)注册后,下载[测试集](http://host.robots.ox.ac.uk:8080/eval/downloads/VOC2010test.tar)。
|
||||
|
||||
## Pascal Context
|
||||
|
||||
Pascal Context 的训练和验证集可以从[此处](http://host.robots.ox.ac.uk/pascal/VOC/voc2010/VOCtrainval_03-May-2010.tar)下载。注册后,您也可以从[此处](http://host.robots.ox.ac.uk:8080/eval/downloads/VOC2010test.tar)下载测试集。
|
||||
|
||||
从原始数据集中抽出部分数据作为验证集,您可以从[此处](https://codalabuser.blob.core.windows.net/public/trainval_merged.json)下载 trainval_merged.json 文件。
|
||||
|
||||
请先安装 [Detail](https://github.com/zhanghang1989/detail-api) 工具然后运行以下命令将标注转换为正确的格式。
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/pascal_context.py data/VOCdevkit data/VOCdevkit/VOC2010/trainval_merged.json
|
||||
```
|
||||
|
||||
## COCO Stuff 10k
|
||||
|
||||
数据可以通过 wget 在[这里](http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/cocostuff-10k-v1.1.zip)下载。
|
||||
|
||||
对于 COCO Stuff 10k 数据集,请运行以下命令下载并转换数据集。
|
||||
|
||||
```shell
|
||||
# 下载
|
||||
mkdir coco_stuff10k && cd coco_stuff10k
|
||||
wget http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/cocostuff-10k-v1.1.zip
|
||||
|
||||
# 解压
|
||||
unzip cocostuff-10k-v1.1.zip
|
||||
|
||||
# --nproc 表示 8 个转换进程,也可以省略。
|
||||
python tools/dataset_converters/coco_stuff10k.py /path/to/coco_stuff10k --nproc 8
|
||||
```
|
||||
|
||||
按照惯例,`/path/to/coco_stuff164k/annotations/*2014/*_labelTrainIds.png` 中的 mask 标注用于 COCO Stuff 10k 的训练和测试。
|
||||
|
||||
## COCO Stuff 164k
|
||||
|
||||
对于 COCO Stuff 164k 数据集,请运行以下命令下载并转换增强的数据集。
|
||||
|
||||
```shell
|
||||
# 下载
|
||||
mkdir coco_stuff164k && cd coco_stuff164k
|
||||
wget http://images.cocodataset.org/zips/train2017.zip
|
||||
wget http://images.cocodataset.org/zips/val2017.zip
|
||||
wget http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/stuffthingmaps_trainval2017.zip
|
||||
|
||||
# 解压
|
||||
unzip train2017.zip -d images/
|
||||
unzip val2017.zip -d images/
|
||||
unzip stuffthingmaps_trainval2017.zip -d annotations/
|
||||
|
||||
# --nproc 表示 8 个转换进程,也可以省略。
|
||||
python tools/dataset_converters/coco_stuff164k.py /path/to/coco_stuff164k --nproc 8
|
||||
```
|
||||
|
||||
按照惯例,`/path/to/coco_stuff164k/annotations/*2017/*_labelTrainIds.png` 中的 mask 标注用于 COCO Stuff 164k 的训练和测试。
|
||||
|
||||
此数据集的详细信息可在[此处](https://github.com/nightrome/cocostuff#downloads)找到。
|
||||
|
||||
## CHASE DB1
|
||||
|
||||
CHASE DB1 的训练和验证集可以从[此处](https://staffnet.kingston.ac.uk/~ku15565/CHASE_DB1/assets/CHASEDB1.zip)下载。
|
||||
|
||||
请运行以下命令,准备 CHASE DB1 数据集:
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/chase_db1.py /path/to/CHASEDB1.zip
|
||||
```
|
||||
|
||||
该脚本将自动调整数据集目录结构,使其满足 MMSegmentation 数据集加载要求。
|
||||
|
||||
## DRIVE
|
||||
|
||||
按照[官网](https://drive.grand-challenge.org/)要求,注册并登陆后,便可以下载 DRIVE 的训练和验证数据集。
|
||||
|
||||
要将 DRIVE 数据集转换为 MMSegmentation 的格式,请运行以下命令:
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/drive.py /path/to/training.zip /path/to/test.zip
|
||||
```
|
||||
|
||||
该脚本将自动调整数据集目录结构,使其满足 MMSegmentation 数据集加载要求。
|
||||
|
||||
## HRF
|
||||
|
||||
请下载 [health.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/healthy.zip)、[glaucoma.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/glaucoma.zip)、[diabetic_retinopathy.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/diabetic_retinopathy.zip)、[healthy_manualsegm.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/healthy_manualsegm.zip)、[glaucoma_manualsegm.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/glaucoma_manualsegm.zip) 和 [diabetic_retinopathy_manualsegm.zip](https://www5.cs.fau.de/fileadmin/research/datasets/fundus-images/diabetic_retinopathy_manualsegm.zip),无需解压,可以直接运行以下命令,准备 HRF 数据集:
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/hrf.py /path/to/healthy.zip /path/to/healthy_manualsegm.zip /path/to/glaucoma.zip /path/to/glaucoma_manualsegm.zip /path/to/diabetic_retinopathy.zip /path/to/diabetic_retinopathy_manualsegm.zip
|
||||
```
|
||||
|
||||
该脚本将自动调整数据集目录结构,使其满足 MMSegmentation 数据集加载要求。
|
||||
|
||||
## STARE
|
||||
|
||||
请下载 [stare images.tar](http://cecas.clemson.edu/~ahoover/stare/probing/stare-images.tar)、[labels-ah.tar](http://cecas.clemson.edu/~ahoover/stare/probing/labels-ah.tar) 和 [labels-vk.tar](http://cecas.clemson.edu/~ahoover/stare/probing/labels-vk.tar),无需解压,可以直接运行以下命令,准备 STARE 数据集:
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/stare.py /path/to/stare-images.tar /path/to/labels-ah.tar /path/to/labels-vk.tar
|
||||
```
|
||||
|
||||
该脚本将自动调整数据集目录结构,使其满足 MMSegmentation 数据集加载要求。
|
||||
|
||||
## Dark Zurich
|
||||
|
||||
由于我们只支持在此数据集上的模型测试,因此您只需要下载并解压[验证数据集](https://data.vision.ee.ethz.ch/csakarid/shared/GCMA_UIoU/Dark_Zurich_val_anon.zip)。
|
||||
|
||||
## Nighttime Driving
|
||||
|
||||
由于我们只支持在此数据集上的模型测试,因此您只需要下载并解压[验证数据集](http://data.vision.ee.ethz.ch/daid/NighttimeDriving/NighttimeDrivingTest.zip)。
|
||||
|
||||
## LoveDA
|
||||
|
||||
数据可以从[此处](https://drive.google.com/drive/folders/1ibYV0qwn4yuuh068Rnc-w4tPi0U0c-ti?usp=sharing)下载 LaveDA 数据集。
|
||||
|
||||
或者可以从 [zenodo](https://zenodo.org/record/5706578#.YZvN7SYRXdF) 下载。下载后,无需解压,直接运行以下命令:
|
||||
|
||||
```shell
|
||||
# 下载 Train.zip
|
||||
wget https://zenodo.org/record/5706578/files/Train.zip
|
||||
# 下载 Val.zip
|
||||
wget https://zenodo.org/record/5706578/files/Val.zip
|
||||
# 下载 Test.zip
|
||||
wget https://zenodo.org/record/5706578/files/Test.zip
|
||||
```
|
||||
|
||||
请对于 LoveDA 数据集,请运行以下命令调整数据集目录。
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/loveda.py /path/to/loveDA
|
||||
```
|
||||
|
||||
可将模型对 LoveDA 的测试集的预测结果上传至到数据集[测试服务器](https://codalab.lisn.upsaclay.fr/competitions/421),查看评测结果。
|
||||
|
||||
有关 LoveDA 的更多详细信息,可查看[此处](https://github.com/Junjue-Wang/LoveDA).
|
||||
|
||||
## ISPRS Potsdam
|
||||
|
||||
[Potsdam](https://www2.isprs.org/commissions/comm2/wg4/benchmark/2d-sem-label-potsdam/) 城市语义分割数据集用于 2D 语义分割竞赛 —— Potsdam。
|
||||
|
||||
数据集可以在竞赛[主页](https://www2.isprs.org/commissions/comm2/wg4/benchmark/data-request-form/)上请求获得。
|
||||
实验中需要下载 '2_Ortho_RGB.zip' 和 '5_Labels_all_noBoundary.zip'。
|
||||
|
||||
对于 Potsdam 数据集,请运行以下命令调整数据集目录。
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/potsdam.py /path/to/potsdam
|
||||
```
|
||||
|
||||
在我们的默认设置中,将生成 3456 张图像用于训练和 2016 张图像用于验证。
|
||||
|
||||
## ISPRS Vaihingen
|
||||
|
||||
[Vaihingen](https://www2.isprs.org/commissions/comm2/wg4/benchmark/2d-sem-label-vaihingen/) 城市语义分割数据集用于 2D 语义分割竞赛 —— Vaihingen。
|
||||
|
||||
数据集可以在竞赛[主页](https://www2.isprs.org/commissions/comm2/wg4/benchmark/data-request-form/)上请求获得。
|
||||
实验中需要下载 'ISPRS_semantic_labeling_Vaihingen.zip' 和 'ISPRS_semantic_labeling_Vaihingen_ground_truth_eroded_COMPLETE.zip'。
|
||||
|
||||
对于 Vaihingen 数据集,请运行以下命令调整数据集目录。
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/vaihingen.py /path/to/vaihingen
|
||||
```
|
||||
|
||||
在我们的默认设置(`clip_size`=512, `stride_size`=256)中,将生成 344 张图像用于训练和 398 张图像用于验证。
|
||||
|
||||
## iSAID
|
||||
|
||||
iSAID 数据集可从 [DOTA-v1.0](https://captain-whu.github.io/DOTA/dataset.html) 下载训练/验证/测试数据集的图像数据,
|
||||
|
||||
并从 [iSAID](https://captain-whu.github.io/iSAID/dataset.html)下载训练/验证数据集的标注数据。
|
||||
|
||||
该数据集是航空图像实例分割和语义分割任务的大规模数据集。
|
||||
|
||||
下载 iSAID 数据集后,您可能需要按照以下结构进行数据集准备。
|
||||
|
||||
```none
|
||||
├── data
|
||||
│ ├── iSAID
|
||||
│ │ ├── train
|
||||
│ │ │ ├── images
|
||||
│ │ │ │ ├── part1.zip
|
||||
│ │ │ │ ├── part2.zip
|
||||
│ │ │ │ ├── part3.zip
|
||||
│ │ │ ├── Semantic_masks
|
||||
│ │ │ │ ├── images.zip
|
||||
│ │ ├── val
|
||||
│ │ │ ├── images
|
||||
│ │ │ │ ├── part1.zip
|
||||
│ │ │ ├── Semantic_masks
|
||||
│ │ │ │ ├── images.zip
|
||||
│ │ ├── test
|
||||
│ │ │ ├── images
|
||||
│ │ │ │ ├── part1.zip
|
||||
│ │ │ │ ├── part2.zip
|
||||
```
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/isaid.py /path/to/iSAID
|
||||
```
|
||||
|
||||
在我们的默认设置(`patch_width`=896, `patch_height`=896, `overlap_area`=384)中,将生成 33978 张图像用于训练和 11644 张图像用于验证。
|
||||
|
||||
## LIP(Look Into Person) dataset
|
||||
|
||||
该数据集可以从[此页面](https://lip.sysuhcp.com/overview.php)下载。
|
||||
|
||||
请运行以下命令来解压数据集。
|
||||
|
||||
```shell
|
||||
unzip LIP.zip
|
||||
cd LIP
|
||||
unzip TrainVal_images.zip
|
||||
unzip TrainVal_parsing_annotations.zip
|
||||
cd TrainVal_parsing_annotations
|
||||
unzip TrainVal_parsing_annotations.zip
|
||||
mv train_segmentations ../
|
||||
mv val_segmentations ../
|
||||
cd ..
|
||||
```
|
||||
|
||||
LIP 数据集的内容包括:
|
||||
|
||||
```none
|
||||
├── data
|
||||
│ ├── LIP
|
||||
│ │ ├── train_images
|
||||
│ │ │ ├── 1000_1234574.jpg
|
||||
│ │ │ ├── ...
|
||||
│ │ ├── train_segmentations
|
||||
│ │ │ ├── 1000_1234574.png
|
||||
│ │ │ ├── ...
|
||||
│ │ ├── val_images
|
||||
│ │ │ ├── 100034_483681.jpg
|
||||
│ │ │ ├── ...
|
||||
│ │ ├── val_segmentations
|
||||
│ │ │ ├── 100034_483681.png
|
||||
│ │ │ ├── ...
|
||||
```
|
||||
|
||||
## Synapse dataset
|
||||
|
||||
此数据集可以从[此页面](https://www.synapse.org/#!Synapse:syn3193805/wiki/)下载。
|
||||
|
||||
遵循 [TransUNet](https://arxiv.org/abs/2102.04306) 的数据准备设定,将原始训练集(30 次扫描)拆分为新的训练集(18 次扫描)和验证集(12 次扫描)。请运行以下命令来准备数据集。
|
||||
|
||||
```shell
|
||||
unzip RawData.zip
|
||||
cd ./RawData/Training
|
||||
```
|
||||
|
||||
然后创建 `train.txt` 和 `val.txt` 以拆分数据集。
|
||||
|
||||
根据 TransUnet,以下是数据集的划分。
|
||||
|
||||
train.txt
|
||||
|
||||
```none
|
||||
img0005.nii.gz
|
||||
img0006.nii.gz
|
||||
img0007.nii.gz
|
||||
img0009.nii.gz
|
||||
img0010.nii.gz
|
||||
img0021.nii.gz
|
||||
img0023.nii.gz
|
||||
img0024.nii.gz
|
||||
img0026.nii.gz
|
||||
img0027.nii.gz
|
||||
img0028.nii.gz
|
||||
img0030.nii.gz
|
||||
img0031.nii.gz
|
||||
img0033.nii.gz
|
||||
img0034.nii.gz
|
||||
img0037.nii.gz
|
||||
img0039.nii.gz
|
||||
img0040.nii.gz
|
||||
```
|
||||
|
||||
val.txt
|
||||
|
||||
```none
|
||||
img0008.nii.gz
|
||||
img0022.nii.gz
|
||||
img0038.nii.gz
|
||||
img0036.nii.gz
|
||||
img0032.nii.gz
|
||||
img0002.nii.gz
|
||||
img0029.nii.gz
|
||||
img0003.nii.gz
|
||||
img0001.nii.gz
|
||||
img0004.nii.gz
|
||||
img0025.nii.gz
|
||||
img0035.nii.gz
|
||||
```
|
||||
|
||||
synapse 数据集的内容包括:
|
||||
|
||||
```none
|
||||
├── Training
|
||||
│ ├── img
|
||||
│ │ ├── img0001.nii.gz
|
||||
│ │ ├── img0002.nii.gz
|
||||
│ │ ├── ...
|
||||
│ ├── label
|
||||
│ │ ├── label0001.nii.gz
|
||||
│ │ ├── label0002.nii.gz
|
||||
│ │ ├── ...
|
||||
│ ├── train.txt
|
||||
│ ├── val.txt
|
||||
```
|
||||
|
||||
然后,使用此命令转换 synapse 数据集。
|
||||
|
||||
```shell
|
||||
python tools/dataset_converters/synapse.py --dataset-path /path/to/synapse
|
||||
```
|
||||
|
||||
注意,MMSegmentation 的默认评估指标(例如 mean dice value)是在 2D 切片图像上计算的,这与 [TransUNet](https://arxiv.org/abs/2102.04306) 等一些论文中的 3D 扫描结果是不同的。
|
||||
|
||||
## REFUGE
|
||||
|
||||
在 [REFUGE Challenge](https://refuge.grand-challenge.org) 官网上注册并下载 [REFUGE 数据集](https://refuge.grand-challenge.org/REFUGE2Download)。
|
||||
|
||||
然后,解压 `REFUGE2.zip`,原始数据集的内容包括:
|
||||
|
||||
```none
|
||||
├── REFUGE2
|
||||
│ ├── REFUGE2
|
||||
│ │ ├── Annotation-Training400.zip
|
||||
│ │ ├── REFUGE-Test400.zip
|
||||
│ │ ├── REFUGE-Test-GT.zip
|
||||
│ │ ├── REFUGE-Training400.zip
|
||||
│ │ ├── REFUGE-Validation400.zip
|
||||
│ │ ├── REFUGE-Validation400-GT.zip
|
||||
│ ├── __MACOSX
|
||||
```
|
||||
|
||||
请运行以下命令转换 REFUGE 数据集:
|
||||
|
||||
```shell
|
||||
python tools/convert_datasets/refuge.py --raw_data_root=/path/to/refuge/REFUGE2/REFUGE2
|
||||
```
|
||||
|
||||
脚本会将目录结构转换如下:
|
||||
|
||||
```none
|
||||
│ ├── REFUGE
|
||||
│ │ ├── images
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ │ │ ├── test
|
||||
│ │ ├── annotations
|
||||
│ │ │ ├── training
|
||||
│ │ │ ├── validation
|
||||
│ │ │ ├── test
|
||||
```
|
||||
|
||||
包含 400 张用于训练的图像、400 张用于验证的图像和 400 张用于测试的图像,这与 REFUGE 2018 数据集相同。
|
||||
|
||||
## Mapillary Vistas Datasets
|
||||
|
||||
- Mapillary Vistas [官方网站](https://www.mapillary.com/dataset/vistas) 可以下载 Mapillary Vistas 数据集,按照官网要求注册并登陆后,数据可以在[这里](https://www.mapillary.com/dataset/vistas)找到。
|
||||
|
||||
- Mapillary Vistas 数据集使用 8-bit with color-palette 来存储标签。不需要进行转换操作。
|
||||
|
||||
- 假设您已将数据集 zip 文件放在 `mmsegmentation/data/mapillary` 中
|
||||
|
||||
- 请运行以下命令来解压数据集。
|
||||
|
||||
```bash
|
||||
cd data/mapillary
|
||||
unzip An-ZjB1Zm61yAZG0ozTymz8I8NqI4x0MrYrh26dq7kPgfu8vf9ImrdaOAVOFYbJ2pNAgUnVGBmbue9lTgdBOb5BbKXIpFs0fpYWqACbrQDChAA2fdX0zS9PcHu7fY8c-FOvyBVxPNYNFQuM.zip
|
||||
```
|
||||
|
||||
- 解压后,您将获得类似于此结构的 Mapillary Vistas 数据集。语义分割 mask 标签在 `labels` 文件夹中。
|
||||
|
||||
```none
|
||||
mmsegmentation
|
||||
├── mmseg
|
||||
├── tools
|
||||
├── configs
|
||||
├── data
|
||||
│ ├── mapillary
|
||||
│ │ ├── training
|
||||
│ │ │ ├── images
|
||||
│ │ │ ├── v1.2
|
||||
| │ │ │ ├── instances
|
||||
| │ │ │ ├── labels
|
||||
| │ │ │ └── panoptic
|
||||
│ │ │ ├── v2.0
|
||||
| │ │ │ ├── instances
|
||||
| │ │ │ ├── labels
|
||||
| │ │ │ ├── panoptic
|
||||
| │ │ │ └── polygons
|
||||
│ │ ├── validation
|
||||
│ │ │ ├── images
|
||||
| │ │ ├── v1.2
|
||||
| │ │ │ ├── instances
|
||||
| │ │ │ ├── labels
|
||||
| │ │ │ └── panoptic
|
||||
│ │ │ ├── v2.0
|
||||
| │ │ │ ├── instances
|
||||
| │ │ │ ├── labels
|
||||
| │ │ │ ├── panoptic
|
||||
| │ │ │ └── polygons
|
||||
```
|
||||
|
||||
- 您可以在配置中使用 `MapillaryDataset_v1` 和 `Mapillary Dataset_v2` 设置数据集版本。
|
||||
在此处 [V1.2](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/configs/_base_/datasets/mapillary_v1.py) 和 [V2.0](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/configs/_base_/datasets/mapillary_v2.py) 查看 Mapillary Vistas 数据集配置文件
|
||||
|
@ -1,3 +1,244 @@
|
||||
## 使用预训练模型推理(待更新)
|
||||
# 教程3:使用预训练模型推理
|
||||
|
||||
中文版文档支持中,请先阅读[英文版本](../../en/user_guides/3_inference.md)
|
||||
MMSegmentation 在 [Model Zoo](../Model_Zoo.md) 中为语义分割提供了预训练的模型,并支持多个标准数据集,包括 Cityscapes、ADE20K 等。
|
||||
本说明将展示如何使用现有模型对给定图像进行推理。
|
||||
关于如何在标准数据集上测试现有模型,请参阅本[指南](./4_train_test.md)
|
||||
|
||||
MMSegmentation 为用户提供了数个接口,以便轻松使用预训练的模型进行推理。
|
||||
|
||||
- [教程3:使用预训练模型推理](#教程3使用预训练模型推理)
|
||||
- [推理器](#推理器)
|
||||
- [基本使用](#基本使用)
|
||||
- [初始化](#初始化)
|
||||
- [可视化预测结果](#可视化预测结果)
|
||||
- [模型列表](#模型列表)
|
||||
- [推理 API](#推理-api)
|
||||
- [mmseg.apis.init_model](#mmsegapisinit_model)
|
||||
- [mmseg.apis.inference_model](#mmsegapisinference_model)
|
||||
- [mmseg.apis.show_result_pyplot](#mmsegapisshow_result_pyplot)
|
||||
|
||||
## 推理器
|
||||
|
||||
在 MMSegmentation 中,我们提供了最**方便的**方式 `MMSegInferencer` 来使用模型。您只需 3 行代码就可以获得图像的分割掩膜。
|
||||
|
||||
### 基本使用
|
||||
|
||||
以下示例展示了如何使用 `MMSegInferencer` 对单个图像执行推理。
|
||||
|
||||
```
|
||||
>>> from mmseg.apis import MMSegInferencer
|
||||
>>> # 将模型加载到内存中
|
||||
>>> inferencer = MMSegInferencer(model='deeplabv3plus_r18-d8_4xb2-80k_cityscapes-512x1024')
|
||||
>>> # 推理
|
||||
>>> inferencer('demo/demo.png', show=True)
|
||||
```
|
||||
|
||||
可视化结果应如下所示:
|
||||
|
||||
<div align="center">
|
||||
<img src='https://user-images.githubusercontent.com/76149310/221507927-ae01e3a7-016f-4425-b966-7b19cbbe494e.png' />
|
||||
</div>
|
||||
|
||||
此外,您可以使用 `MMSegInferencer` 来处理一个包含多张图片的 `list`:
|
||||
|
||||
```
|
||||
# 输入一个图片 list
|
||||
>>> images = [image1, image2, ...] # image1 可以是文件路径或 np.ndarray
|
||||
>>> inferencer(images, show=True, wait_time=0.5) # wait_time 是延迟时间,0 表示无限
|
||||
|
||||
# 或输入图像目录
|
||||
>>> images = $IMAGESDIR
|
||||
>>> inferencer(images, show=True, wait_time=0.5)
|
||||
|
||||
# 保存可视化渲染彩色分割图和预测结果
|
||||
# out_dir 是保存输出结果的目录,img_out_dir 和 pred_out_dir 为 out_dir 的子目录
|
||||
# 以保存可视化渲染彩色分割图和预测结果
|
||||
>>> inferencer(images, out_dir='outputs', img_out_dir='vis', pred_out_dir='pred')
|
||||
```
|
||||
|
||||
推理器有一个可选参数 `return_datasamples`,其默认值为 False,推理器的返回值默认为 `dict` 类型,包括 'visualization' 和 'predictions' 两个 key。
|
||||
如果 `return_datasamples=True` 推理器将返回 [`SegDataSample`](../advanced_guides/structures.md) 或其列表。
|
||||
|
||||
```
|
||||
result = inferencer('demo/demo.png')
|
||||
# 结果是一个包含 'visualization' 和 'predictions' 两个 key 的 `dict`
|
||||
# 'visualization' 包含彩色分割图
|
||||
print(result['visualization'].shape)
|
||||
# (512, 683, 3)
|
||||
|
||||
# 'predictions' 包含带有标签索引的分割掩膜
|
||||
print(result['predictions'].shape)
|
||||
# (512, 683)
|
||||
|
||||
result = inferencer('demo/demo.png', return_datasamples=True)
|
||||
print(type(result))
|
||||
# <class 'mmseg.structures.seg_data_sample.SegDataSample'>
|
||||
|
||||
# 输入一个图片 list
|
||||
results = inferencer(images)
|
||||
# 输出为列表
|
||||
print(type(results['visualization']), results['visualization'][0].shape)
|
||||
# <class 'list'> (512, 683, 3)
|
||||
print(type(results['predictions']), results['predictions'][0].shape)
|
||||
# <class 'list'> (512, 683)
|
||||
|
||||
results = inferencer(images, return_datasamples=True)
|
||||
# <class 'list'>
|
||||
print(type(results[0]))
|
||||
# <class 'mmseg.structures.seg_data_sample.SegDataSample'>
|
||||
```
|
||||
|
||||
### 初始化
|
||||
|
||||
`MMSegInferencer` 必须使用 `model` 初始化,该 `model` 可以是模型名称或一个 `Config`,甚至可以是配置文件的路径。
|
||||
模型名称可以在模型的元文件(configs/xxx/metafile.yaml)中找到,比如 maskformer 的一个模型名称是 `maskformer_r50-d32_8xb2-160k_ade20k-512x512`,如果输入模型名称,模型的权重将自动下载。以下是其他输入参数:
|
||||
|
||||
- weights(str,可选)- 权重的路径。如果未指定,并且模型是元文件中的模型名称,则权重将从元文件加载。默认为 None。
|
||||
- classes(list,可选)- 输入类别用于结果渲染,由于分割模型的预测结构是标签索引的分割图,`classes` 是一个相应的标签索引的类别列表。若 classes 没有定义,可视化工具将默认使用 `cityscapes` 的类别。默认为 None。
|
||||
- palette(list,可选)- 输入调色盘用于结果渲染,它是对应分类的配色列表。若 palette 没有定义,可视化工具将默认使用 `cityscapes` 的调色盘。默认为 None。
|
||||
- dataset_name(str,可选)- [数据集名称或别名](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/mmseg/utils/class_names.py#L302-L317),可视化工具将使用数据集的元信息,如类别和配色,但 `classes` 和 `palette` 具有更高的优先级。默认为 None。
|
||||
- device(str,可选)- 运行推理的设备。如果无,则会自动使用可用的设备。默认为 None。
|
||||
- scope(str,可选)- 模型的作用域。默认为 'mmseg'。
|
||||
|
||||
### 可视化预测结果
|
||||
|
||||
`MMSegInferencer` 有4个用于可视化预测的参数,您可以在初始化推理器时使用它们:
|
||||
|
||||
- show(bool)- 是否弹出窗口显示图像。默认为 False。
|
||||
- wait_time(float)- 显示的间隔。默认值为 0。
|
||||
- img_out_dir(str)- `out_dir` 的子目录,用于保存渲染有色分割掩膜,因此如果要保存预测掩膜,则必须定义 `out_dir`。默认为 `vis`。
|
||||
- opacity(int,float)- 分割掩膜的透明度。默认值为 0.8。
|
||||
|
||||
这些参数的示例请参考[基本使用](#基本使用)
|
||||
|
||||
### 模型列表
|
||||
|
||||
在 MMSegmentation 中有一个非常容易列出所有模型名称的方法
|
||||
|
||||
```
|
||||
>>> from mmseg.apis import MMSegInferencer
|
||||
# models 是一个模型名称列表,它们将自动打印
|
||||
>>> models = MMSegInferencer.list_models('mmseg')
|
||||
```
|
||||
|
||||
## 推理 API
|
||||
|
||||
### mmseg.apis.init_model
|
||||
|
||||
从配置文件初始化一个分割器。
|
||||
|
||||
参数:
|
||||
|
||||
- config(str,`Path` 或 `mmengine.Config`)- 配置文件路径或配置对象。
|
||||
- checkpoint(str,可选)- 权重路径。如果为 None,则模型将不会加载任何权重。
|
||||
- device(str,可选)- CPU/CUDA 设备选项。默认为 'cuda:0'。
|
||||
- cfg_options(dict,可选)- 用于覆盖所用配置中的某些设置的选项。
|
||||
|
||||
返回值:
|
||||
|
||||
- nn.Module:构建好的分割器。
|
||||
|
||||
示例:
|
||||
|
||||
```python
|
||||
from mmseg.apis import init_model
|
||||
|
||||
config_path = 'configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py'
|
||||
checkpoint_path = 'checkpoints/pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth'
|
||||
|
||||
# 初始化不带权重的模型
|
||||
model = init_model(config_path)
|
||||
|
||||
# 初始化模型并加载权重
|
||||
model = init_model(config_path, checkpoint_path)
|
||||
|
||||
# 在 CPU 上的初始化模型并加载权重
|
||||
model = init_model(config_path, checkpoint_path, 'cpu')
|
||||
```
|
||||
|
||||
### mmseg.apis.inference_model
|
||||
|
||||
使用分割器推理图像。
|
||||
|
||||
参数:
|
||||
|
||||
- model(nn.Module)- 加载的分割器
|
||||
- imgs(str,np.ndarray 或 list\[str/np.ndarray\])- 图像文件或加载的图像
|
||||
|
||||
返回值:
|
||||
|
||||
- `SegDataSample` 或 list\[`SegDataSample`\]:如果 imgs 是列表或元组,则返回相同长度的列表类型结果,否则直接返回分割结果。
|
||||
|
||||
**注意:** [SegDataSample](https://github.com/open-mmlab/mmsegmentation/blob/1.x/mmseg/structures/seg_data_sample.py) 是 MMSegmentation 的数据结构接口,用作不同组件之间的接口。`SegDataSample` 实现抽象数据元素 `mmengine.structures.BaseDataElement`,请参阅 [MMEngine](https://github.com/open-mmlab/mmengine) 中的数据元素[文档](https://mmengine.readthedocs.io/zh_CN/latest/advanced_tutorials/data_element.html)了解更多信息。
|
||||
|
||||
`SegDataSample` 中的参数分为几个部分:
|
||||
|
||||
- `gt_sem_seg`(`PixelData`)- 语义分割的标注。
|
||||
- `pred_sem_seg`(`PixelData`)- 语义分割的预测。
|
||||
- `seg_logits`(`PixelData`)- 模型最后一层的输出结果。
|
||||
|
||||
**注意:** [PixelData](https://github.com/open-mmlab/mmengine/blob/main/mmengine/structures/pixel_data.py) 是像素级标注或预测的数据结构,请参阅 [MMEngine](https://github.com/open-mmlab/mmengine) 中的 PixelData [文档](https://mmengine.readthedocs.io/en/latest/advanced_tutorials/data_element.html)了解更多信息。
|
||||
|
||||
示例:
|
||||
|
||||
```python
|
||||
from mmseg.apis import init_model, inference_model
|
||||
|
||||
config_path = 'configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py'
|
||||
checkpoint_path = 'checkpoints/pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth'
|
||||
img_path = 'demo/demo.png'
|
||||
|
||||
|
||||
model = init_model(config_path, checkpoint_path)
|
||||
result = inference_model(model, img_path)
|
||||
```
|
||||
|
||||
### mmseg.apis.show_result_pyplot
|
||||
|
||||
在图像上可视化分割结果。
|
||||
|
||||
参数:
|
||||
|
||||
- model(nn.Module)- 加载的分割器。
|
||||
- img(str 或 np.ndarray)- 图像文件名或加载的图像。
|
||||
- result(`SegDataSample`)- SegDataSample 预测结果。
|
||||
- opacity(float)- 绘制分割图的不透明度。默认值为 `0.5`,必须在 `(0,1]` 范围内。
|
||||
- title(str)- pyplot 图的标题。默认值为 ''。
|
||||
- draw_gt(bool)- 是否绘制 GT SegDataSample。默认为 `True`。
|
||||
- draw_pred(draws_pred)- 是否绘制预测 SegDataSample。默认为 `True`。
|
||||
- wait_time(float)- 显示的间隔,0 是表示“无限”的特殊值。默认为 `0`。
|
||||
- show(bool)- 是否展示绘制的图像。默认为 `True`。
|
||||
- save_dir(str,可选)- 为所有存储后端保存的文件路径。如果为 `None`,则后端存储将不会保存任何数据。
|
||||
- out_file(str,可选)- 输出文件的路径。默认为 `None`。
|
||||
|
||||
返回值:
|
||||
|
||||
- np.ndarray:通道为 RGB 的绘制图像。
|
||||
|
||||
示例:
|
||||
|
||||
```python
|
||||
from mmseg.apis import init_model, inference_model, show_result_pyplot
|
||||
|
||||
config_path = 'configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py'
|
||||
checkpoint_path = 'checkpoints/pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth'
|
||||
img_path = 'demo/demo.png'
|
||||
|
||||
|
||||
# 从配置文件和权重文件构建模型
|
||||
model = init_model(config_path, checkpoint_path, device='cuda:0')
|
||||
|
||||
# 推理给定图像
|
||||
result = inference_model(model, img_path)
|
||||
|
||||
# 展示分割结果
|
||||
vis_image = show_result_pyplot(model, img_path, result)
|
||||
|
||||
# 保存可视化结果,输出图像将在 `workdirs/result.png` 路径下找到
|
||||
vis_iamge = show_result_pyplot(model, img_path, result, out_file='work_dirs/result.png')
|
||||
|
||||
# 修改展示图像的时间,注意 0 是表示“无限”的特殊值
|
||||
vis_image = show_result_pyplot(model, img_path, result, wait_time=5)
|
||||
```
|
||||
|
||||
**注意:** 如果当前设备没有图形用户界面,建议将 `show` 设置为 `False`,并指定 `out_file` 或 `save_dir` 来保存结果。如果您想在窗口上显示结果,则不需要特殊设置。
|
||||
|
Loading…
x
Reference in New Issue
Block a user