weight = 'weights/volt-small-scannet.pth' resume = False evaluate = True test_only = False seed = 5793371 save_path = 'exp/scannet/2026-07-23_152153' num_worker = 16 batch_size = 8 gradient_accumulation_steps = 1 batch_size_val = None batch_size_test = None epoch = 75 eval_epoch = 75 clip_grad = 10.0 use_ema = False ema_decay = 0.999 dataset_ratios = None sync_bn = False enable_amp = True amp_dtype = 'float16' empty_cache = False empty_cache_per_epoch = False find_unused_parameters = True enable_wandb = True wandb_project = 'Volt' wandb_key = None mix_prob = 0.8 param_dicts = None hooks = [ dict( type='CheckpointLoader', keywords='module.backbone', replacement='module.backbone'), dict(type='IterationTimer', warmup_iter=2), dict(type='InformationWriter'), dict( type='InsSegEvaluator', segment_ignore_index=(-1, 0, 1), instance_ignore_index=-1), dict(type='CheckpointSaver', save_freq=None), dict(type='PreciseEvaluator', test_last=False) ] train = dict(type='DefaultTrainer') test = dict( type='InsSegTester', verbose=True, segment_ignore_index=(-1, 0, 1), instance_ignore_index=-1) CLASS_LABELS_20 = ('wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'shower curtain', 'toilet', 'sink', 'bathtub', 'otherfurniture') VALID_CLASS_IDS_20 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39) class_names = ('wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'shower curtain', 'toilet', 'sink', 'bathtub', 'otherfurniture') class_ids = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39) num_classes = 20 segment_ignore_index = (-1, 0, 1) semantic_num_classes = 18 num_channels = 128 model = dict( type='SPFormer-v1m1', backbone=dict( type='Volt', in_channels=6, embed_dim=384, depth=12, num_heads=6, mlp_ratio=4, init_values=None, qk_norm=True, drop_path=0.3, stride=5, kernel_size=5, increase_drop_path=True, up_mlp_dim=128), decoder=dict( type='SPFormerDecoder', num_class=18, in_channel=128, num_layer=6, num_query=400, d_model=384, nhead=8, hidden_dim=1024, dropout=0.0, activation_fn='gelu', iter_pred=True, attn_mask=True, use_query_pos=False, use_score=False, use_param_query=True), criterion=dict( type='SPFormerCriterion', matcher=dict( type='SPFormerHungarianMatcher', costs=[ dict(type='SPFormerQueryClassificationCost', weight=0.5), dict(type='SPFormerMaskBCECost', weight=1.0), dict(type='SPFormerMaskDiceCost', weight=1.0) ]), loss_weight=[0.2, 1.0, 1.0, 0.5], num_classes=18, non_object_weight=0.1, fix_dice_loss_weight=False, iter_matcher=True, fix_mean_loss=True), semantic_num_classes=18, semantic_ignore_index=-1, segment_ignore_index=(-1, 0, 1), instance_ignore_index=-1, topk_insts=100, score_thr=0.0, npoint_thr=100, nms=True) optimizer = dict(type='AdamW', lr=0.0003, weight_decay=0.1) scheduler = dict(type='PolyLR') dataset_type = 'ScanNetDataset' data_root = 'data/scannet' data = dict( num_classes=20, ignore_index=-1, names=('wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'shower curtain', 'toilet', 'sink', 'bathtub', 'otherfurniture'), ids=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39), train=dict( type='ScanNetDataset', split='train', data_root='data/scannet', transform=[ dict(type='CenterShift', apply_z=True), dict( type='RandomDropout', dropout_ratio=0.2, dropout_application_ratio=0.5), dict(type='RandomFlip', p=0.5), dict( type='RandomRotate', angle=[-1, 1], axis='z', center=[0, 0, 0], p=0.95), dict( type='RandomRotate', angle=[-0.041666666666666664, 0.041666666666666664], axis='x', p=0.95), dict( type='RandomRotate', angle=[-0.041666666666666664, 0.041666666666666664], axis='y', p=0.95), dict(type='RandomScale', scale=[0.8, 1.2]), dict( type='RandomShift', shift=[(-0.5, 0.5), (-0.5, 0.5), (-0.5, 0.5)]), dict( type='ElasticDistortion', distortion_params=[[0.2, 0.4], [0.8, 1.6]]), dict(type='ChromaticAutoContrast', p=0.5, blend_factor=None), dict(type='ChromaticTranslation', p=0.95, ratio=0.1), dict(type='ChromaticJitter', p=0.95, std=0.05), dict(type='SphereCrop', sample_rate=0.6, mode='random'), dict(type='SphereCrop', point_max=102400, mode='random'), dict( type='Copy', keys_dict=dict( coord='origin_coord', instance='origin_instance', segment='origin_segment')), dict( type='Update', keys_dict=dict(index_valid_keys=[ 'coord', 'color', 'normal', 'strength', 'segment', 'instance', 'image_coord', 'image_mask' ])), dict( type='GridSample', grid_size=0.02, hash_type='fnv', mode='train', return_grid_coord=True, return_inverse=True), dict(type='NormalizeColor'), dict( type='InstanceParser', segment_ignore_index=(-1, 0, 1), instance_ignore_index=-1), dict(type='ToTensor'), dict( type='Collect', keys=('coord', 'origin_coord', 'grid_coord', 'segment', 'origin_segment', 'instance', 'origin_instance', 'superpoint', 'inverse'), feat_keys=('color', 'normal'), offset_keys_dict=dict( offset='coord', origin_offset='origin_coord')) ], test_mode=False, loop=1), val=dict( type='ScanNetDataset', split='val', data_root='data/scannet', transform=[ dict(type='MeanShift'), dict( type='RandomRotate', angle=[0.35, 0.35], axis='z', center=[0, 0, 0], always_apply=True), dict( type='Copy', keys_dict=dict( coord='origin_coord', instance='origin_instance', segment='origin_segment')), dict( type='Update', keys_dict=dict(index_valid_keys=[ 'coord', 'color', 'normal', 'strength', 'segment', 'instance', 'image_coord', 'image_mask' ])), dict( type='GridSample', grid_size=0.02, hash_type='fnv', mode='train', deterministic=True, return_grid_coord=True, return_inverse=True), dict(type='NormalizeColor'), dict( type='InstanceParser', segment_ignore_index=(-1, 0, 1), instance_ignore_index=-1), dict(type='ToTensor'), dict( type='Collect', keys=('coord', 'origin_coord', 'grid_coord', 'segment', 'origin_segment', 'instance', 'origin_instance', 'superpoint', 'inverse', 'name'), feat_keys=('color', 'normal'), offset_keys_dict=dict( offset='coord', origin_offset='origin_coord')) ], test_mode=False), test=dict( type='ScanNetDataset', split='val', data_root='data/scannet', transform=[ dict(type='MeanShift'), dict( type='RandomRotate', angle=[0.35, 0.35], axis='z', center=[0, 0, 0], always_apply=True), dict( type='Copy', keys_dict=dict( coord='origin_coord', instance='origin_instance', segment='origin_segment')), dict( type='Update', keys_dict=dict(index_valid_keys=[ 'coord', 'color', 'normal', 'strength', 'segment', 'instance', 'image_coord', 'image_mask' ])), dict( type='GridSample', grid_size=0.02, hash_type='fnv', mode='train', deterministic=True, return_grid_coord=True, return_inverse=True), dict(type='NormalizeColor'), dict( type='InstanceParser', segment_ignore_index=(-1, 0, 1), instance_ignore_index=-1), dict(type='ToTensor'), dict( type='Collect', keys=('coord', 'origin_coord', 'grid_coord', 'segment', 'origin_segment', 'instance', 'origin_instance', 'superpoint', 'inverse', 'name'), feat_keys=('color', 'normal'), offset_keys_dict=dict( offset='coord', origin_offset='origin_coord')) ], test_mode=False)) num_worker_per_gpu = 8 batch_size_per_gpu = 4 batch_size_val_per_gpu = 1 batch_size_test_per_gpu = 1