Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Tramac/Lightweight-Segmentation
Lightweight models for real-time semantic segmentation(include mobilenetv1-v3, shufflenetv1-v2, igcv3, efficientnet).
https://github.com/Tramac/Lightweight-Segmentation
lightweight network-analysis real-time semantic-segmentation
Last synced: 3 months ago
JSON representation
Lightweight models for real-time semantic segmentation(include mobilenetv1-v3, shufflenetv1-v2, igcv3, efficientnet).
- Host: GitHub
- URL: https://github.com/Tramac/Lightweight-Segmentation
- Owner: Tramac
- License: apache-2.0
- Created: 2019-05-24T02:56:13.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-09-08T08:44:33.000Z (about 4 years ago)
- Last Synced: 2024-07-22T20:06:47.641Z (4 months ago)
- Topics: lightweight, network-analysis, real-time, semantic-segmentation
- Language: Python
- Homepage:
- Size: 58.6 KB
- Stars: 346
- Watchers: 16
- Forks: 77
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-semantic-segmentation-pytorch - LightSeg
- awesome-seg - LightSeg
README
# Lightweight Model for Real-Time Semantic Segmentation
[![python-image]][python-url]
[![pytorch-image]][pytorch-url]
[![lic-image]][lic-url]This project aims at providing the popular lightweight model implementations for real-time semantic segmentation.
## Usage
------
### Train
- **Single GPU training**
```
python train.py --model mobilenet --dataset citys --lr 0.01 --epochs 240
```- **Multi-GPU training**
```
# for example, train mobilenet with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node=$NGPUS train.py --model mobilenet --dataset citys --lr 0.01 --epochs 240
```### Evaluation
- **Single GPU evaluating**
```
python eval.py --model mobilenet_small --dataset citys
```- **Multi-GPU evaluating**
```
# for example, evaluate mobilenet with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node=$NGPUS eval.py --model mobilenet --dataset citys
```## Result
- **Cityscapes**
Where: `crop_size=768, lr=0.01, epochs=80`.
| Backbone | OHEM | Params(M) | FLOPs(G) | CPU(fps) | GPU(fps) | mIoU/pixACC | Model |
| :---------------: | :--: | :-------: | :------: | :------: | :------: | :---------: | :----------------------------------------------------------: |
| mobilenet | ✘ | 5.31 | 4.48 | 0.81 | 77.11 | 0.463/0.901 | [GoogleDrive](https://drive.google.com/file/d/1imOndYZDKccQED_RVVUa_I5mYClL1Wy1/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/1De4ESrHCqdev0nQrKOUzaA)(ybsg) |
| mobilenet | ✓ | 5.31 | 4.48 | 0.81 | 75.35 | 0.526/0.909 | [GoogleDrive](https://drive.google.com/file/d/1uKswsffm5Zg_cYP2Xosm_JtSub74bEs3/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/1R3k07vCiYbvz9FztEnAUsw)(u2y2) |
| mobilenetv2 | ✓ | 4.88 | 4.04 | 0.49 | 49.40 | 0.613/0.930 | [GoogleDrive](https://drive.google.com/file/d/1JrphJXLr311S3CrvIPgXzedYzuZROydp/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/1OWPsDvSjeOM2_VUbPze7gA)(q2g5) |
| mobilenetv3_small | ✓ | 1.02 | 1.64 | 2.59 | 104.56 | 0.529/0.908 | [GoogleDrive](https://drive.google.com/file/d/1CL9XJ2NtGOj2vLwIsG_X9jdkYa_8x-Bo/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/15PjAXEQHr136w-B1MalmIg)(e7no) |
| mobilenetv3_large | ✓ | 2.68 | 4.59 | 1.39 | 79.43 | 0.584/0.916 | [GoogleDrive](https://drive.google.com/file/d/10twlfVqixUqUwwfqGkI__NcrxKZIo1dg/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/1ofXAfN4qDhtsI5kEI90biw)(i60c) |
| shufflenet | ✓ | 6.89 | 5.68 | 0.57 | 43.79 | 0.493/0.901 | [GoogleDrive](https://drive.google.com/file/d/1Bm3FAIIEqZm9mDRPj9H75zsGpxvEWe76/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/1jI2oyoGrTO6JbPp0lL28tw)(6fjh) |
| shufflenetv2 | ✓ | 5.24 | 4.33 | 0.72 | 57.71 | 0.528/0.914 | [GoogleDrive](https://drive.google.com/file/d/1glXDHrB0pPOKNc2UucbQm1Be-NOuvrUA/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/1HZ97h15tz42eMJohyx-H2w)(7pi5) |
| igcv3 | ✓ | 4.86 | 4.04 | 0.34 | 29.70 | 0.573/0.923 | [GoogleDrive](https://drive.google.com/file/d/1sahSoagKfAKYsu8KnueeIBU_xufS3RLx/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/1neM8JiGD5an_WXMhrfnxtA)(qe4f) |
| efficientnet-b0 | ✓ | 6.63 | 2.60 | 0.33 | 30.15 | 0.492/0.903 | [GoogleDrive](https://drive.google.com/file/d/1sLBOAzHwXnPqvPH6zKOhRoRT1TwktxVo/view?usp=sharing),[BaiduCloud](https://pan.baidu.com/s/1PVXkARVzoOPUHsznwQVZRw)(phuy) |- **Improve**
| Model | batch_size | epochs | crop_size | init_weight | optimizer | mIoU/pixACC |
| :---------------: | :--------: | :----: | :-------: | :-------------: | :-------: | :---------: |
| mobilenetv3_small | 4 | 80 | 768 | kaiming_uniform | SGD | 0.529/0.908 |
| mobilenetv3_small | 4 | 160 | 768 | kaiming_uniform | SGD | 0.587/0.918 |
| mobilenetv3_small | 8 | 160 | 768 | kaiming_uniform | SGD | 0.553/0/913 |
| mobilenetv3_small | 4 | 80 | 1024 | kaiming_uniform | SGD | 0.557/0.914 |
| mobilenetv3_small | 4 | 80 | 768 | xavier_uniform | SGD | 0.550/0.911 |
| mobilenetv3_small | 4 | 80 | 768 | kaiming_uniform | Adam | 0.549/0.911 |
| mobilenetv3_small | 8 | 160 | 1024 | xavier_uniform | SGD | 0.612/0.920 |## Support
- [MobileNet](https://arxiv.org/abs/1704.04861)
- [MobileNetV2](https://arxiv.org/abs/1801.04381)
- [MobileNetV3](https://arxiv.org/abs/1905.02244)
- [ShuffleNet](https://arxiv.org/abs/1707.01083)
- [ShuffleNetV2](https://arxiv.org/abs/1807.11164)
- [IGCV3](https://arxiv.org/pdf/1806.00178)
- [EfficientNet](https://arxiv.org/pdf/1905.11946v1)## To Do
- [ ] improve performance
- [ ] optimize memory
- [ ] check efficientnet
- [ ] replace `nn.SyncBatchNorm` by [`nn.BatchNorm.convert_sync_batchnorm`](https://pytorch.org/docs/master/nn.html#torch.nn.SyncBatchNorm)
- [ ] check `find_unused_parameters` in `nn.parallel.DistributedDataParallel`## References
- [maskrcnn-benchmark](https://github.com/facebookresearch/maskrcnn-benchmark)
- [mobilenetv3-segmentation](https://github.com/Tramac/mobilenetv3-segmentation)
- [awesome-semantic-segmentation-pytorch](https://github.com/Tramac/awesome-semantic-segmentation-pytorch)[python-image]: https://img.shields.io/badge/Python-2.x|3.x-ff69b4.svg
[python-url]: https://www.python.org/
[pytorch-image]: https://img.shields.io/badge/PyTorch-1.1-2BAF2B.svg
[pytorch-url]: https://pytorch.org/
[lic-image]: https://img.shields.io/badge/Apache-2.0-blue.svg
[lic-url]: https://github.com/Tramac/mobilenetv3-segmentation/blob/master/LICENSE