Kadir Yilmaz
Add SceneFun3D instance segmentation checkpoint
9dcb91d
Raw History Blame Contribute Delete
10.9 kB
weight = 'weights/volt-base-scannet200.pth'
resume = False
evaluate = True
test_only = False
seed = 29937722
save_path = 'exp/scenefun3d/2026-09-15_164017'
num_worker = 128
batch_size = 16
gradient_accumulation_steps = 1
batch_size_val = None
batch_size_test = None
epoch = 1600
eval_epoch = 100
clip_grad = None
use_ema = True
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 = False
enable_wandb = True
wandb_project = 'Volt'
wandb_key = None
mix_prob = 0.85
param_dicts = None
hooks = [
dict(type='CheckpointLoader'),
dict(type='ModelHook'),
dict(type='IterationTimer', warmup_iter=2),
dict(type='InformationWriter'),
dict(type='SemSegEvaluator'),
dict(type='CheckpointSaver', save_freq=None),
dict(type='PreciseEvaluator', test_last=False)
]
train = dict(type='DefaultTrainer')
test = dict(type='SceneFun3DTester', verbose=True)
min_points = 10
knn = 32
knn_radius = 0.02
model = dict(
type='DefaultSegmentorV2',
num_classes=10,
backbone_out_channels=256,
backbone=dict(
type='Volt',
in_channels=6,
embed_dim=768,
depth=12,
num_heads=12,
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=256),
criteria=[
dict(
type='CrossEntropyLoss',
weight=[0.1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
loss_weight=1.0,
label_smoothing=0.1,
ignore_index=-1),
dict(
type='LovaszLoss',
mode='multiclass',
loss_weight=1.0,
ignore_index=-1)
])
optimizer = dict(type='AdamW', lr=0.0003, weight_decay=0.05)
scheduler = dict(
type='OneCycleLR',
max_lr=0.0003,
pct_start=0.05,
anneal_strategy='cos',
div_factor=10.0,
final_div_factor=1000.0)
dataset_type = 'SceneFun3DDataset'
data_root = 'data/scenefun3d'
data = dict(
num_classes=10,
ignore_index=-1,
names=[
'background', 'rotate', 'key_press', 'tip_push', 'hook_pull',
'pinch_pull', 'hook_turn', 'foot_push', 'plug_in', 'unplug'
],
train=dict(
type='SceneFun3DDataset',
split='train',
data_root='data/scenefun3d',
transform=[
dict(type='SphereCrop', point_max=1000000, mode='random'),
dict(type='CenterShift', apply_z=True),
dict(
type='RandomDropout',
dropout_ratio=0.2,
dropout_application_ratio=0.2),
dict(
type='RandomRotate',
angle=[-1, 1],
axis='z',
center=[0, 0, 0],
p=0.5),
dict(
type='RandomRotate',
angle=[-0.015625, 0.015625],
axis='x',
p=0.5),
dict(
type='RandomRotate',
angle=[-0.015625, 0.015625],
axis='y',
p=0.5),
dict(type='RandomScale', scale=[0.9, 1.1]),
dict(type='RandomFlip', p=0.5),
dict(type='RandomJitter', sigma=0.005, clip=0.02),
dict(
type='ElasticDistortion',
distortion_params=[[0.2, 0.4], [0.8, 1.6]]),
dict(type='ChromaticAutoContrast', p=0.2, blend_factor=None),
dict(type='ChromaticTranslation', p=0.95, ratio=0.05),
dict(type='ChromaticJitter', p=0.95, std=0.05),
dict(
type='GridSample',
grid_size=0.01,
hash_type='fnv',
mode='train',
return_grid_coord=True),
dict(type='SphereCrop', sample_rate=0.6, mode='random'),
dict(type='CenterShift', apply_z=False),
dict(type='NormalizeColor'),
dict(type='ToTensor'),
dict(
type='Collect',
keys=('coord', 'grid_coord', 'segment'),
feat_keys=('color', 'normal'))
],
test_mode=False,
loop=16),
val=dict(
type='SceneFun3DDataset',
split='val',
data_root='data/scenefun3d',
transform=[
dict(type='CenterShift', apply_z=True),
dict(type='Copy', keys_dict=dict(segment='origin_segment')),
dict(
type='GridSample',
grid_size=0.01,
hash_type='fnv',
mode='train',
return_grid_coord=True,
return_inverse=True),
dict(type='CenterShift', apply_z=False),
dict(type='NormalizeColor'),
dict(type='ToTensor'),
dict(
type='Collect',
keys=('coord', 'grid_coord', 'segment', 'origin_segment',
'inverse'),
feat_keys=('color', 'normal'))
],
test_mode=False),
test=dict(
type='SceneFun3DDataset',
split='val',
data_root='data/scenefun3d',
transform=[
dict(type='Copy', keys_dict=dict(coord='origin_coord')),
dict(type='CenterShift', apply_z=True),
dict(type='NormalizeColor')
],
test_mode=True,
test_cfg=dict(
voxelize=dict(
type='GridSample',
grid_size=0.01,
hash_type='fnv',
mode='test',
return_grid_coord=True),
crop=None,
post_transform=[
dict(type='CenterShift', apply_z=False),
dict(type='ToTensor'),
dict(
type='Collect',
keys=('coord', 'grid_coord', 'index'),
feat_keys=('color', 'normal'))
],
aug_transform=[[{
'type': 'RandomRotateTargetAngle',
'angle': [0],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [0.5],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [1],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [1.5],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [0],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}, {
'type': 'RandomScale',
'scale': [0.95, 0.95]
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [0.5],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}, {
'type': 'RandomScale',
'scale': [0.95, 0.95]
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [1],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}, {
'type': 'RandomScale',
'scale': [0.95, 0.95]
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [1.5],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}, {
'type': 'RandomScale',
'scale': [0.95, 0.95]
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [0],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}, {
'type': 'RandomScale',
'scale': [1.05, 1.05]
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [0.5],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}, {
'type': 'RandomScale',
'scale': [1.05, 1.05]
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [1],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}, {
'type': 'RandomScale',
'scale': [1.05, 1.05]
}],
[{
'type': 'RandomRotateTargetAngle',
'angle': [1.5],
'axis': 'z',
'center': [0, 0, 0],
'p': 1
}, {
'type': 'RandomScale',
'scale': [1.05, 1.05]
}], [{
'type': 'RandomFlip',
'p': 1
}]])))
num_worker_per_gpu = 16
batch_size_per_gpu = 2
batch_size_val_per_gpu = 1
batch_size_test_per_gpu = 1