项目
在 GitHub 查看
Tramac/awesome-semantic-segmentation-pytorch
Tramac/awesome-semantic-segmentation-pytorch has 3,073 GitHub stars and 580 forks. GitHot measured 0 stars in 24 hours, +1 in 7 days, and +2 in 15 days. Last checked 2026-11-13 11:08 UTC. Last push 2023-01-04.
Semantic Segmentation on PyTorch (include FCN, PSPNet, Deeplabv3, Deeplabv3+, DANet, DenseASPP, BiSeNet, EncNet, DUNet, ICNet, ENet, OCNet, CCNet, PSANet, CGNet, ESPNet, LEDNet, DFANet)
实测星标增长
- 24小时
- 0
- 7天
- +1
- 15天
- +2
- 1个月
- 正在收集历史
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README_zh-CN.md
原文中文说明
English | 简体中文

该项目旨在提供一个基于PyTorch的简洁、易用且可扩展的语义分割工具箱。
主分支代码目前支持 PyTorch 1.1.0 以上的版本
安装
# 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
使用方式
训练
- 单卡训练
# for example, train fcn32_vgg16_pascal_voc:
python train.py --model fcn32s --backbone vgg16 --dataset pascal_voc --lr 0.0001 --epochs 50
- 分布式训练
# 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
测试
- 单卡测试
# for example, evaluate fcn32_vgg16_pascal_voc
python eval.py --model fcn32s --backbone vgg16 --dataset pascal_voc
- 多卡测试
# for example, evaluate fcn32_vgg16_pascal_voc with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node=$NGPUS eval.py --model fcn32s --backbone vgg16 --dataset pascal_voc
Demo
cd ./scripts
#for new users:
python demo.py --model fcn32s_vgg16_voc --input-pic ../tests/test_img.jpg
#you should add 'test.jpg' by yourself
python demo.py --model fcn32s_vgg16_voc --input-pic ../datasets/test.jpg
模型库
- FCN
- ENet
- PSPNet
- ICNet
- DeepLabv3
- DeepLabv3+
- DenseASPP
- EncNet
- BiSeNet
- PSANet
- DANet
- OCNet
- CGNet
- ESPNetv2
- DUNet(DUpsampling)
- FastFCN(JPU)
- LEDNet
- Fast-SCNN
- LightSeg
- DFANet
Model与Backbone的支持详情可见这里。
.{SEG_ROOT}
├── core
│ ├── models
│ │ ├── bisenet.py
│ │ ├── danet.py
│ │ ├── deeplabv3.py
│ │ ├── deeplabv3+.py
│ │ ├── denseaspp.py
│ │ ├── dunet.py
│ │ ├── encnet.py
│ │ ├── fcn.py
│ │ ├── pspnet.py
│ │ ├── icnet.py
│ │ ├── enet.py
│ │ ├── ocnet.py
│ │ ├── psanet.py
│ │ ├── cgnet.py
│ │ ├── espnet.py
│ │ ├── lednet.py
│ │ ├── dfanet.py
│ │ ├── ......
数据集
可以选择以下方式下载指定数据集,比如:
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
部分结果
| Methods | Backbone | TrainSet | EvalSet | crops_size | epochs | JPU | Mean IoU | pixAcc |
|---|---|---|---|---|---|---|---|---|
| FCN32s | vgg16 | train | val | 480 | 60 | ✘ | 47.50 | 85.39 |
| FCN16s | vgg16 | train | val | 480 | 60 | ✘ | 49.16 | 85.98 |
| FCN8s | vgg16 | train | val | 480 | 60 | ✘ | 48.87 | 85.02 |
| FCN32s | resnet50 | train | val | 480 | 50 | ✘ | 54.60 | 88.57 |
| PSPNet | resnet50 | train | val | 480 | 60 | ✘ | 63.44 | 89.78 |
| DeepLabv3 | resnet50 | train | val | 480 | 60 | ✘ | 60.15 | 88.36 |
lr=1e-4, batch_size=4, epochs=80.
注意: 以上结果均基于train.py中的默认参数所得,更优的效果请参照paper中具体参数。
版本
- v0.1.0:相较于master分支,该版本包含了
ccnet与psanet,需要依赖编译产出自定义层,如有需要按照分支说明操作即可。
To Do
- add train script
- remove syncbn
- train & evaluate
- test distributed training
- fix syncbn (Why SyncBN?)
- add distributed (How DIST?)
参考
WeChat&QQ
由于很多小伙伴通过知乎私信寻求一些帮助,同时也不忍心忽略到大家的问题,下面分别提供了针对该项目的微信&QQ群,希望可以帮助到有需要的同学~

