Home
Softono

Efficient Segmentation Networks

Open source MIT Python
1K
Stars
167
Forks
21
Issues
18
Watchers
2 years
Last Commit

 About Efficient Segmentation Networks

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.)

Platforms

Web Self-hosted

Languages

Python

Links

Need Help Installing Efficient Segmentation Networks?

We provide expert installation service for this software. Our team will install, configure, and secure Efficient Segmentation Networks on your server. plans start at just $30.

Efficient Segmentation Networks

View on GitHub

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: [email protected]

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.