| # 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 |
| ``` |
|
|