[Project] [Paper] [arXiv] [Home]
Official implementation of FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation.
A Faster, Stronger and Lighter framework for semantic segmentation, achieving the state-of-the-art performance and more than 3x acceleration.
@inproceedings{wu2019fastfcn,
title = {FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation},
author = {Wu, Huikai and Zhang, Junge and Huang, Kaiqi and Liang, Kongming and Yu Yizhou},
booktitle = {arXiv preprint arXiv:1903.11816},
year = {2019}
}
Contact: Hui-Kai Wu (huikaiwu@icloud.com)
2020-02-18: FastFCN
can now run on every OS
with PyTorch>=1.1.0
and Python==3.*.*
- Replace
SyncBatchNorm
withtorch.nn.SyncBatchNorm
. - Employ
torch.nn.DistributedDataParallel
. - Replace all
C/C++
extensions withtorch.autograd.Function
extensions (Pure Python). - Note: Due to the introduction of
torch.nn.DistributedDataParallel
, the performance (mIoU) is lower thanv1.0.0
under the same hyper-parameter configurations [PContext-ResNet50-Encoding: 50.95% v.s. 51.05%]. Pull requests are welcome to address the issue.
- PyTorch >= 1.1.0 (Note: The code is test in the environment with
python=3.6, cuda=9.0
) - Download FastFCN
git clone https://github.com/wuhuikai/FastFCN.git cd FastFCN
- Install Requirements
nose tqdm scipy cython requests
python -m scripts.prepare_pcontext
Method | Backbone | mIoU | FPS | Model | Scripts |
---|---|---|---|---|---|
EncNet | ResNet-50 | 49.91 | 18.77 | ||
EncNet+JPU (ours) | ResNet-50 | 51.05 | 37.56 | GoogleDrive | bash |
PSP | ResNet-50 | 50.58 | 18.08 | ||
PSP+JPU (ours) | ResNet-50 | 50.89 | 28.48 | GoogleDrive | bash |
DeepLabV3 | ResNet-50 | 49.19 | 15.99 | ||
DeepLabV3+JPU (ours) | ResNet-50 | 50.07 | 20.67 | GoogleDrive | bash |
EncNet | ResNet-101 | 52.60 (MS) | 10.51 | ||
EncNet+JPU (ours) | ResNet-101 | 54.03 (MS) | 32.02 | GoogleDrive | bash |
python -m scripts.prepare_ade20k
Method | Backbone | mIoU (MS) | Model | Scripts |
---|---|---|---|---|
EncNet | ResNet-50 | 41.11 | ||
EncNet+JPU (ours) | ResNet-50 | 42.75 | GoogleDrive | bash |
EncNet | ResNet-101 | 44.65 | ||
EncNet+JPU (ours) | ResNet-101 | 44.34 | GoogleDrive | bash |
Method | Backbone | FinalScore (MS) | Model | Scripts |
---|---|---|---|---|
EncNet+JPU (ours) | ResNet-50 | GoogleDrive | bash | |
EncNet | ResNet-101 | 55.67 | ||
EncNet+JPU (ours) | ResNet-101 | 55.84 | GoogleDrive | bash |
Note: EncNet (ResNet-101) is trained with crop_size=576
, while EncNet+JPU (ResNet-101) is trained with crop_size=480
for fitting 4 images into a 12G GPU.
Dataset | Input | GT | EncNet | Ours |
---|---|---|---|---|
PContext | ![]() |
![]() |
![]() |
![]() |
ADE20K | ![]() |
![]() |
![]() |
![]() |
Code borrows heavily from PyTorch-Encoding.