56
GitHub - Tramac/awesome-semantic-segmentation-pytorch: Semantic Segmentation on...
source link: https://github.com/Tramac/awesome-semantic-segmentation-pytorch
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Semantic Segmentation on PyTorch
This project aims at providing a concise, easy-to-use, modifiable reference implementation for semantic segmentation models using PyTorch.
Update
- add FastFCN, ESPNet
- add distributed training (Note: I have no enough device to test distributed, If you are interested in it, welcome to complete testing and fix bugs.)
Installation
# semantic-segmentation-pytorch dependencies
pip install ninja tqdm
# follow PyTorch installation in https://pytorch.org/get-started/locally/
conda install pytorch torchvision -c pytorch
# install PyTorch Segmentation
git clone https://github.com/Tramac/awesome-semantic-segmentation-pytorch.git
# the following will install the lib with symbolic links, so that you can modify
# the files if you want and won't need to re-build it
cd awesome-semantic-segmentation-pytorch/core/nn
python setup.py build develop
Usage
Train
- Single GPU training
# for example, train fcn32_vgg16_pascal_voc:
python train.py --model fcn32s --backbone vgg16 --dataset pascal_voc --lr 0.0001 --epochs 50
- Multi-GPU training
# for example, train fcn32_vgg16_pascal_voc with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node=$NGPUS train.py --model fcn32s --backbone vgg16 --dataset pascal_voc --lr 0.0001 --epochs 50
Evaluation
- Single GPU training
# for example, evaluate fcn32_vgg16_pascal_voc
python eval.py --model fcn32s --backbone vgg16 --dataset pascal_voc
- Multi-GPU training
# for example, evaluate fcn32_vgg16_pascal_voc with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node=$NGPUS --model fcn32s --backbone vgg16 --dataset pascal_voc
Demo
cd ./scripts
python demo.py --model fcn32s_vgg16_voc --input-pic ./datasets/test.jpg
.{SEG_ROOT}
├── scripts
│ ├── demo.py
│ ├── eval.py
│ └── train.py
Support
Model
- FCN
- ENet
- PSPNet
- ICNet
- DeepLabv3
- DenseASPP
- EncNet
- BiSeNet
- PSANet
- DANet
- OCNet
- CGNet
- ESPNetv2
- CCNet
- DUNet(DUpsampling)
- FastFCN(JPU)
- LEDNet
- Fast-SCNN
- LightSeg
DETAILS for model & backbone.
.{SEG_ROOT}
├── core
│ ├── models
│ │ ├── bisenet.py
│ │ ├── danet.py
│ │ ├── deeplabv3.py
│ │ ├── denseaspp.py
│ │ ├── dunet.py
│ │ ├── encnet.py
│ │ ├── fcn.py
│ │ ├── pspnet.py
│ │ ├── icnet.py
│ │ ├── enet.py
│ │ ├── ocnet.py
│ │ ├── ccnet.py
│ │ ├── psanet.py
│ │ ├── cgnet.py
│ │ ├── espnet.py
│ │ ├── lednet.py
│ │ ├── ......
Dataset
You can run script to download dataset, such as:
cd ./core/data/downloader
python ade20k.py --download-dir ../datasets/ade
Dataset training set validation set testing set VOC2012 1464 1449 ✘ VOCAug 11355 2857 ✘ ADK20K 20210 2000 ✘ Cityscapes 2975 500 ✘ COCO
SBU-shadow 4085 638 ✘ LIP(Look into Person) 30462 10000 10000
.{SEG_ROOT}
├── core
│ ├── data
│ │ ├── dataloader
│ │ │ ├── ade.py
│ │ │ ├── cityscapes.py
│ │ │ ├── mscoco.py
│ │ │ ├── pascal_aug.py
│ │ │ ├── pascal_voc.py
│ │ │ ├── sbu_shadow.py
│ │ └── downloader
│ │ ├── ade20k.py
│ │ ├── cityscapes.py
│ │ ├── mscoco.py
│ │ ├── pascal_voc.py
│ │ └── sbu_shadow.py
Result
- PASCAL VOC 2012
Note: lr=1e-4
.
Overfitting Test
See TEST for details.
.{SEG_ROOT}
├── tests
│ └── test_model.py
To Do
- add train script
- add lightnet
- fix moved syncbn
- train & evaluate
- test distributed training
- fix syncbn (Why SyncBN?)
- add distributed (How DIST?)
References
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK