├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ └── bug-report.md └── pictures │ └── alipay.JPG ├── .gitignore ├── .readthedocs.yaml ├── CITATION.cff ├── LICENSE ├── Makefile ├── README.md ├── docs ├── AdvancedAPI.md ├── Citations.md ├── FQA.md ├── GetStarted.md ├── Makefile ├── ModelZoo.md ├── QuickRun.md ├── Tutorials.md ├── conf.py ├── index.rst ├── logo.png ├── make.bat ├── modelzoo │ ├── annnet │ │ └── README.md │ ├── apcnet │ │ └── README.md │ ├── beit │ │ └── README.md │ ├── bisenetv1 │ │ └── README.md │ ├── bisenetv2 │ │ └── README.md │ ├── ccnet │ │ └── README.md │ ├── ce2p │ │ └── README.md │ ├── cgnet │ │ └── README.md │ ├── convnext │ │ └── README.md │ ├── convnextv2 │ │ └── README.md │ ├── danet │ │ └── README.md │ ├── deeplabv3 │ │ └── README.md │ ├── deeplabv3plus │ │ └── README.md │ ├── dmnet │ │ └── README.md │ ├── dnlnet │ │ └── README.md │ ├── edgesam │ │ └── README.md │ ├── emanet │ │ └── README.md │ ├── encnet │ │ └── README.md │ ├── erfnet │ │ └── README.md │ ├── fastfcn │ │ └── README.md │ ├── fastscnn │ │ └── README.md │ ├── fcn │ │ └── README.md │ ├── fp16 │ │ └── README.md │ ├── gcnet │ │ └── README.md │ ├── icnet │ │ └── README.md │ ├── idrnet │ │ └── README.md │ ├── isanet │ │ └── README.md │ ├── isnet │ │ └── README.md │ ├── mae │ │ └── README.md │ ├── mask2former │ │ └── README.md │ ├── maskformer │ │ └── README.md │ ├── mcibi │ │ └── README.md │ ├── mcibiplusplus │ │ └── README.md │ ├── mobilenet │ │ └── README.md │ ├── mobilesam │ │ └── README.md │ ├── mobilevit │ │ └── README.md │ ├── nonlocalnet │ │ └── README.md │ ├── ocrnet │ │ └── README.md │ ├── pointrend │ │ └── README.md │ ├── psanet │ │ └── README.md │ ├── pspnet │ │ └── README.md │ ├── resnest │ │ └── README.md │ ├── sam │ │ └── README.md │ ├── samhq │ │ └── README.md │ ├── samv2 │ │ └── README.md │ ├── segformer │ │ └── README.md │ ├── semanticfpn │ │ └── README.md │ ├── setr │ │ └── README.md │ ├── swin │ │ └── README.md │ ├── twins │ │ └── README.md │ ├── unet │ │ └── README.md │ └── upernet │ │ └── README.md └── requirements.txt ├── examples └── samv2 │ ├── image │ ├── automaticmaskgeneration.py │ ├── automaticmaskgenerationoptions.py │ ├── batchedpromptinputs.py │ ├── combiningpointsandboxes.py │ ├── endtoendbatchedinference1.py │ ├── endtoendbatchedinference2.py │ ├── selectingobjectswithsamv2.py │ ├── specifyingaspecificobjectwithabox.py │ ├── specifyingaspecificobjectwithadditionalpoints1.py │ └── specifyingaspecificobjectwithadditionalpoints2.py │ └── video │ ├── segmentmultipleobjectssimultaneously_step1.py │ ├── segmentmultipleobjectssimultaneously_step2.py │ ├── segmenttrackoneobject_step1.py │ ├── segmenttrackoneobject_step2.py │ ├── segmenttrackoneobject_step3.py │ ├── segmenttrackoneobject_step4.py │ └── segmenttrackoneobject_step5.py ├── requirements.txt ├── requirements ├── basic.txt ├── optional.txt └── torch.txt ├── scripts ├── aml_test.sh ├── aml_train.sh ├── ckpts │ ├── check_ckpts_available_in_modelzoo.py │ ├── clean_ckpts_for_publish.py │ └── download_pretrained_weights.py ├── collect_env.py ├── dist_test.sh ├── dist_train.sh ├── inference.sh ├── prepare_datasets.sh ├── slurm_test.sh └── slurm_train.sh ├── setup.py └── ssseg ├── __init__.py ├── configs ├── _base_ │ ├── __init__.py │ ├── dataloaders │ │ ├── __init__.py │ │ ├── default_dataloader.py │ │ ├── default_dataloader_bs16.py │ │ ├── default_dataloader_bs32.py │ │ ├── default_dataloader_bs40.py │ │ ├── default_dataloader_bs64.py │ │ └── default_dataloader_bs8.py │ ├── datasets │ │ ├── __init__.py │ │ ├── ade20k_512x512.py │ │ ├── ade20k_640x640.py │ │ ├── atr_473x473.py │ │ ├── chasedb1_128x128.py │ │ ├── cihp_473x473.py │ │ ├── cityscapes_1024x1024.py │ │ ├── cityscapes_512x1024.py │ │ ├── cityscapes_832x832.py │ │ ├── cocostuff10k_512x512.py │ │ ├── cocostuff10k_640x640.py │ │ ├── cocovocsub_512x512.py │ │ ├── cocovocsub_mobilevit_512x512.py │ │ ├── default_dataset.py │ │ ├── drive_64x64.py │ │ ├── hrf_256x256.py │ │ ├── lip_473x473.py │ │ ├── pascalcontext59_480x480.py │ │ ├── pascalcontext59_640x640.py │ │ ├── pascalcontext_480x480.py │ │ ├── stare_128x128.py │ │ ├── vocaug_512x512.py │ │ ├── vocaug_mobilevit_512x512.py │ │ └── vspw_512x512.py │ └── segmentors │ │ ├── __init__.py │ │ ├── annnet.py │ │ ├── apcnet.py │ │ ├── beit.py │ │ ├── bisenetv1.py │ │ ├── bisenetv2.py │ │ ├── ccnet.py │ │ ├── ce2p.py │ │ ├── cgnet.py │ │ ├── convnext.py │ │ ├── danet.py │ │ ├── deeplabv3.py │ │ ├── deeplabv3plus.py │ │ ├── default_segmentor.py │ │ ├── dmnet.py │ │ ├── dnlnet.py │ │ ├── emanet.py │ │ ├── encnet.py │ │ ├── erfnet.py │ │ ├── fastfcn.py │ │ ├── fastscnn.py │ │ ├── fcn.py │ │ ├── fp16.py │ │ ├── gcnet.py │ │ ├── icnet.py │ │ ├── idrnet.py │ │ ├── isanet.py │ │ ├── isnet.py │ │ ├── lrasppnet.py │ │ ├── mae.py │ │ ├── mask2former.py │ │ ├── maskformer.py │ │ ├── mcibi.py │ │ ├── mcibiplusplus.py │ │ ├── mobilenetv2.py │ │ ├── mobilevit.py │ │ ├── mobilevitv2.py │ │ ├── nonlocalnet.py │ │ ├── ocrnet.py │ │ ├── pointrend.py │ │ ├── psanet.py │ │ ├── pspnet.py │ │ ├── resnest.py │ │ ├── segformer.py │ │ ├── semanticfpn.py │ │ ├── setr.py │ │ ├── swin.py │ │ ├── twins.py │ │ ├── unet.py │ │ └── upernet.py ├── annnet │ ├── annnet_resnet101os16_ade20k.py │ ├── annnet_resnet101os16_cityscapes.py │ ├── annnet_resnet101os16_voc.py │ ├── annnet_resnet101os8_ade20k.py │ ├── annnet_resnet101os8_cityscapes.py │ ├── annnet_resnet101os8_voc.py │ ├── annnet_resnet50os16_ade20k.py │ ├── annnet_resnet50os16_cityscapes.py │ ├── annnet_resnet50os16_voc.py │ ├── annnet_resnet50os8_ade20k.py │ ├── annnet_resnet50os8_cityscapes.py │ └── annnet_resnet50os8_voc.py ├── apcnet │ ├── apcnet_resnet101os16_ade20k.py │ ├── apcnet_resnet101os16_cityscapes.py │ ├── apcnet_resnet101os16_voc.py │ ├── apcnet_resnet101os8_ade20k.py │ ├── apcnet_resnet101os8_cityscapes.py │ ├── apcnet_resnet101os8_voc.py │ ├── apcnet_resnet50os16_ade20k.py │ ├── apcnet_resnet50os16_cityscapes.py │ ├── apcnet_resnet50os16_voc.py │ ├── apcnet_resnet50os8_ade20k.py │ ├── apcnet_resnet50os8_cityscapes.py │ └── apcnet_resnet50os8_voc.py ├── beit │ ├── upernet_beitbase_ade20k.py │ └── upernet_beitlarge_ade20k.py ├── bisenetv1 │ ├── fcn_bisenetv1_resnet18os32_cityscapes.py │ └── fcn_bisenetv1_resnet50os32_cityscapes.py ├── bisenetv2 │ ├── fcn_bisenetv2_apexfp16_cityscapes.py │ └── fcn_bisenetv2_cityscapes.py ├── ccnet │ ├── ccnet_resnet101os16_ade20k.py │ ├── ccnet_resnet101os16_cityscapes.py │ ├── ccnet_resnet101os16_voc.py │ ├── ccnet_resnet101os8_ade20k.py │ ├── ccnet_resnet101os8_cityscapes.py │ ├── ccnet_resnet101os8_voc.py │ ├── ccnet_resnet50os16_ade20k.py │ ├── ccnet_resnet50os16_cityscapes.py │ ├── ccnet_resnet50os16_voc.py │ ├── ccnet_resnet50os8_ade20k.py │ ├── ccnet_resnet50os8_cityscapes.py │ └── ccnet_resnet50os8_voc.py ├── ce2p │ ├── ce2p_resnet101os16_atr.py │ ├── ce2p_resnet101os16_cihp.py │ ├── ce2p_resnet101os16_lip.py │ ├── ce2p_resnet101os16_voc.py │ ├── ce2p_resnet101os8_atr.py │ ├── ce2p_resnet101os8_cihp.py │ ├── ce2p_resnet101os8_lip.py │ ├── ce2p_resnet101os8_voc.py │ ├── ce2p_resnet50os16_atr.py │ ├── ce2p_resnet50os16_cihp.py │ ├── ce2p_resnet50os16_lip.py │ ├── ce2p_resnet50os16_voc.py │ ├── ce2p_resnet50os8_atr.py │ ├── ce2p_resnet50os8_cihp.py │ ├── ce2p_resnet50os8_lip.py │ └── ce2p_resnet50os8_voc.py ├── cgnet │ └── fcn_cgnetm3n21_cityscapes.py ├── convnext │ ├── upernet_convnextbase21k_ade20k.py │ ├── upernet_convnextbase_ade20k.py │ ├── upernet_convnextlarge21k_ade20k.py │ ├── upernet_convnextsmall_ade20k.py │ ├── upernet_convnexttiny_ade20k.py │ └── upernet_convnextxlarge21k_ade20k.py ├── danet │ ├── danet_resnet101os16_ade20k.py │ ├── danet_resnet101os16_cityscapes.py │ ├── danet_resnet101os16_voc.py │ ├── danet_resnet101os8_ade20k.py │ ├── danet_resnet101os8_cityscapes.py │ ├── danet_resnet101os8_voc.py │ ├── danet_resnet50os16_ade20k.py │ ├── danet_resnet50os16_cityscapes.py │ ├── danet_resnet50os16_voc.py │ ├── danet_resnet50os8_ade20k.py │ ├── danet_resnet50os8_cityscapes.py │ └── danet_resnet50os8_voc.py ├── deeplabv3 │ ├── deeplabv3_resnet101os16_ade20k.py │ ├── deeplabv3_resnet101os16_cityscapes.py │ ├── deeplabv3_resnet101os16_voc.py │ ├── deeplabv3_resnet101os8_ade20k.py │ ├── deeplabv3_resnet101os8_cityscapes.py │ ├── deeplabv3_resnet101os8_pascalcontext.py │ ├── deeplabv3_resnet101os8_pascalcontext59.py │ ├── deeplabv3_resnet101os8_voc.py │ ├── deeplabv3_resnet50os16_ade20k.py │ ├── deeplabv3_resnet50os16_cityscapes.py │ ├── deeplabv3_resnet50os16_voc.py │ ├── deeplabv3_resnet50os8_ade20k.py │ ├── deeplabv3_resnet50os8_cityscapes.py │ ├── deeplabv3_resnet50os8_pascalcontext.py │ ├── deeplabv3_resnet50os8_pascalcontext59.py │ └── deeplabv3_resnet50os8_voc.py ├── deeplabv3plus │ ├── deeplabv3plus_resnet101os16_ade20k.py │ ├── deeplabv3plus_resnet101os16_cityscapes.py │ ├── deeplabv3plus_resnet101os16_voc.py │ ├── deeplabv3plus_resnet101os8_ade20k.py │ ├── deeplabv3plus_resnet101os8_cityscapes.py │ ├── deeplabv3plus_resnet101os8_voc.py │ ├── deeplabv3plus_resnet50os16_ade20k.py │ ├── deeplabv3plus_resnet50os16_cityscapes.py │ ├── deeplabv3plus_resnet50os16_voc.py │ ├── deeplabv3plus_resnet50os8_ade20k.py │ ├── deeplabv3plus_resnet50os8_cityscapes.py │ └── deeplabv3plus_resnet50os8_voc.py ├── dmnet │ ├── dmnet_resnet101os16_ade20k.py │ ├── dmnet_resnet101os16_cityscapes.py │ ├── dmnet_resnet101os16_voc.py │ ├── dmnet_resnet101os8_ade20k.py │ ├── dmnet_resnet101os8_cityscapes.py │ ├── dmnet_resnet101os8_voc.py │ ├── dmnet_resnet50os16_ade20k.py │ ├── dmnet_resnet50os16_cityscapes.py │ ├── dmnet_resnet50os16_voc.py │ ├── dmnet_resnet50os8_ade20k.py │ ├── dmnet_resnet50os8_cityscapes.py │ └── dmnet_resnet50os8_voc.py ├── dnlnet │ ├── dnlnet_resnet101os16_ade20k.py │ ├── dnlnet_resnet101os16_cityscapes.py │ ├── dnlnet_resnet101os16_voc.py │ ├── dnlnet_resnet101os8_ade20k.py │ ├── dnlnet_resnet101os8_cityscapes.py │ ├── dnlnet_resnet101os8_voc.py │ ├── dnlnet_resnet50os16_ade20k.py │ ├── dnlnet_resnet50os16_cityscapes.py │ ├── dnlnet_resnet50os16_voc.py │ ├── dnlnet_resnet50os8_ade20k.py │ ├── dnlnet_resnet50os8_cityscapes.py │ └── dnlnet_resnet50os8_voc.py ├── emanet │ ├── emanet_resnet101os16_ade20k.py │ ├── emanet_resnet101os16_cityscapes.py │ ├── emanet_resnet101os16_voc.py │ ├── emanet_resnet101os8_ade20k.py │ ├── emanet_resnet101os8_cityscapes.py │ ├── emanet_resnet101os8_voc.py │ ├── emanet_resnet50os16_ade20k.py │ ├── emanet_resnet50os16_cityscapes.py │ ├── emanet_resnet50os16_voc.py │ ├── emanet_resnet50os8_ade20k.py │ ├── emanet_resnet50os8_cityscapes.py │ └── emanet_resnet50os8_voc.py ├── encnet │ ├── encnet_resnet101os16_ade20k.py │ ├── encnet_resnet101os16_cityscapes.py │ ├── encnet_resnet101os16_voc.py │ ├── encnet_resnet101os8_ade20k.py │ ├── encnet_resnet101os8_cityscapes.py │ ├── encnet_resnet101os8_voc.py │ ├── encnet_resnet50os16_ade20k.py │ ├── encnet_resnet50os16_cityscapes.py │ ├── encnet_resnet50os16_voc.py │ ├── encnet_resnet50os8_ade20k.py │ ├── encnet_resnet50os8_cityscapes.py │ └── encnet_resnet50os8_voc.py ├── erfnet │ └── fcn_erfnet_cityscapes.py ├── fastfcn │ ├── fastfcn_deeplabv3_resnet50os32_cityscapes.py │ ├── fastfcn_encnet_resnet50os32_cityscapes.py │ └── fastfcn_pspnet_resnet50os32_cityscapes.py ├── fastscnn │ └── depthwiseseparablefcn_fastscnn_cityscapes.py ├── fcn │ ├── fcn_resnet101os16_ade20k.py │ ├── fcn_resnet101os16_cityscapes.py │ ├── fcn_resnet101os16_voc.py │ ├── fcn_resnet101os8_ade20k.py │ ├── fcn_resnet101os8_cityscapes.py │ ├── fcn_resnet101os8_voc.py │ ├── fcn_resnet50os16_ade20k.py │ ├── fcn_resnet50os16_cityscapes.py │ ├── fcn_resnet50os16_voc.py │ ├── fcn_resnet50os8_ade20k.py │ ├── fcn_resnet50os8_cityscapes.py │ └── fcn_resnet50os8_voc.py ├── fp16 │ ├── deeplabv3_resnet50os8_apexfp16_ade20k.py │ ├── deeplabv3plus_resnet50os8_apexfp16_ade20k.py │ ├── fcn_resnet50os8_apexfp16_ade20k.py │ └── pspnet_resnet50os8_apexfp16_ade20k.py ├── gcnet │ ├── gcnet_resnet101os16_ade20k.py │ ├── gcnet_resnet101os16_cityscapes.py │ ├── gcnet_resnet101os16_voc.py │ ├── gcnet_resnet101os8_ade20k.py │ ├── gcnet_resnet101os8_cityscapes.py │ ├── gcnet_resnet101os8_voc.py │ ├── gcnet_resnet50os16_ade20k.py │ ├── gcnet_resnet50os16_cityscapes.py │ ├── gcnet_resnet50os16_voc.py │ ├── gcnet_resnet50os8_ade20k.py │ ├── gcnet_resnet50os8_cityscapes.py │ └── gcnet_resnet50os8_voc.py ├── icnet │ ├── icnet_resnet101os8_cityscapes.py │ └── icnet_resnet50os8_cityscapes.py ├── idrnet │ ├── idrnet_aspp_resnet50os8_ade20k.py │ ├── idrnet_aspp_resnet50os8_cityscapes.py │ ├── idrnet_aspp_resnet50os8_cocostuff10k.py │ ├── idrnet_aspp_resnet50os8_lip.py │ ├── idrnet_fcn_resnet50os8_ade20k.py │ ├── idrnet_fcn_resnet50os8_cityscapes.py │ ├── idrnet_fcn_resnet50os8_cocostuff10k.py │ ├── idrnet_fcn_resnet50os8_lip.py │ ├── idrnet_ppm_resnet50os8_ade20k.py │ ├── idrnet_ppm_resnet50os8_cityscapes.py │ ├── idrnet_ppm_resnet50os8_cocostuff10k.py │ ├── idrnet_ppm_resnet50os8_lip.py │ ├── idrnet_upernet_resnet50os8_ade20k.py │ ├── idrnet_upernet_resnet50os8_cityscapes.py │ ├── idrnet_upernet_resnet50os8_cocostuff10k.py │ ├── idrnet_upernet_resnet50os8_lip.py │ ├── idrnet_upernet_swinlarge_ade20k.py │ ├── idrnet_upernet_swinlarge_cocostuff10k.py │ ├── idrnet_upernet_swinlarge_lip.py │ └── idrnet_upernet_swinlarge_pascalcontext59.py ├── isanet │ ├── isanet_resnet101os8_ade20k.py │ ├── isanet_resnet101os8_cityscapes.py │ ├── isanet_resnet101os8_voc.py │ ├── isanet_resnet50os8_ade20k.py │ ├── isanet_resnet50os8_cityscapes.py │ └── isanet_resnet50os8_voc.py ├── isnet │ ├── isnet_resnest101os8_ade20k.py │ ├── isnet_resnest101os8_cityscapes.py │ ├── isnet_resnest101os8_cocostuff10k.py │ ├── isnet_resnest101os8_lip.py │ ├── isnet_resnet101os8_ade20k.py │ ├── isnet_resnet101os8_cityscapes.py │ ├── isnet_resnet101os8_cocostuff10k.py │ ├── isnet_resnet101os8_lip.py │ ├── isnet_resnet50os8_ade20k.py │ ├── isnet_resnet50os8_cityscapes.py │ ├── isnet_resnet50os8_cocostuff10k.py │ └── isnet_resnet50os8_lip.py ├── lrasppnet │ ├── lrasppnet_mobilenetv3los8_ade20k.py │ ├── lrasppnet_mobilenetv3los8_cityscapes.py │ ├── lrasppnet_mobilenetv3los8_voc.py │ ├── lrasppnet_mobilenetv3sos8_ade20k.py │ ├── lrasppnet_mobilenetv3sos8_cityscapes.py │ └── lrasppnet_mobilenetv3sos8_voc.py ├── mae │ └── upernet_maevitbase_ade20k.py ├── mask2former │ ├── mask2former_swinbase_ade20k.py │ ├── mask2former_swinbase_cityscapes.py │ ├── mask2former_swinlarge_ade20k.py │ ├── mask2former_swinlarge_cityscapes.py │ ├── mask2former_swinsmall_ade20k.py │ ├── mask2former_swinsmall_cityscapes.py │ ├── mask2former_swintiny_ade20k.py │ └── mask2former_swintiny_cityscapes.py ├── maskformer │ ├── maskformer_swinbase_ade20k.py │ ├── maskformer_swinsmall_ade20k.py │ └── maskformer_swintiny_ade20k.py ├── mcibi │ ├── mcibi_deeplabv3_hrnetv2w48_ade20k.py │ ├── mcibi_deeplabv3_hrnetv2w48_cityscapes.py │ ├── mcibi_deeplabv3_hrnetv2w48_cocostuff10k.py │ ├── mcibi_deeplabv3_hrnetv2w48_lip.py │ ├── mcibi_deeplabv3_resnest101os8_ade20k.py │ ├── mcibi_deeplabv3_resnest101os8_cityscapes.py │ ├── mcibi_deeplabv3_resnest101os8_cocostuff10k.py │ ├── mcibi_deeplabv3_resnest101os8_lip.py │ ├── mcibi_deeplabv3_resnet101os8_ade20k.py │ ├── mcibi_deeplabv3_resnet101os8_cityscapes.py │ ├── mcibi_deeplabv3_resnet101os8_cocostuff10k.py │ ├── mcibi_deeplabv3_resnet101os8_lip.py │ ├── mcibi_deeplabv3_resnet50os8_ade20k.py │ ├── mcibi_deeplabv3_resnet50os8_cityscapes.py │ ├── mcibi_deeplabv3_resnet50os8_cocostuff10k.py │ ├── mcibi_deeplabv3_resnet50os8_lip.py │ ├── mcibi_deeplabv3_vitlarge_ade20k.py │ └── mcibi_deeplabv3_vitlarge_cocostuff10k.py ├── mcibiplusplus │ ├── mcibiplusplus_aspp_hrnetv2w48_cityscapes.py │ ├── mcibiplusplus_aspp_hrnetv2w48_lip.py │ ├── mcibiplusplus_aspp_resnest101os8_cityscapes.py │ ├── mcibiplusplus_aspp_resnet101os8_cityscapes.py │ ├── mcibiplusplus_aspp_resnet50os8_ade20k.py │ ├── mcibiplusplus_aspp_resnet50os8_cityscapes.py │ ├── mcibiplusplus_aspp_resnet50os8_cocostuff10k.py │ ├── mcibiplusplus_aspp_resnet50os8_lip.py │ ├── mcibiplusplus_ppm_resnet50os8_ade20k.py │ ├── mcibiplusplus_ppm_resnet50os8_cityscapes.py │ ├── mcibiplusplus_ppm_resnet50os8_cocostuff10k.py │ ├── mcibiplusplus_ppm_resnet50os8_lip.py │ ├── mcibiplusplus_resnet50os8_ade20k.py │ ├── mcibiplusplus_resnet50os8_cityscapes.py │ ├── mcibiplusplus_resnet50os8_cocostuff10k.py │ ├── mcibiplusplus_resnet50os8_lip.py │ ├── mcibiplusplus_upernet_resnest101os8_ade20k.py │ ├── mcibiplusplus_upernet_resnest101os8_cocostuff10k.py │ ├── mcibiplusplus_upernet_resnest101os8_lip.py │ ├── mcibiplusplus_upernet_resnest101os8_pascalcontext59.py │ ├── mcibiplusplus_upernet_resnet101os8_ade20k.py │ ├── mcibiplusplus_upernet_resnet101os8_cocostuff10k.py │ ├── mcibiplusplus_upernet_resnet101os8_lip.py │ ├── mcibiplusplus_upernet_resnet101os8_pascalcontext59.py │ ├── mcibiplusplus_upernet_resnet101os8_voc.py │ ├── mcibiplusplus_upernet_resnet101os8_vspw.py │ ├── mcibiplusplus_upernet_resnet50os8_ade20k.py │ ├── mcibiplusplus_upernet_resnet50os8_cityscapes.py │ ├── mcibiplusplus_upernet_resnet50os8_cocostuff10k.py │ ├── mcibiplusplus_upernet_resnet50os8_lip.py │ ├── mcibiplusplus_upernet_resnet50os8_voc.py │ ├── mcibiplusplus_upernet_resnet50os8_vspw.py │ ├── mcibiplusplus_upernet_swinlarge_ade20k.py │ ├── mcibiplusplus_upernet_swinlarge_cocostuff10k.py │ ├── mcibiplusplus_upernet_swinlarge_lip.py │ ├── mcibiplusplus_upernet_swinlarge_pascalcontext59.py │ └── mcibiplusplus_upernet_swinlarge_vspw.py ├── mobilenetv2 │ ├── deeplabv3_mobilenetv2os8_ade20k.py │ ├── deeplabv3_mobilenetv2os8_cityscapes.py │ ├── deeplabv3_mobilenetv2os8_voc.py │ ├── deeplabv3plus_mobilenetv2os8_ade20k.py │ ├── deeplabv3plus_mobilenetv2os8_cityscapes.py │ ├── deeplabv3plus_mobilenetv2os8_voc.py │ ├── fcn_mobilenetv2os8_ade20k.py │ ├── fcn_mobilenetv2os8_cityscapes.py │ ├── fcn_mobilenetv2os8_voc.py │ ├── pspnet_mobilenetv2os8_ade20k.py │ ├── pspnet_mobilenetv2os8_cityscapes.py │ └── pspnet_mobilenetv2os8_voc.py ├── mobilevit │ └── deeplabv3_mobilevits_voc-cocosubvoc.py ├── mobilevitv2 │ ├── deeplabv3_mobilevitv2050_voc-cocosubvoc.py │ └── deeplabv3_mobilevitv2100_voc-cocosubvoc.py ├── nonlocalnet │ ├── nonlocalnet_resnet101os16_ade20k.py │ ├── nonlocalnet_resnet101os16_cityscapes.py │ ├── nonlocalnet_resnet101os16_voc.py │ ├── nonlocalnet_resnet101os8_ade20k.py │ ├── nonlocalnet_resnet101os8_cityscapes.py │ ├── nonlocalnet_resnet101os8_voc.py │ ├── nonlocalnet_resnet50os16_ade20k.py │ ├── nonlocalnet_resnet50os16_cityscapes.py │ ├── nonlocalnet_resnet50os16_voc.py │ ├── nonlocalnet_resnet50os8_ade20k.py │ ├── nonlocalnet_resnet50os8_cityscapes.py │ └── nonlocalnet_resnet50os8_voc.py ├── ocrnet │ ├── ocrnet_hrnetv2w18_ade20k.py │ ├── ocrnet_hrnetv2w18_cityscapes.py │ ├── ocrnet_hrnetv2w18_voc.py │ ├── ocrnet_hrnetv2w18s_ade20k.py │ ├── ocrnet_hrnetv2w18s_cityscapes.py │ ├── ocrnet_hrnetv2w18s_voc.py │ ├── ocrnet_hrnetv2w48_ade20k.py │ ├── ocrnet_hrnetv2w48_cityscapes.py │ ├── ocrnet_hrnetv2w48_voc.py │ ├── ocrnet_resnet101os8_ade20k.py │ ├── ocrnet_resnet101os8_cityscapes.py │ ├── ocrnet_resnet101os8_voc.py │ ├── ocrnet_resnet50os8_ade20k.py │ ├── ocrnet_resnet50os8_cityscapes.py │ └── ocrnet_resnet50os8_voc.py ├── pointrend │ ├── pointrend_resnet101os32_ade20k.py │ ├── pointrend_resnet101os32_cityscapes.py │ ├── pointrend_resnet101os32_voc.py │ ├── pointrend_resnet50os32_ade20k.py │ ├── pointrend_resnet50os32_cityscapes.py │ └── pointrend_resnet50os32_voc.py ├── psanet │ ├── psanet_resnet101os16_ade20k.py │ ├── psanet_resnet101os16_cityscapes.py │ ├── psanet_resnet101os16_voc.py │ ├── psanet_resnet101os8_ade20k.py │ ├── psanet_resnet101os8_cityscapes.py │ ├── psanet_resnet101os8_voc.py │ ├── psanet_resnet50os16_ade20k.py │ ├── psanet_resnet50os16_cityscapes.py │ ├── psanet_resnet50os16_voc.py │ ├── psanet_resnet50os8_ade20k.py │ ├── psanet_resnet50os8_cityscapes.py │ └── psanet_resnet50os8_voc.py ├── pspnet │ ├── pspnet_resnet101os16_ade20k.py │ ├── pspnet_resnet101os16_cityscapes.py │ ├── pspnet_resnet101os16_voc.py │ ├── pspnet_resnet101os8_ade20k.py │ ├── pspnet_resnet101os8_cityscapes.py │ ├── pspnet_resnet101os8_voc.py │ ├── pspnet_resnet50os16_ade20k.py │ ├── pspnet_resnet50os16_cityscapes.py │ ├── pspnet_resnet50os16_voc.py │ ├── pspnet_resnet50os8_ade20k.py │ ├── pspnet_resnet50os8_cityscapes.py │ └── pspnet_resnet50os8_voc.py ├── resnest │ ├── deeplabv3_resnest101os8_ade20k.py │ ├── deeplabv3_resnest101os8_cityscapes.py │ ├── deeplabv3_resnest101os8_voc.py │ ├── deeplabv3plus_resnest101os8_ade20k.py │ ├── deeplabv3plus_resnest101os8_cityscapes.py │ ├── deeplabv3plus_resnest101os8_voc.py │ ├── fcn_resnest101os8_ade20k.py │ ├── fcn_resnest101os8_cityscapes.py │ ├── fcn_resnest101os8_voc.py │ ├── pspnet_resnest101os8_ade20k.py │ ├── pspnet_resnest101os8_cityscapes.py │ └── pspnet_resnest101os8_voc.py ├── segformer │ ├── segformer_mitb0_ade20k.py │ ├── segformer_mitb1_ade20k.py │ ├── segformer_mitb2_ade20k.py │ ├── segformer_mitb3_ade20k.py │ ├── segformer_mitb4_ade20k.py │ └── segformer_mitb5_ade20k.py ├── semanticfpn │ ├── semanticfpn_resnet101os32_ade20k.py │ ├── semanticfpn_resnet101os32_cityscapes.py │ ├── semanticfpn_resnet101os32_voc.py │ ├── semanticfpn_resnet50os32_ade20k.py │ ├── semanticfpn_resnet50os32_cityscapes.py │ └── semanticfpn_resnet50os32_voc.py ├── setr │ ├── setrmla_vitlarge_ade20k.py │ ├── setrnaive_vitlarge_ade20k.py │ └── setrpup_vitlarge_ade20k.py ├── swin │ ├── upernet_swinbase_ade20k.py │ ├── upernet_swinsmall_ade20k.py │ └── upernet_swintiny_ade20k.py ├── twins │ ├── upernet_pcpvtbase_ade20k.py │ ├── upernet_pcpvtlarge_ade20k.py │ ├── upernet_pcpvtsmall_ade20k.py │ ├── upernet_svtbase_ade20k.py │ ├── upernet_svtlarge_ade20k.py │ └── upernet_svtsmall_ade20k.py ├── unet │ ├── deeplabv3_unets5os16_cedice_chasedb1.py │ ├── deeplabv3_unets5os16_cedice_drive.py │ ├── deeplabv3_unets5os16_cedice_hrf.py │ ├── deeplabv3_unets5os16_cedice_stare.py │ ├── deeplabv3_unets5os16_chasedb1.py │ ├── deeplabv3_unets5os16_drive.py │ ├── deeplabv3_unets5os16_hrf.py │ ├── deeplabv3_unets5os16_stare.py │ ├── fcn_unets5os16_cedice_chasedb1.py │ ├── fcn_unets5os16_cedice_drive.py │ ├── fcn_unets5os16_cedice_hrf.py │ ├── fcn_unets5os16_cedice_stare.py │ ├── fcn_unets5os16_chasedb1.py │ ├── fcn_unets5os16_drive.py │ ├── fcn_unets5os16_hrf.py │ ├── fcn_unets5os16_stare.py │ ├── pspnet_unets5os16_cedice_chasedb1.py │ ├── pspnet_unets5os16_cedice_drive.py │ ├── pspnet_unets5os16_cedice_hrf.py │ ├── pspnet_unets5os16_cedice_stare.py │ ├── pspnet_unets5os16_chasedb1.py │ ├── pspnet_unets5os16_drive.py │ ├── pspnet_unets5os16_hrf.py │ └── pspnet_unets5os16_stare.py └── upernet │ ├── upernet_resnet101os16_ade20k.py │ ├── upernet_resnet101os16_cityscapes.py │ ├── upernet_resnet101os16_voc.py │ ├── upernet_resnet101os8_ade20k.py │ ├── upernet_resnet101os8_cityscapes.py │ ├── upernet_resnet101os8_voc.py │ ├── upernet_resnet50os16_ade20k.py │ ├── upernet_resnet50os16_cityscapes.py │ ├── upernet_resnet50os16_voc.py │ ├── upernet_resnet50os8_ade20k.py │ ├── upernet_resnet50os8_cityscapes.py │ └── upernet_resnet50os8_voc.py ├── extensions └── samv2 │ └── connected_components.cu ├── inference.py ├── modules ├── __init__.py ├── datasets │ ├── __init__.py │ ├── ade20k.py │ ├── atr.py │ ├── base.py │ ├── builder.py │ ├── chasedb1.py │ ├── cihp.py │ ├── cityscapes.py │ ├── coco.py │ ├── darkzurich.py │ ├── drive.py │ ├── hrf.py │ ├── lip.py │ ├── mhp.py │ ├── nighttimedriving.py │ ├── pipelines │ │ ├── __init__.py │ │ ├── evaluation.py │ │ ├── misc.py │ │ └── transforms.py │ ├── sbushadow.py │ ├── stare.py │ ├── supervisely.py │ ├── voc.py │ └── vspw.py ├── models │ ├── __init__.py │ ├── backbones │ │ ├── __init__.py │ │ ├── beit.py │ │ ├── bisenetv1.py │ │ ├── bisenetv2.py │ │ ├── bricks │ │ │ ├── __init__.py │ │ │ ├── activation │ │ │ │ ├── __init__.py │ │ │ │ ├── builder.py │ │ │ │ ├── hardsigmoid.py │ │ │ │ ├── hardswish.py │ │ │ │ └── swish.py │ │ │ ├── convolution │ │ │ │ ├── __init__.py │ │ │ │ ├── apconv.py │ │ │ │ ├── dsconv.py │ │ │ │ ├── dyconv.py │ │ │ │ ├── irconv.py │ │ │ │ └── seconv.py │ │ │ ├── dropout │ │ │ │ ├── __init__.py │ │ │ │ ├── builder.py │ │ │ │ └── droppath.py │ │ │ ├── misc │ │ │ │ ├── __init__.py │ │ │ │ ├── divisor.py │ │ │ │ ├── l2norm.py │ │ │ │ ├── scale.py │ │ │ │ └── weightinit.py │ │ │ ├── normalization │ │ │ │ ├── __init__.py │ │ │ │ ├── builder.py │ │ │ │ ├── grn.py │ │ │ │ └── layernorm2d.py │ │ │ └── transformer │ │ │ │ ├── __init__.py │ │ │ │ ├── embed.py │ │ │ │ ├── ffn.py │ │ │ │ ├── mha.py │ │ │ │ ├── pe.py │ │ │ │ └── shape.py │ │ ├── builder.py │ │ ├── cgnet.py │ │ ├── convnext.py │ │ ├── convnextv2.py │ │ ├── edgesamrepvit.py │ │ ├── erfnet.py │ │ ├── fastscnn.py │ │ ├── hiera.py │ │ ├── hrnet.py │ │ ├── mae.py │ │ ├── mit.py │ │ ├── mobilenet.py │ │ ├── mobilesamtinyvit.py │ │ ├── mobilevit.py │ │ ├── resnest.py │ │ ├── resnet.py │ │ ├── samvit.py │ │ ├── swin.py │ │ ├── timmwrapper.py │ │ ├── twins.py │ │ ├── unet.py │ │ └── vit.py │ ├── losses │ │ ├── __init__.py │ │ ├── accuracy.py │ │ ├── builder.py │ │ ├── cosinesimilarityloss.py │ │ ├── crossentropyloss.py │ │ ├── diceloss.py │ │ ├── focalloss.py │ │ ├── functions.py │ │ ├── kldivloss.py │ │ ├── l1loss.py │ │ ├── lovaszloss.py │ │ ├── misc.py │ │ └── mseloss.py │ ├── optimizers │ │ ├── __init__.py │ │ ├── builder.py │ │ └── paramsconstructor.py │ ├── samplers │ │ ├── __init__.py │ │ ├── base.py │ │ ├── builder.py │ │ ├── ohempixelsampler.py │ │ └── ugsampler.py │ ├── schedulers │ │ ├── __init__.py │ │ ├── basescheduler.py │ │ ├── builder.py │ │ ├── cosinescheduler.py │ │ └── polyscheduler.py │ └── segmentors │ │ ├── __init__.py │ │ ├── annnet │ │ ├── __init__.py │ │ ├── afnblock.py │ │ ├── annnet.py │ │ ├── apnblock.py │ │ └── ppm.py │ │ ├── apcnet │ │ ├── __init__.py │ │ ├── acm.py │ │ └── apcnet.py │ │ ├── base │ │ ├── __init__.py │ │ ├── auxiliary.py │ │ ├── base.py │ │ ├── ema.py │ │ ├── feature2pyramid.py │ │ ├── fpn.py │ │ ├── misc.py │ │ └── selfattention.py │ │ ├── builder.py │ │ ├── ccnet │ │ ├── __init__.py │ │ └── ccnet.py │ │ ├── ce2p │ │ ├── __init__.py │ │ ├── ce2p.py │ │ └── epm.py │ │ ├── danet │ │ ├── __init__.py │ │ ├── cam.py │ │ ├── danet.py │ │ └── pam.py │ │ ├── deeplabv3 │ │ ├── __init__.py │ │ ├── aspp.py │ │ └── deeplabv3.py │ │ ├── deeplabv3plus │ │ ├── __init__.py │ │ ├── aspp.py │ │ └── deeplabv3plus.py │ │ ├── dmnet │ │ ├── __init__.py │ │ ├── dcm.py │ │ └── dmnet.py │ │ ├── dnlnet │ │ ├── __init__.py │ │ ├── dnlblock.py │ │ └── dnlnet.py │ │ ├── edgesam │ │ ├── __init__.py │ │ ├── edgesam.py │ │ └── maskdecoder.py │ │ ├── emanet │ │ ├── __init__.py │ │ ├── ema.py │ │ └── emanet.py │ │ ├── encnet │ │ ├── __init__.py │ │ ├── contextencoding.py │ │ ├── encnet.py │ │ └── encoding.py │ │ ├── fastfcn │ │ ├── __init__.py │ │ ├── fastfcn.py │ │ └── jpu.py │ │ ├── fcn │ │ ├── __init__.py │ │ └── fcn.py │ │ ├── gcnet │ │ ├── __init__.py │ │ ├── contextblock.py │ │ └── gcnet.py │ │ ├── icnet │ │ ├── __init__.py │ │ ├── icneck.py │ │ ├── icnet.py │ │ └── icnetencoder.py │ │ ├── idrnet │ │ ├── __init__.py │ │ └── idrnet.py │ │ ├── isanet │ │ ├── __init__.py │ │ └── isanet.py │ │ ├── isnet │ │ ├── __init__.py │ │ ├── imagelevel.py │ │ ├── isnet.py │ │ └── semanticlevel.py │ │ ├── lrasppnet │ │ ├── __init__.py │ │ └── lrasppnet.py │ │ ├── mask2former │ │ ├── __init__.py │ │ ├── mask2former.py │ │ └── transformers │ │ │ ├── __init__.py │ │ │ ├── criterion.py │ │ │ ├── matcher.py │ │ │ ├── misc.py │ │ │ ├── pixeldecoder.py │ │ │ └── predictor.py │ │ ├── maskformer │ │ ├── __init__.py │ │ ├── maskformer.py │ │ └── transformers │ │ │ ├── __init__.py │ │ │ ├── criterion.py │ │ │ ├── matcher.py │ │ │ ├── predictor.py │ │ │ └── transformer.py │ │ ├── mcibi │ │ ├── __init__.py │ │ ├── initmemory.py │ │ ├── mcibi.py │ │ └── memory.py │ │ ├── mcibiplusplus │ │ ├── __init__.py │ │ ├── mcibiplusplus.py │ │ └── memoryv2.py │ │ ├── mobilesam │ │ ├── __init__.py │ │ └── mobilesam.py │ │ ├── nonlocalnet │ │ ├── __init__.py │ │ ├── nonlocalblock.py │ │ └── nonlocalnet.py │ │ ├── ocrnet │ │ ├── __init__.py │ │ ├── objectcontext.py │ │ ├── ocrnet.py │ │ └── spatialgather.py │ │ ├── pointrend │ │ ├── __init__.py │ │ └── pointrend.py │ │ ├── psanet │ │ ├── __init__.py │ │ └── psanet.py │ │ ├── pspnet │ │ ├── __init__.py │ │ ├── ppm.py │ │ └── pspnet.py │ │ ├── sam │ │ ├── __init__.py │ │ ├── amg.py │ │ ├── maskdecoder.py │ │ ├── promptencoder.py │ │ ├── sam.py │ │ ├── transformer.py │ │ ├── transforms.py │ │ └── visualization.py │ │ ├── samhq │ │ ├── __init__.py │ │ ├── maskdecoder.py │ │ └── samhq.py │ │ ├── samv2 │ │ ├── __init__.py │ │ ├── amg.py │ │ ├── maskdecoder.py │ │ ├── memoryattention.py │ │ ├── memoryencoder.py │ │ ├── misc.py │ │ ├── promptencoder.py │ │ ├── samv2.py │ │ ├── transformer.py │ │ ├── transforms.py │ │ └── visualization.py │ │ ├── segformer │ │ ├── __init__.py │ │ └── segformer.py │ │ ├── semanticfpn │ │ ├── __init__.py │ │ └── semanticfpn.py │ │ ├── setr │ │ ├── __init__.py │ │ ├── mla.py │ │ └── setr.py │ │ └── upernet │ │ ├── __init__.py │ │ └── upernet.py ├── parallel │ ├── __init__.py │ ├── dataloader.py │ └── model.py └── utils │ ├── __init__.py │ ├── configparser.py │ ├── datastructure.py │ ├── env.py │ ├── io.py │ ├── logger.py │ ├── misc.py │ ├── modulebuilder.py │ └── slurm.py ├── test.py └── train.py /.gitattributes: -------------------------------------------------------------------------------- 1 | * linguist-language=python 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | patreon: CharlesPikachu 2 | ko_fi: charlespikachu 3 | custom: https://github.com/CharlesPikachu/Games/tree/master/.github/pictures/alipay.JPG 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: What bug did you encounter 4 | title: "[BUG]" 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | **Environment (使用环境)** 10 | 11 | - Installation method (安装方式): 12 | - The version of sssegmentation (版本号): 13 | - Operating system (操作系统): 14 | - Python version (Python版本): 15 | 16 | **Question description (问题描述)** 17 | 18 | **Screenshot (报错截图)** 19 | 20 | **Suggestion (修复建议)** 21 | -------------------------------------------------------------------------------- /.github/pictures/alipay.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SegmentationBLWX/sssegmentation/2c165ed2609c84d95b8a781b45b4bf87f438c591/.github/pictures/alipay.JPG -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | # required 2 | version: 2 3 | 4 | # set the OS, python version and other tools you might need 5 | build: 6 | os: ubuntu-22.04 7 | tools: 8 | python: "3.11" 9 | 10 | # build documentation in the "docs/" directory with Sphinx 11 | sphinx: 12 | configuration: docs/conf.py 13 | 14 | # explicitly set the version of Python and its requirements 15 | python: 16 | install: 17 | - requirements: docs/requirements.txt -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: "If you use SSSegmentation in your research, please consider citing this project." 3 | authors: 4 | - name: "Zhenchao Jin" 5 | title: "SSSegmentation: An Open Source Supervised Semantic Segmentation Toolbox Based on PyTorch" 6 | date-released: 2020-10-23 7 | url: "https://github.com/SegmentationBLWX/sssegmentation" 8 | license: Apache-2.0 9 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: install 2 | 3 | install: 4 | python setup.py install 5 | 6 | develop: 7 | python setup.py develop 8 | 9 | publish: 10 | pip install 'twine>=1.5.0' --upgrade 11 | python setup.py sdist bdist_wheel 12 | twine upload dist/* -------------------------------------------------------------------------------- /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 = source 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 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. sssegmentation documentation master file, created by 2 | sphinx-quickstart on Sat Feb 29 22:07:23 2020. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to SSSegmentation's documentation! 7 | ======================================== 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | 12 | GetStarted.md 13 | QuickRun.md 14 | Tutorials.md 15 | ModelZoo.md 16 | AdvancedAPI.md 17 | FQA.md 18 | Citations.md -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SegmentationBLWX/sssegmentation/2c165ed2609c84d95b8a781b45b4bf87f438c591/docs/logo.png -------------------------------------------------------------------------------- /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=source 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 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | recommonmark 2 | sphinx==5.0.0 3 | sphinx_markdown_tables==0.0.12 4 | sphinx_rtd_theme -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | -r requirements/basic.txt -------------------------------------------------------------------------------- /requirements/basic.txt: -------------------------------------------------------------------------------- 1 | cython 2 | fvcore 3 | black 4 | usort 5 | ufmt 6 | cityscapesscripts 7 | pycocotools 8 | pillow 9 | pandas 10 | opencv-python 11 | dill 12 | iopath 13 | matplotlib 14 | tqdm 15 | argparse 16 | numpy 17 | scipy -------------------------------------------------------------------------------- /requirements/optional.txt: -------------------------------------------------------------------------------- 1 | albumentations 2 | chainercv 3 | timm 4 | mmcv-full 5 | apex -------------------------------------------------------------------------------- /requirements/torch.txt: -------------------------------------------------------------------------------- 1 | torch>=1.8 2 | torchvision 3 | -------------------------------------------------------------------------------- /scripts/ckpts/clean_ckpts_for_publish.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Scripts for removing useless attributes from checkpoints 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import os 8 | import glob 9 | import torch 10 | from tqdm import tqdm 11 | 12 | 13 | '''remove''' 14 | def remove(directory): 15 | filepaths = glob.glob(os.path.join(directory, '*.pth')) 16 | pbar = tqdm(filepaths) 17 | for filepath in pbar: 18 | pbar.set_description(filepath) 19 | ckpts = torch.load(filepath, map_location='cpu') 20 | torch.save({'model': ckpts['model']}, filepath) 21 | print('All done.') 22 | 23 | 24 | '''DEBUG''' 25 | if __name__ == '__main__': 26 | import argparse 27 | parser = argparse.ArgumentParser(description='Scripts for removing useless attributes from checkpoints.') 28 | parser.add_argument('--dir', dest='dir', help='directory which contains require-processing checkpoints', required=True, type=str) 29 | args = parser.parse_args() 30 | remove(args.dir) -------------------------------------------------------------------------------- /scripts/collect_env.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Scripts for collecting develop environment 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | from ssseg.modules import EnvironmentCollector 8 | 9 | 10 | '''run''' 11 | if __name__ == '__main__': 12 | for key, value in EnvironmentCollector().collectenv().items(): 13 | print(f'{key}: {value}') -------------------------------------------------------------------------------- /scripts/dist_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | THIS_DIR="$( cd "$( dirname "$0" )" && pwd )" 3 | cd $THIS_DIR 4 | cd .. 5 | 6 | NGPUS=$1 7 | CFGFILEPATH=$2 8 | CKPTSPATH=$3 9 | PORT=${PORT:-$(($RANDOM+6666))} 10 | NNODES=${NNODES:-1} 11 | NODERANK=${NODERANK:-0} 12 | MASTERADDR=${MASTERADDR:-"127.0.0.1"} 13 | TORCHVERSION=`python -c 'import torch; print(torch.__version__)'` 14 | 15 | if [[ $TORCHVERSION == "2."* ]]; then 16 | torchrun --nnodes=$NNODES --nproc_per_node=$NGPUS --master_addr=$MASTERADDR --master_port=$PORT --node_rank=$NODERANK \ 17 | ssseg/test.py --nproc_per_node $NGPUS --cfgfilepath $CFGFILEPATH --ckptspath $CKPTSPATH ${@:4} 18 | else 19 | python -m torch.distributed.launch \ 20 | --nnodes=$NNODES \ 21 | --node_rank=$NODERANK \ 22 | --master_addr=$MASTERADDR \ 23 | --nproc_per_node=$NGPUS \ 24 | --master_port=$PORT \ 25 | ssseg/test.py --nproc_per_node $NGPUS \ 26 | --cfgfilepath $CFGFILEPATH \ 27 | --ckptspath $CKPTSPATH ${@:4} 28 | fi -------------------------------------------------------------------------------- /scripts/dist_train.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | THIS_DIR="$( cd "$( dirname "$0" )" && pwd )" 3 | cd $THIS_DIR 4 | cd .. 5 | 6 | NGPUS=$1 7 | CFGFILEPATH=$2 8 | PORT=${PORT:-$(($RANDOM+8888))} 9 | NNODES=${NNODES:-1} 10 | NODERANK=${NODERANK:-0} 11 | MASTERADDR=${MASTERADDR:-"127.0.0.1"} 12 | TORCHVERSION=`python -c 'import torch; print(torch.__version__)'` 13 | 14 | if [[ $TORCHVERSION == "2."* ]]; then 15 | torchrun --nnodes=$NNODES --nproc_per_node=$NGPUS --master_addr=$MASTERADDR --master_port=$PORT --node_rank=$NODERANK \ 16 | ssseg/train.py --nproc_per_node $NGPUS --cfgfilepath $CFGFILEPATH ${@:3} 17 | else 18 | python -m torch.distributed.launch \ 19 | --nnodes=$NNODES \ 20 | --node_rank=$NODERANK \ 21 | --master_addr=$MASTERADDR \ 22 | --nproc_per_node=$NGPUS \ 23 | --master_port=$PORT \ 24 | ssseg/train.py --nproc_per_node $NGPUS \ 25 | --cfgfilepath $CFGFILEPATH ${@:3} 26 | fi -------------------------------------------------------------------------------- /scripts/inference.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | THIS_DIR="$( cd "$( dirname "$0" )" && pwd )" 3 | cd $THIS_DIR 4 | cd .. 5 | 6 | CFGFILEPATH=$1 7 | CKPTSPATH=$2 8 | 9 | python ssseg/inference.py \ 10 | --cfgfilepath $CFGFILEPATH \ 11 | --ckptspath $CKPTSPATH ${@:3} -------------------------------------------------------------------------------- /scripts/slurm_test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | THIS_DIR="$( cd "$( dirname "$0" )" && pwd )" 3 | cd $THIS_DIR 4 | cd .. 5 | 6 | set -x 7 | 8 | PARTITION=$1 9 | JOBNAME=$2 10 | NGPUS=$3 11 | CFGFILEPATH=$4 12 | CKPTSPATH=$5 13 | GPUSPERNODE=${GPUSPERNODE:-8} 14 | CPUSPERTASK=${CPUSPERTASK:-10} 15 | SRUNAGRS=${SRUNAGRS:-""} 16 | PYARGS=${@:6} 17 | 18 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 19 | srun -p ${PARTITION} \ 20 | --job-name=${JOBNAME} \ 21 | --gres=gpu:${GPUSPERNODE} \ 22 | --ntasks=${NGPUS} \ 23 | --ntasks-per-node=${GPUSPERNODE} \ 24 | --cpus-per-task=${CPUSPERTASK} \ 25 | --kill-on-bad-exit=1 \ 26 | ${SRUNAGRS} \ 27 | python -u ssseg/test.py \ 28 | --nproc_per_node $NGPUS \ 29 | --cfgfilepath $CFGFILEPATH \ 30 | --ckptspath $CKPTSPATH \ 31 | --slurm ${PYARGS} -------------------------------------------------------------------------------- /scripts/slurm_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | THIS_DIR="$( cd "$( dirname "$0" )" && pwd )" 3 | cd $THIS_DIR 4 | cd .. 5 | 6 | set -x 7 | 8 | PARTITION=$1 9 | JOBNAME=$2 10 | NGPUS=$3 11 | CFGFILEPATH=$4 12 | GPUSPERNODE=${GPUSPERNODE:-8} 13 | CPUSPERTASK=${CPUSPERTASK:-10} 14 | SRUNAGRS=${SRUNAGRS:-""} 15 | PYARGS=${@:5} 16 | 17 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 18 | srun -p ${PARTITION} \ 19 | --job-name=${JOBNAME} \ 20 | --gres=gpu:${GPUSPERNODE} \ 21 | --ntasks=${NGPUS} \ 22 | --ntasks-per-node=${GPUSPERNODE} \ 23 | --cpus-per-task=${CPUSPERTASK} \ 24 | --kill-on-bad-exit=1 \ 25 | ${SRUNAGRS} \ 26 | python -u ssseg/train.py \ 27 | --nproc_per_node $NGPUS \ 28 | --cfgfilepath $CFGFILEPATH \ 29 | --slurm ${PYARGS} -------------------------------------------------------------------------------- /ssseg/__init__.py: -------------------------------------------------------------------------------- 1 | '''version''' 2 | __version__ = '1.6.0' 3 | '''author''' 4 | __author__ = 'Zhenchao Jin' 5 | '''title''' 6 | __title__ = 'SSSegmentation' 7 | '''description''' 8 | __description__ = 'SSSegmentation: An Open Source Supervised Semantic Segmentation Toolbox Based on PyTorch' 9 | '''url''' 10 | __url__ = 'https://github.com/SegmentationBLWX/sssegmentation' 11 | '''email''' 12 | __email__ = 'charlesblwx@gmail.com' 13 | '''license''' 14 | __license__ = 'Apache License 2.0' 15 | '''copyright''' 16 | __copyright__ = 'Copyright 2020-2030 Zhenchao Jin' -------------------------------------------------------------------------------- /ssseg/configs/_base_/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .datasets import REGISTERED_DATASET_CONFIGS 3 | from .segmentors import REGISTERED_SEGMENTOR_CONFIGS 4 | from .dataloaders import REGISTERED_DATALOADER_CONFIGS -------------------------------------------------------------------------------- /ssseg/configs/_base_/dataloaders/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | import os 3 | import importlib 4 | from .default_dataloader import DataloaderConfig 5 | 6 | 7 | '''register dataloaders''' 8 | REGISTERED_DATALOADER_CONFIGS = {} 9 | for fname in os.listdir(os.path.dirname(__file__)): 10 | if fname.endswith(".py") and fname != "__init__.py" and fname != "default_dataloader.py": 11 | module_name = fname[:-3] 12 | module = importlib.import_module(f".{module_name}", package=__name__) 13 | for attr_name in dir(module): 14 | attr = getattr(module, attr_name) 15 | if isinstance(attr, DataloaderConfig): 16 | REGISTERED_DATALOADER_CONFIGS[attr_name] = attr -------------------------------------------------------------------------------- /ssseg/configs/_base_/dataloaders/default_dataloader_bs16.py: -------------------------------------------------------------------------------- 1 | '''default_dataloader_bs16''' 2 | from .default_dataloader import DataloaderConfig 3 | 4 | 5 | '''DATALOADER_CFG_BS16''' 6 | DATALOADER_CFG_BS16 = DataloaderConfig( 7 | expected_total_train_bs_for_assert=16, 8 | auto_adapt_to_expected_train_bs=True, 9 | train={ 10 | 'batch_size_per_gpu': 2, 'num_workers_per_gpu': 2, 'shuffle': True, 'pin_memory': True, 'drop_last': True 11 | }, 12 | test={ 13 | 'batch_size_per_gpu': 1, 'num_workers_per_gpu': 2, 'shuffle': False, 'pin_memory': True, 'drop_last': False 14 | }, 15 | ) -------------------------------------------------------------------------------- /ssseg/configs/_base_/dataloaders/default_dataloader_bs32.py: -------------------------------------------------------------------------------- 1 | '''default_dataloader_bs32''' 2 | from .default_dataloader import DataloaderConfig 3 | 4 | 5 | '''DATALOADER_CFG_BS32''' 6 | DATALOADER_CFG_BS32 = DataloaderConfig( 7 | expected_total_train_bs_for_assert=32, 8 | auto_adapt_to_expected_train_bs=True, 9 | train={ 10 | 'batch_size_per_gpu': 4, 'num_workers_per_gpu': 2, 'shuffle': True, 'pin_memory': True, 'drop_last': True 11 | }, 12 | test={ 13 | 'batch_size_per_gpu': 1, 'num_workers_per_gpu': 2, 'shuffle': False, 'pin_memory': True, 'drop_last': False 14 | }, 15 | ) -------------------------------------------------------------------------------- /ssseg/configs/_base_/dataloaders/default_dataloader_bs40.py: -------------------------------------------------------------------------------- 1 | '''default_dataloader_bs40''' 2 | from .default_dataloader import DataloaderConfig 3 | 4 | 5 | '''DATALOADER_CFG_BS40''' 6 | DATALOADER_CFG_BS40 = DataloaderConfig( 7 | expected_total_train_bs_for_assert=40, 8 | auto_adapt_to_expected_train_bs=True, 9 | train={ 10 | 'batch_size_per_gpu': 5, 'num_workers_per_gpu': 2, 'shuffle': True, 'pin_memory': True, 'drop_last': True 11 | }, 12 | test={ 13 | 'batch_size_per_gpu': 1, 'num_workers_per_gpu': 2, 'shuffle': False, 'pin_memory': True, 'drop_last': False 14 | }, 15 | ) -------------------------------------------------------------------------------- /ssseg/configs/_base_/dataloaders/default_dataloader_bs64.py: -------------------------------------------------------------------------------- 1 | '''default_dataloader_bs64''' 2 | from .default_dataloader import DataloaderConfig 3 | 4 | 5 | '''DATALOADER_CFG_BS64''' 6 | DATALOADER_CFG_BS64 = DataloaderConfig( 7 | expected_total_train_bs_for_assert=64, 8 | auto_adapt_to_expected_train_bs=True, 9 | train={ 10 | 'batch_size_per_gpu': 8, 'num_workers_per_gpu': 2, 'shuffle': True, 'pin_memory': True, 'drop_last': True 11 | }, 12 | test={ 13 | 'batch_size_per_gpu': 1, 'num_workers_per_gpu': 2, 'shuffle': False, 'pin_memory': True, 'drop_last': False 14 | }, 15 | ) -------------------------------------------------------------------------------- /ssseg/configs/_base_/dataloaders/default_dataloader_bs8.py: -------------------------------------------------------------------------------- 1 | '''default_dataloader_bs8''' 2 | from .default_dataloader import DataloaderConfig 3 | 4 | 5 | '''DATALOADER_CFG_BS8''' 6 | DATALOADER_CFG_BS8 = DataloaderConfig( 7 | expected_total_train_bs_for_assert=8, 8 | auto_adapt_to_expected_train_bs=True, 9 | train={ 10 | 'batch_size_per_gpu': 1, 'num_workers_per_gpu': 2, 'shuffle': True, 'pin_memory': True, 'drop_last': True 11 | }, 12 | test={ 13 | 'batch_size_per_gpu': 1, 'num_workers_per_gpu': 2, 'shuffle': False, 'pin_memory': True, 'drop_last': False 14 | }, 15 | ) -------------------------------------------------------------------------------- /ssseg/configs/_base_/datasets/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | import os 3 | import importlib 4 | from .default_dataset import DatasetConfig 5 | 6 | 7 | '''register datasets''' 8 | REGISTERED_DATASET_CONFIGS = {} 9 | for fname in os.listdir(os.path.dirname(__file__)): 10 | if fname.endswith(".py") and fname != "__init__.py" and fname != "default_dataset.py": 11 | module_name = fname[:-3] 12 | module = importlib.import_module(f".{module_name}", package=__name__) 13 | for attr_name in dir(module): 14 | attr = getattr(module, attr_name) 15 | if isinstance(attr, DatasetConfig): 16 | REGISTERED_DATASET_CONFIGS[attr_name] = attr -------------------------------------------------------------------------------- /ssseg/configs/_base_/segmentors/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | import os 3 | import importlib 4 | from .default_segmentor import SegmentorConfig 5 | 6 | 7 | '''register segmentors''' 8 | REGISTERED_SEGMENTOR_CONFIGS = {} 9 | for fname in os.listdir(os.path.dirname(__file__)): 10 | if fname.endswith(".py") and fname != "__init__.py" and fname != "default_segmentor.py": 11 | module_name = fname[:-3] 12 | module = importlib.import_module(f".{module_name}", package=__name__) 13 | for attr_name in dir(module): 14 | attr = getattr(module, attr_name) 15 | if isinstance(attr, SegmentorConfig): 16 | REGISTERED_SEGMENTOR_CONFIGS[attr_name] = attr -------------------------------------------------------------------------------- /ssseg/configs/annnet/annnet_resnet101os16_voc.py: -------------------------------------------------------------------------------- 1 | '''annnet_resnet101os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ANNNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/annnet/annnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''annnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ANNNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/annnet/annnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''annnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ANNNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/annnet/annnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''annnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ANNNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/annnet/annnet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''annnet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ANNNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/annnet/annnet_resnet50os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''annnet_resnet50os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ANNNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/annnet/annnet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''annnet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ANNNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/apcnet/apcnet_resnet101os16_voc.py: -------------------------------------------------------------------------------- 1 | '''apcnet_resnet101os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['APCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/apcnet/apcnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''apcnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['APCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/apcnet/apcnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''apcnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['APCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/apcnet/apcnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''apcnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['APCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/apcnet/apcnet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''apcnet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['APCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/apcnet/apcnet_resnet50os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''apcnet_resnet50os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['APCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/apcnet/apcnet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''apcnet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['APCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/beit/upernet_beitbase_ade20k.py: -------------------------------------------------------------------------------- 1 | '''upernet_beitbase_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['BEIT_SEGMENTOR_CFG'] 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_640x640'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['inference']['tta']['use_probs_before_resize'] = True 17 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 18 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/bisenetv1/fcn_bisenetv1_resnet50os32_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''fcn_bisenetv1_resnet50os32_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['BISENETV1_SEGMENTOR_CFG'] 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_1024x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 860 14 | SEGMENTOR_CFG['scheduler']['min_lr'] = 1e-4 15 | SEGMENTOR_CFG['scheduler']['warmup_cfg'] = {'type': 'linear', 'ratio': 0.1, 'iters': 1000} 16 | # modify other segmentor configs 17 | SEGMENTOR_CFG['num_classes'] = 19 18 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 19 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/bisenetv2/fcn_bisenetv2_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''fcn_bisenetv2_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['BISENETV2_SEGMENTOR_CFG'] 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_1024x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 860 14 | SEGMENTOR_CFG['scheduler']['min_lr'] = 1e-4 15 | SEGMENTOR_CFG['scheduler']['warmup_cfg'] = {'type': 'linear', 'ratio': 0.1, 'iters': 1000} 16 | # modify other segmentor configs 17 | SEGMENTOR_CFG['num_classes'] = 19 18 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 19 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ccnet/ccnet_resnet101os16_voc.py: -------------------------------------------------------------------------------- 1 | '''ccnet_resnet101os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ccnet/ccnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''ccnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ccnet/ccnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''ccnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ccnet/ccnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''ccnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ccnet/ccnet_resnet50os16_ade20k.py: -------------------------------------------------------------------------------- 1 | '''ccnet_resnet50os16_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ccnet/ccnet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''ccnet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ccnet/ccnet_resnet50os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''ccnet_resnet50os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ccnet/ccnet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''ccnet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet101os16_atr.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet101os16_atr''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ATR_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 18 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet101os16_cihp.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet101os16_cihp''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CIHP_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 20 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet101os16_lip.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet101os16_lip''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_LIP_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 20 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet101os8_atr.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet101os8_atr''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ATR_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 18 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet101os8_cihp.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet101os8_cihp''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CIHP_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 20 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet101os8_lip.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet101os8_lip''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_LIP_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 20 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet50os16_atr.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet50os16_atr''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ATR_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 18 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet50os16_cihp.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet50os16_cihp''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CIHP_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 20 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet50os16_lip.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet50os16_lip''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_LIP_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 20 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet50os8_atr.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet50os8_atr''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ATR_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 18 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet50os8_cihp.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet50os8_cihp''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CIHP_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 20 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ce2p/ce2p_resnet50os8_lip.py: -------------------------------------------------------------------------------- 1 | '''ce2p_resnet50os8_lip''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['CE2P_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_LIP_473x473'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 150 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 20 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (0, 1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/danet/danet_resnet101os16_voc.py: -------------------------------------------------------------------------------- 1 | '''danet_resnet101os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/danet/danet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''danet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/danet/danet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''danet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/danet/danet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''danet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/danet/danet_resnet50os16_ade20k.py: -------------------------------------------------------------------------------- 1 | '''danet_resnet50os16_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/danet/danet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''danet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/danet/danet_resnet50os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''danet_resnet50os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/danet/danet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''danet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/deeplabv3/deeplabv3_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DEEPLABV3_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['head'] = { 17 | 'in_channels': 2048, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/deeplabv3/deeplabv3_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DEEPLABV3_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['head'] = { 17 | 'in_channels': 2048, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/deeplabv3/deeplabv3_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DEEPLABV3_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['head'] = { 17 | 'in_channels': 2048, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/deeplabv3plus/deeplabv3plus_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3plus_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DEEPLABV3PLUS_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['head'] = { 17 | 'in_channels': [256, 2048], 'feats_channels': 512, 'shortcut_channels': 48, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/deeplabv3plus/deeplabv3plus_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3plus_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DEEPLABV3PLUS_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['head'] = { 17 | 'in_channels': [256, 2048], 'feats_channels': 512, 'shortcut_channels': 48, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/deeplabv3plus/deeplabv3plus_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3plus_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DEEPLABV3PLUS_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['head'] = { 17 | 'in_channels': [256, 2048], 'feats_channels': 512, 'shortcut_channels': 48, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dmnet/dmnet_resnet101os16_voc.py: -------------------------------------------------------------------------------- 1 | '''dmnet_resnet101os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DMNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dmnet/dmnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''dmnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DMNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dmnet/dmnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''dmnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DMNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dmnet/dmnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''dmnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DMNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dmnet/dmnet_resnet50os16_ade20k.py: -------------------------------------------------------------------------------- 1 | '''dmnet_resnet50os16_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DMNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dmnet/dmnet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''dmnet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DMNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dmnet/dmnet_resnet50os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''dmnet_resnet50os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DMNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dmnet/dmnet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''dmnet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DMNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dnlnet/dnlnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''dnlnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DNLNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dnlnet/dnlnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''dnlnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DNLNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dnlnet/dnlnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''dnlnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DNLNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dnlnet/dnlnet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''dnlnet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DNLNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/dnlnet/dnlnet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''dnlnet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['DNLNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/emanet/emanet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''emanet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['EMANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/emanet/emanet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''emanet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['EMANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/emanet/emanet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''emanet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['EMANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/emanet/emanet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''emanet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['EMANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/emanet/emanet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''emanet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['EMANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/encnet/encnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''encnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ENCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/encnet/encnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''encnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ENCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/encnet/encnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''encnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ENCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/encnet/encnet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''encnet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ENCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (1, 2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/erfnet/fcn_erfnet_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''fcn_erfnet_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ERFNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_1024x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 860 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fastscnn/depthwiseseparablefcn_fastscnn_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''depthwiseseparablefcn_fastscnn_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FASTSCNN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS32'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 1750 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet101os16_ade20k.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet101os16_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet101os16_voc.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet101os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet50os16_ade20k.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet50os16_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet50os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet50os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/fcn/fcn_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['FCN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/gcnet/gcnet_resnet101os16_voc.py: -------------------------------------------------------------------------------- 1 | '''gcnet_resnet101os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['GCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 101, 'structure_type': 'resnet101conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/gcnet/gcnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''gcnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['GCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/gcnet/gcnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''gcnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['GCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/gcnet/gcnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''gcnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['GCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/gcnet/gcnet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''gcnet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['GCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/gcnet/gcnet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''gcnet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['GCNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/icnet/icnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''icnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ICNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_832x832'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 440 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/isanet/isanet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''isanet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ISANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/isanet/isanet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''isanet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ISANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/isanet/isanet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''isanet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ISANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/isanet/isanet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''isanet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['ISANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/lrasppnet/lrasppnet_mobilenetv3los8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''lrasppnet_mobilenetv3los8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['LRASPPNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 390 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/lrasppnet/lrasppnet_mobilenetv3los8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''lrasppnet_mobilenetv3los8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['LRASPPNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 660 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/lrasppnet/lrasppnet_mobilenetv3los8_voc.py: -------------------------------------------------------------------------------- 1 | '''lrasppnet_mobilenetv3los8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['LRASPPNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 180 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mae/upernet_maevitbase_ade20k.py: -------------------------------------------------------------------------------- 1 | '''upernet_maevitbase_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MAE_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['inference']['tta']['use_probs_before_resize'] = True 17 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 18 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/maskformer/maskformer_swinbase_ade20k.py: -------------------------------------------------------------------------------- 1 | '''maskformer_swinbase_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MASKFORMER_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_640x640'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | SEGMENTOR_CFG['scheduler']['min_lr'] = 0.0 15 | SEGMENTOR_CFG['scheduler']['power'] = 1.0 16 | SEGMENTOR_CFG['scheduler']['warmup_cfg'] = {'type': 'linear', 'ratio': 1e-6, 'iters': 1500} 17 | # modify other segmentor configs 18 | SEGMENTOR_CFG['num_classes'] = 150 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/deeplabv3_mobilenetv2os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_mobilenetv2os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'Deeplabv3' 16 | SEGMENTOR_CFG['num_classes'] = 150 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 320, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/deeplabv3_mobilenetv2os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_mobilenetv2os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'Deeplabv3' 16 | SEGMENTOR_CFG['num_classes'] = 19 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 320, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/deeplabv3_mobilenetv2os8_voc.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_mobilenetv2os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'Deeplabv3' 16 | SEGMENTOR_CFG['num_classes'] = 21 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 320, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/fcn_mobilenetv2os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''fcn_mobilenetv2os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/fcn_mobilenetv2os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''fcn_mobilenetv2os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/fcn_mobilenetv2os8_voc.py: -------------------------------------------------------------------------------- 1 | '''fcn_mobilenetv2os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/pspnet_mobilenetv2os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''pspnet_mobilenetv2os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'PSPNet' 16 | SEGMENTOR_CFG['num_classes'] = 150 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 320, 'feats_channels': 512, 'pool_scales': [1, 2, 3, 6], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/pspnet_mobilenetv2os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''pspnet_mobilenetv2os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'PSPNet' 16 | SEGMENTOR_CFG['num_classes'] = 19 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 320, 'feats_channels': 512, 'pool_scales': [1, 2, 3, 6], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/mobilenetv2/pspnet_mobilenetv2os8_voc.py: -------------------------------------------------------------------------------- 1 | '''pspnet_mobilenetv2os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['MOBILENETV2_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'PSPNet' 16 | SEGMENTOR_CFG['num_classes'] = 21 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 320, 'feats_channels': 512, 'pool_scales': [1, 2, 3, 6], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/nonlocalnet/nonlocalnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''nonlocalnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['NONLOCALNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/nonlocalnet/nonlocalnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''nonlocalnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['NONLOCALNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/nonlocalnet/nonlocalnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''nonlocalnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['NONLOCALNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ocrnet/ocrnet_hrnetv2w18_ade20k.py: -------------------------------------------------------------------------------- 1 | '''ocrnet_hrnetv2w18_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['OCRNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ocrnet/ocrnet_hrnetv2w18_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''ocrnet_hrnetv2w18_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['OCRNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 440 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ocrnet/ocrnet_hrnetv2w18_voc.py: -------------------------------------------------------------------------------- 1 | '''ocrnet_hrnetv2w18_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['OCRNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ocrnet/ocrnet_hrnetv2w18s_ade20k.py: -------------------------------------------------------------------------------- 1 | '''ocrnet_hrnetv2w18s_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['OCRNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'HRNet', 'structure_type': 'hrnetv2_w18_small', 'arch': 'hrnetv2_w18_small', 'pretrained': True, 'selected_indices': (0, 0), 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ocrnet/ocrnet_hrnetv2w18s_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''ocrnet_hrnetv2w18s_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['OCRNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 440 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'HRNet', 'structure_type': 'hrnetv2_w18_small', 'arch': 'hrnetv2_w18_small', 'pretrained': True, 'selected_indices': (0, 0), 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/ocrnet/ocrnet_hrnetv2w18s_voc.py: -------------------------------------------------------------------------------- 1 | '''ocrnet_hrnetv2w18s_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['OCRNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'HRNet', 'structure_type': 'hrnetv2_w18_small', 'arch': 'hrnetv2_w18_small', 'pretrained': True, 'selected_indices': (0, 0), 18 | } 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/pointrend/pointrend_resnet101os32_ade20k.py: -------------------------------------------------------------------------------- 1 | '''pointrend_resnet101os32_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['POINTREND_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/pointrend/pointrend_resnet101os32_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''pointrend_resnet101os32_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['POINTREND_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/pointrend/pointrend_resnet101os32_voc.py: -------------------------------------------------------------------------------- 1 | '''pointrend_resnet101os32_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['POINTREND_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/psanet/psanet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''psanet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/psanet/psanet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''psanet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/psanet/psanet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''psanet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/psanet/psanet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''psanet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/psanet/psanet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''psanet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSANET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/pspnet/pspnet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''pspnet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSPNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/pspnet/pspnet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''pspnet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSPNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/pspnet/pspnet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''pspnet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSPNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/pspnet/pspnet_resnet50os16_voc.py: -------------------------------------------------------------------------------- 1 | '''pspnet_resnet50os16_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSPNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 16, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/pspnet/pspnet_resnet50os8_voc.py: -------------------------------------------------------------------------------- 1 | '''pspnet_resnet50os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['PSPNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['backbone'] = { 17 | 'type': 'ResNet', 'depth': 50, 'structure_type': 'resnet50conv3x3stem', 18 | 'pretrained': True, 'outstride': 8, 'use_conv3x3_stem': True, 'selected_indices': (2, 3), 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/deeplabv3_resnest101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_resnest101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'Deeplabv3' 16 | SEGMENTOR_CFG['num_classes'] = 150 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 2048, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/deeplabv3_resnest101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_resnest101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'Deeplabv3' 16 | SEGMENTOR_CFG['num_classes'] = 19 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 2048, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/deeplabv3_resnest101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''deeplabv3_resnest101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'Deeplabv3' 16 | SEGMENTOR_CFG['num_classes'] = 21 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 2048, 'feats_channels': 512, 'dilations': [1, 12, 24, 36], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/fcn_resnest101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnest101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/fcn_resnest101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnest101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/fcn_resnest101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''fcn_resnest101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/pspnet_resnest101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''pspnet_resnest101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'PSPNet' 16 | SEGMENTOR_CFG['num_classes'] = 150 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 2048, 'feats_channels': 512, 'pool_scales': [1, 2, 3, 6], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/pspnet_resnest101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''pspnet_resnest101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'PSPNet' 16 | SEGMENTOR_CFG['num_classes'] = 19 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 2048, 'feats_channels': 512, 'pool_scales': [1, 2, 3, 6], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/resnest/pspnet_resnest101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''pspnet_resnest101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['RESNEST_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['type'] = 'PSPNet' 16 | SEGMENTOR_CFG['num_classes'] = 21 17 | SEGMENTOR_CFG['head'] = { 18 | 'in_channels': 2048, 'feats_channels': 512, 'pool_scales': [1, 2, 3, 6], 'dropout': 0.1, 19 | } 20 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 21 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/segformer/segformer_mitb0_ade20k.py: -------------------------------------------------------------------------------- 1 | '''segformer_mitb0_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['SEGFORMER_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/semanticfpn/semanticfpn_resnet101os32_ade20k.py: -------------------------------------------------------------------------------- 1 | '''semanticfpn_resnet101os32_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['SEMANTICFPN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/semanticfpn/semanticfpn_resnet101os32_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''semanticfpn_resnet101os32_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['SEMANTICFPN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/semanticfpn/semanticfpn_resnet101os32_voc.py: -------------------------------------------------------------------------------- 1 | '''semanticfpn_resnet101os32_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['SEMANTICFPN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/swin/upernet_swinbase_ade20k.py: -------------------------------------------------------------------------------- 1 | '''upernet_swinbase_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['SWIN_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | SEGMENTOR_CFG['scheduler']['min_lr'] = 0.0 15 | SEGMENTOR_CFG['scheduler']['power'] = 1.0 16 | SEGMENTOR_CFG['scheduler']['warmup_cfg'] = {'type': 'linear', 'ratio': 1e-6, 'iters': 1500} 17 | # modify other segmentor configs 18 | SEGMENTOR_CFG['num_classes'] = 150 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/twins/upernet_pcpvtbase_ade20k.py: -------------------------------------------------------------------------------- 1 | '''upernet_pcpvtbase_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['TWINS_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | SEGMENTOR_CFG['scheduler']['min_lr'] = 0.0 15 | SEGMENTOR_CFG['scheduler']['power'] = 1.0 16 | SEGMENTOR_CFG['scheduler']['warmup_cfg'] = {'type': 'linear', 'ratio': 1e-6, 'iters': 1500} 17 | # modify other segmentor configs 18 | SEGMENTOR_CFG['num_classes'] = 150 19 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 20 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/upernet/upernet_resnet101os8_ade20k.py: -------------------------------------------------------------------------------- 1 | '''upernet_resnet101os8_ade20k''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['UPERNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_ADE20k_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 130 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 150 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/upernet/upernet_resnet101os8_cityscapes.py: -------------------------------------------------------------------------------- 1 | '''upernet_resnet101os8_cityscapes''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['UPERNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_CITYSCAPES_512x1024'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS8'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 220 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 19 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/configs/upernet/upernet_resnet101os8_voc.py: -------------------------------------------------------------------------------- 1 | '''upernet_resnet101os8_voc''' 2 | import os 3 | from .._base_ import REGISTERED_SEGMENTOR_CONFIGS, REGISTERED_DATASET_CONFIGS, REGISTERED_DATALOADER_CONFIGS 4 | 5 | 6 | # deepcopy 7 | SEGMENTOR_CFG = REGISTERED_SEGMENTOR_CONFIGS['UPERNET_SEGMENTOR_CFG'].copy() 8 | # modify dataset config 9 | SEGMENTOR_CFG['dataset'] = REGISTERED_DATASET_CONFIGS['DATASET_CFG_VOCAUG_512x512'].copy() 10 | # modify dataloader config 11 | SEGMENTOR_CFG['dataloader'] = REGISTERED_DATALOADER_CONFIGS['DATALOADER_CFG_BS16'].copy() 12 | # modify scheduler config 13 | SEGMENTOR_CFG['scheduler']['max_epochs'] = 60 14 | # modify other segmentor configs 15 | SEGMENTOR_CFG['num_classes'] = 21 16 | SEGMENTOR_CFG['work_dir'] = os.path.split(__file__)[-1].split('.')[0] 17 | SEGMENTOR_CFG['logger_handle_cfg']['logfilepath'] = os.path.join(SEGMENTOR_CFG['work_dir'], f"{os.path.split(__file__)[-1].split('.')[0]}.log") -------------------------------------------------------------------------------- /ssseg/modules/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .datasets import ( 3 | DatasetBuilder, DataTransformBuilder, BuildDataset, BuildDataTransform 4 | ) 5 | from .parallel import ( 6 | BuildDistributedDataloader, BuildDistributedModel 7 | ) 8 | from .models import ( 9 | LossBuilder, BackboneBuilder, SegmentorBuilder, PixelSamplerBuilder, OptimizerBuilder, SchedulerBuilder, ParamsConstructorBuilder, 10 | NormalizationBuilder, ActivationBuilder, DropoutBuilder, BuildLoss, BuildBackbone, BuildSegmentor, BuildPixelSampler, BuildOptimizer, 11 | BuildScheduler, BuildParamsConstructor, BuildNormalization, BuildActivation, BuildDropout, EMASegmentor 12 | ) 13 | from .utils import ( 14 | initslurm, setrandomseed, touchdir, loadckpts, saveckpts, loadpretrainedweights, symlink, judgefileexist, postprocesspredgtpairs, ismainprocess, touchdirs, 15 | LoggerHandleBuilder, BuildLoggerHandle, TrainingLoggingManager, BaseModuleBuilder, ConfigParser, EnvironmentCollector, SSSegInputStructure, 16 | SSSegOutputStructure, 17 | ) -------------------------------------------------------------------------------- /ssseg/modules/datasets/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import DatasetBuilder, BuildDataset 3 | from .pipelines import DataTransformBuilder, BuildDataTransform -------------------------------------------------------------------------------- /ssseg/modules/datasets/pipelines/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .evaluation import Evaluation 3 | from .transforms import BuildDataTransform, DataTransformBuilder, Compose -------------------------------------------------------------------------------- /ssseg/modules/models/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .schedulers import SchedulerBuilder, BuildScheduler 3 | from .samplers import PixelSamplerBuilder, BuildPixelSampler 4 | from .segmentors import SegmentorBuilder, BuildSegmentor, EMASegmentor 5 | from .losses import LossBuilder, BuildLoss, Accuracy, calculateaccuracy, calculateloss, calculatelosses 6 | from .optimizers import OptimizerBuilder, BuildOptimizer, ParamsConstructorBuilder, BuildParamsConstructor 7 | from .backbones import ( 8 | BackboneBuilder, BuildBackbone, NormalizationBuilder, BuildNormalization, ActivationBuilder, BuildActivation, DropoutBuilder, BuildDropout 9 | ) -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import BackboneBuilder, BuildBackbone 3 | from .bricks import ( 4 | BuildDropout, BuildActivation, BuildNormalization, Scale, L2Norm, makedivisible, truncnormal, 5 | FFN, MultiheadAttention, nchwtonlc, nlctonchw, PatchEmbed, PatchMerging, AdaptivePadding, PositionEmbeddingSine, 6 | DynamicConv2d, AdptivePaddingConv2d, SqueezeExcitationConv2d, DepthwiseSeparableConv2d, InvertedResidual, InvertedResidualV3, 7 | DropoutBuilder, ActivationBuilder, NormalizationBuilder 8 | ) -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .dropout import ( 3 | DropoutBuilder, BuildDropout 4 | ) 5 | from .activation import ( 6 | ActivationBuilder, BuildActivation 7 | ) 8 | from .normalization import ( 9 | NormalizationBuilder, BuildNormalization 10 | ) 11 | from .misc import ( 12 | Scale, L2Norm, makedivisible, truncnormal 13 | ) 14 | from .transformer import ( 15 | FFN, MultiheadAttention, PatchEmbed, PatchMerging, AdaptivePadding, PositionEmbeddingSine, nchwtonlc, nlctonchw, nlc2nchw2nlc, nchw2nlc2nchw 16 | ) 17 | from .convolution import ( 18 | DynamicConv2d, AdptivePaddingConv2d, SqueezeExcitationConv2d, DepthwiseSeparableConv2d, InvertedResidual, InvertedResidualV3 19 | ) -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/activation/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import ActivationBuilder, BuildActivation -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/activation/hardsigmoid.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of HardSigmoid 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | '''HardSigmoid''' 12 | class HardSigmoid(nn.Module): 13 | def __init__(self, bias=1.0, divisor=2.0, min_value=0.0, max_value=1.0): 14 | super(HardSigmoid, self).__init__() 15 | assert divisor != 0, 'divisor is not allowed to be equal to zero' 16 | self.bias = bias 17 | self.divisor = divisor 18 | self.min_value = min_value 19 | self.max_value = max_value 20 | '''forward''' 21 | def forward(self, x): 22 | x = (x + self.bias) / self.divisor 23 | return x.clamp_(self.min_value, self.max_value) -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/activation/hardswish.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of HardSwish 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | '''HardSwish''' 12 | class HardSwish(nn.Module): 13 | def __init__(self, inplace=False): 14 | super(HardSwish, self).__init__() 15 | self.act = nn.ReLU6(inplace) 16 | '''forward''' 17 | def forward(self, x): 18 | return x * self.act(x + 3) / 6 -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/activation/swish.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of Swish 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | '''Swish''' 12 | class Swish(nn.Module): 13 | def __init__(self): 14 | super(Swish, self).__init__() 15 | '''forward''' 16 | def forward(self, x): 17 | return x * torch.sigmoid(x) -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/convolution/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .dyconv import DynamicConv2d 3 | from .apconv import AdptivePaddingConv2d 4 | from .seconv import SqueezeExcitationConv2d 5 | from .dsconv import DepthwiseSeparableConv2d 6 | from .irconv import InvertedResidual, InvertedResidualV3 -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/dropout/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import DropoutBuilder, BuildDropout -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/dropout/builder.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of DropoutBuilder and BuildDropout 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch.nn as nn 8 | from .droppath import DropPath 9 | from .....utils import BaseModuleBuilder 10 | 11 | 12 | '''DropoutBuilder''' 13 | class DropoutBuilder(BaseModuleBuilder): 14 | REGISTERED_MODULES = { 15 | 'DropPath': DropPath, 'Dropout': nn.Dropout, 'Dropout2d': nn.Dropout2d, 'Dropout3d': nn.Dropout3d, 16 | } 17 | '''build''' 18 | def build(self, dropout_cfg): 19 | if dropout_cfg is None: return nn.Identity() 20 | return super().build(dropout_cfg) 21 | 22 | 23 | '''BuildDropout''' 24 | BuildDropout = DropoutBuilder().build -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/dropout/droppath.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of DropPath 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | '''DropPath''' 12 | class DropPath(nn.Module): 13 | def __init__(self, drop_prob=0.): 14 | super(DropPath, self).__init__() 15 | self.drop_prob = drop_prob 16 | self.keep_prob = 1 - drop_prob 17 | '''forward''' 18 | def forward(self, x): 19 | if self.drop_prob == 0. or not self.training: 20 | return x 21 | shape = (x.shape[0], ) + (1, ) * (x.ndim - 1) 22 | random_tensor = self.keep_prob + torch.rand(shape, dtype=x.dtype, device=x.device) 23 | random_tensor.floor_() 24 | output = x.div(self.keep_prob) * random_tensor 25 | return output -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/misc/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .scale import Scale 3 | from .l2norm import L2Norm 4 | from .divisor import makedivisible 5 | from .weightinit import truncnormal -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/misc/divisor.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of divisor 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | 9 | 10 | '''makedivisible''' 11 | def makedivisible(value, divisor, min_value=None, min_ratio=0.9): 12 | if min_value is None: min_value = divisor 13 | new_value = max(min_value, int(value + divisor / 2) // divisor * divisor) 14 | if new_value < min_ratio * value: new_value += divisor 15 | return new_value -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/misc/l2norm.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of L2Norm 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | '''L2Norm''' 12 | class L2Norm(nn.Module): 13 | def __init__(self, channels, scale=10, eps=1e-10): 14 | super(L2Norm, self).__init__() 15 | self.channels, self.eps = channels, eps 16 | self.weight = nn.Parameter(torch.Tensor(channels)) 17 | nn.init.constant_(self.weight, scale) 18 | '''forward''' 19 | def forward(self, x): 20 | norm = x.pow(2).sum(dim=1, keepdim=True).sqrt() + self.eps 21 | x = torch.div(x, norm) 22 | out = self.weight.unsqueeze(0).unsqueeze(2).unsqueeze(3).expand_as(x) * x 23 | return out -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/misc/scale.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of Scale 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | '''Scale''' 12 | class Scale(nn.Module): 13 | def __init__(self, scale=1.0): 14 | super(Scale, self).__init__() 15 | self.scale = nn.Parameter(torch.tensor(scale, dtype=torch.float)) 16 | '''forward''' 17 | def forward(self, x): 18 | return x * self.scale -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/normalization/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import NormalizationBuilder, BuildNormalization -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/normalization/grn.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of GRN (Global Response Normalization) 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | '''GRN''' 12 | class GRN(nn.Module): 13 | def __init__(self, dim, eps=1e-6): 14 | super(GRN, self).__init__() 15 | self.eps = eps 16 | self.gamma = nn.Parameter(torch.zeros(1, 1, 1, dim)) 17 | self.beta = nn.Parameter(torch.zeros(1, 1, 1, dim)) 18 | '''forward''' 19 | def forward(self, x): 20 | Gx = torch.norm(x, p=2, dim=(1,2), keepdim=True) 21 | Nx = Gx / (Gx.mean(dim=-1, keepdim=True) + self.eps) 22 | return self.gamma * (x * Nx) + self.beta + x -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/normalization/layernorm2d.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of LayerNorm2d 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch.nn as nn 8 | import torch.nn.functional as F 9 | 10 | 11 | '''LayerNorm2d''' 12 | class LayerNorm2d(nn.LayerNorm): 13 | def __init__(self, num_channels, **kwargs): 14 | super(LayerNorm2d, self).__init__(num_channels, **kwargs) 15 | self.num_channels = self.normalized_shape[0] 16 | '''forward''' 17 | def forward(self, x): 18 | assert x.dim() == 4, f'LayerNorm2d only supports inputs with shape (N, C, H, W), but got tensor with shape {x.shape}' 19 | x = F.layer_norm( 20 | x.permute(0, 2, 3, 1), self.normalized_shape, self.weight, self.bias, self.eps 21 | ).permute(0, 3, 1, 2) 22 | return x -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/bricks/transformer/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .ffn import FFN 3 | from .mha import MultiheadAttention 4 | from .pe import PositionEmbeddingSine 5 | from .embed import PatchEmbed, PatchMerging, AdaptivePadding 6 | from .shape import nchwtonlc, nlctonchw, nlc2nchw2nlc, nchw2nlc2nchw -------------------------------------------------------------------------------- /ssseg/modules/models/backbones/timmwrapper.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of Backbones Supported by timm 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch.nn as nn 8 | 9 | 10 | '''DEFAULT_MODEL_URLS''' 11 | DEFAULT_MODEL_URLS = {} 12 | '''AUTO_ASSERT_STRUCTURE_TYPES''' 13 | AUTO_ASSERT_STRUCTURE_TYPES = {} 14 | 15 | 16 | '''TIMMBackbone''' 17 | class TIMMBackbone(nn.Module): 18 | def __init__(self, structure_type, model_name, features_only=True, pretrained=True, pretrained_model_path='', in_channels=3, extra_args={}): 19 | super(TIMMBackbone, self).__init__() 20 | import timm 21 | self.timm_model = timm.create_model( 22 | model_name=model_name, features_only=features_only, pretrained=pretrained, in_chans=in_channels, checkpoint_path=pretrained_model_path, **extra_args, 23 | ) 24 | self.timm_model.global_pool = None 25 | self.timm_model.fc = None 26 | self.timm_model.classifier = None 27 | '''forward''' 28 | def forward(self, x): 29 | features = self.timm_model(x) 30 | return features -------------------------------------------------------------------------------- /ssseg/modules/models/losses/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import LossBuilder, BuildLoss 3 | from .accuracy import Accuracy, calculateaccuracy 4 | from .functions import calculateloss, calculatelosses -------------------------------------------------------------------------------- /ssseg/modules/models/losses/builder.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of LossBuilder and BuildLoss 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | from .l1loss import L1Loss 8 | from .mseloss import MSELoss 9 | from .diceloss import DiceLoss 10 | from .kldivloss import KLDivLoss 11 | from .focalloss import FocalLoss 12 | from .lovaszloss import LovaszLoss 13 | from ...utils import BaseModuleBuilder 14 | from .crossentropyloss import CrossEntropyLoss 15 | from .cosinesimilarityloss import CosineSimilarityLoss 16 | 17 | 18 | '''LossBuilder''' 19 | class LossBuilder(BaseModuleBuilder): 20 | REGISTERED_MODULES = { 21 | 'L1Loss': L1Loss, 'MSELoss': MSELoss, 'FocalLoss': FocalLoss, 'CosineSimilarityLoss': CosineSimilarityLoss, 22 | 'DiceLoss': DiceLoss, 'KLDivLoss': KLDivLoss, 'LovaszLoss': LovaszLoss, 'CrossEntropyLoss': CrossEntropyLoss, 23 | } 24 | '''build''' 25 | def build(self, loss_cfg): 26 | return super().build(loss_cfg) 27 | 28 | 29 | '''BuildLoss''' 30 | BuildLoss = LossBuilder().build -------------------------------------------------------------------------------- /ssseg/modules/models/optimizers/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import OptimizerBuilder, BuildOptimizer 3 | from .paramsconstructor import ParamsConstructorBuilder, BuildParamsConstructor -------------------------------------------------------------------------------- /ssseg/modules/models/samplers/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import PixelSamplerBuilder, BuildPixelSampler -------------------------------------------------------------------------------- /ssseg/modules/models/samplers/builder.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of PixelSamplerBuilder and BuildPixelSampler 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | from .ugsampler import UGSampler 8 | from ...utils import BaseModuleBuilder 9 | from .ohempixelsampler import OHEMPixelSampler 10 | 11 | 12 | '''PixelSamplerBuilder''' 13 | class PixelSamplerBuilder(BaseModuleBuilder): 14 | REGISTERED_MODULES = { 15 | 'OHEMPixelSampler': OHEMPixelSampler, 'UGSampler': UGSampler, 16 | } 17 | '''build''' 18 | def build(self, pixelsampler_cfg): 19 | return super().build(pixelsampler_cfg) 20 | 21 | 22 | '''BuildPixelSampler''' 23 | BuildPixelSampler = PixelSamplerBuilder().build -------------------------------------------------------------------------------- /ssseg/modules/models/schedulers/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .builder import SchedulerBuilder, BuildScheduler -------------------------------------------------------------------------------- /ssseg/modules/models/schedulers/builder.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of SchedulerBuilder and BuildScheduler 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import copy 8 | from ...utils import BaseModuleBuilder 9 | from .polyscheduler import PolyScheduler 10 | from .cosinescheduler import CosineScheduler 11 | 12 | 13 | '''SchedulerBuilder''' 14 | class SchedulerBuilder(BaseModuleBuilder): 15 | REGISTERED_MODULES = { 16 | 'PolyScheduler': PolyScheduler, 'CosineScheduler': CosineScheduler, 17 | } 18 | '''build''' 19 | def build(self, optimizer, scheduler_cfg): 20 | scheduler_cfg = copy.deepcopy(scheduler_cfg) 21 | scheduler_type = scheduler_cfg.pop('type') 22 | scheduler_cfg.pop('optimizer') 23 | scheduler = self.REGISTERED_MODULES[scheduler_type](optimizer=optimizer, **scheduler_cfg) 24 | return scheduler 25 | 26 | 27 | '''BuildScheduler''' 28 | BuildScheduler = SchedulerBuilder().build -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .base import EMASegmentor 3 | from .builder import SegmentorBuilder, BuildSegmentor -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/annnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .annnet import ANNNet 3 | from .afnblock import AFNBlock 4 | from .apnblock import APNBlock -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/annnet/ppm.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of Pyramid Pooling Module (Concat only) 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | '''PPMConcat''' 12 | class PPMConcat(nn.Module): 13 | def __init__(self, pool_scales): 14 | super(PPMConcat, self).__init__() 15 | self.pool_nets = nn.ModuleList() 16 | for pool_scale in pool_scales: 17 | self.pool_nets.append(nn.AdaptiveAvgPool2d(pool_scale)) 18 | '''forward''' 19 | def forward(self, x): 20 | ppm_outs = [] 21 | for pool_net in self.pool_nets: 22 | ppm_out = pool_net(x) 23 | ppm_outs.append(ppm_out.view(*x.shape[:2], -1)) 24 | ppm_outs = torch.cat(ppm_outs, dim=2) 25 | return ppm_outs -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/apcnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .apcnet import APCNet 3 | from .acm import AdaptiveContextModule -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/base/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .fpn import FPN 3 | from .ema import EMASegmentor 4 | from .base import BaseSegmentor 5 | from .misc import attrfetcher, attrjudger 6 | from .feature2pyramid import Feature2Pyramid 7 | from .selfattention import SelfAttentionBlock -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/base/misc.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of segmentors-related functions 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | 9 | 10 | '''attrfetcher''' 11 | def attrfetcher(obj, attribute): 12 | if '.' in attribute: 13 | for attr in attribute.split('.'): 14 | obj = getattr(obj, attr) 15 | else: 16 | obj = getattr(obj, attribute) 17 | return obj 18 | 19 | 20 | '''attrjudger''' 21 | def attrjudger(obj, attribute): 22 | if '.' in attribute: 23 | for attr in attribute.split('.'): 24 | if hasattr(obj, attr): 25 | obj = getattr(obj, attr) 26 | else: 27 | return False 28 | return True 29 | else: 30 | return hasattr(obj, attribute) -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/ccnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .ccnet import CCNet -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/ce2p/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .ce2p import CE2P 3 | from .epm import EdgePerceivingModule -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/danet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .danet import DANet 3 | from .cam import ChannelAttentionModule 4 | from .pam import PositionAttentionModule -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/danet/pam.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of Position Attention Module (PAM) 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | from ...backbones import Scale 8 | from ..base import SelfAttentionBlock 9 | 10 | 11 | '''PositionAttentionModule''' 12 | class PositionAttentionModule(SelfAttentionBlock): 13 | def __init__(self, in_channels, transform_channels): 14 | super(PositionAttentionModule, self).__init__( 15 | key_in_channels=in_channels, query_in_channels=in_channels, transform_channels=transform_channels, out_channels=in_channels, 16 | share_key_query=False, query_downsample=None, key_downsample=None, key_query_num_convs=1, value_out_num_convs=1, key_query_norm=False, 17 | value_out_norm=False, matmul_norm=False, with_out_project=False, norm_cfg=None, act_cfg=None, 18 | ) 19 | self.gamma = Scale(scale=0) 20 | '''forward''' 21 | def forward(self, x): 22 | out = super(PositionAttentionModule, self).forward(x, x) 23 | out = self.gamma(out) + x 24 | return out -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/deeplabv3/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .aspp import ASPP 3 | from .deeplabv3 import Deeplabv3 -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/deeplabv3plus/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .deeplabv3plus import Deeplabv3Plus 3 | from .aspp import DepthwiseSeparableASPP -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/dmnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .dmnet import DMNet 3 | from .dcm import DynamicConvolutionalModule -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/dnlnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .dnlnet import DNLNet 3 | from .dnlblock import DisentangledNonLocal2d -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/edgesam/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .edgesam import EdgeSAM, EdgeSAMPredictor, EdgeSAMAutomaticMaskGenerator -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/edgesam/maskdecoder.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of MaskDecoder 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | from ..sam.maskdecoder import MaskDecoder as _MaskDecoder 8 | 9 | 10 | '''MaskDecoder''' 11 | class MaskDecoder(_MaskDecoder): 12 | '''forward''' 13 | def forward(self, image_embeddings, image_pe, sparse_prompt_embeddings, dense_prompt_embeddings, num_multimask_outputs): 14 | assert num_multimask_outputs in [1, 3, 4] 15 | masks, iou_pred = self.predictmasks( 16 | image_embeddings=image_embeddings, 17 | image_pe=image_pe, 18 | sparse_prompt_embeddings=sparse_prompt_embeddings, 19 | dense_prompt_embeddings=dense_prompt_embeddings, 20 | ) 21 | # select the correct mask or masks for output 22 | mask_slice = { 23 | 1: slice(0, 1), 3: slice(1, None), 4: slice(0, None), 24 | }[num_multimask_outputs] 25 | masks = masks[:, mask_slice, :, :] 26 | iou_pred = iou_pred[:, mask_slice] 27 | # prepare output 28 | return masks, iou_pred -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/emanet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .ema import EMAModule 3 | from .emanet import EMANet -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/encnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .encnet import ENCNet 3 | from .encoding import Encoding 4 | from .contextencoding import ContextEncoding -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/fastfcn/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .jpu import JPU 3 | from .fastfcn import FastFCN -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/fcn/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .fcn import FCN, DepthwiseSeparableFCN -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/gcnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .gcnet import GCNet 3 | from .contextblock import ContextBlock -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/icnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .icnet import ICNet 3 | from .icneck import ICNeck 4 | from .icnetencoder import ICNetEncoder -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/idrnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .idrnet import IDRNet -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/isanet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .isanet import ISANet -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/isnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .isnet import ISNet 3 | from .imagelevel import ImageLevelContext 4 | from .semanticlevel import SemanticLevelContext -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/lrasppnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .lrasppnet import LRASPPNet -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/mask2former/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .mask2former import Mask2Former -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/mask2former/transformers/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .criterion import SetCriterion 3 | from .matcher import HungarianMatcher 4 | from .pixeldecoder import MSDeformAttnPixelDecoder 5 | from .predictor import MultiScaleMaskedTransformerDecoder -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/mask2former/transformers/misc.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of some utils 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import copy 8 | import torch.nn as nn 9 | 10 | 11 | '''getclones''' 12 | def getclones(module, N): 13 | return nn.ModuleList([copy.deepcopy(module) for i in range(N)]) -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/maskformer/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .maskformer import MaskFormer -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/maskformer/transformers/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .predictor import Predictor 3 | from .criterion import SetCriterion 4 | from .transformer import Transformer 5 | from .matcher import HungarianMatcher -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/mcibi/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .mcibi import MCIBI 3 | from .memory import FeaturesMemory -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/mcibiplusplus/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .memoryv2 import FeaturesMemoryV2 3 | from .mcibiplusplus import MCIBIPlusPlus -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/mobilesam/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .mobilesam import MobileSAM, MobileSAMPredictor, MobileSAMAutomaticMaskGenerator -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/nonlocalnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .nonlocalnet import NonLocalNet 3 | from .nonlocalblock import NonLocal1d, NonLocal2d, NonLocal3d -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/ocrnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .ocrnet import OCRNet 3 | from .objectcontext import ObjectContextBlock 4 | from .spatialgather import SpatialGatherModule -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/ocrnet/spatialgather.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of SpatialGatherModule 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import torch 8 | import torch.nn as nn 9 | import torch.nn.functional as F 10 | 11 | 12 | '''SpatialGatherModule''' 13 | class SpatialGatherModule(nn.Module): 14 | def __init__(self, scale=1): 15 | super(SpatialGatherModule, self).__init__() 16 | self.scale = scale 17 | '''forward''' 18 | def forward(self, features, probs): 19 | batch_size, num_classes, h, w = probs.size() 20 | probs = probs.view(batch_size, num_classes, -1) 21 | features = features.view(batch_size, features.size(1), -1) 22 | features = features.permute(0, 2, 1) 23 | probs = F.softmax(self.scale * probs, dim=2) 24 | ocr_context = torch.matmul(probs, features) 25 | ocr_context = ocr_context.permute(0, 2, 1).contiguous().unsqueeze(3) 26 | return ocr_context -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/pointrend/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .pointrend import PointRend -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/psanet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .psanet import PSANet -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/pspnet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .pspnet import PSPNet 3 | from .ppm import PyramidPoolingModule -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/sam/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .sam import SAM, SAMPredictor, SAMAutomaticMaskGenerator -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/samhq/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .samhq import SAMHQ, SAMHQPredictor, SAMHQAutomaticMaskGenerator -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/samv2/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .samv2 import SAMV2, SAMV2ImagePredictor, SAMV2VideoPredictor, SAMV2AutomaticMaskGenerator -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/segformer/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .segformer import Segformer -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/semanticfpn/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .semanticfpn import SemanticFPN -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/setr/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .mla import MLANeck 3 | from .setr import SETRUP 4 | from .setr import SETRMLA -------------------------------------------------------------------------------- /ssseg/modules/models/segmentors/upernet/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .upernet import UPerNet -------------------------------------------------------------------------------- /ssseg/modules/parallel/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .model import BuildDistributedModel 3 | from .dataloader import BuildDistributedDataloader -------------------------------------------------------------------------------- /ssseg/modules/parallel/dataloader.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of BuildDistributedDataloader 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import copy 8 | import torch 9 | 10 | 11 | '''BuildDistributedDataloader''' 12 | def BuildDistributedDataloader(dataset, dataloader_cfg): 13 | dataloader_cfg = copy.deepcopy(dataloader_cfg) 14 | # build dataloader 15 | shuffle = dataloader_cfg.pop('shuffle') 16 | dataloader_cfg['shuffle'] = False 17 | dataloader_cfg['sampler'] = torch.utils.data.distributed.DistributedSampler(dataset, shuffle=shuffle) 18 | dataloader = torch.utils.data.DataLoader(dataset, **dataloader_cfg) 19 | # return 20 | return dataloader -------------------------------------------------------------------------------- /ssseg/modules/parallel/model.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Function: 3 | Implementation of BuildDistributedModel 4 | Author: 5 | Zhenchao Jin 6 | ''' 7 | import copy 8 | import torch.nn as nn 9 | 10 | 11 | '''BuildDistributedModel''' 12 | def BuildDistributedModel(model, model_cfg): 13 | model_cfg = copy.deepcopy(model_cfg) 14 | return nn.parallel.DistributedDataParallel(model, **model_cfg) -------------------------------------------------------------------------------- /ssseg/modules/utils/__init__.py: -------------------------------------------------------------------------------- 1 | '''initialize''' 2 | from .slurm import initslurm 3 | from .env import EnvironmentCollector 4 | from .configparser import ConfigParser 5 | from .modulebuilder import BaseModuleBuilder 6 | from .datastructure import SSSegInputStructure, SSSegOutputStructure 7 | from .misc import setrandomseed, postprocesspredgtpairs, ismainprocess 8 | from .logger import LoggerHandleBuilder, BuildLoggerHandle, TrainingLoggingManager 9 | from .io import touchdir, loadckpts, saveckpts, loadpretrainedweights, symlink, judgefileexist, touchdirs --------------------------------------------------------------------------------