from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from yacs.config import CfgNode as CN
__C = CN()
cfg = __C
__C.META_ARC = ""
__C.CUDA = True
__C.TRAIN = CN()
__C.TRAIN.NEG_NUM = 16
__C.TRAIN.POS_NUM = 16
__C.TRAIN.TOTAL_NUM = 64
__C.TRAIN.EXEMPLAR_SIZE = 127
__C.TRAIN.SEARCH_SIZE = 255
__C.TRAIN.BASE_SIZE = 8
__C.TRAIN.OUTPUT_SIZE = 25
__C.TRAIN.RESUME = ''
__C.TRAIN.PRETRAINED = ''
__C.TRAIN.LOG_DIR = './logs'
__C.TRAIN.SNAPSHOT_DIR = './snapshot'
__C.TRAIN.EPOCH = 20
__C.TRAIN.START_EPOCH = 0
__C.TRAIN.NUM_CONVS =4
__C.TRAIN.BATCH_SIZE = 32
__C.TRAIN.NUM_WORKERS = 8
__C.TRAIN.MOMENTUM = 0.9
__C.TRAIN.WEIGHT_DECAY = 0.0001
__C.TRAIN.CLS_WEIGHT = 1.0
__C.TRAIN.LOC_WEIGHT = 1.0
__C.TRAIN.PRINT_FREQ = 20
__C.TRAIN.LOG_GRADS = False
__C.TRAIN.GRAD_CLIP = 10.0
__C.TRAIN.BASE_LR = 0.005
__C.TRAIN.LR = CN()
__C.TRAIN.LR.TYPE = 'log'
__C.TRAIN.LR.KWARGS = CN(new_allowed=True)
__C.TRAIN.LR_WARMUP = CN()
__C.TRAIN.LR_WARMUP.WARMUP = True
__C.TRAIN.LR_WARMUP.TYPE = 'step'
__C.TRAIN.LR_WARMUP.EPOCH = 5
__C.TRAIN.LR_WARMUP.KWARGS = CN(new_allowed=True)
__C.MASK = CN()
__C.MASK.MASK = False
__C.DATASET = CN(new_allowed=True)
__C.DATASET.TEMPLATE = CN()
__C.DATASET.TEMPLATE.SHIFT = 4
__C.DATASET.TEMPLATE.SCALE = 0.05
__C.DATASET.TEMPLATE.BLUR = 0.0
__C.DATASET.TEMPLATE.FLIP = 0.0
__C.DATASET.TEMPLATE.COLOR = 1.0
__C.DATASET.SEARCH = CN()
__C.DATASET.SEARCH.SHIFT = 64
__C.DATASET.SEARCH.SCALE = 0.18
__C.DATASET.SEARCH.BLUR = 0.0
__C.DATASET.SEARCH.FLIP = 0.0
__C.DATASET.SEARCH.COLOR = 1.0
__C.DATASET.NEG = 0.2
__C.DATASET.GRAY = 0.0
__C.DATASET.NAMES = ('VID', 'YOUTUBEBB', 'DET', 'COCO', 'GOT', 'LASOT')
__C.DATASET.VID = CN()
__C.DATASET.VID.ROOT = ''
__C.DATASET.VID.ANNO = ''
__C.DATASET.VID.FRAME_RANGE = 100
__C.DATASET.VID.NUM_USE = 100000
__C.DATASET.YOUTUBEBB = CN()
__C.DATASET.YOUTUBEBB.ROOT = ''
__C.DATASET.YOUTUBEBB.ANNO = ''
__C.DATASET.YOUTUBEBB.FRAME_RANGE = 3
__C.DATASET.YOUTUBEBB.NUM_USE = 100000
__C.DATASET.COCO = CN()
__C.DATASET.COCO.ROOT = ''
__C.DATASET.COCO.ANNO = ''
__C.DATASET.COCO.FRAME_RANGE = 1
__C.DATASET.COCO.NUM_USE = 100000
__C.DATASET.DET = CN()
__C.DATASET.DET.ROOT = ''
__C.DATASET.DET.ANNO = ''
__C.DATASET.DET.FRAME_RANGE = 1
__C.DATASET.DET.NUM_USE = 100000
__C.DATASET.GOT = CN()
__C.DATASET.GOT.ROOT = 'data/GOT-10k/crop511'
__C.DATASET.GOT.ANNO = 'data/GOT-10k/train.json'
__C.DATASET.GOT.FRAME_RANGE = 100
__C.DATASET.GOT.NUM_USE = 100000
__C.DATASET.LASOT = CN()
__C.DATASET.LASOT.ROOT = ''
__C.DATASET.LASOT.ANNO = ''
__C.DATASET.LASOT.FRAME_RANGE = 100
__C.DATASET.LASOT.NUM_USE = 100000
__C.DATASET.VIDEOS_PER_EPOCH = 600000
__C.BACKBONE = CN()
__C.BACKBONE.TYPE = 'res50'
__C.BACKBONE.KWARGS = CN(new_allowed=True)
__C.BACKBONE.PRETRAINED = ''
__C.BACKBONE.TRAIN_LAYERS = []
__C.BACKBONE.LAYERS_LR = 0.1
__C.BACKBONE.TRAIN_EPOCH = 10
__C.ADJUST = CN()
__C.ADJUST.ADJUST = True
__C.ADJUST.KWARGS = CN(new_allowed=True)
__C.ADJUST.TYPE = "AdjustAllLayer"
__C.BAN = CN()
__C.BAN.BAN = False
__C.BAN.TYPE = 'MultiBAN'
__C.BAN.KWARGS = CN(new_allowed=True)
__C.POINT = CN()
__C.POINT.STRIDE = 8
__C.TRACK = CN()
__C.TRACK.TYPE = 'NanoTracker'
__C.TRACK.PENALTY_K = 0.16
__C.TRACK.WINDOW_INFLUENCE = 0.46
__C.TRACK.LR = 0.34
__C.TRACK.EXEMPLAR_SIZE = 127
__C.TRACK.INSTANCE_SIZE = 255
__C.TRACK.BASE_SIZE = 8
__C.TRACK.CONTEXT_AMOUNT = 0.5