├── plots └── ._ ├── data └── MSD │ └── ._ ├── models ├── ADE20K │ └── ._ ├── MSD_Lungs │ └── ._ └── MSD_Spleen │ └── ._ ├── pretrained └── ImageNet-1K │ └── ._ ├── SegFormer ├── demo │ ├── __init__.py │ └── demo.png ├── requirements │ ├── optional.txt │ ├── readthedocs.txt │ ├── runtime.txt │ ├── docs.txt │ └── tests.txt ├── mmseg │ ├── models │ │ ├── necks │ │ │ └── __init__.py │ │ ├── segmentors │ │ │ └── __init__.py │ │ ├── utils │ │ │ └── __init__.py │ │ ├── losses │ │ │ └── __init__.py │ │ ├── __init__.py │ │ ├── backbones │ │ │ └── __init__.py │ │ └── decode_heads │ │ │ └── __init__.py │ ├── core │ │ ├── utils │ │ │ ├── __init__.py │ │ │ └── misc.py │ │ ├── __init__.py │ │ ├── seg │ │ │ ├── sampler │ │ │ │ ├── __init__.py │ │ │ │ └── base_pixel_sampler.py │ │ │ ├── __init__.py │ │ │ └── builder.py │ │ └── evaluation │ │ │ └── __init__.py │ ├── ops │ │ └── __init__.py │ ├── utils │ │ ├── __init__.py │ │ └── collect_env.py │ ├── apis │ │ └── __init__.py │ ├── version.py │ ├── datasets │ │ ├── msd.py │ │ ├── msd_marked.py │ │ ├── msd_balanced.py │ │ ├── msd_lungs_balanced.py │ │ ├── hrf.py │ │ ├── stare.py │ │ ├── drive.py │ │ ├── chase_db1.py │ │ ├── pipelines │ │ │ └── __init__.py │ │ ├── __init__.py │ │ └── voc.py │ └── __init__.py ├── requirements.txt ├── resources │ ├── image.png │ ├── seg_demo.gif │ └── mmseg-logo.png ├── configs │ ├── sem_fpn │ │ ├── fpn_r101_512x512_80k_ade20k.py │ │ ├── fpn_r18_512x512_80k_ade20k.py │ │ ├── fpn_x101324d_512x512_80k_ade20k.py │ │ ├── fpn_x101644d_512x512_80k_ade20k.py │ │ └── fpn_r50_512x512_80k_ade20k.py │ ├── ann │ │ ├── ann_r101-d8_512x512_160k_ade20k.py │ │ ├── ann_r101-d8_512x512_20k_voc12aug.py │ │ ├── ann_r101-d8_512x512_40k_voc12aug.py │ │ ├── ann_r101-d8_512x512_80k_ade20k.py │ │ ├── ann_r101-d8_769x769_40k_cityscapes.py │ │ ├── ann_r101-d8_769x769_80k_cityscapes.py │ │ ├── ann_r101-d8_512x1024_40k_cityscapes.py │ │ ├── ann_r101-d8_512x1024_80k_cityscapes.py │ │ ├── ann_r50-d8_512x1024_40k_cityscapes.py │ │ ├── ann_r50-d8_512x1024_80k_cityscapes.py │ │ ├── ann_r50-d8_512x512_160k_ade20k.py │ │ ├── ann_r50-d8_512x512_80k_ade20k.py │ │ ├── ann_r50-d8_512x512_20k_voc12aug.py │ │ ├── ann_r50-d8_512x512_40k_voc12aug.py │ │ ├── ann_r50-d8_769x769_40k_cityscapes.py │ │ └── ann_r50-d8_769x769_80k_cityscapes.py │ ├── dnlnet │ │ ├── dnl_r101-d8_512x512_80k_ade20k.py │ │ ├── dnl_r101-d8_512x512_160k_ade20k.py │ │ ├── dnl_r101-d8_512x1024_40k_cityscapes.py │ │ ├── dnl_r101-d8_512x1024_80k_cityscapes.py │ │ ├── dnl_r101-d8_769x769_40k_cityscapes.py │ │ ├── dnl_r101-d8_769x769_80k_cityscapes.py │ │ ├── dnl_r50-d8_512x1024_40k_cityscapes.py │ │ ├── dnl_r50-d8_512x1024_80k_cityscapes.py │ │ ├── dnl_r50-d8_512x512_160k_ade20k.py │ │ ├── dnl_r50-d8_512x512_80k_ade20k.py │ │ ├── dnl_r50-d8_769x769_40k_cityscapes.py │ │ └── dnl_r50-d8_769x769_80k_cityscapes.py │ ├── fcn │ │ ├── fcn_r101-d8_512x512_160k_ade20k.py │ │ ├── fcn_r101-d8_512x512_20k_voc12aug.py │ │ ├── fcn_r101-d8_512x512_40k_voc12aug.py │ │ ├── fcn_r101-d8_512x512_80k_ade20k.py │ │ ├── fcn_r101-d8_769x769_40k_cityscapes.py │ │ ├── fcn_r101-d8_769x769_80k_cityscapes.py │ │ ├── fcn_r50b-d8_769x769_80k_cityscapes.py │ │ ├── fcn_r101-d8_512x1024_40k_cityscapes.py │ │ ├── fcn_r101-d8_512x1024_80k_cityscapes.py │ │ ├── fcn_r50b-d8_512x1024_80k_cityscapes.py │ │ ├── fcn_r101-d8_480x480_40k_pascal_context.py │ │ ├── fcn_r101-d8_480x480_80k_pascal_context.py │ │ ├── fcn_r101b-d8_769x769_80k_cityscapes.py │ │ ├── fcn_r101b-d8_512x1024_80k_cityscapes.py │ │ ├── fcn_r50-d8_512x1024_40k_cityscapes.py │ │ ├── fcn_r50-d8_512x1024_80k_cityscapes.py │ │ ├── fcn_r50-d8_512x512_160k_ade20k.py │ │ ├── fcn_r50-d8_512x512_80k_ade20k.py │ │ ├── fcn_r50-d8_512x512_20k_voc12aug.py │ │ ├── fcn_r50-d8_512x512_40k_voc12aug.py │ │ ├── fcn_r18-d8_769x769_80k_cityscapes.py │ │ ├── fcn_r18-d8_512x1024_80k_cityscapes.py │ │ ├── fcn_r18b-d8_512x1024_80k_cityscapes.py │ │ ├── fcn_r18b-d8_769x769_80k_cityscapes.py │ │ ├── fcn_r50-d8_769x769_40k_cityscapes.py │ │ ├── fcn_r50-d8_769x769_80k_cityscapes.py │ │ ├── fcn_r50-d8_480x480_40k_pascal_context.py │ │ └── fcn_r50-d8_480x480_80k_pascal_context.py │ ├── apcnet │ │ ├── apcnet_r101-d8_512x512_80k_ade20k.py │ │ ├── apcnet_r101-d8_512x512_160k_ade20k.py │ │ ├── apcnet_r101-d8_512x1024_40k_cityscapes.py │ │ ├── apcnet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── apcnet_r101-d8_769x769_40k_cityscapes.py │ │ ├── apcnet_r101-d8_769x769_80k_cityscapes.py │ │ ├── apcnet_r50-d8_512x1024_40k_cityscapes.py │ │ ├── apcnet_r50-d8_512x1024_80k_cityscapes.py │ │ ├── apcnet_r50-d8_512x512_160k_ade20k.py │ │ ├── apcnet_r50-d8_512x512_80k_ade20k.py │ │ ├── apcnet_r50-d8_769x769_40k_cityscapes.py │ │ └── apcnet_r50-d8_769x769_80k_cityscapes.py │ ├── ccnet │ │ ├── ccnet_r101-d8_512x512_160k_ade20k.py │ │ ├── ccnet_r101-d8_512x512_80k_ade20k.py │ │ ├── ccnet_r101-d8_512x512_20k_voc12aug.py │ │ ├── ccnet_r101-d8_512x512_40k_voc12aug.py │ │ ├── ccnet_r101-d8_769x769_40k_cityscapes.py │ │ ├── ccnet_r101-d8_769x769_80k_cityscapes.py │ │ ├── ccnet_r101-d8_512x1024_40k_cityscapes.py │ │ ├── ccnet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── ccnet_r50-d8_512x1024_40k_cityscapes.py │ │ ├── ccnet_r50-d8_512x1024_80k_cityscapes.py │ │ ├── ccnet_r50-d8_512x512_80k_ade20k.py │ │ ├── ccnet_r50-d8_512x512_160k_ade20k.py │ │ ├── ccnet_r50-d8_512x512_20k_voc12aug.py │ │ ├── ccnet_r50-d8_512x512_40k_voc12aug.py │ │ ├── ccnet_r50-d8_769x769_40k_cityscapes.py │ │ └── ccnet_r50-d8_769x769_80k_cityscapes.py │ ├── danet │ │ ├── danet_r101-d8_512x512_160k_ade20k.py │ │ ├── danet_r101-d8_512x512_80k_ade20k.py │ │ ├── danet_r101-d8_512x512_20k_voc12aug.py │ │ ├── danet_r101-d8_512x512_40k_voc12aug.py │ │ ├── danet_r101-d8_769x769_40k_cityscapes.py │ │ ├── danet_r101-d8_769x769_80k_cityscapes.py │ │ ├── danet_r101-d8_512x1024_40k_cityscapes.py │ │ ├── danet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── danet_r50-d8_512x1024_40k_cityscapes.py │ │ ├── danet_r50-d8_512x1024_80k_cityscapes.py │ │ ├── danet_r50-d8_512x512_80k_ade20k.py │ │ ├── danet_r50-d8_512x512_160k_ade20k.py │ │ ├── danet_r50-d8_512x512_20k_voc12aug.py │ │ ├── danet_r50-d8_512x512_40k_voc12aug.py │ │ ├── danet_r50-d8_769x769_40k_cityscapes.py │ │ └── danet_r50-d8_769x769_80k_cityscapes.py │ ├── dmnet │ │ ├── dmnet_r101-d8_512x512_160k_ade20k.py │ │ ├── dmnet_r101-d8_512x512_80k_ade20k.py │ │ ├── dmnet_r101-d8_769x769_40k_cityscapes.py │ │ ├── dmnet_r101-d8_769x769_80k_cityscapes.py │ │ ├── dmnet_r101-d8_512x1024_40k_cityscapes.py │ │ ├── dmnet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── dmnet_r50-d8_512x1024_40k_cityscapes.py │ │ ├── dmnet_r50-d8_512x1024_80k_cityscapes.py │ │ ├── dmnet_r50-d8_512x512_80k_ade20k.py │ │ ├── dmnet_r50-d8_512x512_160k_ade20k.py │ │ ├── dmnet_r50-d8_769x769_40k_cityscapes.py │ │ └── dmnet_r50-d8_769x769_80k_cityscapes.py │ ├── encnet │ │ ├── encnet_r101-d8_512x512_80k_ade20k.py │ │ ├── encnet_r101-d8_512x512_160k_ade20k.py │ │ ├── encnet_r101-d8_512x512_20k_voc12aug.py │ │ ├── encnet_r101-d8_512x512_40k_voc12aug.py │ │ ├── encnet_r101-d8_512x1024_40k_cityscapes.py │ │ ├── encnet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── encnet_r101-d8_769x769_40k_cityscapes.py │ │ ├── encnet_r101-d8_769x769_80k_cityscapes.py │ │ ├── encnet_r50-d8_512x1024_40k_cityscapes.py │ │ ├── encnet_r50-d8_512x1024_80k_cityscapes.py │ │ ├── encnet_r50-d8_512x512_160k_ade20k.py │ │ ├── encnet_r50-d8_512x512_80k_ade20k.py │ │ ├── encnet_r50-d8_512x512_20k_voc12aug.py │ │ ├── encnet_r50-d8_512x512_40k_voc12aug.py │ │ ├── encnet_r50s-d8_512x512_80k_ade20k.py │ │ ├── encnet_r50-d8_769x769_40k_cityscapes.py │ │ └── encnet_r50-d8_769x769_80k_cityscapes.py │ ├── gcnet │ │ ├── gcnet_r101-d8_512x512_160k_ade20k.py │ │ ├── gcnet_r101-d8_512x512_80k_ade20k.py │ │ ├── gcnet_r101-d8_512x512_20k_voc12aug.py │ │ ├── gcnet_r101-d8_512x512_40k_voc12aug.py │ │ ├── gcnet_r101-d8_769x769_40k_cityscapes.py │ │ ├── gcnet_r101-d8_769x769_80k_cityscapes.py │ │ ├── gcnet_r101-d8_512x1024_40k_cityscapes.py │ │ ├── gcnet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── gcnet_r50-d8_512x1024_40k_cityscapes.py │ │ ├── gcnet_r50-d8_512x1024_80k_cityscapes.py │ │ ├── gcnet_r50-d8_512x512_80k_ade20k.py │ │ ├── gcnet_r50-d8_512x512_160k_ade20k.py │ │ ├── gcnet_r50-d8_512x512_20k_voc12aug.py │ │ ├── gcnet_r50-d8_512x512_40k_voc12aug.py │ │ ├── gcnet_r50-d8_769x769_40k_cityscapes.py │ │ └── gcnet_r50-d8_769x769_80k_cityscapes.py │ ├── psanet │ │ ├── psanet_r101-d8_512x512_80k_ade20k.py │ │ ├── psanet_r101-d8_512x512_160k_ade20k.py │ │ ├── psanet_r101-d8_512x512_20k_voc12aug.py │ │ ├── psanet_r101-d8_512x512_40k_voc12aug.py │ │ ├── psanet_r101-d8_512x1024_40k_cityscapes.py │ │ ├── psanet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── psanet_r101-d8_769x769_40k_cityscapes.py │ │ ├── psanet_r101-d8_769x769_80k_cityscapes.py │ │ ├── psanet_r50-d8_512x1024_40k_cityscapes.py │ │ ├── psanet_r50-d8_512x1024_80k_cityscapes.py │ │ ├── psanet_r50-d8_512x512_20k_voc12aug.py │ │ ├── psanet_r50-d8_512x512_40k_voc12aug.py │ │ ├── psanet_r50-d8_512x512_80k_ade20k.py │ │ ├── psanet_r50-d8_512x512_160k_ade20k.py │ │ ├── psanet_r50-d8_769x769_40k_cityscapes.py │ │ └── psanet_r50-d8_769x769_80k_cityscapes.py │ ├── pspnet │ │ ├── pspnet_r101-d8_512x512_80k_ade20k.py │ │ ├── pspnet_r101-d8_512x512_160k_ade20k.py │ │ ├── pspnet_r101-d8_512x512_20k_voc12aug.py │ │ ├── pspnet_r101-d8_512x512_40k_voc12aug.py │ │ ├── pspnet_r101-d8_512x1024_40k_cityscapes.py │ │ ├── pspnet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── pspnet_r101-d8_769x769_40k_cityscapes.py │ │ ├── pspnet_r101-d8_769x769_80k_cityscapes.py │ │ ├── pspnet_r50b-d8_512x1024_80k_cityscapes.py │ │ ├── pspnet_r50b-d8_769x769_80k_cityscapes.py │ │ ├── pspnet_r101-d8_480x480_40k_pascal_context.py │ │ ├── pspnet_r101-d8_480x480_80k_pascal_context.py │ │ ├── pspnet_r101b-d8_512x1024_80k_cityscapes.py │ │ ├── pspnet_r101b-d8_769x769_80k_cityscapes.py │ │ ├── pspnet_r50-d8_512x1024_40k_cityscapes.py │ │ ├── pspnet_r50-d8_512x1024_80k_cityscapes.py │ │ ├── pspnet_r50-d8_512x512_160k_ade20k.py │ │ ├── pspnet_r50-d8_512x512_80k_ade20k.py │ │ ├── pspnet_r50-d8_512x512_20k_voc12aug.py │ │ ├── pspnet_r50-d8_512x512_40k_voc12aug.py │ │ ├── pspnet_r18-d8_512x1024_80k_cityscapes.py │ │ ├── pspnet_r18-d8_769x769_80k_cityscapes.py │ │ ├── pspnet_r18b-d8_512x1024_80k_cityscapes.py │ │ ├── pspnet_r18b-d8_769x769_80k_cityscapes.py │ │ ├── pspnet_r50-d8_769x769_40k_cityscapes.py │ │ ├── pspnet_r50-d8_769x769_80k_cityscapes.py │ │ ├── pspnet_r50-d8_480x480_40k_pascal_context.py │ │ └── pspnet_r50-d8_480x480_80k_pascal_context.py │ ├── upernet │ │ ├── upernet_r101_512x512_160k_ade20k.py │ │ ├── upernet_r101_512x512_80k_ade20k.py │ │ ├── upernet_r101_512x512_20k_voc12aug.py │ │ ├── upernet_r101_512x512_40k_voc12aug.py │ │ ├── upernet_r101_769x769_40k_cityscapes.py │ │ ├── upernet_r101_769x769_80k_cityscapes.py │ │ ├── upernet_r101_512x1024_40k_cityscapes.py │ │ ├── upernet_r101_512x1024_80k_cityscapes.py │ │ ├── upernet_r50_512x1024_40k_cityscapes.py │ │ ├── upernet_r50_512x1024_80k_cityscapes.py │ │ ├── upernet_r50_512x512_80k_ade20k.py │ │ ├── upernet_r50_512x512_160k_ade20k.py │ │ ├── upernet_r50_512x512_20k_voc12aug.py │ │ ├── upernet_r50_512x512_40k_voc12aug.py │ │ ├── upernet_r50_769x769_40k_cityscapes.py │ │ └── upernet_r50_769x769_80k_cityscapes.py │ ├── deeplabv3 │ │ ├── deeplabv3_r101-d8_512x512_80k_ade20k.py │ │ ├── deeplabv3_r101-d8_512x512_160k_ade20k.py │ │ ├── deeplabv3_r101-d8_512x512_20k_voc12aug.py │ │ ├── deeplabv3_r101-d8_512x512_40k_voc12aug.py │ │ ├── deeplabv3_r101-d8_512x1024_40k_cityscapes.py │ │ ├── deeplabv3_r101-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_r101-d8_769x769_40k_cityscapes.py │ │ ├── deeplabv3_r101-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3_r50b-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_r50b-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3_r101-d8_480x480_40k_pascal_context.py │ │ ├── deeplabv3_r101-d8_480x480_80k_pascal_context.py │ │ ├── deeplabv3_r101b-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_r101b-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3_r50-d8_512x1024_40k_cityscapes.py │ │ ├── deeplabv3_r50-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_r50-d8_512x512_160k_ade20k.py │ │ ├── deeplabv3_r50-d8_512x512_80k_ade20k.py │ │ ├── deeplabv3_r50-d8_512x512_20k_voc12aug.py │ │ ├── deeplabv3_r50-d8_512x512_40k_voc12aug.py │ │ ├── deeplabv3_r18-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_r18-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3_r18b-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3_r18b-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_r50-d8_769x769_40k_cityscapes.py │ │ ├── deeplabv3_r50-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3_r101-d16-mg124_512x1024_40k_cityscapes.py │ │ ├── deeplabv3_r101-d16-mg124_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_r50-d8_480x480_40k_pascal_context.py │ │ └── deeplabv3_r50-d8_480x480_80k_pascal_context.py │ ├── emanet │ │ ├── emanet_r101-d8_512x1024_80k_cityscapes.py │ │ ├── emanet_r101-d8_769x769_80k_cityscapes.py │ │ ├── emanet_r50-d8_512x1024_80k_cityscapes.py │ │ └── emanet_r50-d8_769x769_80k_cityscapes.py │ ├── nonlocal_net │ │ ├── nonlocal_r101-d8_512x512_80k_ade20k.py │ │ ├── nonlocal_r101-d8_512x512_160k_ade20k.py │ │ ├── nonlocal_r101-d8_512x512_20k_voc12aug.py │ │ ├── nonlocal_r101-d8_512x512_40k_voc12aug.py │ │ ├── nonlocal_r101-d8_512x1024_40k_cityscapes.py │ │ ├── nonlocal_r101-d8_512x1024_80k_cityscapes.py │ │ ├── nonlocal_r101-d8_769x769_40k_cityscapes.py │ │ ├── nonlocal_r101-d8_769x769_80k_cityscapes.py │ │ ├── nonlocal_r50-d8_512x1024_40k_cityscapes.py │ │ ├── nonlocal_r50-d8_512x1024_80k_cityscapes.py │ │ ├── nonlocal_r50-d8_512x512_160k_ade20k.py │ │ ├── nonlocal_r50-d8_512x512_80k_ade20k.py │ │ ├── nonlocal_r50-d8_512x512_20k_voc12aug.py │ │ ├── nonlocal_r50-d8_512x512_40k_voc12aug.py │ │ ├── nonlocal_r50-d8_769x769_40k_cityscapes.py │ │ └── nonlocal_r50-d8_769x769_80k_cityscapes.py │ ├── point_rend │ │ ├── pointrend_r101_512x512_160k_ade20k.py │ │ ├── pointrend_r101_512x1024_80k_cityscapes.py │ │ ├── pointrend_r50_512x1024_80k_cityscapes.py │ │ └── pointrend_r50_512x512_160k_ade20k.py │ ├── fp16 │ │ ├── fcn_r101-d8_512x1024_80k_fp16_cityscapes.py │ │ ├── pspnet_r101-d8_512x1024_80k_fp16_cityscapes.py │ │ ├── deeplabv3_r101-d8_512x1024_80k_fp16_cityscapes.py │ │ └── deeplabv3plus_r101-d8_512x1024_80k_fp16_cityscapes.py │ ├── deeplabv3plus │ │ ├── deeplabv3plus_r101-d8_512x512_160k_ade20k.py │ │ ├── deeplabv3plus_r101-d8_512x512_20k_voc12aug.py │ │ ├── deeplabv3plus_r101-d8_512x512_40k_voc12aug.py │ │ ├── deeplabv3plus_r101-d8_512x512_80k_ade20k.py │ │ ├── deeplabv3plus_r101-d8_769x769_40k_cityscapes.py │ │ ├── deeplabv3plus_r101-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3plus_r50b-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3plus_r101-d8_512x1024_40k_cityscapes.py │ │ ├── deeplabv3plus_r101-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_r50b-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_r101-d8_480x480_40k_pascal_context.py │ │ ├── deeplabv3plus_r101-d8_480x480_80k_pascal_context.py │ │ ├── deeplabv3plus_r101b-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3plus_r101b-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_r50-d8_512x1024_40k_cityscapes.py │ │ ├── deeplabv3plus_r50-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_r50-d8_512x512_160k_ade20k.py │ │ ├── deeplabv3plus_r50-d8_512x512_80k_ade20k.py │ │ ├── deeplabv3plus_r50-d8_512x512_20k_voc12aug.py │ │ ├── deeplabv3plus_r50-d8_512x512_40k_voc12aug.py │ │ ├── deeplabv3plus_r18-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3plus_r18-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_r18b-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_r18b-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3plus_r50-d8_769x769_40k_cityscapes.py │ │ ├── deeplabv3plus_r50-d8_769x769_80k_cityscapes.py │ │ ├── deeplabv3plus_r101-d16-mg124_512x1024_40k_cityscapes.py │ │ ├── deeplabv3plus_r101-d16-mg124_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_r50-d8_480x480_40k_pascal_context.py │ │ └── deeplabv3plus_r50-d8_480x480_80k_pascal_context.py │ ├── hrnet │ │ ├── fcn_hr18_512x1024_160k_cityscapes.py │ │ ├── fcn_hr18_512x1024_40k_cityscapes.py │ │ ├── fcn_hr18_512x1024_80k_cityscapes.py │ │ ├── fcn_hr18_512x512_80k_ade20k.py │ │ ├── fcn_hr18_512x512_160k_ade20k.py │ │ ├── fcn_hr18_512x512_20k_voc12aug.py │ │ ├── fcn_hr18_512x512_40k_voc12aug.py │ │ ├── fcn_hr18_480x480_40k_pascal_context.py │ │ ├── fcn_hr18_480x480_80k_pascal_context.py │ │ ├── fcn_hr18s_512x512_80k_ade20k.py │ │ ├── fcn_hr18s_512x512_160k_ade20k.py │ │ ├── fcn_hr18s_512x512_20k_voc12aug.py │ │ ├── fcn_hr18s_512x512_40k_voc12aug.py │ │ ├── fcn_hr18s_512x1024_40k_cityscapes.py │ │ ├── fcn_hr18s_512x1024_80k_cityscapes.py │ │ ├── fcn_hr18s_512x1024_160k_cityscapes.py │ │ ├── fcn_hr18s_480x480_40k_pascal_context.py │ │ ├── fcn_hr18s_480x480_80k_pascal_context.py │ │ ├── fcn_hr48_512x512_80k_ade20k.py │ │ ├── fcn_hr48_512x512_160k_ade20k.py │ │ ├── fcn_hr48_512x512_20k_voc12aug.py │ │ ├── fcn_hr48_512x512_40k_voc12aug.py │ │ ├── fcn_hr48_512x1024_40k_cityscapes.py │ │ ├── fcn_hr48_512x1024_80k_cityscapes.py │ │ ├── fcn_hr48_512x1024_160k_cityscapes.py │ │ ├── fcn_hr48_480x480_40k_pascal_context.py │ │ └── fcn_hr48_480x480_80k_pascal_context.py │ ├── ocrnet │ │ ├── ocrnet_hr18_512x1024_160k_cityscapes.py │ │ ├── ocrnet_hr18_512x1024_40k_cityscapes.py │ │ ├── ocrnet_hr18_512x1024_80k_cityscapes.py │ │ ├── ocrnet_r101-d8_512x1024_40k_b8_cityscapes.py │ │ ├── ocrnet_r101-d8_512x1024_40k_b16_cityscapes.py │ │ ├── ocrnet_r101-d8_512x1024_80k_b16_cityscapes.py │ │ ├── ocrnet_hr18s_512x512_160k_ade20k.py │ │ ├── ocrnet_hr18s_512x512_80k_ade20k.py │ │ ├── ocrnet_hr18s_512x512_20k_voc12aug.py │ │ ├── ocrnet_hr18s_512x512_40k_voc12aug.py │ │ ├── ocrnet_hr18s_512x1024_160k_cityscapes.py │ │ ├── ocrnet_hr18s_512x1024_40k_cityscapes.py │ │ └── ocrnet_hr18s_512x1024_80k_cityscapes.py │ ├── unet │ │ ├── fcn_unet_s5-d16_256x256_40k_hrf.py │ │ ├── fcn_unet_s5-d16_64x64_40k_drive.py │ │ ├── fcn_unet_s5-d16_128x128_40k_stare.py │ │ ├── pspnet_unet_s5-d16_64x64_40k_drive.py │ │ ├── deeplabv3_unet_s5-d16_64x64_40k_drive.py │ │ ├── fcn_unet_s5-d16_128x128_40k_chase_db1.py │ │ ├── pspnet_unet_s5-d16_128x128_40k_stare.py │ │ ├── pspnet_unet_s5-d16_256x256_40k_hrf.py │ │ ├── deeplabv3_unet_s5-d16_128x128_40k_stare.py │ │ ├── deeplabv3_unet_s5-d16_256x256_40k_hrf.py │ │ ├── pspnet_unet_s5-d16_128x128_40k_chase_db1.py │ │ └── deeplabv3_unet_s5-d16_128x128_40k_chase_db1.py │ ├── _base_ │ │ ├── datasets │ │ │ └── pascal_voc12_aug.py │ │ ├── default_runtime.py │ │ ├── schedules │ │ │ ├── schedule_20k.py │ │ │ ├── schedule_40k.py │ │ │ ├── schedule_80k.py │ │ │ └── schedule_160k.py │ │ └── models │ │ │ ├── lraspp_m-v3-d8.py │ │ │ ├── fpn_r50.py │ │ │ └── cgnet.py │ ├── resnest │ │ ├── fcn_s101-d8_512x512_160k_ade20k.py │ │ ├── fcn_s101-d8_512x1024_80k_cityscapes.py │ │ ├── pspnet_s101-d8_512x512_160k_ade20k.py │ │ ├── pspnet_s101-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_s101-d8_512x512_160k_ade20k.py │ │ ├── deeplabv3_s101-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_s101-d8_512x512_160k_ade20k.py │ │ └── deeplabv3plus_s101-d8_512x1024_80k_cityscapes.py │ ├── mobilenet_v3 │ │ ├── lraspp_m-v3-d8_scratch_512x1024_320k_cityscapes.py │ │ ├── lraspp_m-v3-d8_512x1024_320k_cityscapes.py │ │ ├── lraspp_m-v3s-d8_scratch_512x1024_320k_cityscapes.py │ │ └── lraspp_m-v3s-d8_512x1024_320k_cityscapes.py │ ├── fastscnn │ │ └── fast_scnn_4x8_80k_lr0.12_cityscapes.py │ └── mobilenet_v2 │ │ ├── fcn_m-v2-d8_512x512_160k_ade20k.py │ │ ├── fcn_m-v2-d8_512x1024_80k_cityscapes.py │ │ ├── pspnet_m-v2-d8_512x512_160k_ade20k.py │ │ ├── deeplabv3_m-v2-d8_512x512_160k_ade20k.py │ │ ├── pspnet_m-v2-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3_m-v2-d8_512x1024_80k_cityscapes.py │ │ ├── deeplabv3plus_m-v2-d8_512x512_160k_ade20k.py │ │ └── deeplabv3plus_m-v2-d8_512x1024_80k_cityscapes.py ├── docs │ ├── tutorials │ │ └── index.rst │ ├── Makefile │ ├── make.bat │ ├── index.rst │ └── api.rst ├── tools │ ├── dist_train.sh │ ├── dist_test.sh │ ├── slurm_train.sh │ ├── slurm_test.sh │ ├── print_config.py │ └── publish_model.py ├── pytest.ini ├── local_configs │ └── _base_ │ │ ├── datasets │ │ └── pascal_voc12_aug.py │ │ ├── default_runtime.py │ │ ├── schedules │ │ ├── schedule_160k_adamw.py │ │ ├── schedule_40k_adamw.py │ │ ├── schedule_80k_adamw.py │ │ ├── schedule_20k.py │ │ ├── schedule_40k.py │ │ ├── schedule_80k.py │ │ └── schedule_160k.py │ │ └── models │ │ ├── segformer.py │ │ ├── lraspp_m-v3-d8.py │ │ └── fpn_r50.py ├── tests │ ├── test_utils │ │ └── test_make_divisible.py │ ├── test_models │ │ └── test_necks.py │ └── test_inference.py ├── setup.cfg └── docker │ └── Dockerfile ├── MANIFEST.in ├── requirements.txt ├── play.py ├── bg_to_rgb.py └── rgb_to_bg.py /plots/._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/MSD/._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /models/ADE20K/._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /models/MSD_Lungs/._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /models/MSD_Spleen/._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pretrained/ImageNet-1K/._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /SegFormer/demo/__init__.py: -------------------------------------------------------------------------------- 1 | from class_names import * 2 | -------------------------------------------------------------------------------- /SegFormer/requirements/optional.txt: -------------------------------------------------------------------------------- 1 | cityscapesscripts 2 | -------------------------------------------------------------------------------- /SegFormer/requirements/readthedocs.txt: -------------------------------------------------------------------------------- 1 | mmcv 2 | torch 3 | torchvision 4 | -------------------------------------------------------------------------------- /SegFormer/requirements/runtime.txt: -------------------------------------------------------------------------------- 1 | matplotlib 2 | numpy 3 | terminaltables 4 | -------------------------------------------------------------------------------- /SegFormer/mmseg/models/necks/__init__.py: -------------------------------------------------------------------------------- 1 | from .fpn import FPN 2 | 3 | __all__ = ['FPN'] 4 | -------------------------------------------------------------------------------- /SegFormer/mmseg/core/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .misc import add_prefix 2 | 3 | __all__ = ['add_prefix'] 4 | -------------------------------------------------------------------------------- /SegFormer/requirements/docs.txt: -------------------------------------------------------------------------------- 1 | recommonmark 2 | sphinx 3 | sphinx_markdown_tables 4 | sphinx_rtd_theme 5 | -------------------------------------------------------------------------------- /SegFormer/demo/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drkostas/3D-Semantic-Segmentation/HEAD/SegFormer/demo/demo.png -------------------------------------------------------------------------------- /SegFormer/requirements.txt: -------------------------------------------------------------------------------- 1 | -r requirements/optional.txt 2 | -r requirements/runtime.txt 3 | -r requirements/tests.txt 4 | -------------------------------------------------------------------------------- /SegFormer/resources/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drkostas/3D-Semantic-Segmentation/HEAD/SegFormer/resources/image.png -------------------------------------------------------------------------------- /SegFormer/requirements/tests.txt: -------------------------------------------------------------------------------- 1 | codecov 2 | flake8 3 | interrogate 4 | isort==4.3.21 5 | pytest 6 | xdoctest>=0.10.0 7 | yapf 8 | -------------------------------------------------------------------------------- /SegFormer/resources/seg_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drkostas/3D-Semantic-Segmentation/HEAD/SegFormer/resources/seg_demo.gif -------------------------------------------------------------------------------- /SegFormer/resources/mmseg-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drkostas/3D-Semantic-Segmentation/HEAD/SegFormer/resources/mmseg-logo.png -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include settings.ini 2 | include LICENSE 3 | include CONTRIBUTING.md 4 | include README.md 5 | recursive-exclude * __pycache__ 6 | -------------------------------------------------------------------------------- /SegFormer/mmseg/ops/__init__.py: -------------------------------------------------------------------------------- 1 | from .encoding import Encoding 2 | from .wrappers import Upsample, resize 3 | 4 | __all__ = ['Upsample', 'resize', 'Encoding'] 5 | -------------------------------------------------------------------------------- /SegFormer/mmseg/core/__init__.py: -------------------------------------------------------------------------------- 1 | from .evaluation import * # noqa: F401, F403 2 | from .seg import * # noqa: F401, F403 3 | from .utils import * # noqa: F401, F403 4 | -------------------------------------------------------------------------------- /SegFormer/configs/sem_fpn/fpn_r101_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fpn_r50_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './ann_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './ann_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './ann_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './ann_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './dnl_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/mmseg/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .collect_env import collect_env 2 | from .logger import get_root_logger, print_log 3 | 4 | __all__ = ['get_root_logger', 'collect_env', 'print_log'] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ann_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ann_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './apcnet_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './ccnet_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './ccnet_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './danet_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './danet_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './dmnet_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './dmnet_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './dnl_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './encnet_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='torchvision://resnet50', backbone=dict(type='ResNet')) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './gcnet_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './gcnet_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './psanet_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r101_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './upernet_r50_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r101_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './upernet_r50_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ann_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ann_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './apcnet_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './ccnet_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './ccnet_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ccnet_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ccnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './danet_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './danet_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './danet_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './danet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './dmnet_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './dmnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './dnl_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './dnl_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './dnl_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './dnl_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './encnet_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './encnet_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './encnet_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='torchvision://resnet50', backbone=dict(type='ResNet')) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './gcnet_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './gcnet_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './gcnet_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './gcnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './psanet_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './psanet_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './psanet_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r101_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './upernet_r50_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r101_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './upernet_r50_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r101_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './upernet_r50_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r101_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './upernet_r50_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './apcnet_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './apcnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './apcnet_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './apcnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ccnet_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ccnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './danet_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './danet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './dmnet_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './dmnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/emanet/emanet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './emanet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/emanet/emanet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './emanet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './encnet_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './encnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './encnet_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './encnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_480x480_40k_pascal_context.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101-d8_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_480x480_80k_pascal_context.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './gcnet_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './gcnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './nonlocal_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/point_rend/pointrend_r101_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './pointrend_r50_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './psanet_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './psanet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './psanet_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './psanet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='torchvision://resnet50', backbone=dict(type='ResNet')) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='torchvision://resnet50', backbone=dict(type='ResNet')) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r101_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './upernet_r50_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r101_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './upernet_r50_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './nonlocal_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './nonlocal_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './nonlocal_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/point_rend/pointrend_r101_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pointrend_r50_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/mmseg/core/seg/sampler/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_pixel_sampler import BasePixelSampler 2 | from .ohem_pixel_sampler import OHEMPixelSampler 3 | 4 | __all__ = ['BasePixelSampler', 'OHEMPixelSampler'] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='torchvision://resnet50', backbone=dict(type='ResNet')) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='torchvision://resnet50', backbone=dict(type='ResNet')) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fp16/fcn_r101-d8_512x1024_80k_fp16_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../fcn/fcn_r101-d8_512x1024_80k_cityscapes.py' 2 | # fp16 settings 3 | optimizer_config = dict(type='Fp16OptimizerHook', loss_scale=512.) 4 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './nonlocal_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './nonlocal_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './nonlocal_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './nonlocal_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_480x480_40k_pascal_context.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101-d8_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_480x480_80k_pascal_context.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_480x480_40k_pascal_context.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d8_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_480x480_80k_pascal_context.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x512_160k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x512_20k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x512_40k_voc12aug.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/mmseg/models/segmentors/__init__.py: -------------------------------------------------------------------------------- 1 | from .cascade_encoder_decoder import CascadeEncoderDecoder 2 | from .encoder_decoder import EncoderDecoder 3 | 4 | __all__ = ['EncoderDecoder', 'CascadeEncoderDecoder'] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_769x769_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict(pretrained='torchvision://resnet50', backbone=dict(type='ResNet')) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet101', 4 | backbone=dict(type='ResNet', depth=101)) 5 | -------------------------------------------------------------------------------- /SegFormer/configs/fp16/pspnet_r101-d8_512x1024_80k_fp16_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../pspnet/pspnet_r101-d8_512x1024_80k_cityscapes.py' 2 | # fp16 settings 3 | optimizer_config = dict(type='Fp16OptimizerHook', loss_scale=512.) 4 | -------------------------------------------------------------------------------- /SegFormer/mmseg/core/seg/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_pixel_sampler 2 | from .sampler import BasePixelSampler, OHEMPixelSampler 3 | 4 | __all__ = ['build_pixel_sampler', 'BasePixelSampler', 'OHEMPixelSampler'] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict(pretrained='torchvision://resnet50', backbone=dict(type='ResNet')) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r101b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet101', 4 | backbone=dict(type='ResNet', depth=101)) 5 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ann_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ann_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_480x480_40k_pascal_context.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d8_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_480x480_80k_pascal_context.py' 2 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 3 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/fp16/deeplabv3_r101-d8_512x1024_80k_fp16_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3/deeplabv3_r101-d8_512x1024_80k_cityscapes.py' 2 | # fp16 settings 3 | optimizer_config = dict(type='Fp16OptimizerHook', loss_scale=512.) 4 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_512x1024_160k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet101', 4 | backbone=dict(type='ResNet', depth=101)) 5 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r101b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet101', 4 | backbone=dict(type='ResNet', depth=101)) 5 | -------------------------------------------------------------------------------- /SegFormer/docs/tutorials/index.rst: -------------------------------------------------------------------------------- 1 | .. toctree:: 2 | :maxdepth: 2 3 | 4 | config.md 5 | customize_datasets.md 6 | data_pipeline.md 7 | customize_models.md 8 | training_tricks.md 9 | customize_runtime.md 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ccnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ccnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/danet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/danet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dmnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dmnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dnl_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dnl_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/gcnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/gcnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18_512x1024_160k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ocrnet_hr18.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ocrnet_hr18.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ocrnet_hr18.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r50_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/upernet_r50.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r50_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/upernet_r50.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/apcnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/apcnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet101', 4 | backbone=dict(type='ResNet', depth=101)) 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet101', 4 | backbone=dict(type='ResNet', depth=101)) 5 | -------------------------------------------------------------------------------- /SegFormer/configs/emanet/emanet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/emanet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/fp16/deeplabv3plus_r101-d8_512x1024_80k_fp16_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3plus/deeplabv3plus_r101-d8_512x1024_80k_cityscapes.py' 2 | # fp16 settings 3 | optimizer_config = dict(type='Fp16OptimizerHook', loss_scale=512.) 4 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/psanet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/psanet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet101', 4 | backbone=dict(type='ResNet', depth=101)) 5 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/nonlocal_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/nonlocal_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet101', 4 | backbone=dict(type='ResNet', depth=101)) 5 | -------------------------------------------------------------------------------- /SegFormer/configs/sem_fpn/fpn_r18_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fpn_r50_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnet18_v1c', 3 | backbone=dict(depth=18), 4 | neck=dict(in_channels=[64, 128, 256, 512])) 5 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', 3 | '../_base_/datasets/cityscapes.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', 3 | '../_base_/datasets/cityscapes.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict(decode_head=dict(num_classes=150)) 6 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict(decode_head=dict(num_classes=150)) 6 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/pascal_voc12_aug.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_20k.py' 4 | ] 5 | model = dict(decode_head=dict(num_classes=21)) 6 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/pascal_voc12_aug.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(decode_head=dict(num_classes=21)) 6 | -------------------------------------------------------------------------------- /SegFormer/configs/point_rend/pointrend_r50_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pointrend_r50.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | lr_config = dict(warmup='linear', warmup_iters=200) 6 | -------------------------------------------------------------------------------- /SegFormer/mmseg/core/seg/builder.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import Registry, build_from_cfg 2 | 3 | PIXEL_SAMPLERS = Registry('pixel sampler') 4 | 5 | 6 | def build_pixel_sampler(cfg, **default_args): 7 | """Build pixel sampler for segmentation map.""" 8 | return build_from_cfg(cfg, PIXEL_SAMPLERS, default_args) 9 | -------------------------------------------------------------------------------- /SegFormer/tools/dist_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG=$1 4 | GPUS=$2 5 | PORT=${PORT:-29500} 6 | 7 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 8 | python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \ 9 | $(dirname "$0")/train.py $CONFIG --launcher pytorch ${@:3} 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ann_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ann_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | termcolor-logger>=1.0.3 2 | yaml_config_wrapper>=1.0.4 3 | matplotlib 4 | numpy 5 | tensorboard 6 | tqdm 7 | pandas 8 | sklearn 9 | nibabel 10 | monai==0.8.0 11 | # torch==1.7.1 12 | # torchvision==0.8.2 13 | scikit-image 14 | attr 15 | ipython 16 | timm==0.3.2 17 | opencv-python==4.5.1.48 18 | imageio -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ccnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/danet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dmnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dnl_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dnl_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/gcnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_r101-d8_512x1024_40k_b8_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ocrnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 6 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r50_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/upernet_r50.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ann_r50-d8.py', '../_base_/datasets/pascal_voc12_aug.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_20k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ann_r50-d8.py', '../_base_/datasets/pascal_voc12_aug.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/apcnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/apcnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ccnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/danet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dmnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', '../_base_/datasets/pascal_voc12_aug.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_20k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', '../_base_/datasets/pascal_voc12_aug.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/gcnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/sem_fpn/fpn_x101324d_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fpn_r50_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnext101_32x4d', 3 | backbone=dict( 4 | type='ResNeXt', 5 | depth=101, 6 | groups=32, 7 | base_width=4)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/sem_fpn/fpn_x101644d_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fpn_r50_512x512_80k_ade20k.py' 2 | model = dict(pretrained='open-mmlab://resnext101_64x4d', 3 | backbone=dict( 4 | type='ResNeXt', 5 | depth=101, 6 | groups=64, 7 | base_width=4)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r50_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/upernet_r50.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/fcn_unet_s5-d16_256x256_40k_hrf.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_unet_s5-d16.py', '../_base_/datasets/hrf.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(256, 256), stride=(170, 170))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/fcn_unet_s5-d16_64x64_40k_drive.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_unet_s5-d16.py', '../_base_/datasets/drive.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(64, 64), stride=(42, 42))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | addopts = --xdoctest --xdoctest-style=auto 3 | norecursedirs = .git ignore build __pycache__ data docker docs .eggs 4 | 5 | filterwarnings= default 6 | ignore:.*No cfgstr given in Cacher constructor or call.*:Warning 7 | ignore:.*Define the __nice__ method for.*:Warning 8 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/nonlocal_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/nonlocal_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/fcn_unet_s5-d16_128x128_40k_stare.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_unet_s5-d16.py', '../_base_/datasets/stare.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(128, 128), stride=(85, 85))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/pspnet_unet_s5-d16_64x64_40k_drive.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_unet_s5-d16.py', '../_base_/datasets/drive.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(64, 64), stride=(42, 42))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/mmseg/core/evaluation/__init__.py: -------------------------------------------------------------------------------- 1 | from .class_names import get_classes, get_palette 2 | from .eval_hooks import DistEvalHook, EvalHook 3 | from .metrics import eval_metrics, mean_dice, mean_iou 4 | 5 | __all__ = [ 6 | 'EvalHook', 'DistEvalHook', 'mean_dice', 'mean_iou', 'eval_metrics', 7 | 'get_classes', 'get_palette' 8 | ] 9 | -------------------------------------------------------------------------------- /SegFormer/tools/dist_test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG=$1 4 | CHECKPOINT=$2 5 | GPUS=$3 6 | PORT=${PORT:-29500} 7 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 8 | python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \ 9 | $(dirname "$0")/test.py $CONFIG $CHECKPOINT --launcher pytorch ${@:4} 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ccnet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ccnet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/danet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/danet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/gcnet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/gcnet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/psanet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/psanet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/deeplabv3_unet_s5-d16_64x64_40k_drive.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_unet_s5-d16.py', '../_base_/datasets/drive.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(64, 64), stride=(42, 42))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/fcn_unet_s5-d16_128x128_40k_chase_db1.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_unet_s5-d16.py', '../_base_/datasets/chase_db1.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(128, 128), stride=(85, 85))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/pspnet_unet_s5-d16_128x128_40k_stare.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_unet_s5-d16.py', '../_base_/datasets/stare.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(128, 128), stride=(85, 85))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/pspnet_unet_s5-d16_256x256_40k_hrf.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_unet_s5-d16.py', '../_base_/datasets/hrf.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(256, 256), stride=(170, 170))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r50_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/upernet_r50.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r50_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/upernet_r50.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=150), auxiliary_head=dict(num_classes=150)) 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/deeplabv3_unet_s5-d16_128x128_40k_stare.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_unet_s5-d16.py', '../_base_/datasets/stare.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(128, 128), stride=(85, 85))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/deeplabv3_unet_s5-d16_256x256_40k_hrf.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_unet_s5-d16.py', '../_base_/datasets/hrf.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(test_cfg=dict(crop_size=(256, 256), stride=(170, 170))) 6 | evaluation = dict(metric='mDice') 7 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/datasets/pascal_voc12_aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './pascal_voc12.py' 2 | # dataset settings 3 | data = dict( 4 | train=dict( 5 | ann_dir=['SegmentationClass', 'SegmentationClassAug'], 6 | split=[ 7 | 'ImageSets/Segmentation/train.txt', 8 | 'ImageSets/Segmentation/aug.txt' 9 | ])) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/nonlocal_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/nonlocal_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r50-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/psanet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(mask_size=(66, 66), num_classes=150), 7 | auxiliary_head=dict(num_classes=150)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/resnest/fcn_s101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = '../fcn/fcn_r101-d8_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnest101', 4 | backbone=dict( 5 | type='ResNeSt', 6 | stem_channels=128, 7 | radix=2, 8 | reduction_factor=4, 9 | avg_down_stride=True)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r50-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/psanet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(mask_size=(66, 66), num_classes=150), 7 | auxiliary_head=dict(num_classes=150)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/pspnet_unet_s5-d16_128x128_40k_chase_db1.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_unet_s5-d16.py', 3 | '../_base_/datasets/chase_db1.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict(test_cfg=dict(crop_size=(128, 128), stride=(85, 85))) 7 | evaluation = dict(metric='mDice') 8 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/datasets/pascal_voc12_aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './pascal_voc12.py' 2 | # dataset settings 3 | data = dict( 4 | train=dict( 5 | ann_dir=['SegmentationClass', 'SegmentationClassAug'], 6 | split=[ 7 | 'ImageSets/Segmentation/train.txt', 8 | 'ImageSets/Segmentation/aug.txt' 9 | ])) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r18-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet18_v1c', 4 | backbone=dict(depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/resnest/fcn_s101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../fcn/fcn_r101-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnest101', 4 | backbone=dict( 5 | type='ResNeSt', 6 | stem_channels=128, 7 | radix=2, 8 | reduction_factor=4, 9 | avg_down_stride=True)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/resnest/pspnet_s101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = '../pspnet/pspnet_r101-d8_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnest101', 4 | backbone=dict( 5 | type='ResNeSt', 6 | stem_channels=128, 7 | radix=2, 8 | reduction_factor=4, 9 | avg_down_stride=True)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/unet/deeplabv3_unet_s5-d16_128x128_40k_chase_db1.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_unet_s5-d16.py', 3 | '../_base_/datasets/chase_db1.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict(test_cfg=dict(crop_size=(128, 128), stride=(85, 85))) 7 | evaluation = dict(metric='mDice') 8 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_20k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', 3 | '../_base_/datasets/pascal_voc12_aug.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=21), auxiliary_head=dict(num_classes=21)) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r18-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet18_v1c', 4 | backbone=dict(depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/resnest/pspnet_s101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../pspnet/pspnet_r101-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnest101', 4 | backbone=dict( 5 | type='ResNeSt', 6 | stem_channels=128, 7 | radix=2, 8 | reduction_factor=4, 9 | avg_down_stride=True)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r18-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet18_v1c', 4 | backbone=dict(depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r18-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet18_v1c', 4 | backbone=dict(depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/resnest/deeplabv3_s101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3/deeplabv3_r101-d8_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnest101', 4 | backbone=dict( 5 | type='ResNeSt', 6 | stem_channels=128, 7 | radix=2, 8 | reduction_factor=4, 9 | avg_down_stride=True)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50s-d8_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | backbone=dict(stem_channels=128), 7 | decode_head=dict(num_classes=150), 8 | auxiliary_head=dict(num_classes=150)) 9 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r18b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet18', 4 | backbone=dict(type='ResNet', depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r18b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet18', 4 | backbone=dict(type='ResNet', depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/resnest/deeplabv3_s101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3/deeplabv3_r101-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnest101', 4 | backbone=dict( 5 | type='ResNeSt', 6 | stem_channels=128, 7 | radix=2, 8 | reduction_factor=4, 9 | avg_down_stride=True)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r18-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet18_v1c', 4 | backbone=dict(depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r18-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet18_v1c', 4 | backbone=dict(depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/resnest/deeplabv3plus_s101-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3plus/deeplabv3plus_r101-d8_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnest101', 4 | backbone=dict( 5 | type='ResNeSt', 6 | stem_channels=128, 7 | radix=2, 8 | reduction_factor=4, 9 | avg_down_stride=True)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_r101-d8_512x1024_40k_b16_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ocrnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 6 | optimizer = dict(lr=0.02) 7 | lr_config = dict(min_lr=2e-4) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_r101-d8_512x1024_80k_b16_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ocrnet_r50-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict(pretrained='open-mmlab://resnet101_v1c', backbone=dict(depth=101)) 6 | optimizer = dict(lr=0.02) 7 | lr_config = dict(min_lr=2e-4) 8 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r18b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet18', 4 | backbone=dict(type='ResNet', depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r18b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './pspnet_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet18', 4 | backbone=dict(type='ResNet', depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r18b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet18', 4 | backbone=dict(type='ResNet', depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/resnest/deeplabv3plus_s101-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3plus/deeplabv3plus_r101-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnest101', 4 | backbone=dict( 5 | type='ResNeSt', 6 | stem_channels=128, 7 | radix=2, 8 | reduction_factor=4, 9 | avg_down_stride=True)) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r18b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet18', 4 | backbone=dict(type='ResNet', depth=18), 5 | decode_head=dict( 6 | in_channels=512, 7 | channels=128, 8 | ), 9 | auxiliary_head=dict(in_channels=256, channels=64)) 10 | -------------------------------------------------------------------------------- /SegFormer/mmseg/core/seg/sampler/base_pixel_sampler.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | 4 | class BasePixelSampler(metaclass=ABCMeta): 5 | """Base class of pixel sampler.""" 6 | 7 | def __init__(self, **kwargs): 8 | pass 9 | 10 | @abstractmethod 11 | def sample(self, seg_logit, seg_label): 12 | """Placeholder for sample function.""" 13 | pass 14 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v3/lraspp_m-v3-d8_scratch_512x1024_320k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/lraspp_m-v3-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | 6 | # Re-config the data sampler. 7 | data = dict(samples_per_gpu=4, workers_per_gpu=4) 8 | 9 | runner = dict(type='IterBasedRunner', max_iters=320000) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/default_runtime.py: -------------------------------------------------------------------------------- 1 | # yapf:disable 2 | log_config = dict( 3 | interval=50, 4 | hooks=[ 5 | dict(type='TextLoggerHook', by_epoch=False), 6 | # dict(type='TensorboardLoggerHook') 7 | ]) 8 | # yapf:enable 9 | dist_params = dict(backend='nccl') 10 | log_level = 'INFO' 11 | load_from = None 12 | resume_from = None 13 | workflow = [('train', 1)] 14 | cudnn_benchmark = True 15 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/default_runtime.py: -------------------------------------------------------------------------------- 1 | # yapf:disable 2 | log_config = dict( 3 | interval=50, 4 | hooks=[ 5 | dict(type='TextLoggerHook', by_epoch=False), 6 | # dict(type='TensorboardLoggerHook') 7 | ]) 8 | # yapf:enable 9 | dist_params = dict(backend='nccl') 10 | log_level = 'INFO' 11 | load_from = None 12 | resume_from = None 13 | workflow = [('train', 1)] 14 | cudnn_benchmark = True 15 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ann_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ann/ann_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ann_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ccnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ccnet/ccnet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/ccnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/danet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/danet/danet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/danet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dmnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/dmnet/dmnet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dmnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dnl_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/fastscnn/fast_scnn_4x8_80k_lr0.12_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fast_scnn.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | 6 | # Re-config the data sampler. 7 | data = dict(samples_per_gpu=2, workers_per_gpu=4) 8 | 9 | # Re-config the optimizer. 10 | optimizer = dict(type='SGD', lr=0.12, momentum=0.9, weight_decay=4e-5) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/gcnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/gcnet/gcnet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/gcnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/pascal_context.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=60), 7 | test_cfg=dict(mode='slide', crop_size=(480, 480), stride=(320, 320))) 8 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 9 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_hr18.py', '../_base_/datasets/pascal_context.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=60), 7 | test_cfg=dict(mode='slide', crop_size=(480, 480), stride=(320, 320))) 8 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 9 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r50_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/upernet_r50.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/upernet/upernet_r50_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/upernet_r50.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/mmseg/models/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .inverted_residual import InvertedResidual, InvertedResidualV3 2 | from .make_divisible import make_divisible 3 | from .res_layer import ResLayer 4 | from .self_attention_block import SelfAttentionBlock 5 | from .up_conv_block import UpConvBlock 6 | 7 | __all__ = [ 8 | 'ResLayer', 'SelfAttentionBlock', 'make_divisible', 'InvertedResidual', 9 | 'UpConvBlock', 'InvertedResidualV3' 10 | ] 11 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/apcnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/apcnet/apcnet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/apcnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r18-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet18_v1c', 4 | backbone=dict(depth=18), 5 | decode_head=dict( 6 | c1_in_channels=64, 7 | c1_channels=12, 8 | in_channels=512, 9 | channels=128, 10 | ), 11 | auxiliary_head=dict(in_channels=256, channels=64)) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/emanet/emanet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/emanet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/encnet/encnet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/encnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', '../_base_/datasets/pascal_context.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=60), 7 | test_cfg=dict(mode='slide', crop_size=(480, 480), stride=(320, 320))) 8 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 9 | -------------------------------------------------------------------------------- /SegFormer/configs/fcn/fcn_r50-d8_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fcn_r50-d8.py', '../_base_/datasets/pascal_context.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_80k.py' 4 | ] 5 | model = dict( 6 | decode_head=dict(num_classes=60), 7 | test_cfg=dict(mode='slide', crop_size=(480, 480), stride=(320, 320))) 8 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 9 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/psanet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/psanet/psanet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/psanet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/mmseg/apis/__init__.py: -------------------------------------------------------------------------------- 1 | from .inference import inference_segmentor, init_segmentor, show_result_pyplot 2 | from .test import multi_gpu_test, single_gpu_test 3 | from .train import get_root_logger, set_random_seed, train_segmentor 4 | 5 | __all__ = [ 6 | 'get_root_logger', 'set_random_seed', 'train_segmentor', 'init_segmentor', 7 | 'inference_segmentor', 'multi_gpu_test', 'single_gpu_test', 8 | 'show_result_pyplot' 9 | ] 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r18-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet18_v1c', 4 | backbone=dict(depth=18), 5 | decode_head=dict( 6 | c1_in_channels=64, 7 | c1_channels=12, 8 | in_channels=512, 9 | channels=128, 10 | ), 11 | auxiliary_head=dict(in_channels=256, channels=64)) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x512_80k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x512_20k_voc12aug.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x512_40k_voc12aug.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/nonlocal_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/nonlocal_net/nonlocal_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/nonlocal_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/schedules/schedule_20k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=20000) 8 | checkpoint_config = dict(by_epoch=False, interval=2000) 9 | evaluation = dict(interval=2000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/schedules/schedule_40k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=40000) 8 | checkpoint_config = dict(by_epoch=False, interval=4000) 9 | evaluation = dict(interval=4000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/schedules/schedule_80k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=80000) 8 | checkpoint_config = dict(by_epoch=False, interval=8000) 9 | evaluation = dict(interval=8000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r18b-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet18', 4 | backbone=dict(type='ResNet', depth=18), 5 | decode_head=dict( 6 | c1_in_channels=64, 7 | c1_channels=12, 8 | in_channels=512, 9 | channels=128, 10 | ), 11 | auxiliary_head=dict(in_channels=256, channels=64)) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r18b-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_769x769_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='torchvision://resnet18', 4 | backbone=dict(type='ResNet', depth=18), 5 | decode_head=dict( 6 | c1_in_channels=64, 7 | c1_channels=12, 8 | in_channels=512, 9 | channels=128, 10 | ), 11 | auxiliary_head=dict(in_channels=256, channels=64)) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x1024_40k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18s_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './ocrnet_hr18_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18s_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './ocrnet_hr18_512x512_80k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/schedules/schedule_160k_adamw.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='AdamW', lr=0.0002, weight_decay=0.0001) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=0.0, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=160000) 8 | checkpoint_config = dict(by_epoch=False, interval=4000) 9 | evaluation = dict(interval=4000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/schedules/schedule_40k_adamw.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='AdamW', lr=0.0002, weight_decay=0.0001) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=0.0, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=40000) 8 | checkpoint_config = dict(by_epoch=False, interval=4000) 9 | evaluation = dict(interval=4000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/schedules/schedule_80k_adamw.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='AdamW', lr=0.0002, weight_decay=0.0001) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=0.0, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=80000) 8 | checkpoint_config = dict(by_epoch=False, interval=4000) 9 | evaluation = dict(interval=4000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/schedules/schedule_160k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=160000) 8 | checkpoint_config = dict(by_epoch=False, interval=16000) 9 | evaluation = dict(interval=16000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_769x769_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_512x1024_160k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x1024_160k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18s_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './ocrnet_hr18_512x512_20k_voc12aug.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18s_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './ocrnet_hr18_512x512_40k_voc12aug.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/schedules/schedule_20k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=20000) 8 | checkpoint_config = dict(by_epoch=False, interval=2000) 9 | evaluation = dict(interval=2000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/schedules/schedule_40k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=40000) 8 | checkpoint_config = dict(by_epoch=False, interval=4000) 9 | evaluation = dict(interval=4000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/schedules/schedule_80k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=80000) 8 | checkpoint_config = dict(by_epoch=False, interval=8000) 9 | evaluation = dict(interval=8000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_480x480_40k_pascal_context.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr18s_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_480x480_80k_pascal_context.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18s_512x1024_160k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ocrnet_hr18_512x1024_160k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18s_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ocrnet_hr18_512x1024_40k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/ocrnet/ocrnet_hr18s_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './ocrnet_hr18_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w18_small', 4 | backbone=dict( 5 | extra=dict( 6 | stage1=dict(num_blocks=(2, )), 7 | stage2=dict(num_blocks=(2, 2)), 8 | stage3=dict(num_modules=3, num_blocks=(2, 2, 2)), 9 | stage4=dict(num_modules=2, num_blocks=(2, 2, 2, 2))))) 10 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/schedules/schedule_160k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=160000) 8 | checkpoint_config = dict(by_epoch=False, interval=16000) 9 | evaluation = dict(interval=16000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /SegFormer/mmseg/core/utils/misc.py: -------------------------------------------------------------------------------- 1 | def add_prefix(inputs, prefix): 2 | """Add prefix for dict. 3 | 4 | Args: 5 | inputs (dict): The input dict with str keys. 6 | prefix (str): The prefix to add. 7 | 8 | Returns: 9 | 10 | dict: The dict with keys updated with ``prefix``. 11 | """ 12 | 13 | outputs = dict() 14 | for name, value in inputs.items(): 15 | outputs[f'{prefix}.{name}'] = value 16 | 17 | return outputs 18 | -------------------------------------------------------------------------------- /SegFormer/tests/test_utils/test_make_divisible.py: -------------------------------------------------------------------------------- 1 | from mmseg.models.utils import make_divisible 2 | 3 | 4 | def test_make_divisible(): 5 | # test with min_value = None 6 | assert make_divisible(10, 4) == 12 7 | assert make_divisible(9, 4) == 12 8 | assert make_divisible(1, 4) == 4 9 | 10 | # test with min_value = 8 11 | assert make_divisible(10, 4, 8) == 12 12 | assert make_divisible(9, 4, 8) == 12 13 | assert make_divisible(1, 4, 8) == 8 14 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d16-mg124_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet101_v1c', 4 | backbone=dict( 5 | depth=101, 6 | dilations=(1, 1, 1, 2), 7 | strides=(1, 2, 2, 1), 8 | multi_grid=(1, 2, 4)), 9 | decode_head=dict( 10 | dilations=(1, 6, 12, 18), 11 | sampler=dict(type='OHEMPixelSampler', min_kept=100000))) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r101-d16-mg124_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet101_v1c', 4 | backbone=dict( 5 | depth=101, 6 | dilations=(1, 1, 1, 2), 7 | strides=(1, 2, 2, 1), 8 | multi_grid=(1, 2, 4)), 9 | decode_head=dict( 10 | dilations=(1, 6, 12, 18), 11 | sampler=dict(type='OHEMPixelSampler', min_kept=100000))) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v3/lraspp_m-v3-d8_512x1024_320k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/lraspp_m-v3-d8.py', '../_base_/datasets/cityscapes.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | 6 | model = dict(pretrained='open-mmlab://contrib/mobilenet_v3_large') 7 | 8 | # Re-config the data sampler. 9 | data = dict(samples_per_gpu=4, workers_per_gpu=4) 10 | 11 | runner = dict(type='IterBasedRunner', max_iters=320000) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x512_80k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_512x512_20k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x512_20k_voc12aug.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_512x512_40k_voc12aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x512_40k_voc12aug.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/setup.cfg: -------------------------------------------------------------------------------- 1 | [yapf] 2 | based_on_style = pep8 3 | blank_line_before_nested_class_or_def = true 4 | split_before_expression_after_opening_paren = true 5 | 6 | [isort] 7 | line_length = 79 8 | multi_line_output = 0 9 | known_standard_library = setuptools 10 | known_first_party = mmseg 11 | known_third_party = PIL,cityscapesscripts,cv2,detail,matplotlib,mmcv,numpy,onnxruntime,oss2,pytest,scipy,terminaltables,torch 12 | no_lines_before = STDLIB,LOCALFOLDER 13 | default_section = THIRDPARTY 14 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d16-mg124_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x1024_40k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet101_v1c', 4 | backbone=dict( 5 | depth=101, 6 | dilations=(1, 1, 1, 2), 7 | strides=(1, 2, 2, 1), 8 | multi_grid=(1, 2, 4)), 9 | decode_head=dict( 10 | dilations=(1, 6, 12, 18), 11 | sampler=dict(type='OHEMPixelSampler', min_kept=100000))) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r101-d16-mg124_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './deeplabv3plus_r50-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://resnet101_v1c', 4 | backbone=dict( 5 | depth=101, 6 | dilations=(1, 1, 1, 2), 7 | strides=(1, 2, 2, 1), 8 | multi_grid=(1, 2, 4)), 9 | decode_head=dict( 10 | dilations=(1, 6, 12, 18), 11 | sampler=dict(type='OHEMPixelSampler', min_kept=100000))) 12 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_512x1024_40k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x1024_40k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_512x1024_160k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_512x1024_160k_cityscapes.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v2/fcn_m-v2-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = '../fcn/fcn_r101-d8_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='mmcls://mobilenet_v2', 4 | backbone=dict( 5 | _delete_=True, 6 | type='MobileNetV2', 7 | widen_factor=1., 8 | strides=(1, 2, 2, 1, 1, 1, 1), 9 | dilations=(1, 1, 1, 2, 2, 4, 4), 10 | out_indices=(1, 2, 4, 6)), 11 | decode_head=dict(in_channels=320), 12 | auxiliary_head=dict(in_channels=96)) 13 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', 3 | '../_base_/datasets/pascal_context.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=60), auxiliary_head=dict(num_classes=60)) 8 | test_cfg = dict(mode='slide', crop_size=(480, 480), stride=(320, 320)) 9 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/pspnet/pspnet_r50-d8_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pspnet_r50-d8.py', 3 | '../_base_/datasets/pascal_context.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=60), auxiliary_head=dict(num_classes=60)) 8 | test_cfg = dict(mode='slide', crop_size=(480, 480), stride=(320, 320)) 9 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 10 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_480x480_40k_pascal_context.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/hrnet/fcn_hr48_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = './fcn_hr18_480x480_80k_pascal_context.py' 2 | model = dict( 3 | pretrained='open-mmlab://msra/hrnetv2_w48', 4 | backbone=dict( 5 | extra=dict( 6 | stage2=dict(num_channels=(48, 96)), 7 | stage3=dict(num_channels=(48, 96, 192)), 8 | stage4=dict(num_channels=(48, 96, 192, 384)))), 9 | decode_head=dict( 10 | in_channels=[48, 96, 192, 384], channels=sum([48, 96, 192, 384]))) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v2/fcn_m-v2-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../fcn/fcn_r101-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='mmcls://mobilenet_v2', 4 | backbone=dict( 5 | _delete_=True, 6 | type='MobileNetV2', 7 | widen_factor=1., 8 | strides=(1, 2, 2, 1, 1, 1, 1), 9 | dilations=(1, 1, 1, 2, 2, 4, 4), 10 | out_indices=(1, 2, 4, 6)), 11 | decode_head=dict(in_channels=320), 12 | auxiliary_head=dict(in_channels=96)) 13 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v2/pspnet_m-v2-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = '../pspnet/pspnet_r101-d8_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='mmcls://mobilenet_v2', 4 | backbone=dict( 5 | _delete_=True, 6 | type='MobileNetV2', 7 | widen_factor=1., 8 | strides=(1, 2, 2, 1, 1, 1, 1), 9 | dilations=(1, 1, 1, 2, 2, 4, 4), 10 | out_indices=(1, 2, 4, 6)), 11 | decode_head=dict(in_channels=320), 12 | auxiliary_head=dict(in_channels=96)) 13 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', 3 | '../_base_/datasets/pascal_context.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=60), 8 | auxiliary_head=dict(num_classes=60), 9 | test_cfg=dict(mode='slide', crop_size=(480, 480), stride=(320, 320))) 10 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3/deeplabv3_r50-d8_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3_r50-d8.py', 3 | '../_base_/datasets/pascal_context.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=60), 8 | auxiliary_head=dict(num_classes=60), 9 | test_cfg=dict(mode='slide', crop_size=(480, 480), stride=(320, 320))) 10 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v2/deeplabv3_m-v2-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3/deeplabv3_r101-d8_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='mmcls://mobilenet_v2', 4 | backbone=dict( 5 | _delete_=True, 6 | type='MobileNetV2', 7 | widen_factor=1., 8 | strides=(1, 2, 2, 1, 1, 1, 1), 9 | dilations=(1, 1, 1, 2, 2, 4, 4), 10 | out_indices=(1, 2, 4, 6)), 11 | decode_head=dict(in_channels=320), 12 | auxiliary_head=dict(in_channels=96)) 13 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v2/pspnet_m-v2-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../pspnet/pspnet_r101-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='mmcls://mobilenet_v2', 4 | backbone=dict( 5 | _delete_=True, 6 | type='MobileNetV2', 7 | widen_factor=1., 8 | strides=(1, 2, 2, 1, 1, 1, 1), 9 | dilations=(1, 1, 1, 2, 2, 4, 4), 10 | out_indices=(1, 2, 4, 6)), 11 | decode_head=dict(in_channels=320), 12 | auxiliary_head=dict(in_channels=96)) 13 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v2/deeplabv3_m-v2-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3/deeplabv3_r101-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='mmcls://mobilenet_v2', 4 | backbone=dict( 5 | _delete_=True, 6 | type='MobileNetV2', 7 | widen_factor=1., 8 | strides=(1, 2, 2, 1, 1, 1, 1), 9 | dilations=(1, 1, 1, 2, 2, 4, 4), 10 | out_indices=(1, 2, 4, 6)), 11 | decode_head=dict(in_channels=320), 12 | auxiliary_head=dict(in_channels=96)) 13 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_480x480_40k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', 3 | '../_base_/datasets/pascal_context.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_40k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=60), 8 | auxiliary_head=dict(num_classes=60), 9 | test_cfg=dict(mode='slide', crop_size=(480, 480), stride=(320, 320))) 10 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 11 | -------------------------------------------------------------------------------- /SegFormer/configs/deeplabv3plus/deeplabv3plus_r50-d8_480x480_80k_pascal_context.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/deeplabv3plus_r50-d8.py', 3 | '../_base_/datasets/pascal_context.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(num_classes=60), 8 | auxiliary_head=dict(num_classes=60), 9 | test_cfg=dict(mode='slide', crop_size=(480, 480), stride=(320, 320))) 10 | optimizer = dict(type='SGD', lr=0.004, momentum=0.9, weight_decay=0.0001) 11 | -------------------------------------------------------------------------------- /SegFormer/mmseg/utils/collect_env.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import collect_env as collect_base_env 2 | from mmcv.utils import get_git_hash 3 | 4 | import mmseg 5 | 6 | 7 | def collect_env(): 8 | """Collect the information of the running environments.""" 9 | env_info = collect_base_env() 10 | env_info['MMSegmentation'] = f'{mmseg.__version__}+{get_git_hash()[:7]}' 11 | 12 | return env_info 13 | 14 | 15 | if __name__ == '__main__': 16 | for name, val in collect_env().items(): 17 | print('{}: {}'.format(name, val)) 18 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v2/deeplabv3plus_m-v2-d8_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3plus/deeplabv3plus_r101-d8_512x512_160k_ade20k.py' 2 | model = dict( 3 | pretrained='mmcls://mobilenet_v2', 4 | backbone=dict( 5 | _delete_=True, 6 | type='MobileNetV2', 7 | widen_factor=1., 8 | strides=(1, 2, 2, 1, 1, 1, 1), 9 | dilations=(1, 1, 1, 2, 2, 4, 4), 10 | out_indices=(1, 2, 4, 6)), 11 | decode_head=dict(in_channels=320, c1_in_channels=24), 12 | auxiliary_head=dict(in_channels=96)) 13 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v2/deeplabv3plus_m-v2-d8_512x1024_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = '../deeplabv3plus/deeplabv3plus_r101-d8_512x1024_80k_cityscapes.py' 2 | model = dict( 3 | pretrained='mmcls://mobilenet_v2', 4 | backbone=dict( 5 | _delete_=True, 6 | type='MobileNetV2', 7 | widen_factor=1., 8 | strides=(1, 2, 2, 1, 1, 1, 1), 9 | dilations=(1, 1, 1, 2, 2, 4, 4), 10 | out_indices=(1, 2, 4, 6)), 11 | decode_head=dict(in_channels=320, c1_in_channels=24), 12 | auxiliary_head=dict(in_channels=96)) 13 | -------------------------------------------------------------------------------- /SegFormer/mmseg/models/losses/__init__.py: -------------------------------------------------------------------------------- 1 | from .accuracy import Accuracy, accuracy 2 | from .cross_entropy_loss import (CrossEntropyLoss, binary_cross_entropy, 3 | cross_entropy, mask_cross_entropy) 4 | from .lovasz_loss import LovaszLoss 5 | from .utils import reduce_loss, weight_reduce_loss, weighted_loss 6 | 7 | __all__ = [ 8 | 'accuracy', 'Accuracy', 'cross_entropy', 'binary_cross_entropy', 9 | 'mask_cross_entropy', 'CrossEntropyLoss', 'reduce_loss', 10 | 'weight_reduce_loss', 'weighted_loss', 'LovaszLoss' 11 | ] 12 | -------------------------------------------------------------------------------- /SegFormer/configs/dnlnet/dnl_r50-d8_769x769_80k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/dnl_r50-d8.py', 3 | '../_base_/datasets/cityscapes_769x769.py', '../_base_/default_runtime.py', 4 | '../_base_/schedules/schedule_80k.py' 5 | ] 6 | model = dict( 7 | decode_head=dict(align_corners=True), 8 | auxiliary_head=dict(align_corners=True), 9 | test_cfg=dict(mode='slide', crop_size=(769, 769), stride=(513, 513))) 10 | optimizer = dict( 11 | paramwise_cfg=dict( 12 | custom_keys=dict(theta=dict(wd_mult=0.), phi=dict(wd_mult=0.)))) 13 | -------------------------------------------------------------------------------- /SegFormer/mmseg/models/__init__.py: -------------------------------------------------------------------------------- 1 | from .backbones import * # noqa: F401,F403 2 | from .builder import (BACKBONES, HEADS, LOSSES, SEGMENTORS, build_backbone, 3 | build_head, build_loss, build_segmentor) 4 | from .decode_heads import * # noqa: F401,F403 5 | from .losses import * # noqa: F401,F403 6 | from .necks import * # noqa: F401,F403 7 | from .segmentors import * # noqa: F401,F403 8 | 9 | __all__ = [ 10 | 'BACKBONES', 'HEADS', 'LOSSES', 'SEGMENTORS', 'build_backbone', 11 | 'build_head', 'build_loss', 'build_segmentor' 12 | ] 13 | -------------------------------------------------------------------------------- /SegFormer/mmseg/models/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | from .cgnet import CGNet 2 | from .fast_scnn import FastSCNN 3 | from .hrnet import HRNet 4 | from .mobilenet_v2 import MobileNetV2 5 | from .mobilenet_v3 import MobileNetV3 6 | from .resnest import ResNeSt 7 | from .resnet import ResNet, ResNetV1c, ResNetV1d 8 | from .resnext import ResNeXt 9 | from .unet import UNet 10 | 11 | from .mix_transformer import * 12 | 13 | __all__ = [ 14 | 'ResNet', 'ResNetV1c', 'ResNetV1d', 'ResNeXt', 'HRNet', 'FastSCNN', 15 | 'ResNeSt', 'MobileNetV2', 'UNet', 'CGNet', 'MobileNetV3',] 16 | -------------------------------------------------------------------------------- /play.py: -------------------------------------------------------------------------------- 1 | from imageio import imread, imwrite 2 | import numpy as np 3 | import glob 4 | import shutil as sh 5 | import os 6 | from matplotlib import pyplot as plt 7 | 8 | name = "Task06_Lungs_RGB_2D_512_Balanced" 9 | 10 | tr_root_img_folder = f"data/MSD/{name}/images/training" 11 | val_root_img_folder = f"data/MSD/{name}/images/validation" 12 | tr_root_annot_folder = f"data/MSD/{name}/annotations/training" 13 | val_root_annot_folder = f"data/MSD/{name}/annotations/validation" 14 | 15 | image_bg = imread(tr_root_img_folder + "/lung_018_Slice_147.png") 16 | plt.imshow(image_bg) 17 | plt.show() 18 | -------------------------------------------------------------------------------- /SegFormer/mmseg/version.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Open-MMLab. All rights reserved. 2 | 3 | __version__ = '0.11.0' 4 | 5 | 6 | def parse_version_info(version_str): 7 | version_info = [] 8 | for x in version_str.split('.'): 9 | if x.isdigit(): 10 | version_info.append(int(x)) 11 | elif x.find('rc') != -1: 12 | patch_version = x.split('rc') 13 | version_info.append(int(patch_version[0])) 14 | version_info.append(f'rc{patch_version[1]}') 15 | return tuple(version_info) 16 | 17 | 18 | version_info = parse_version_info(__version__) 19 | -------------------------------------------------------------------------------- /SegFormer/tests/test_models/test_necks.py: -------------------------------------------------------------------------------- 1 | import torch 2 | 3 | from mmseg.models import FPN 4 | 5 | 6 | def test_fpn(): 7 | in_channels = [256, 512, 1024, 2048] 8 | inputs = [ 9 | torch.randn(1, c, 56 // 2**i, 56 // 2**i) 10 | for i, c in enumerate(in_channels) 11 | ] 12 | 13 | fpn = FPN(in_channels, 256, len(in_channels)) 14 | outputs = fpn(inputs) 15 | assert outputs[0].shape == torch.Size([1, 256, 56, 56]) 16 | assert outputs[1].shape == torch.Size([1, 256, 28, 28]) 17 | assert outputs[2].shape == torch.Size([1, 256, 14, 14]) 18 | assert outputs[3].shape == torch.Size([1, 256, 7, 7]) 19 | -------------------------------------------------------------------------------- /SegFormer/tools/slurm_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME='mmseg' 7 | CONFIG=$2 8 | GPUS=${GPUS:-8} 9 | GPUS_PER_NODE=${GPUS_PER_NODE:-8} 10 | CPUS_PER_TASK=${CPUS_PER_TASK:-5} 11 | SRUN_ARGS=${SRUN_ARGS:-""} 12 | PY_ARGS=${@:3} 13 | 14 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 15 | srun -p ${PARTITION} \ 16 | --job-name=${JOB_NAME} \ 17 | --gres=gpu:${GPUS_PER_NODE} \ 18 | --ntasks=${GPUS} \ 19 | --ntasks-per-node=${GPUS_PER_NODE} \ 20 | --cpus-per-task=${CPUS_PER_TASK} \ 21 | --kill-on-bad-exit=1 \ 22 | ${SRUN_ARGS} \ 23 | python -u tools/train.py ${CONFIG} --launcher="slurm" ${PY_ARGS} 24 | -------------------------------------------------------------------------------- /SegFormer/tools/slurm_test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME=$2 7 | CONFIG=$3 8 | CHECKPOINT=$4 9 | GPUS=${GPUS:-4} 10 | GPUS_PER_NODE=${GPUS_PER_NODE:-4} 11 | CPUS_PER_TASK=${CPUS_PER_TASK:-5} 12 | PY_ARGS=${@:5} 13 | SRUN_ARGS=${SRUN_ARGS:-""} 14 | 15 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 16 | srun -p ${PARTITION} \ 17 | --job-name=${JOB_NAME} \ 18 | --gres=gpu:${GPUS_PER_NODE} \ 19 | --ntasks=${GPUS} \ 20 | --ntasks-per-node=${GPUS_PER_NODE} \ 21 | --cpus-per-task=${CPUS_PER_TASK} \ 22 | --kill-on-bad-exit=1 \ 23 | ${SRUN_ARGS} \ 24 | python -u tools/test.py ${CONFIG} ${CHECKPOINT} --launcher="slurm" ${PY_ARGS} 25 | -------------------------------------------------------------------------------- /bg_to_rgb.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from imageio import imread, imwrite 3 | import glob 4 | import os 5 | # import matplotlib.pyplot as plt 6 | 7 | for ind, image_path in enumerate(glob.glob("data/MSD/Task09_Spleen_2D_512_Balanced/images/training/*.png")): 8 | image = imread(image_path) 9 | image_rgb = np.repeat(image[:, :, np.newaxis], 3, axis=2) 10 | image_path = image_path.replace("2D", "RGB_2D") 11 | os.makedirs(os.path.dirname(image_path), exist_ok=True) 12 | imwrite(image_path, image_rgb) 13 | 14 | 15 | # imgplot = plt.imshow(image) 16 | # print(image.shape) 17 | # image2 = np.repeat(image[:, :, np.newaxis], 3, axis=2) 18 | # print(image2.shape) 19 | # imgplot = plt.imshow(image2) 20 | # plt.show() 21 | -------------------------------------------------------------------------------- /SegFormer/docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line, and also 5 | # from the environment for the first two. 6 | SPHINXOPTS ?= 7 | SPHINXBUILD ?= sphinx-build 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /SegFormer/configs/sem_fpn/fpn_r50_512x512_80k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/fpn_r50.py', 3 | '../_base_/datasets/ade20k.py', 4 | '../_base_/default_runtime.py' 5 | ] 6 | model = dict(decode_head=dict(num_classes=150)) 7 | 8 | gpu_factor = 2 #mmseg默认4卡训练 我这边8卡的话 lr*2, iter/2 9 | # optimizer 10 | optimizer = dict(type='SGD', lr=0.01*gpu_factor, momentum=0.9, weight_decay=0.0005) 11 | optimizer_config = dict() 12 | # learning policy 13 | lr_config = dict(policy='poly', power=0.9, min_lr=0.0, by_epoch=False) 14 | # runtime settings 15 | runner = dict(type='IterBasedRunner', max_iters=80000//gpu_factor) 16 | checkpoint_config = dict(by_epoch=False, interval=8000//gpu_factor) 17 | evaluation = dict(interval=8000, metric='mIoU') 18 | 19 | -------------------------------------------------------------------------------- /SegFormer/tools/print_config.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | from mmcv import Config, DictAction 4 | 5 | 6 | def parse_args(): 7 | parser = argparse.ArgumentParser(description='Print the whole config') 8 | parser.add_argument('config', help='config file path') 9 | parser.add_argument( 10 | '--options', nargs='+', action=DictAction, help='arguments in dict') 11 | args = parser.parse_args() 12 | 13 | return args 14 | 15 | 16 | def main(): 17 | args = parse_args() 18 | 19 | cfg = Config.fromfile(args.config) 20 | if args.options is not None: 21 | cfg.merge_from_dict(args.options) 22 | print(f'Config:\n{cfg.pretty_text}') 23 | # dump config 24 | cfg.dump('example.py') 25 | 26 | 27 | if __name__ == '__main__': 28 | main() 29 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/msd.py: -------------------------------------------------------------------------------- 1 | from .builder import DATASETS 2 | from .custom import CustomDataset 3 | 4 | 5 | @DATASETS.register_module() 6 | class MSDDataset(CustomDataset): 7 | """ADE20K dataset. 8 | 9 | In segmentation map annotation for ADE20K, 0 stands for background, which 10 | is not included in 150 categories. ``reduce_zero_label`` is fixed to True. 11 | The ``img_suffix`` is fixed to '.jpg' and ``seg_map_suffix`` is fixed to 12 | '.png'. 13 | """ 14 | CLASSES = ( 15 | "no ailment", "ailment") 16 | 17 | PALETTE = [[120, 120, 120], [92, 0, 255]] 18 | 19 | def __init__(self, **kwargs): 20 | super(MSDDataset, self).__init__( 21 | img_suffix='.png', 22 | seg_map_suffix='.png', 23 | reduce_zero_label=True, 24 | **kwargs) 25 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/msd_marked.py: -------------------------------------------------------------------------------- 1 | from .builder import DATASETS 2 | from .custom import CustomDataset 3 | 4 | 5 | @DATASETS.register_module() 6 | class MSDMarkedDataset(CustomDataset): 7 | """ADE20K dataset. 8 | 9 | In segmentation map annotation for ADE20K, 0 stands for background, which 10 | is not included in 150 categories. ``reduce_zero_label`` is fixed to True. 11 | The ``img_suffix`` is fixed to '.jpg' and ``seg_map_suffix`` is fixed to 12 | '.png'. 13 | """ 14 | CLASSES = ( 15 | "no ailment", "ailment") 16 | 17 | PALETTE = [[120, 120, 120], [92, 0, 255]] 18 | 19 | def __init__(self, **kwargs): 20 | super(MSDMarkedDataset, self).__init__( 21 | img_suffix='.png', 22 | seg_map_suffix='.png', 23 | reduce_zero_label=True, 24 | **kwargs) 25 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/msd_balanced.py: -------------------------------------------------------------------------------- 1 | from .builder import DATASETS 2 | from .custom import CustomDataset 3 | 4 | 5 | @DATASETS.register_module() 6 | class MSDBalancedDataset(CustomDataset): 7 | """ADE20K dataset. 8 | 9 | In segmentation map annotation for ADE20K, 0 stands for background, which 10 | is not included in 150 categories. ``reduce_zero_label`` is fixed to True. 11 | The ``img_suffix`` is fixed to '.jpg' and ``seg_map_suffix`` is fixed to 12 | '.png'. 13 | """ 14 | CLASSES = ( 15 | "no ailment", "ailment") 16 | 17 | PALETTE = [[120, 120, 120], [92, 0, 255]] 18 | 19 | def __init__(self, **kwargs): 20 | super(MSDBalancedDataset, self).__init__( 21 | img_suffix='.png', 22 | seg_map_suffix='.png', 23 | reduce_zero_label=True, 24 | **kwargs) 25 | -------------------------------------------------------------------------------- /SegFormer/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG PYTORCH="1.6.0" 2 | ARG CUDA="10.1" 3 | ARG CUDNN="7" 4 | 5 | FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel 6 | 7 | ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0+PTX" 8 | ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all" 9 | ENV CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" 10 | 11 | RUN apt-get update && apt-get install -y git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 \ 12 | && apt-get clean \ 13 | && rm -rf /var/lib/apt/lists/* 14 | 15 | # Install mmsegmentation 16 | RUN conda clean --all 17 | 18 | RUN pip install mmcv-full==latest+torch1.6.0+cu101 -f https://download.openmmlab.com/mmcv/dist/index.html 19 | RUN git clone https://github.com/open-mmlab/mmsegmenation.git /mmsegmentation 20 | WORKDIR /mmsegmentation 21 | RUN pip install -r requirements/build.txt 22 | RUN pip install --no-cache-dir -e . 23 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/msd_lungs_balanced.py: -------------------------------------------------------------------------------- 1 | from .builder import DATASETS 2 | from .custom import CustomDataset 3 | 4 | 5 | @DATASETS.register_module() 6 | class MSDLungsBalancedDataset(CustomDataset): 7 | """ADE20K dataset. 8 | 9 | In segmentation map annotation for ADE20K, 0 stands for background, which 10 | is not included in 150 categories. ``reduce_zero_label`` is fixed to True. 11 | The ``img_suffix`` is fixed to '.jpg' and ``seg_map_suffix`` is fixed to 12 | '.png'. 13 | """ 14 | CLASSES = ( 15 | "no ailment", "ailment") 16 | 17 | PALETTE = [[120, 120, 120], [92, 0, 255]] 18 | 19 | def __init__(self, **kwargs): 20 | super(MSDLungsBalancedDataset, self).__init__( 21 | img_suffix='.png', 22 | seg_map_suffix='.png', 23 | reduce_zero_label=True, 24 | **kwargs) 25 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v3/lraspp_m-v3s-d8_scratch_512x1024_320k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './lraspp_m-v3-d8_scratch_512x1024_320k_cityscapes.py' 2 | norm_cfg = dict(type='SyncBN', eps=0.001, requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | backbone=dict( 6 | type='MobileNetV3', 7 | arch='small', 8 | out_indices=(0, 1, 12), 9 | norm_cfg=norm_cfg), 10 | decode_head=dict( 11 | type='LRASPPHead', 12 | in_channels=(16, 16, 576), 13 | in_index=(0, 1, 2), 14 | channels=128, 15 | input_transform='multiple_select', 16 | dropout_ratio=0.1, 17 | num_classes=19, 18 | norm_cfg=norm_cfg, 19 | act_cfg=dict(type='ReLU'), 20 | align_corners=False, 21 | loss_decode=dict( 22 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0))) 23 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/models/segformer.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', requires_grad=True) 3 | find_unused_parameters = True 4 | model = dict( 5 | type='EncoderDecoder', 6 | pretrained=None, 7 | backbone=dict( 8 | type='IMTRv21_5', 9 | style='pytorch'), 10 | decode_head=dict( 11 | type='SegFormerHead', 12 | in_channels=[64, 128, 320, 512], 13 | in_index=[0, 1, 2, 3], 14 | feature_strides=[4, 8, 16, 32], 15 | channels=128, 16 | dropout_ratio=0.1, 17 | num_classes=19, 18 | norm_cfg=norm_cfg, 19 | align_corners=False, 20 | decoder_params=dict(), 21 | loss_decode=dict(type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 22 | # model training and testing settings 23 | train_cfg=dict(), 24 | test_cfg=dict(mode='whole')) 25 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/hrf.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class HRFDataset(CustomDataset): 9 | """HRF dataset. 10 | 11 | In segmentation map annotation for HRF, 0 stands for background, which is 12 | included in 2 categories. ``reduce_zero_label`` is fixed to False. The 13 | ``img_suffix`` is fixed to '.png' and ``seg_map_suffix`` is fixed to 14 | '.png'. 15 | """ 16 | 17 | CLASSES = ('background', 'vessel') 18 | 19 | PALETTE = [[120, 120, 120], [6, 230, 230]] 20 | 21 | def __init__(self, **kwargs): 22 | super(HRFDataset, self).__init__( 23 | img_suffix='.png', 24 | seg_map_suffix='.png', 25 | reduce_zero_label=False, 26 | **kwargs) 27 | assert osp.exists(self.img_dir) 28 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/stare.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class STAREDataset(CustomDataset): 9 | """STARE dataset. 10 | 11 | In segmentation map annotation for STARE, 0 stands for background, which is 12 | included in 2 categories. ``reduce_zero_label`` is fixed to False. The 13 | ``img_suffix`` is fixed to '.png' and ``seg_map_suffix`` is fixed to 14 | '.ah.png'. 15 | """ 16 | 17 | CLASSES = ('background', 'vessel') 18 | 19 | PALETTE = [[120, 120, 120], [6, 230, 230]] 20 | 21 | def __init__(self, **kwargs): 22 | super(STAREDataset, self).__init__( 23 | img_suffix='.png', 24 | seg_map_suffix='.ah.png', 25 | reduce_zero_label=False, 26 | **kwargs) 27 | assert osp.exists(self.img_dir) 28 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/models/lraspp_m-v3-d8.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', eps=0.001, requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | backbone=dict( 6 | type='MobileNetV3', 7 | arch='large', 8 | out_indices=(1, 3, 16), 9 | norm_cfg=norm_cfg), 10 | decode_head=dict( 11 | type='LRASPPHead', 12 | in_channels=(16, 24, 960), 13 | in_index=(0, 1, 2), 14 | channels=128, 15 | input_transform='multiple_select', 16 | dropout_ratio=0.1, 17 | num_classes=19, 18 | norm_cfg=norm_cfg, 19 | act_cfg=dict(type='ReLU'), 20 | align_corners=False, 21 | loss_decode=dict( 22 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 23 | # model training and testing settings 24 | train_cfg=dict(), 25 | test_cfg=dict(mode='whole')) 26 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/drive.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class DRIVEDataset(CustomDataset): 9 | """DRIVE dataset. 10 | 11 | In segmentation map annotation for DRIVE, 0 stands for background, which is 12 | included in 2 categories. ``reduce_zero_label`` is fixed to False. The 13 | ``img_suffix`` is fixed to '.png' and ``seg_map_suffix`` is fixed to 14 | '_manual1.png'. 15 | """ 16 | 17 | CLASSES = ('background', 'vessel') 18 | 19 | PALETTE = [[120, 120, 120], [6, 230, 230]] 20 | 21 | def __init__(self, **kwargs): 22 | super(DRIVEDataset, self).__init__( 23 | img_suffix='.png', 24 | seg_map_suffix='_manual1.png', 25 | reduce_zero_label=False, 26 | **kwargs) 27 | assert osp.exists(self.img_dir) 28 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/models/lraspp_m-v3-d8.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', eps=0.001, requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | backbone=dict( 6 | type='MobileNetV3', 7 | arch='large', 8 | out_indices=(1, 3, 16), 9 | norm_cfg=norm_cfg), 10 | decode_head=dict( 11 | type='LRASPPHead', 12 | in_channels=(16, 24, 960), 13 | in_index=(0, 1, 2), 14 | channels=128, 15 | input_transform='multiple_select', 16 | dropout_ratio=0.1, 17 | num_classes=19, 18 | norm_cfg=norm_cfg, 19 | act_cfg=dict(type='ReLU'), 20 | align_corners=False, 21 | loss_decode=dict( 22 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 23 | # model training and testing settings 24 | train_cfg=dict(), 25 | test_cfg=dict(mode='whole')) 26 | -------------------------------------------------------------------------------- /SegFormer/configs/mobilenet_v3/lraspp_m-v3s-d8_512x1024_320k_cityscapes.py: -------------------------------------------------------------------------------- 1 | _base_ = './lraspp_m-v3-d8_512x1024_320k_cityscapes.py' 2 | norm_cfg = dict(type='SyncBN', eps=0.001, requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | pretrained='open-mmlab://contrib/mobilenet_v3_small', 6 | backbone=dict( 7 | type='MobileNetV3', 8 | arch='small', 9 | out_indices=(0, 1, 12), 10 | norm_cfg=norm_cfg), 11 | decode_head=dict( 12 | type='LRASPPHead', 13 | in_channels=(16, 16, 576), 14 | in_index=(0, 1, 2), 15 | channels=128, 16 | input_transform='multiple_select', 17 | dropout_ratio=0.1, 18 | num_classes=19, 19 | norm_cfg=norm_cfg, 20 | act_cfg=dict(type='ReLU'), 21 | align_corners=False, 22 | loss_decode=dict( 23 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0))) 24 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/chase_db1.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class ChaseDB1Dataset(CustomDataset): 9 | """Chase_db1 dataset. 10 | 11 | In segmentation map annotation for Chase_db1, 0 stands for background, 12 | which is included in 2 categories. ``reduce_zero_label`` is fixed to False. 13 | The ``img_suffix`` is fixed to '.png' and ``seg_map_suffix`` is fixed to 14 | '_1stHO.png'. 15 | """ 16 | 17 | CLASSES = ('background', 'vessel') 18 | 19 | PALETTE = [[120, 120, 120], [6, 230, 230]] 20 | 21 | def __init__(self, **kwargs): 22 | super(ChaseDB1Dataset, self).__init__( 23 | img_suffix='.png', 24 | seg_map_suffix='_1stHO.png', 25 | reduce_zero_label=False, 26 | **kwargs) 27 | assert osp.exists(self.img_dir) 28 | -------------------------------------------------------------------------------- /SegFormer/docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | 13 | if "%1" == "" goto help 14 | 15 | %SPHINXBUILD% >NUL 2>NUL 16 | if errorlevel 9009 ( 17 | echo. 18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 19 | echo.installed, then set the SPHINXBUILD environment variable to point 20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 21 | echo.may add the Sphinx directory to PATH. 22 | echo. 23 | echo.If you don't have Sphinx installed, grab it from 24 | echo.http://sphinx-doc.org/ 25 | exit /b 1 26 | ) 27 | 28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 29 | goto end 30 | 31 | :help 32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 33 | 34 | :end 35 | popd 36 | -------------------------------------------------------------------------------- /rgb_to_bg.py: -------------------------------------------------------------------------------- 1 | from imageio import imread, imwrite 2 | import numpy as np 3 | import glob 4 | import shutil as sh 5 | import os 6 | 7 | name = "Task06_Lungs_RGB_2D_512_Balanced" 8 | 9 | tr_root_folder = f"data/MSD/{name}/annotations/training" 10 | val_root_folder = f"data/MSD/{name}/annotations/validation" 11 | 12 | if not os.path.exists(tr_root_folder + "_copy"): 13 | sh.copytree(tr_root_folder, tr_root_folder + "_copy") 14 | if not os.path.exists(val_root_folder + "_copy"): 15 | sh.copytree(val_root_folder, val_root_folder + "_copy") 16 | 17 | for ind, image_path in enumerate(glob.glob(f"{tr_root_folder}/*.png")): 18 | image_rgb = imread(image_path) 19 | image_bg = image_rgb[:, :, 0] 20 | imwrite(image_path, image_bg) 21 | 22 | for ind, image_path in enumerate(glob.glob(f"{val_root_folder}/*.png")): 23 | image_rgb = imread(image_path) 24 | image_bg = image_rgb[:, :, 0] 25 | imwrite(image_path, image_bg) 26 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/pipelines/__init__.py: -------------------------------------------------------------------------------- 1 | from .compose import Compose 2 | from .formating import (Collect, ImageToTensor, ToDataContainer, ToTensor, 3 | Transpose, to_tensor) 4 | from .loading import LoadAnnotations, LoadImageFromFile 5 | from .test_time_aug import MultiScaleFlipAug 6 | from .transforms import (AlignedResize, CLAHE, AdjustGamma, Normalize, Pad, 7 | PhotoMetricDistortion, RandomCrop, RandomFlip, 8 | RandomRotate, Rerange, Resize, RGB2Gray, SegRescale) 9 | 10 | __all__ = [ 11 | 'Compose', 'to_tensor', 'ToTensor', 'ImageToTensor', 'ToDataContainer', 12 | 'Transpose', 'Collect', 'LoadAnnotations', 'LoadImageFromFile', 13 | 'MultiScaleFlipAug', 'AlignedResize', 'Resize', 'RandomFlip', 'Pad', 'RandomCrop', 14 | 'Normalize', 'SegRescale', 'PhotoMetricDistortion', 'RandomRotate', 15 | 'AdjustGamma', 'CLAHE', 'Rerange', 'RGB2Gray' 16 | ] 17 | -------------------------------------------------------------------------------- /SegFormer/mmseg/__init__.py: -------------------------------------------------------------------------------- 1 | import mmcv 2 | 3 | from .version import __version__, version_info 4 | 5 | MMCV_MIN = '1.1.4' 6 | MMCV_MAX = '1.3.0' 7 | 8 | 9 | def digit_version(version_str): 10 | digit_version = [] 11 | for x in version_str.split('.'): 12 | if x.isdigit(): 13 | digit_version.append(int(x)) 14 | elif x.find('rc') != -1: 15 | patch_version = x.split('rc') 16 | digit_version.append(int(patch_version[0]) - 1) 17 | digit_version.append(int(patch_version[1])) 18 | return digit_version 19 | 20 | 21 | mmcv_min_version = digit_version(MMCV_MIN) 22 | mmcv_max_version = digit_version(MMCV_MAX) 23 | mmcv_version = digit_version(mmcv.__version__) 24 | 25 | 26 | assert (mmcv_min_version <= mmcv_version <= mmcv_max_version), \ 27 | f'MMCV=={mmcv.__version__} is used but incompatible. ' \ 28 | f'Please install mmcv>={mmcv_min_version}, <={mmcv_max_version}.' 29 | 30 | __all__ = ['__version__', 'version_info'] 31 | -------------------------------------------------------------------------------- /SegFormer/docs/index.rst: -------------------------------------------------------------------------------- 1 | Welcome to MMSegmenation's documentation! 2 | ======================================= 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | :caption: Get Started 7 | 8 | get_started.md 9 | 10 | .. toctree:: 11 | :maxdepth: 1 12 | :caption: Dataset Preparation 13 | 14 | dataset_prepare.md 15 | 16 | .. toctree:: 17 | :maxdepth: 1 18 | :caption: Model Zoo 19 | 20 | model_zoo.md 21 | modelzoo_statistics.md 22 | 23 | .. toctree:: 24 | :maxdepth: 2 25 | :caption: Quick Run 26 | 27 | train.md 28 | inference.md 29 | 30 | .. toctree:: 31 | :maxdepth: 2 32 | :caption: Tutorials 33 | 34 | tutorials/index.rst 35 | 36 | .. toctree:: 37 | :maxdepth: 2 38 | :caption: Useful Tools and Scripts 39 | 40 | useful_tools.md 41 | 42 | .. toctree:: 43 | :maxdepth: 2 44 | :caption: Notes 45 | 46 | changelog.md 47 | 48 | .. toctree:: 49 | :caption: API Reference 50 | 51 | api.rst 52 | 53 | Indices and tables 54 | ================== 55 | 56 | * :ref:`genindex` 57 | * :ref:`search` 58 | -------------------------------------------------------------------------------- /SegFormer/tests/test_inference.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | import mmcv 4 | 5 | from mmseg.apis import inference_segmentor, init_segmentor 6 | 7 | 8 | def test_test_time_augmentation_on_cpu(): 9 | config_file = 'configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py' 10 | config = mmcv.Config.fromfile(config_file) 11 | 12 | # Remove pretrain model download for testing 13 | config.model.pretrained = None 14 | # Replace SyncBN with BN to inference on CPU 15 | norm_cfg = dict(type='BN', requires_grad=True) 16 | config.model.backbone.norm_cfg = norm_cfg 17 | config.model.decode_head.norm_cfg = norm_cfg 18 | config.model.auxiliary_head.norm_cfg = norm_cfg 19 | 20 | # Enable test time augmentation 21 | config.data.test.pipeline[1].flip = True 22 | 23 | checkpoint_file = None 24 | model = init_segmentor(config, checkpoint_file, device='cpu') 25 | 26 | img = mmcv.imread( 27 | osp.join(osp.dirname(__file__), 'data/color.jpg'), 'color') 28 | result = inference_segmentor(model, img) 29 | assert result[0].shape == (288, 512) 30 | -------------------------------------------------------------------------------- /SegFormer/docs/api.rst: -------------------------------------------------------------------------------- 1 | API Reference 2 | ============== 3 | 4 | mmseg.apis 5 | -------------- 6 | .. automodule:: mmseg.apis 7 | :members: 8 | 9 | mmseg.core 10 | -------------- 11 | 12 | seg 13 | ^^^^^^^^^^ 14 | .. automodule:: mmseg.core.seg 15 | :members: 16 | 17 | evaluation 18 | ^^^^^^^^^^ 19 | .. automodule:: mmseg.core.evaluation 20 | :members: 21 | 22 | utils 23 | ^^^^^^^^^^ 24 | .. automodule:: mmseg.core.utils 25 | :members: 26 | 27 | mmseg.datasets 28 | -------------- 29 | 30 | datasets 31 | ^^^^^^^^^^ 32 | .. automodule:: mmseg.datasets 33 | :members: 34 | 35 | pipelines 36 | ^^^^^^^^^^ 37 | .. automodule:: mmseg.datasets.pipelines 38 | :members: 39 | 40 | mmseg.models 41 | -------------- 42 | 43 | segmentors 44 | ^^^^^^^^^^ 45 | .. automodule:: mmseg.models.segmentors 46 | :members: 47 | 48 | backbones 49 | ^^^^^^^^^^ 50 | .. automodule:: mmseg.models.backbones 51 | :members: 52 | 53 | decode_heads 54 | ^^^^^^^^^^^^ 55 | .. automodule:: mmseg.models.decode_heads 56 | :members: 57 | 58 | losses 59 | ^^^^^^^^^^ 60 | .. automodule:: mmseg.models.losses 61 | :members: 62 | -------------------------------------------------------------------------------- /SegFormer/tools/publish_model.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import subprocess 3 | 4 | import torch 5 | 6 | 7 | def parse_args(): 8 | parser = argparse.ArgumentParser( 9 | description='Process a checkpoint to be published') 10 | parser.add_argument('in_file', help='input checkpoint filename') 11 | parser.add_argument('out_file', help='output checkpoint filename') 12 | args = parser.parse_args() 13 | return args 14 | 15 | 16 | def process_checkpoint(in_file, out_file): 17 | checkpoint = torch.load(in_file, map_location='cpu') 18 | # remove optimizer for smaller file size 19 | if 'optimizer' in checkpoint: 20 | del checkpoint['optimizer'] 21 | # if it is necessary to remove some sensitive data in checkpoint['meta'], 22 | # add the code here. 23 | torch.save(checkpoint, out_file) 24 | sha = subprocess.check_output(['sha256sum', out_file]).decode() 25 | final_file = out_file.rstrip('.pth') + '-{}.pth'.format(sha[:8]) 26 | subprocess.Popen(['mv', out_file, final_file]) 27 | 28 | 29 | def main(): 30 | args = parse_args() 31 | process_checkpoint(args.in_file, args.out_file) 32 | 33 | 34 | if __name__ == '__main__': 35 | main() 36 | -------------------------------------------------------------------------------- /SegFormer/configs/point_rend/pointrend_r50_512x512_160k_ade20k.py: -------------------------------------------------------------------------------- 1 | _base_ = [ 2 | '../_base_/models/pointrend_r50.py', '../_base_/datasets/ade20k.py', 3 | '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py' 4 | ] 5 | norm_cfg = dict(type='SyncBN', requires_grad=True) 6 | model = dict(decode_head=[ 7 | dict( 8 | type='FPNHead', 9 | in_channels=[256, 256, 256, 256], 10 | in_index=[0, 1, 2, 3], 11 | feature_strides=[4, 8, 16, 32], 12 | channels=128, 13 | dropout_ratio=-1, 14 | num_classes=150, 15 | norm_cfg=norm_cfg, 16 | align_corners=False, 17 | loss_decode=dict( 18 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 19 | dict( 20 | type='PointHead', 21 | in_channels=[256], 22 | in_index=[0], 23 | channels=256, 24 | num_fcs=3, 25 | coarse_pred_each_layer=True, 26 | dropout_ratio=-1, 27 | num_classes=150, 28 | align_corners=False, 29 | loss_decode=dict( 30 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)) 31 | ]) 32 | lr_config = dict(warmup='linear', warmup_iters=200) 33 | -------------------------------------------------------------------------------- /SegFormer/mmseg/models/decode_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .ann_head import ANNHead 2 | from .apc_head import APCHead 3 | from .aspp_head import ASPPHead 4 | from .cc_head import CCHead 5 | from .da_head import DAHead 6 | from .dm_head import DMHead 7 | from .dnl_head import DNLHead 8 | from .ema_head import EMAHead 9 | from .enc_head import EncHead 10 | from .fcn_head import FCNHead 11 | from .fpn_head import FPNHead 12 | from .gc_head import GCHead 13 | from .lraspp_head import LRASPPHead 14 | from .nl_head import NLHead 15 | from .ocr_head import OCRHead 16 | from .point_head import PointHead 17 | from .psa_head import PSAHead 18 | from .psp_head import PSPHead 19 | from .sep_aspp_head import DepthwiseSeparableASPPHead 20 | from .sep_fcn_head import DepthwiseSeparableFCNHead 21 | from .uper_head import UPerHead 22 | 23 | 24 | from .segformer_head import SegFormerHead 25 | 26 | __all__ = [ 27 | 'FCNHead', 'PSPHead', 'ASPPHead', 'PSAHead', 'NLHead', 'GCHead', 'CCHead', 28 | 'UPerHead', 'DepthwiseSeparableASPPHead', 'ANNHead', 'DAHead', 'OCRHead', 29 | 'EncHead', 'DepthwiseSeparableFCNHead', 'FPNHead', 'EMAHead', 'DNLHead', 30 | 'PointHead', 'APCHead', 'DMHead', 'LRASPPHead', 31 | 'SegFormerHead', 32 | ] 33 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/__init__.py: -------------------------------------------------------------------------------- 1 | from .ade import ADE20KDataset 2 | from .msd import MSDDataset 3 | from .msd_marked import MSDMarkedDataset 4 | from .msd_balanced import MSDBalancedDataset 5 | from .msd_lungs_balanced import MSDLungsBalancedDataset 6 | from .builder import DATASETS, PIPELINES, build_dataloader, build_dataset 7 | from .chase_db1 import ChaseDB1Dataset 8 | from .cityscapes import CityscapesDataset 9 | from .custom import CustomDataset 10 | from .dataset_wrappers import ConcatDataset, RepeatDataset 11 | from .drive import DRIVEDataset 12 | from .hrf import HRFDataset 13 | from .pascal_context import PascalContextDataset 14 | from .stare import STAREDataset 15 | from .voc import PascalVOCDataset 16 | from .mapillary import MapillaryDataset 17 | from .cocostuff import CocoStuff 18 | 19 | __all__ = [ 20 | 'CustomDataset', 'build_dataloader', 'ConcatDataset', 'RepeatDataset', 21 | 'DATASETS', 'build_dataset', 'PIPELINES', 'CityscapesDataset', 22 | 'PascalVOCDataset', 'ADE20KDataset', 'PascalContextDataset', 23 | 'ChaseDB1Dataset', 'DRIVEDataset', 'HRFDataset', 'STAREDataset', 'MapillaryDataset', 'CocoStuff', 24 | 'MSDDataset', 'MSDMarkedDataset', 'MSDBalancedDataset', 'MSDLungsBalancedDataset' 25 | ] 26 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/models/fpn_r50.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | pretrained='open-mmlab://resnet50_v1c', 6 | backbone=dict( 7 | type='ResNetV1c', 8 | depth=50, 9 | num_stages=4, 10 | out_indices=(0, 1, 2, 3), 11 | dilations=(1, 1, 1, 1), 12 | strides=(1, 2, 2, 2), 13 | norm_cfg=norm_cfg, 14 | norm_eval=False, 15 | style='pytorch', 16 | contract_dilation=True), 17 | neck=dict( 18 | type='FPN', 19 | in_channels=[256, 512, 1024, 2048], 20 | out_channels=256, 21 | num_outs=4), 22 | decode_head=dict( 23 | type='FPNHead', 24 | in_channels=[256, 256, 256, 256], 25 | in_index=[0, 1, 2, 3], 26 | feature_strides=[4, 8, 16, 32], 27 | channels=128, 28 | dropout_ratio=0.1, 29 | num_classes=19, 30 | norm_cfg=norm_cfg, 31 | align_corners=False, 32 | loss_decode=dict( 33 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 34 | # model training and testing settings 35 | train_cfg=dict(), 36 | test_cfg=dict(mode='whole')) 37 | -------------------------------------------------------------------------------- /SegFormer/local_configs/_base_/models/fpn_r50.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | pretrained='open-mmlab://resnet50_v1c', 6 | backbone=dict( 7 | type='ResNetV1c', 8 | depth=50, 9 | num_stages=4, 10 | out_indices=(0, 1, 2, 3), 11 | dilations=(1, 1, 1, 1), 12 | strides=(1, 2, 2, 2), 13 | norm_cfg=norm_cfg, 14 | norm_eval=False, 15 | style='pytorch', 16 | contract_dilation=True), 17 | neck=dict( 18 | type='FPN', 19 | in_channels=[256, 512, 1024, 2048], 20 | out_channels=256, 21 | num_outs=4), 22 | decode_head=dict( 23 | type='FPNHead', 24 | in_channels=[256, 256, 256, 256], 25 | in_index=[0, 1, 2, 3], 26 | feature_strides=[4, 8, 16, 32], 27 | channels=128, 28 | dropout_ratio=0.1, 29 | num_classes=19, 30 | norm_cfg=norm_cfg, 31 | align_corners=False, 32 | loss_decode=dict( 33 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 34 | # model training and testing settings 35 | train_cfg=dict(), 36 | test_cfg=dict(mode='whole')) 37 | -------------------------------------------------------------------------------- /SegFormer/mmseg/datasets/voc.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class PascalVOCDataset(CustomDataset): 9 | """Pascal VOC dataset. 10 | 11 | Args: 12 | split (str): Split txt file for Pascal VOC. 13 | """ 14 | 15 | CLASSES = ('background', 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 16 | 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 17 | 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 18 | 'train', 'tvmonitor') 19 | 20 | PALETTE = [[0, 0, 0], [128, 0, 0], [0, 128, 0], [128, 128, 0], [0, 0, 128], 21 | [128, 0, 128], [0, 128, 128], [128, 128, 128], [64, 0, 0], 22 | [192, 0, 0], [64, 128, 0], [192, 128, 0], [64, 0, 128], 23 | [192, 0, 128], [64, 128, 128], [192, 128, 128], [0, 64, 0], 24 | [128, 64, 0], [0, 192, 0], [128, 192, 0], [0, 64, 128]] 25 | 26 | def __init__(self, split, **kwargs): 27 | super(PascalVOCDataset, self).__init__( 28 | img_suffix='.jpg', seg_map_suffix='.png', split=split, **kwargs) 29 | assert osp.exists(self.img_dir) and self.split is not None 30 | -------------------------------------------------------------------------------- /SegFormer/configs/_base_/models/cgnet.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', eps=1e-03, requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | backbone=dict( 6 | type='CGNet', 7 | norm_cfg=norm_cfg, 8 | in_channels=3, 9 | num_channels=(32, 64, 128), 10 | num_blocks=(3, 21), 11 | dilations=(2, 4), 12 | reductions=(8, 16)), 13 | decode_head=dict( 14 | type='FCNHead', 15 | in_channels=256, 16 | in_index=2, 17 | channels=256, 18 | num_convs=0, 19 | concat_input=False, 20 | dropout_ratio=0, 21 | num_classes=19, 22 | norm_cfg=norm_cfg, 23 | loss_decode=dict( 24 | type='CrossEntropyLoss', 25 | use_sigmoid=False, 26 | loss_weight=1.0, 27 | class_weight=[ 28 | 2.5959933, 6.7415504, 3.5354059, 9.8663225, 9.690899, 9.369352, 29 | 10.289121, 9.953208, 4.3097677, 9.490387, 7.674431, 9.396905, 30 | 10.347791, 6.3927646, 10.226669, 10.241062, 10.280587, 31 | 10.396974, 10.055647 32 | ])), 33 | # model training and testing settings 34 | train_cfg=dict(sampler=None), 35 | test_cfg=dict(mode='whole')) 36 | --------------------------------------------------------------------------------