Skip to content

Lightweight models for real-time semantic segmentationon PyTorch (include SQNet, LinkNet, SegNet, UNet, ENet, ERFNet, EDANet, ESPNet, ESPNetv2, LEDNet, ESNet, FSSNet, CGNet, DABNet, Fast-SCNN, ContextNet, FPENet, etc.)

License

Notifications You must be signed in to change notification settings

xiaoyufenfei/Efficient-Segmentation-Networks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Efficient-Segmentation-Networks

python-image pytorch-image

This project aims at providing an easy-to-use, modifiable reference implementation for real-time semantic segmentation models using PyTorch.

---

Table of Contents:

Requirements

PyTorch and Torchvision needs to be installed before running the scripts, PyTorch v1.1 or later is supported.

pip3 install -r requirements.txt

Models

The project supports these semantic segmentation models as follows:

  • (SQNet) Speeding up Semantic Segmentation for Autonomous Driving [Paper]
  • (LinkNet) Exploiting Encoder Representations for Efficient Semantic Segmentation [Paper]
  • (SegNet) A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation [Paper]
  • (UNet) Convolutional Networks for Biomedical Image Segmentation [Paper]
  • (ENet) A Deep Neural Network Architecture for Real-Time Semantic Segmentation [Paper]
  • (ERFNet) Efficient ConvNet for Real-time Semantic Segmentation [Paper]
  • (EDANet) Efficient Dense Modules of Asymmetric Convolution for Real-Time Segmentation [Paper]
  • (ESPNet) Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation [Paper]
  • (ESPNetv2) A Light-weight, Power Efficient, and General Purpose ConvNet [Paper]
  • (LEDNet) A Lightweight Encoder-Decoder Network for Real-Time Semantic Segmentation [Paper]
  • (FSSNet) Fast Semantic Segmentation for Scene Perception [Paper]
  • (ESNet) An Efficient Symmetric Network for Real-time Semantic Segmentation [Paper]
  • (CGNet) A Light-weight Context Guided Network for Semantic Segmentation [Paper]
  • (Fast-SCNN) Fast Semantic Segmentation Network [Paper]
  • (DABNet) Depth-wise Asymmetric Bottleneck for Real-time Semantic Segmentation [Paper]
  • (ContextNet) Exploring Context and Detail for Semantic Segmentation in Real-time [Paper]
  • (FPENet) Feature Pyramid Encoding Network for Real-time Semantic Segmentation [Paper]
  • ...

Losses

The project supports these loss functions:

  1. Weighted Cross Entropy
  2. Weighted Cross Entropy with Label Smooth
  3. Focal Loss
  4. Ohem Cross Entropy
  5. LovaszSoftmax
  6. SegLoss-List
  7. ...

Optimizers

The project supports these optimizers:

  1. SGD
  2. Adam
  3. AdamW
  4. RAdam
  5. RAdam + Lookahead
  6. ...

Activations

  1. ReLu
  2. PReLU
  3. ReLU6
  4. Swish
  5. Mish : A Self Regularized Non-Monotonic Neural Activation Function
  6. ...

Learning Rate Scheduler

The project supports these LR_Schedulers:

  1. Poly decay
  2. Warmup Poly
  3. ...

Normalization methods

  1. In-Place Activated BatchNorm
  2. Switchable Normalization
  3. Weight Standardization
  4. ...

Enhancing Semantic Feature Learning Method

  1. Attention Family
  2. NAS Family
  3. ...

Some useful Tools

  1. pytorch-OpCounter
  2. flops-counter.pytorch
  3. Netron : Visualizer for neural network models, On line URL: Netron
  4. Falshtorch: Visualization toolkit for neural networks in PyTorch !
  5. Bag of Tricks for Image Classification with Convolutional Neural Networks
  6. ...

Dataset-Setting

This project has been tailored to suit the Cityscapes and CamVid datasets. The folds of your dataset need satisfy the following structures:

|-- dataset
|  |-- camvid
|  |  |-- train
|  |  |-- trainannot
|  |  |-- val
|  |  |-- valannot
|  |  |-- test
|  |  |-- testannot
|  |  |-- ...
|  |-- cityscapes
|  |  |-- leftImg8bit
|  |  |  |-- train
|  |  |  |-- val
|  |  |  |-- test
|  |  |-- gtFine
|  |  |  |-- train
|  |  |  |-- val
|  |  |  |-- test
|  |  |-- ...

Usage

Clone this Repo

git clone https://github.com/xiaoyufenfei/Efficient-Segmentation-Networks
cd Efficient-Segmentation-Networks

Currently, the code supports Python 3

Torch dependencies:

  • PyTorch (>=1.1.0)
  • torchvision(>=0.3.0)

Data dependencies:

Download Cityscapes and run the script createTrainIdLabelImgs.py to create annotations based on the training labels. Make sure that the folder is named cityscapes

Training
  • For Cityscapes / CamVid
  1. training on train set
python train.py  --help
  1. training on train+val set
python train.py --help
Testing
  • For Cityscapes / CamVid
python test.py --help
Predicting
  • For Cityscapes
python predict.py --help
Evaluating
  • For Cityscapes
cd tools
python trainID2labelID.py 

Contact

If you think this work useful, please give me a star! And if you find any errors or have any suggestions, please contact me.

GitHub: xiaoyufenfei Email: wangy314159@163.com

Refer to this Rep

You are encouraged to cite the following papers if this work helps your research.

@misc{Efficient-Segmentation-Networks,
  author = {Yu Wang},
  title = {Efficient-Segmentation-Networks Pytorch Implementation},
  year = {2019},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/xiaoyufenfei/Efficient-Segmentation-Networks}},
  commit = {master}
}

License

This project is released under the MIT License. See LICENSE for additional details.

Releases

No releases published

Packages

No packages published