DeepLab Parameters
=====
### `atrous_rates` and `output_stride`
when you divide `output_stride` by 2, `atrous_rates` must double their values
Examples:
```
--atrous_rates=6
--atrous_rates=12
--atrous_rates=18
--output_stride=16
```
```
--atrous_rates=12
--atrous_rates=24
--atrous_rates=36
--output_stride=8
```
The less `output_stride` the better accuracy
Can be different while training and while inferencing
##### Unanswered questions:
1. How does it influence training speed/inference speed?
1. How does it influence video memory?
1.
### `train_crop_size`
`train_crop_size` is [height, width]
`train_crop_size` and `eval_crop_size`
MUST always be bigger than the biggest image in the dataset
### `decoder_output_stride`
`decoder_output_stride`
> Adds the decoder to obtain sharper segmentation results
> For `xception_65`, use `decoder_output_stride = 4`
> For `mobilenet_v2`, use `decoder_output_stride = None`.
improves segmentation map the less the value the better segmentation map
examples:
DeepLab Training
====
from /models/research/ run
```
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
```
--------
### tfrecord creation process
deeplab/train.py has a parameter `--dataset_dir`
it must be a path to tfrecord of your dataset
Follow the next steps to create one:
```
python3 deeplab/datasets/build_voc2012_data.py \
--image_folder=/path/to/images \
--list_folder=/path/to/list_folder \
--output_dir=/pat/to/tfrecord \
--semantic_segmentation_folder=/path/to/segmaps \
--image_format="jpg"
```
`image_folder` contains ALL dataset images in `image_format` format
`semantic_segmentation_folder` contains ALL dataset labels as images in .png format.
`list_folder` must contain .txt files to group dataset splits (train, val, trainval, test, whateveryouwant)
Each .txt split file is composed of image names
### Example:
you have 10 images
```
/path/to/image_folder/1.jpg
/path/to/image_folder/2.jpg
...
/path/to/image_folder/10.jpg
```
For each image you have a segmentation map.
```
/path/to/semantic_segmentation_folder/1.png
/path/to/semantic_segmentation_folder/2.png
...
/path/to/semantic_segmentation_folder/10.png
```
You want to use first 6 images for training, 7th and 8th images for validation, and 9th and 10th for testing
You would create 3 files
```
/path/to/list_folder/train.txt
/path/to/list_folder/val.txt
/path/to/list_folder/test.txt
```
train.txt would look like this:
```
1
2
3
4
5
6
```
and val.txt would look like this:
```
7
8
```
and test.txt would look like this:
```
9
10
```
--------------------
in deeplab/datasets segmentation_dataset.py create DatasetDescriptor. It will be passed as `--dataset="yourdatasetname"` to /deeplab/train.py
--------------
_PROB_OF_FLIP in deeplab/input_preprocess.py
comment “logits” in utils/train_utils.py to restore model
train_crop_size is Image crop size [height, width]
always —fine_tune_batch_norm=True?
to train from scratch
--initialize_last_layer=False --last_layers_contain_logits_only=True
to continue trainig:
--initialize_last_layer=True --last_layers_contain_logits_only=False
create backups manualy
ALWAYS SPECIFY decoder_output_stride