API usage sample for segmentation task

This sample demonstrates the use of the Post-training Optimization Tool API for the task of quantizing a segmentation model. The DeepLabV3 model from TensorFlow* is used for this purpose. A custom DataLoader is created to load the Pascal VOC 2012 dataset for semantic segmentation task and the implementation of Mean Intersection Over Union metric is used for the model evaluation.

How to prepare the data

To run this sample, you will need to download the validation part of the Pascal VOC 2012 image database http://host.robots.ox.ac.uk/pascal/VOC/voc2012/#data. Images are placed in the JPEGImages folder, ImageSet file with the list of image names for the segmentation task can be found at ImageSets/Segmentation/val.txt and segmentation masks are kept in the SegmentationClass directory.

How to Run the Sample

In the instructions below, the Post-Training Optimization Tool directory <POT_DIR> is referred to:

  • <ENV>/lib/python<version>/site-packages/ in the case of PyPI installation, where <ENV> is a Python* environment where OpenVINO is installed and <version> is a Python* version, e.g. 3.6.

  • <INSTALL_DIR>/deployment_tools/tools/post_training_optimization_toolkit in the case of OpenVINO distribution package. <INSTALL_DIR> is the directory where Intel Distribution of OpenVINO toolkit is installed.

  1. To get started, follow the Installation Guide.

  2. Launch Model Downloader tool to download deeplabv3 model from the Open Model Zoo repository.

    python3 ./downloader.py --name deeplabv3
  3. Launch Model Converter tool to generate Intermediate Representation (IR) files for the model:

    python3 ./converter.py --name deeplabv3 --mo <PATH_TO_MODEL_OPTIMIZER>/mo.py
  4. Launch the sample script:

    python3 <POT_DIR>/compression/api/samples/segmentation/segmentation_sample.py -m <PATH_TO_IR_XML> -d <VOCdevkit/VOC2012/JPEGImages> --imageset-file <VOCdevkit/VOC2012/ImageSets/Segmentation/val.txt> --mask-dir <VOCdevkit/VOC2012/SegmentationClass>

    Optional: you can specify .bin file of IR directly using the -w, --weights options.