Spaces:
Running
Running
from yacs.config import CfgNode as CN | |
def lower_config(yacs_cfg): | |
if not isinstance(yacs_cfg, CN): | |
return yacs_cfg | |
return {k.lower(): lower_config(v) for k, v in yacs_cfg.items()} | |
_CN = CN() | |
_CN.BACKBONE_TYPE = 'RepVGG' | |
_CN.ALIGN_CORNER = False | |
_CN.RESOLUTION = (8, 1) | |
_CN.FINE_WINDOW_SIZE = 8 # window_size in fine_level, must be even | |
_CN.MP = False | |
_CN.REPLACE_NAN = True | |
_CN.HALF = False | |
# 1. LoFTR-backbone (local feature CNN) config | |
_CN.BACKBONE = CN() | |
_CN.BACKBONE.BLOCK_DIMS = [64, 128, 256] # s1, s2, s3 | |
# 2. LoFTR-coarse module config | |
_CN.COARSE = CN() | |
_CN.COARSE.D_MODEL = 256 | |
_CN.COARSE.D_FFN = 256 | |
_CN.COARSE.NHEAD = 8 | |
_CN.COARSE.LAYER_NAMES = ['self', 'cross'] * 4 | |
_CN.COARSE.AGG_SIZE0 = 4 | |
_CN.COARSE.AGG_SIZE1 = 4 | |
_CN.COARSE.NO_FLASH = False | |
_CN.COARSE.ROPE = True | |
_CN.COARSE.NPE = [832, 832, 832, 832] # [832, 832, long_side, long_side] Suggest setting based on the long side of the input image, especially when the long_side > 832 | |
# 3. Coarse-Matching config | |
_CN.MATCH_COARSE = CN() | |
_CN.MATCH_COARSE.THR = 25 # recommend 0.2 for full model and 25 for optimized model | |
_CN.MATCH_COARSE.BORDER_RM = 2 | |
_CN.MATCH_COARSE.DSMAX_TEMPERATURE = 0.1 | |
_CN.MATCH_COARSE.SKIP_SOFTMAX = True # False for full model and True for optimized model | |
_CN.MATCH_COARSE.FP16MATMUL = True # False for full model and True for optimized model | |
_CN.MATCH_COARSE.TRAIN_COARSE_PERCENT = 0.2 # training tricks: save GPU memory | |
_CN.MATCH_COARSE.TRAIN_PAD_NUM_GT_MIN = 200 # training tricks: avoid DDP deadlock | |
# 4. Fine-Matching config | |
_CN.MATCH_FINE = CN() | |
_CN.MATCH_FINE.LOCAL_REGRESS_TEMPERATURE = 10.0 # use 10.0 as fine local regress temperature, not 1.0 | |
_CN.MATCH_FINE.LOCAL_REGRESS_SLICEDIM = 8 | |
opt_default_cfg = lower_config(_CN) | |