File size: 2,783 Bytes
d1843be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Convert your own dataset for DeepLab2 framework

You may want to train DeepLab2 on your own dataset. Here, we provide some
guidances and hopefully that will facillitate the preparation process.

1. Prepare your own dataset.
  * **Images** should be stored either in `jpg` or `png` format.
  * **Annotations** should be stored either in `png` or `raw` format. The
  DeepLab2 framework assumes the panoptic label format (i.e.,
  `panoptic_label = semantic_label * label_divisor + instance_id`, where the
  `label_divisor` should be larger than the maximum number of instances per
  image). The `raw` format refers to the case where we could save the panoptic
  annotations in the int32 array (e.g., int32_numpy_array.tostring()).
2. Convert the dataset to TFRecord.
  * Update our provided example code (e.g.,
  [build_step_data.py](../../data/build_step_data.py))to convert your dataset
  to TFRecord.
3. Modify the `dataset.py` (path: `${DEEPLAB2}/data/dataset.py`) to provide
  your dataset information.
  * Set the `panoptic_label_divisor` (i.e., the `label_divisor` above)
  correctly. Its value should be larger than the maximum number of instances
  that could appear per image in your dataset.
  * Set the `ignore_label` properly. Pixels annotated with `ignore_label`
  are not used during both training and evaluation. If your dataset does not
  contain the `ignore_label` annotations, you could simply set it to be a
  large value (e.g., 255 as for
  [Cityscapes](https://www.cityscapes-dataset.com/)).
  * Set the `class_has_instance_list` properly. The variable specifies
  which class belongs to the `thing` class (i.e., countable objects such as
  people, cars).
  * Set the colormap (for visualization) properly. You may also need to
  define your own colormap (see `${DEEPLAB2}/trainer/vis_utils.py`).
4. Prepare the experiment config.
  * Update our provided example configs (path:
  `${DEEPLAB2}/configs/${DATASET}/${MODEL}/${BACKBONE}`) for your use
  case. A few things that may worth your attention:
       * Set the `crop_size` correctly for both training and evaluation. See
       Q2 in [FAQ](../faq.md) for more details.
       * Tune the config flags for your dataset (e.g., `base_learning_rate`,
       `training_number_of_step`, and so on).

Finally, if your dataset only contains semantic segmentation annotations,
you could still use DeepLab2 framework with some minor changes:

1. Set `panoptic_label_divisor=None` in dataset.py (we also provide one
example in dataset.py, where we only train with semantic segmentation on
Cityscapes).
2. Have a config similar to
`${DEEPLAB2}/configs/cityscapes/panoptic_deeplab/
resnet50_os32_semseg.textproto`, where the instance branch is not
initiated.

At this point, you are good to go! Enjoy training DeepLab2!