Closed rouchoo closed 1 year ago
i run the segformer model. My config file is following:
norm_cfg = dict(type='BN', requires_grad=True)
data_preprocessor = dict(
type='SegDataPreProcessor',
mean=[123.675, 116.28, 103.53, ],
std=[ 58.395, 57.12, 57.375, ],
bgr_to_rgb=True,
pad_val=0,
seg_pad_val=255,
size=( 512, 512, ))
model = dict(
type='EncoderDecoder',
data_preprocessor=dict(
type='SegDataPreProcessor',
mean=[ 123.675, 116.28, 103.53, ],
std=[ 58.395, 57.12, 57.375, ],
bgr_to_rgb=True,
pad_val=0,
seg_pad_val=255,
size=( 512, 512, )),
pretrained=None,
backbone=dict(
type='MixVisionTransformer',
in_channels=3,
embed_dims=64,
num_stages=4,
num_layers=[ 3, 8, 27, 3,],
num_heads=[ 1, 2, 5, 8, ],
patch_sizes=[ 7, 3, 3, 3, ],
sr_ratios=[ 8, 4, 2, 1, ],
out_indices=( 0, 1, 2, 3, ),
mlp_ratio=4,
qkv_bias=True,
drop_rate=0.0,
attn_drop_rate=0.0,
drop_path_rate=0.1,
init_cfg=dict( type='Pretrained', checkpoint= 'https://download.openmmlab.com/mmsegmentation/v0.5/pretrain/segformer/mit_b4_20220624-d588d980.pth' )),
decode_head=dict( type='SegformerHead', in_channels=[ 64, 128, 320, 512, ], in_index=[ 0, 1, 2, 3, ],
channels=256,
dropout_ratio=0.1,
num_classes=2,
norm_cfg=dict(type='SyncBN', requires_grad=True),
align_corners=False,
loss_decode=dict( type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)),
train_cfg=dict(mode='slide', crop_size=(512, 512,), stride=( 128,128)),
test_cfg=dict(mode='slide', crop_size=(512,512), stride=(128,128)))
dataset_type = 'MyDataset'
data_root = '/home/rouch/leaf_vein_all_datasets/leafvein_cut_T_org'
crop_size = ( 512, 512,)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', reduce_zero_label=False),
dict(type='RandomCrop', crop_size=( 512, 512, ), cat_max_ratio=0.75),
dict(type='RandomFlip', prob=0.5),
dict(type='PhotoMetricDistortion'),
dict(type='PackSegInputs'),
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', reduce_zero_label=False),
dict(type='PackSegInputs'),
]
img_ratios = [
0.5,
0.75,
1.0,
1.25,
1.5,
1.75,
]
tta_pipeline = [
dict(type='LoadImageFromFile', backend_args=None),
dict(
type='TestTimeAug',
transforms=[
[
dict(type='Resize', scale_factor=0.5, keep_ratio=True),
dict(type='Resize', scale_factor=0.75, keep_ratio=True),
dict(type='Resize', scale_factor=1.0, keep_ratio=True),
dict(type='Resize', scale_factor=1.25, keep_ratio=True),
dict(type='Resize', scale_factor=1.5, keep_ratio=True),
dict(type='Resize', scale_factor=1.75, keep_ratio=True),
],
[
dict(type='RandomFlip', prob=0.0, direction='horizontal'),
dict(type='RandomFlip', prob=1.0, direction='horizontal'),
],
[
dict(type='LoadAnnotations'),
],
[
dict(type='PackSegInputs'),
],
]),
]
train_dataloader = dict(
batch_size=2,
num_workers=2,
persistent_workers=True,
sampler=dict(type='InfiniteSampler', shuffle=True),
dataset=dict(
type='MyDataset',
data_root='/home/rouch/leaf_vein_all_datasets/leafvein_cut_T_org',
data_prefix=dict(
img_path='img_dir/train', seg_map_path='ann_dir/train'),
pipeline=[
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', reduce_zero_label=False),
dict(
type='RandomCrop', crop_size=(
512,
512,
), cat_max_ratio=0.75),
dict(type='RandomFlip', prob=0.5),
dict(type='PhotoMetricDistortion'),
dict(type='PackSegInputs'),
]))
val_dataloader = dict(
batch_size=1,
num_workers=4,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=dict(
type='MyDataset',
data_root='/home/rouch/leaf_vein_all_datasets/leafvein_cut_T_org',
data_prefix=dict(img_path='img_dir/val', seg_map_path='ann_dir/val'),
pipeline=[
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', reduce_zero_label=False),
dict(type='PackSegInputs'),
]))
test_dataloader = dict(
batch_size=1,
num_workers=4,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=dict(
type='MyDataset',
data_root='/home/rouch/leaf_vein_all_datasets/leafvein_cut_T_org',
data_prefix=dict(img_path='img_dir/test', seg_map_path='ann_dir/test'),
pipeline=[
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', reduce_zero_label=False),
dict(type='PackSegInputs'),
]))
val_evaluator = dict(
type='IoUMetric', iou_metrics=[
'mIoU',
])
test_evaluator = dict(
batch_size=1,
num_workers=4,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=dict(
type='MyDataset',
data_root='/home/rouch/leaf_vein_all_datasets/leafvein_cut_T_org',
data_prefix=dict(img_path='img_dir/test', seg_map_path='ann_dir/test'),
pipeline=[
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', reduce_zero_label=False),
dict(type='PackSegInputs'),
]))
default_scope = 'mmseg'
env_cfg = dict(
cudnn_benchmark=True,
mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),
dist_cfg=dict(backend='nccl'))
vis_backends = [
dict(type='LocalVisBackend'),
]
visualizer = dict(
type='SegLocalVisualizer',
vis_backends=[
dict(type='LocalVisBackend'),
],
name='visualizer')
log_processor = dict(by_epoch=False)
log_level = 'INFO'
load_from = None
resume = '/home/rouch/PycharmProjects/mseg1x/result/segb4/last_checkpoint'
tta_model = dict(type='SegTTAModel')
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005)
optim_wrapper = dict(
type='OptimWrapper',
optimizer=dict(
type='AdamW', lr=6e-05, betas=(
0.9,
0.999,
), weight_decay=0.01),
paramwise_cfg=dict(
custom_keys=dict(
pos_block=dict(decay_mult=0.0),
norm=dict(decay_mult=0.0),
head=dict(lr_mult=10.0))))
param_scheduler = [
dict(
type='LinearLR', start_factor=1e-06, by_epoch=False, begin=0,
end=1500),
dict(
type='PolyLR',
eta_min=0.0,
power=1.0,
begin=1500,
end=160000,
by_epoch=False),
]
train_cfg = dict(
type='IterBasedTrainLoop', max_iters=120000, val_interval=10000)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')
default_hooks = dict(
timer=dict(type='IterTimerHook'),
logger=dict(type='LoggerHook', interval=50, log_metric_by_epoch=False),
param_scheduler=dict(type='ParamSchedulerHook'),
checkpoint=dict(type='CheckpointHook', by_epoch=False, interval=40000),
sampler_seed=dict(type='DistSamplerSeedHook'),
visualization=dict(type='SegVisualizationHook'))
checkpoint = 'https://download.openmmlab.com/mmsegmentation/v0.5/pretrain/segformer/mit_b4_20220624-d588d980.pth'
launcher = 'none'
work_dir = '/home/rouch/PycharmProjects/mseg1x/result/segb4'
the version of mmcv and mmsegmentstion is:
Hi @Lenleooo, Could you provide a full error log? This error usually means that there are some errors in the config.
Hi @Lenleooo, Could you provide a full error log? This error usually means that there are some errors in the config.
thanks for your attention. Here it is:
it seems that the parameter cfg in build_from_cfg(cfg, registry, default_args) from build_functions.py lacks the key "type". But i do not know how to set. Please help! Thanks!
when i add "type=None," in test_dataloader from segformer_mit-b4_8xb2-160k_ade20k-512x512.py, the bug disappears, But the new problem appears:
Hi @Lenleooo,
The test_evaluator
in your config is incorrect:
test_evaluator = dict(
batch_size=1,
num_workers=4,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=dict(
type='MyDataset',
data_root='/home/rouch/leaf_vein_all_datasets/leafvein_cut_T_org',
data_prefix=dict(img_path='img_dir/test', seg_map_path='ann_dir/test'),
pipeline=[
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', reduce_zero_label=False),
dict(type='PackSegInputs'),
]))
You might modify it to:
test_evaluator = dict(
type='IoUMetric', iou_metrics=[
'mIoU',
])
Thanks for your help. It works.
when training, my project can run normally. However, when testing, it reports the error: in build_from_cfg raise KeyError( KeyError: '
cfg
ordefault_args
must contain the key "type"