Spaces:
Runtime error
Runtime error
# 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 | |
``` | |