from yacs.config import CfgNode as CN # ----------------------------------------------------------------------------- # Convention about Training / Test specific parameters # ----------------------------------------------------------------------------- # Whenever an argument can be either used for training or for testing, the # corresponding name will be post-fixed by a _TRAIN for a training parameter, # or _TEST for a test-specific parameter. # For example, the number of images during training will be # IMAGES_PER_BATCH_TRAIN, while the number of images for testing will be # IMAGES_PER_BATCH_TEST # ----------------------------------------------------------------------------- # Config definition # ----------------------------------------------------------------------------- _C = CN() _C.MODEL = CN() # Using cuda or cpu for training _C.MODEL.DEVICE = "cuda" # ID number of GPU _C.MODEL.DEVICE_ID = '0' # Name of backbone _C.MODEL.NAME = 'resnet50' # Last stride of backbone _C.MODEL.LAST_STRIDE = 1 # Path to pretrained model of backbone _C.MODEL.PRETRAIN_PATH = '' # If train with BNNeck, options: 'bnneck' or 'no' _C.MODEL.NECK = 'bnneck' # If train loss include center loss, options: 'yes' or 'no'. Loss with center loss has different optimizer configuration _C.MODEL.IF_WITH_CENTER = 'no' # The loss type of metric loss # options:'triplet','cluster','triplet_cluster','center','range_center','triplet_center','triplet_range_center' _C.MODEL.METRIC_LOSS_TYPE = 'triplet' # For example, if loss type is cross entropy loss + triplet loss + center loss # the setting should be: _C.MODEL.METRIC_LOSS_TYPE = 'triplet_center' and _C.MODEL.IF_WITH_CENTER = 'yes' # If train with label smooth, options: 'on', 'off' _C.MODEL.IF_LABELSMOOTH = 'on' # ----------------------------------------------------------------------------- # INPUT # ----------------------------------------------------------------------------- _C.INPUT = CN() # Size of the image during training _C.INPUT.SIZE_TRAIN = [384, 128] # Size of the image during test _C.INPUT.SIZE_TEST = [384, 128] # Random probability for image horizontal flip _C.INPUT.PROB = 0.5 # Random probability for random erasing _C.INPUT.RE_PROB = 0.5 # Values to be used for image normalization _C.INPUT.PIXEL_MEAN = [0.485, 0.456, 0.406] # Values to be used for image normalization _C.INPUT.PIXEL_STD = [0.229, 0.224, 0.225] # Value of padding size _C.INPUT.PADDING = 10 # ----------------------------------------------------------------------------- # Dataset # ----------------------------------------------------------------------------- _C.DATASETS = CN() # List of the dataset names for training, as present in paths_catalog.py _C.DATASETS.NAMES = ('market1501') # ----------------------------------------------------------------------------- # DataLoader # ----------------------------------------------------------------------------- _C.DATALOADER = CN() # Number of data loading threads _C.DATALOADER.NUM_WORKERS = 8 # Sampler for data loading _C.DATALOADER.SAMPLER = 'softmax' # Number of instance for one batch _C.DATALOADER.NUM_INSTANCE = 16 # ---------------------------------------------------------------------------- # # Solver # ---------------------------------------------------------------------------- # _C.SOLVER = CN() # Name of optimizer _C.SOLVER.OPTIMIZER_NAME = "Adam" # Number of max epoches _C.SOLVER.MAX_EPOCHS = 50 # Base learning rate _C.SOLVER.BASE_LR = 3e-4 # Factor of learning bias _C.SOLVER.BIAS_LR_FACTOR = 2 # Momentum _C.SOLVER.MOMENTUM = 0.9 # Margin of triplet loss _C.SOLVER.MARGIN = 0.3 # Margin of cluster ;pss _C.SOLVER.CLUSTER_MARGIN = 0.3 # Learning rate of SGD to learn the centers of center loss _C.SOLVER.CENTER_LR = 0.5 # Balanced weight of center loss _C.SOLVER.CENTER_LOSS_WEIGHT = 0.0005 # Settings of range loss _C.SOLVER.RANGE_K = 2 _C.SOLVER.RANGE_MARGIN = 0.3 _C.SOLVER.RANGE_ALPHA = 0 _C.SOLVER.RANGE_BETA = 1 _C.SOLVER.RANGE_LOSS_WEIGHT = 1 # Settings of weight decay _C.SOLVER.WEIGHT_DECAY = 0.0005 _C.SOLVER.WEIGHT_DECAY_BIAS = 0. # decay rate of learning rate _C.SOLVER.GAMMA = 0.1 # decay step of learning rate _C.SOLVER.STEPS = (30, 55) # warm up factor _C.SOLVER.WARMUP_FACTOR = 1.0 / 3 # iterations of warm up _C.SOLVER.WARMUP_ITERS = 500 # method of warm up, option: 'constant','linear' _C.SOLVER.WARMUP_METHOD = "linear" # epoch number of saving checkpoints _C.SOLVER.CHECKPOINT_PERIOD = 50 # iteration of display training log _C.SOLVER.LOG_PERIOD = 100 # epoch number of validation _C.SOLVER.EVAL_PERIOD = 50 # Number of images per batch # This is global, so if we have 8 GPUs and IMS_PER_BATCH = 16, each GPU will # see 2 images per batch _C.SOLVER.IMS_PER_BATCH = 64 # This is global, so if we have 8 GPUs and IMS_PER_BATCH = 16, each GPU will # see 2 images per batch _C.TEST = CN() # Number of images per batch during test _C.TEST.IMS_PER_BATCH = 128 # If test with re-ranking, options: 'yes','no' _C.TEST.RE_RANKING = 'no' # Path to trained model _C.TEST.WEIGHT = "" # Which feature of BNNeck to be used for test, before or after BNNneck, options: 'before' or 'after' _C.TEST.NECK_FEAT = 'after' # Whether feature is nomalized before test, if yes, it is equivalent to cosine distance _C.TEST.FEAT_NORM = 'yes' # ---------------------------------------------------------------------------- # # Misc options # ---------------------------------------------------------------------------- # # Path to checkpoint and saved log of trained model _C.OUTPUT_DIR = ""