Closed wzr0108 closed 10 months ago
作者您好,我用nwpu数据集试了samseg-maskrcnn和rsprompter_anchor两种方法,但是得到的结果和论文不一样,不知道是不是我哪里配置错了。 绿色是samseg-maskrcnn的结果(segm_mAP_copypaste: 0.670 0.927 0.708 0.192 0.629 0.799),黄色是rsprompter_anchor的结果(segm_mAP_copypaste: 0.451 0.689 0.451 0.021 0.388 0.719),samseg-maskrcnn更高,与论文的结论相反。 以下是我的环境:
python 3.8 torch==2.0.0+cu117 mmcv==2.1.0 mmengine==0.10.1
samseg-maskrcnn的配置
_base_ = ['_base_/samseg-maskrcnn.py'] work_dir = '/hy-tmp/work_dirs/rsprompter/samseg-maskrcnn-nwpu' default_hooks = dict( timer=dict(type='IterTimerHook'), logger=dict(type='LoggerHook', interval=5), param_scheduler=dict(type='ParamSchedulerHook'), checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=5, save_best='coco/bbox_mAP', rule='greater', save_last=True), sampler_seed=dict(type='DistSamplerSeedHook'), # visualization=dict(type='DetVisualizationHook', draw=True, interval=1, test_out_dir='vis_data') ) vis_backends = [dict(type='LocalVisBackend'), dict(type="TensorboardVisBackend"), ] visualizer = dict( type='DetLocalVisualizer', vis_backends=vis_backends, name='visualizer') num_classes = 10 # sam base model hf_sam_pretrain_name = "checkpoints/sam-vit-base" hf_sam_pretrain_ckpt_path = "checkpoints/sam-vit-base/pytorch_model.bin" # # sam large model # hf_sam_pretrain_name = "facebook/sam-vit-large" # hf_sam_pretrain_ckpt_path = "~/.cache//huggingface/hub/models--facebook--sam-vit-large/snapshots/70009d56dac23ebb3265377257158b1d6ed4c802/pytorch_model.bin" # # sam huge model # hf_sam_pretrain_name = "facebook/sam-vit-huge" # hf_sam_pretrain_ckpt_path = "~/.cache/huggingface/hub/models--facebook--sam-vit-huge/snapshots/89080d6dcd9a900ebd712b13ff83ecf6f072e798/pytorch_model.bin" model = dict( type='SAMSegMaskRCNN', backbone=dict( hf_pretrain_name=hf_sam_pretrain_name, init_cfg=dict(type='Pretrained', checkpoint=hf_sam_pretrain_ckpt_path)), neck=dict( feature_aggregator=dict( in_channels="facebook/sam-vit-base", hidden_channels=32, select_layers=range(1, 13, 2), #### should be changed when using different pretrain model, base: range(1, 13, 2), large: range(1, 25, 2), huge: range(1, 33, 2) ), ), roi_head=dict( bbox_head=dict( num_classes=num_classes ), mask_head=dict( num_classes=num_classes ), ), ) dataset_type = 'NWPUInsSegDataset' #### should be changed align with your code root and data root code_root = '/root/RSPrompter' data_root = '/root/RSPrompter/data/NWPU' batch_size_per_gpu = 2 num_workers = 2 persistent_workers = True train_dataloader = dict( batch_size=batch_size_per_gpu, num_workers=num_workers, persistent_workers=persistent_workers, dataset=dict( type=dataset_type, data_root=data_root, ann_file=code_root + '/data/NWPU/annotations/NWPU_instances_train.json', data_prefix=dict(img='imgs'), ) ) val_dataloader = dict( batch_size=batch_size_per_gpu, num_workers=num_workers, persistent_workers=persistent_workers, dataset=dict( type=dataset_type, data_root=data_root, ann_file=code_root + '/data/NWPU/annotations/NWPU_instances_val.json', data_prefix=dict(img='imgs'), ) ) find_unused_parameters = True test_dataloader = val_dataloader resume = False load_from = None base_lr = 0.0002 max_epochs = 250 train_cfg = dict(max_epochs=max_epochs) param_scheduler = [ dict( type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=50), dict( type='CosineAnnealingLR', eta_min=base_lr * 0.001, begin=1, end=max_epochs, T_max=max_epochs, by_epoch=True ) ] optim_wrapper = dict( type='AmpOptimWrapper', dtype='float16', optimizer=dict( type='AdamW', lr=base_lr, weight_decay=0.05 ) )
rsprompter_anchor的配置
_base_ = ['_base_/rsprompter_anchor.py'] work_dir = '/hy-tmp/work_dirs/rsprompter/rsprompter_anchor-nwpu' default_hooks = dict( timer=dict(type='IterTimerHook'), logger=dict(type='LoggerHook', interval=5), param_scheduler=dict(type='ParamSchedulerHook'), checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=4, save_best='coco/bbox_mAP', rule='greater', save_last=True), sampler_seed=dict(type='DistSamplerSeedHook'), # visualization=dict(type='DetVisualizationHook', draw=True, interval=1, test_out_dir='vis_data') ) vis_backends = [dict(type='LocalVisBackend'), dict(type="TensorboardVisBackend"), ] visualizer = dict( type='DetLocalVisualizer', vis_backends=vis_backends, name='visualizer') num_classes = 10 prompt_shape = (70, 5) # (per img pointset, per pointset point) #### should be changed when using different pretrain model # sam base model hf_sam_pretrain_name = "checkpoints/sam-vit-base" hf_sam_pretrain_ckpt_path = "checkpoints/sam-vit-base/pytorch_model.bin" # # sam large model # hf_sam_pretrain_name = "facebook/sam-vit-large" # hf_sam_pretrain_ckpt_path = "~/.cache//huggingface/hub/models--facebook--sam-vit-large/snapshots/70009d56dac23ebb3265377257158b1d6ed4c802/pytorch_model.bin" # # sam huge model # hf_sam_pretrain_name = "facebook/sam-vit-huge" # hf_sam_pretrain_ckpt_path = "~/.cache/huggingface/hub/models--facebook--sam-vit-huge/snapshots/89080d6dcd9a900ebd712b13ff83ecf6f072e798/pytorch_model.bin" model = dict( decoder_freeze=False, shared_image_embedding=dict( hf_pretrain_name=hf_sam_pretrain_name, init_cfg=dict(type='Pretrained', checkpoint=hf_sam_pretrain_ckpt_path), ), backbone=dict( hf_pretrain_name=hf_sam_pretrain_name, init_cfg=dict(type='Pretrained', checkpoint=hf_sam_pretrain_ckpt_path) ), neck=dict( feature_aggregator=dict( in_channels="facebook/sam-vit-base", hidden_channels=32, select_layers=range(1, 13, 2), #### should be changed when using different pretrain model, base: range(1, 13, 2), large: range(1, 25, 2), huge: range(1, 33, 2) ), ), roi_head=dict( bbox_head=dict( num_classes=num_classes, ), mask_head=dict( mask_decoder=dict( hf_pretrain_name=hf_sam_pretrain_name, init_cfg=dict(type='Pretrained', checkpoint=hf_sam_pretrain_ckpt_path) ), per_pointset_point=prompt_shape[1], with_sincos=True, ), ), ) dataset_type = 'NWPUInsSegDataset' #### should be changed align with your code root and data root code_root = '/root/RSPrompter' data_root = '/root/RSPrompter/data/NWPU' batch_size_per_gpu = 1 num_workers = 1 persistent_workers = True train_dataloader = dict( batch_size=batch_size_per_gpu, num_workers=num_workers, persistent_workers=persistent_workers, dataset=dict( type=dataset_type, data_root=data_root, ann_file=code_root + '/data/NWPU/annotations/NWPU_instances_train.json', data_prefix=dict(img='imgs'), ) ) val_dataloader = dict( batch_size=batch_size_per_gpu, num_workers=num_workers, persistent_workers=persistent_workers, dataset=dict( type=dataset_type, data_root=data_root, ann_file=code_root + '/data/NWPU/annotations/NWPU_instances_val.json', data_prefix=dict(img='imgs'), ) ) find_unused_parameters = True test_dataloader = val_dataloader resume = False load_from = None base_lr = 0.0002 max_epochs = 500 train_cfg = dict(max_epochs=max_epochs) param_scheduler = [ dict( type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=50), dict( type='CosineAnnealingLR', eta_min=base_lr * 0.001, begin=1, end=max_epochs, T_max=max_epochs, by_epoch=True ) ] #### AMP training config runner_type = 'Runner' optim_wrapper = dict( type='AmpOptimWrapper', dtype='float16', optimizer=dict( type='AdamW', lr=base_lr, weight_decay=0.05) ) #### DeepSpeed training config # runner_type = 'FlexibleRunner' # strategy = dict( # type='DeepSpeedStrategy', # fp16=dict( # enabled=True, # auto_cast=False, # fp16_master_weights_and_grads=False, # loss_scale=0, # loss_scale_window=500, # hysteresis=2, # min_loss_scale=1, # initial_scale_power=15, # ), # inputs_to_half=['inputs'], # zero_optimization=dict( # stage=2, # allgather_partitions=True, # allgather_bucket_size=2e8, # reduce_scatter=True, # reduce_bucket_size='auto', # overlap_comm=True, # contiguous_gradients=True, # ), # ) # optim_wrapper = dict( # type='DeepSpeedOptimWrapper', # optimizer=dict( # type='AdamW', # lr=base_lr, # weight_decay=0.05 # ) # )
samseg-maskrcnn的log 20231213_155950.log
rsprompter_anchor的log 20231213_200229.log
从图上可以看出,你这个黄色的还没有收敛,指标还在上升区间,需要继续训练
作者您好,我用nwpu数据集试了samseg-maskrcnn和rsprompter_anchor两种方法,但是得到的结果和论文不一样,不知道是不是我哪里配置错了。 绿色是samseg-maskrcnn的结果(segm_mAP_copypaste: 0.670 0.927 0.708 0.192 0.629 0.799),黄色是rsprompter_anchor的结果(segm_mAP_copypaste: 0.451 0.689 0.451 0.021 0.388 0.719),samseg-maskrcnn更高,与论文的结论相反。 以下是我的环境:
samseg-maskrcnn的配置
rsprompter_anchor的配置