_base_ = [ '../_base_/models/fpn_poolformer_s12.py', '../_base_/default_runtime.py', '../_base_/schedules/schedule_40k.py' ] # dataset settings dataset_type = 'ADE20KDataset' data_root = 'data/ade/ADEChallengeData2016' img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) crop_size = (512, 512) data_preprocessor = dict(size=crop_size) train_pipeline = [ dict(type='LoadImageFromFile'), dict(type='LoadAnnotations', reduce_zero_label=True), dict( type='RandomResize', scale=(2048, 512), ratio_range=(0.5, 2.0), keep_ratio=True), dict(type='RandomCrop', crop_size=crop_size, cat_max_ratio=0.75), dict(type='RandomFlip', prob=0.5), dict(type='PhotoMetricDistortion'), dict(type='PackSegInputs') ] test_pipeline = [ dict(type='LoadImageFromFile'), dict(type='Resize', scale=(2048, 512), keep_ratio=True), dict(type='ResizeToMultiple', size_divisor=32), # add loading annotation after ``Resize`` because ground truth # does not need to do resize data transform dict(type='LoadAnnotations', reduce_zero_label=True), dict(type='PackSegInputs') ] train_dataloader = dict( batch_size=4, num_workers=4, persistent_workers=True, sampler=dict(type='InfiniteSampler', shuffle=True), dataset=dict( type='RepeatDataset', times=50, dataset=dict( type=dataset_type, data_root=data_root, data_prefix=dict( img_path='images/training', seg_map_path='annotations/training'), pipeline=train_pipeline))) val_dataloader = dict( batch_size=1, num_workers=4, persistent_workers=True, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type=dataset_type, data_root=data_root, data_prefix=dict( img_path='images/validation', seg_map_path='annotations/validation'), pipeline=test_pipeline)) test_dataloader = val_dataloader val_evaluator = dict(type='IoUMetric', iou_metrics=['mIoU']) test_evaluator = val_evaluator # model settings model = dict( data_preprocessor=data_preprocessor, neck=dict(in_channels=[64, 128, 320, 512]), decode_head=dict(num_classes=150)) # optimizer # optimizer = dict(_delete_=True, type='AdamW', lr=0.0002, weight_decay=0.0001) # optimizer_config = dict() # # learning policy # lr_config = dict(policy='poly', power=0.9, min_lr=0.0, by_epoch=False) optim_wrapper = dict( _delete_=True, type='AmpOptimWrapper', optimizer=dict(type='AdamW', lr=0.0002, weight_decay=0.0001)) param_scheduler = [ dict( type='PolyLR', power=0.9, begin=0, end=40000, eta_min=0.0, by_epoch=False, ) ]