/Deeplab-v3plus

A higher performance pytorch implementation of DeepLab V3 Plus(DeepLab v3+)

Primary LanguagePythonMIT LicenseMIT

A Higher Performance Pytorch Implementation of DeepLab V3 Plus

Introduction

This repo is an (re-)implementation of Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation in PyTorch for semantic image segmentation on the PASCAL VOC dataset. And this repo has a higher mIoU of 79.19% than the result of paper which is 78.85%.

Requirements

Python(3.6) and Pytorch(0.4.1) is necessary before running the scripts. To install the required python packages(expect PyTorch), run

pip install -r requirements.txt

Datasets

To train and validate the network, this repo use the augmented PASCAL VOC 2012 dataset which contains 10582 images for training and 1449 images for validation. To use the dataset, you can download the PASCAL VOC training/validation data (2GB tar file) here and download the SegmentationClassAug from dropbox or Baidu Netdisk

Training

Before training, you should clone this repo:

git clone git@github.com:hualin95/Deeplab-v3plus.git

You can begin training by running the train.py.

#training
cd Deeplab-v3plus-master/tools/   
python train.py

You are expected to achieve PA:94.77%, MPA:88.48%, MIoU:79.19%, FWIoU:90.53% on the validation.

#Monitoring
tensorboard --logdir=runs/ --port=80

Performance

VOC2012: after 30k iterations with a batch size of 16.

Backbone train OS eval OS MS mIoU paper mIoU repo
Resnet101 16 16 No 78.85% 79.19%

TODO

  • Resnet as Network Backbone
  • Implement depthwise separable convolutions
  • Multi-GPU support
  • Model pretrained on MS-COCO
  • Xception as Network Backbone