|
# Using DeepLab2 |
|
|
|
In the following, we provide instructions on how to run DeepLab2. |
|
|
|
## Prerequisites |
|
|
|
We assume DeepLab2 is successfully installed and the necessary datasets are |
|
configured. |
|
|
|
* See [Installation](installation.md). |
|
* See dataset guides: |
|
* [Cityscapes](cityscapes.md). |
|
* [KITTI-STEP](kitti_step.md). |
|
* [and many more](./). |
|
|
|
## Running DeepLab2 |
|
|
|
DeepLab2 contains several implementations of state-of-the-art methods. In the |
|
following, we discuss all steps from choosing a model, setting up the |
|
configuration to training and evaluating it. |
|
|
|
### Choosing a model |
|
|
|
For this tutorial, we use Panoptic-DeepLab, however, running any other model |
|
follows the same steps. For each network architecture, we provide a guide that |
|
contains example configurations and (pretrained) checkpoints. You can find all |
|
guides [here](../projects/). For now, please checkout |
|
[Panoptic-DeepLab](../projects/panoptic_deeplab.md). |
|
|
|
We will use the Resnet50 model as an example for this guide. If you just want to |
|
run the network without training, please download the corresponding checkpoint |
|
trained by us. If you would like to train the network, please download the |
|
corresponding ImageNet pretrained checkpoint from |
|
[here](../projects/imagenet_pretrained_checkpoints.md). |
|
|
|
### Defining a configuration |
|
|
|
When you want to train or evaluate a network, DeepLab2 requires a corresponding |
|
configuration. This configuration contains information about the network |
|
architecture as well as all sorts of hyper-parameters. Fortunately, for almost |
|
all settings we provide default values and example configurations. The |
|
configuration of Panoptic-DeepLab with ResNet50 for the Cityscapes dataset can |
|
be found |
|
[here](../../configs/cityscapes/panoptic_deeplab/resnet50_os32_merge_with_pure_tf_func.textproto). |
|
|
|
Using our default parameters there are only a few things that needs to be |
|
defined: |
|
|
|
1. The name of the experiment `experiment_name`. The experiment name is used as |
|
a folder name to store all experiment related files in. |
|
2. The initial checkpoint `initial_checkpoint`, which can be an empty string |
|
for none or the path to a checkpoint (e.g., pretrained on ImageNet or fully |
|
trained by us.) |
|
3. The training dataset `train_dataset_options.file_pattern`, which should |
|
point to the TfRecords of the Cityscapes train set. |
|
4. The evaluation dataset `eval_dataset_options.file_pattern`, which should |
|
point to the TfRecords of the Cityscapes val set. |
|
5. If the custom CUDA kernel is successfully compiled, we recommend to set |
|
`merge_semantic_and_instance_with_tf_op` to true. |
|
|
|
For a detailed explanation of all the parameters, we refer to the documented |
|
definitions of the proto files. A good starting place is the |
|
[config.proto](../../config.proto). The `ExperimentOptions` are a collection of |
|
all necessary configurations ranging from the model architecture to the training |
|
settings. |
|
|
|
### Training and Evaluating |
|
|
|
We currently support four different modes to run DeepLab2: |
|
|
|
* Training: This will only train the network based on the provided |
|
configuration. |
|
* Evaluation: This will only evaluate the network based on the provided |
|
configuration. |
|
* Continuous Evaluation: This mode will constantly monitor a directory for |
|
newly saved checkpoints that will be evaluated until a timeout. This mode is |
|
useful when runing separate jobs for training and evaluation (e.g., a multi |
|
GPU job for training, and a single GPU job for evaluating). |
|
* Interleaved Training and Evaluation: In this mode, training and evaluation |
|
will run interleaved. This is not supported for multi GPU jobs. |
|
|
|
### Putting everything together |
|
|
|
To run DeepLab2 on GPUs, the following command should be used: |
|
|
|
```bash |
|
python training/train.py \ |
|
--config_file=${CONFIG_FILE} \ |
|
--mode={train | eval | train_and_eval | continuous_eval} \ |
|
--model_dir=${BASE_MODEL_DIRECTORY} \ |
|
--num_gpus=${NUM_GPUS} |
|
``` |
|
|
|
You can also launch DeepLab2 on TPUS. For this, the TPU address needs to be |
|
specified: |
|
|
|
```bash |
|
python training/train.py \ |
|
--config_file=${CONFIG_FILE} \ |
|
--mode={train | eval | train_and_eval | continuous_eval} \ |
|
--model_dir=${BASE_MODEL_DIRECTORY} \ |
|
--master=${TPU_ADDRESS} |
|
``` |
|
|
|
For a detailed explanation of each option run: |
|
|
|
```bash |
|
python training/train.py --help |
|
``` |
|
|