|
- _base_ = [
- '../_base_/default_runtime.py', '../_base_/schedules/schedule_160k.py'
- ]
- # model settings
- checkpoint_file = 'https://download.openmmlab.com/mmsegmentation/v0.5/pretrain/segnext/mscan_t_20230227-119e8c9f.pth' # noqa
- ham_norm_cfg = dict(type='GN', num_groups=32, requires_grad=True)
- model = dict(
- type='EncoderDecoder',
- pretrained=None,
- backbone=dict(
- type='MSCAN',
- init_cfg=dict(type='Pretrained', checkpoint=checkpoint_file),
- embed_dims=[32, 64, 160, 256],
- mlp_ratios=[8, 8, 4, 4],
- drop_rate=0.0,
- drop_path_rate=0.1,
- depths=[3, 3, 5, 2],
- attention_kernel_sizes=[5, [1, 7], [1, 11], [1, 21]],
- attention_kernel_paddings=[2, [0, 3], [0, 5], [0, 10]],
- act_cfg=dict(type='GELU'),
- norm_cfg=dict(type='BN', requires_grad=True)),
- decode_head=dict(
- type='LightHamHead',
- in_channels=[64, 160, 256],
- in_index=[1, 2, 3],
- channels=256,
- ham_channels=256,
- dropout_ratio=0.1,
- num_classes=150,
- norm_cfg=ham_norm_cfg,
- align_corners=False,
- loss_decode=dict(
- type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
- ham_kwargs=dict(
- MD_S=1,
- MD_R=16,
- train_steps=6,
- eval_steps=7,
- inv_t=100,
- rand_init=True)),
- # model training and testing settings
- train_cfg=dict(),
- test_cfg=dict(mode='whole'))
-
- # 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)
- train_pipeline = [
- dict(type='LoadImageFromFile'),
- dict(type='LoadAnnotations', reduce_zero_label=True),
- dict(type='Resize', img_scale=(2048, 512), ratio_range=(0.5, 2.0)),
- dict(type='RandomCrop', crop_size=crop_size, cat_max_ratio=0.75),
- dict(type='RandomFlip', prob=0.5),
- dict(type='PhotoMetricDistortion'),
- dict(type='Normalize', **img_norm_cfg),
- dict(type='Pad', size=crop_size, pad_val=0, seg_pad_val=255),
- dict(type='DefaultFormatBundle'),
- dict(type='Collect', keys=['img', 'gt_semantic_seg']),
- ]
- test_pipeline = [
- dict(type='LoadImageFromFile'),
- dict(
- type='MultiScaleFlipAug',
- img_scale=(2048, 512),
- # img_ratios=[0.5, 0.75, 1.0, 1.25, 1.5, 1.75],
- flip=False,
- transforms=[
- dict(type='Resize', keep_ratio=True),
- dict(type='ResizeToMultiple', size_divisor=32),
- dict(type='RandomFlip'),
- dict(type='Normalize', **img_norm_cfg),
- dict(type='ImageToTensor', keys=['img']),
- dict(type='Collect', keys=['img']),
- ])
- ]
- data = dict(
- samples_per_gpu=16,
- workers_per_gpu=4,
- train=dict(
- type='RepeatDataset',
- times=50,
- dataset=dict(
- type=dataset_type,
- data_root=data_root,
- img_dir='images/training',
- ann_dir='annotations/training',
- pipeline=train_pipeline)),
- val=dict(
- type=dataset_type,
- data_root=data_root,
- img_dir='images/validation',
- ann_dir='annotations/validation',
- pipeline=test_pipeline),
- test=dict(
- type=dataset_type,
- data_root=data_root,
- img_dir='images/validation',
- ann_dir='annotations/validation',
- pipeline=test_pipeline))
-
- # optimizer
- optimizer = dict(
- _delete_=True,
- type='AdamW',
- lr=0.00006,
- betas=(0.9, 0.999),
- weight_decay=0.01,
- paramwise_cfg=dict(
- custom_keys={
- 'pos_block': dict(decay_mult=0.),
- 'norm': dict(decay_mult=0.),
- 'head': dict(lr_mult=10.)
- }))
-
- lr_config = dict(
- _delete_=True,
- policy='poly',
- warmup='linear',
- warmup_iters=1500,
- warmup_ratio=1e-6,
- power=1.0,
- min_lr=0.0,
- by_epoch=False)
|