File size: 2,340 Bytes
499e141
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# -*- coding: utf-8 -*-
# @Author  : xuelun

from yacs.config import CfgNode as CN

_CN = CN()

# ------------
# Trainer
# ------------
_CN.TRAINER = CN()
_CN.TRAINER.SEED = 3407
_CN.TRAINER.NUM_SANITY_VAL_STEPS = -1
_CN.TRAINER.LOG_INTERVAL = 20
_CN.TRAINER.VAL_CHECK_INTERVAL = 1.0 # default 1.0, if we set 2.0 will val each 2 step
_CN.TRAINER.LIMIT_TRAIN_BATCHES = 1.0 # default 1.0
_CN.TRAINER.LIMIT_VALID_BATCHES = 1.0 # default 1.0 will use all training batch
_CN.TRAINER.AMP_LEVEL = 'O1' # 'O1' for apex
_CN.TRAINER.AMP_BACKEND = 'apex' # 'O1' for apex
_CN.TRAINER.PRECISION = 16 # default 32
_CN.TRAINER.GRADIENT_CLIP_VAL = 0.5 # default 0.0
_CN.TRAINER.GRADIENT_CLIP_ALGORITHM = 'norm' # default 'norm'

# optimizer
_CN.TRAINER.CANONICAL_BS = 64
_CN.TRAINER.OPTIMIZER = "adamw"  # [adam, adamw]
_CN.TRAINER.TRUE_LR = None  # this will be calculated automatically at runtime
_CN.TRAINER.ADAM_DECAY = 0.  # ADAM: for adam
_CN.TRAINER.ADAMW_DECAY = 0.1
# step-based warm-up
_CN.TRAINER.WARMUP_TYPE = 'linear'  # [linear, constant]
_CN.TRAINER.WARMUP_RATIO = 0.
_CN.TRAINER.WARMUP_STEP = 4800
# learning rate scheduler
_CN.TRAINER.SCHEDULER = 'MultiStepLR'  # [MultiStepLR, CosineAnnealing, ExponentialLR]
_CN.TRAINER.SCHEDULER_INTERVAL = 'epoch'    # [epoch, step]
_CN.TRAINER.MSLR_MILESTONES = [3, 6, 9, 12]  # MSLR: MultiStepLR
_CN.TRAINER.MSLR_GAMMA = 0.5
_CN.TRAINER.COSA_TMAX = 30  # COSA: CosineAnnealing
_CN.TRAINER.ELR_GAMMA = 0.999992  # ELR: ExponentialLR, this value for 'step' interval
# geometric metrics and pose solver
_CN.TRAINER.EPI_ERR_THR = 5e-4  # recommendation: 5e-4 for ScanNet, 1e-4 for MegaDepth (from SuperGlue)
_CN.TRAINER.POSE_GEO_MODEL = 'E'  # ['E', 'F', 'H']
_CN.TRAINER.POSE_ESTIMATION_METHOD = 'RANSAC'  # [RANSAC, DEGENSAC, MAGSAC]
_CN.TRAINER.RANSAC_PIXEL_THR = None
_CN.TRAINER.RANSAC_CONF = 0.999999
_CN.TRAINER.RANSAC_MAX_ITERS = 100000
_CN.TRAINER.USE_MAGSACPP = False

# Related to Visualization
_CN.VISUAL = CN()
_CN.VISUAL.N_VAL_PAIRS_TO_PLOT = 10
_CN.VISUAL.PLOT_MODE = 'evaluation'  # ['evaluation', 'confidence']
_CN.VISUAL.PLOT_MATCHES_ALPHA = 'dynamic'


def get_cfg_defaults():
    """Get a yacs CfgNode object with default values for my_project."""
    # Return a clone so that the defaults will not be altered
    # This is for the "local variable" use pattern
    return _CN.clone()