-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSegDINO3D_ScanNet200.py
More file actions
78 lines (73 loc) · 2.87 KB
/
SegDINO3D_ScanNet200.py
File metadata and controls
78 lines (73 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# From baseline3dseg_maxnorm10_rdrop2d
_base_ = [
"../datasets/instance_segmentation_3d/scannet200.py", # basic dataset
"../models/base_3d.py", # basic modeling
"../schedules/adamw_polylr_3d.py", # basic schedule
]
voxel_size = 0.02
# 1. Model configurations.
_base_.model.pointcloud_backbone_cfg.voxel_size = voxel_size
_base_.model.pointcloud_backbone_cfg.mode_fuse_2d_feat = "early_fusion"
_base_.model.decoder_cfg.add_box_size_pred = True
_base_.model.add_positional_embedding = True
_base_.model.mode_3d_center = 'median'
_base_.model.decoder_cfg.add_positional_embedding = True
_base_.model.decoder_cfg.pos_type = 'sine'
_base_.model.decoder_cfg.temperature = 20
_base_.model.pointcloud_backbone_cfg.add_positional_embedding = True
_base_.model.criterion_cfg.inst_criterion.matcher = dict(
type='SparseMatcher',
costs=[
dict(type='QueryClassificationCost', weight=0.5),
dict(type='MaskBCECost', weight=1.0),
dict(type='MaskDiceCost', weight=1.0),
dict(type='CenterL1Cost', weight=0.5),
dict(type='SizeL1Cost', weight=0.5)],
topk=1)
_base_.model.criterion_cfg.inst_criterion.loss_weight = [0.5, 1.0, 1.0, 0.5, 0.5, 0.5]
_base_.model.decoder_cfg.box_modulate_ca = True
_base_.model.decoder_cfg.normalize_box_prediction = True
_base_.model.filter_outofbox_points_eval = True #! use box to filter mask
# 2. More data configurations.
_base_.scannet200_train_mask.transform_cfg.transform_cfg.voxel_size = voxel_size
_base_.scannet200_val_mask.transform_cfg.transform_cfg.voxel_size = voxel_size
_base_.scannet200_train_mask.dropout_rate_2dfeats = 0.7
data = dict(
train_main=[
_base_.scannet200_train_mask,
],
eval_main=[
_base_.scannet200_val_mask,
],
train_extras=None,
train_batch_size=4,
pin_memory=False,
num_workers=8,
sync_scale=True)
# 3. Evaluation configurations.
evaluations = ["scannet200_instance_seg"]
metric_meta = dict(
label2cat=_base_.label2cat,
ignore_index=[_base_.num_semantic_classes],
classes=_base_.class_names + ['unlabeled'],
dataset_name='ScanNet200')
evaluator_cfg = dict(
stuff_class_inds=[0, 1],
thing_class_inds=list(range(2, _base_.num_semantic_classes)),
min_num_points=1,
id_offset=2**16,
sem_mapping=_base_.sem_mapping,
inst_mapping=_base_.inst_mapping,
metric_meta=metric_meta,
eval_box=True)
# 4. Optimization configurations.
amp = False
use_ema = False
ema_decay = 0.9997
ema_epoch = 0 # which epoch to start using ema
clip_max_norm = 10
num_iterations = 300 * 129
eval_step = 300 * 129
save_step = 300 * 4
print_freq = 10
_base_.scheduler.total_iters = num_iterations # 129 epoch