This repository provides official models from two papers:
Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells
, available here;Template-Based Automatic Search of Compact Semantic Segmentation Architectures
, available here.
For citations:
Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells
Vladimir Nekrasov, Hao Chen, Chunhua Shen, Ian Reid
CVPR, 2019
and
Template-Based Automatic Search of Compact Semantic Segmentation Architectures
Vladimir Nekrasov, Chunhua Shen, Ian Reid
WACV, 2020
22 May, 2020: Added the search script for the WACV 2020 experiments on CityScapes.
05 April, 2020 : Added decoder design and pre-trained segmentation models from the WACV 2020 paper "Template-Based Automatic Search of Compact Semantic Segmentation Architectures".
For flawless reproduction of our results, the Ubuntu OS is recommended. The models have been tested using Python 3.6.
pip3
Cython
cv2
jupyter-notebook
matplotlib
numpy
Pillow
torch>=1.0
torchvision
For the ease of reproduction, we have embedded all our examples inside Jupyter notebooks.
Please refer to results on PASCAL VOC
Please refer to results on NYUD-v2
Please refer to results on CityScapes
Please refer to results on CamVid
In the paper we wrongly claimed that the latency of arch0
and arch1
on 2048x1048
inputs were 95.7±0.721
and 145±0.215
, correspondingly (on a single 1080Ti
). These numbers were incorrect as the model was in the training regime and not in the evaluation mode (model.eval()
in PyTorch). Below are the characteristics of the discovered architectures with correct latency:
arch0 | arch1 | |
---|---|---|
Number of parameters (19 output classes) | 280147 | 268235 |
Latency, ms on 2048x1024 inputs | 52.25±0.03 | 97.11±0.24 |
Latency, ms on 480x360 inputs | 8.97±0.10 | 11.51±0.14 |
If you would like to search for architectures yourself, please follow the instructions below:
You would need to have PASCAL VOC segmentation dataset expanded with annotations from BSD.
After that, run in your terminal:
mkdir data/datasets
ln -s /path_to_voc/VOCdevkit data/datasets/
We rely on a Cython-based script for calculating mean IoU. In order to build the corresponding files, run the following:
cd src
python helpers/setup.py build_ext --build-lib=./helpers/
After that, you can execute ./examples/search/search.sh
that will start the search process.
[!] Please note that all the hyperparameters were tuned for running the search process on 2 GPUs, each with at least 11GB of memory. In case when your setup differs, you would need to tune the hyperparameters accordingly.
We output the log-file with all information on the search process. You can easily see top-performing architectures using the following command: python src/helpers/num_uq.py path_to_genotypes.out
You would need to have the CityScapes segmentation dataset.
After that, run in your terminal:
mkdir data/datasets
ln -s /path_to_cityscapes/cs/ data/datasets/
After that, you can execute ./examples/search/search_wacv.sh
that will start the search process.
[!] Please note that all the hyperparameters were tuned for running the search process on 2 1080Ti GPUs. In case when your setup differs, you would need to tune the hyperparameters accordingly.
This project is free to use for non-commercial purposes - see the LICENSE file for details.
- University of Adelaide and Australian Centre for Robotic Vision (ACRV) for making this project happen
- HPC Phoenix cluster at the University of Adelaide for making the training of the models possible
- PyTorch developers
- Yerba mate tea