NETWORK = EasyDict() NETWORK.OPTIMIZER_CLASS = tf.train.MomentumOptimizer NETWORK.OPTIMIZER_KWARGS = {"momentum": 0.9} NETWORK.LEARNING_RATE_FUNC = tf.train.piecewise_constant # In the origianl yolov2 Paper, with a starting learning rate of 10−3, dividing it by 10 at 60 and 90 epochs. # Train data num per epoch is 16551 step_per_epoch = int(16551 / BATCH_SIZE) NETWORK.LEARNING_RATE_KWARGS = { "values": [1e-4, 2e-2, 5e-3, 5e-4], "boundaries": [step_per_epoch, step_per_epoch * 80, step_per_epoch * 120], } NETWORK.IMAGE_SIZE = IMAGE_SIZE NETWORK.BATCH_SIZE = BATCH_SIZE NETWORK.DATA_FORMAT = DATA_FORMAT NETWORK.ANCHORS = anchors NETWORK.OBJECT_SCALE = 5.0 NETWORK.NO_OBJECT_SCALE = 1.0 NETWORK.CLASS_SCALE = 1.0 NETWORK.COORDINATE_SCALE = 1.0 NETWORK.LOSS_IOU_THRESHOLD = 0.6 NETWORK.WEIGHT_DECAY_RATE = 0.0005 NETWORK.SCORE_THRESHOLD = score_threshold NETWORK.NMS_IOU_THRESHOLD = nms_iou_threshold NETWORK.NMS_MAX_OUTPUT_SIZE = nms_max_output_size NETWORK.LOSS_WARMUP_STEPS = int(8000 / BATCH_SIZE) # dataset DATASET = EasyDict() DATASET.BATCH_SIZE = BATCH_SIZE DATASET.DATA_FORMAT = DATA_FORMAT
}, 'objects365': '', } DATASET = EasyDict() DATASET.NAME = 'pascal' DATASET.DATA_DIR = dataset[DATASET.NAME]['path'] DATASET.BATCHSIZE = 14 DATASET.DOWN_RATION = [4, 8, 16, 32] DATASET.INPUT_H = 416 DATASET.INPUT_W = 416 DATASET.USE_GIOU = False DATASET.EVAL = False DATASET.ANCHORS = [[[0.01181, 0.01955], [0.01941, 0.05309], [0.03584, 0.1]], [[0.03831, 0.02876], [0.06861, 0.05756], [0.06994, 0.16855]], [[0.11966, 0.3311], [0.13606, 0.0961], [0.21739, 0.1955]], [[0.25938, 0.5573], [0.47191, 0.32135], [0.72506, 0.77527]]] BACKBONE = EasyDict() BACKBONE.INIT_WEIGHTS = True BACKBONE.PRETRAINED = osp.join(osp.dirname(__file__), '..', 'weights/pretrained/hrnet_w32-36af842e.pth') BACKBONE.PRETRAINED_LAYERS = ['*'] BACKBONE.STAGE2 = EasyDict() BACKBONE.STAGE2.NUM_MODULES = 1 BACKBONE.STAGE2.NUM_BRANCHES = 2 BACKBONE.STAGE2.NUM_BLOCKS = [4, 4] BACKBONE.STAGE2.NUM_CHANNELS = [32, 64] BACKBONE.STAGE2.BLOCK = 'BASIC'
}, 'objects365': '', } DATASET = EasyDict() DATASET.NAME = 'pascal' DATASET.DATA_DIR = dataset[DATASET.NAME]['path'] DATASET.BATCHSIZE = 18 DATASET.DOWN_RATION = [8, 16, 32] DATASET.INPUT_H = 416 DATASET.INPUT_W = 416 DATASET.USE_GIOU = False DATASET.EVAL = True DATASET.ANCHORS = [[[0.01402, 0.02311], [0.02464, 0.06542], [0.05019, 0.13322]], [[0.05088, 0.03728], [0.10116, 0.08054], [0.10545, 0.26739]], [[0.21067, 0.15731], [0.27648, 0.42582], [0.69417, 0.71236]]] BACKBONE = EasyDict() BACKBONE.INIT_WEIGHTS = True BACKBONE.PRETRAINED = osp.join(osp.dirname(__file__), '..', 'weights/pretrained/darknet53_74.pth') NECK = EasyDict() NECK.IN_CHANNEL = [256, 512, 1024] HEAD = EasyDict() HEAD.BACKBONE = 'darknet' HEAD.IN_CHANNEL = [128, 256, 512] HEAD.OUT_HEADS = {
YOLO_CONFIG.TRAIN_EVALUATION_STEP = 10 YOLO_CONFIG.VAL_EVALUATION_STEP = 2 YOLO_CONFIG.SAVE_EPOCH = 10 YOLO_CONFIG.BATCH_NORM_DECAY = 0.99 WEIGHT_DECAY = 5e-4 YOLO_CONFIG.CLASSES_PATH = '' YOLO_CONFIG.ANCHORS_PATH = '' YOLO_CONFIG.TRAIN_EXAMPLES = len(open(YOLO_CONFIG.TRAIN_PATH,'r').readlines()) YOLO_CONFIG.VAL_EXAMPLES = len(open(YOLO_CONFIG.VAL_PATH,'r').readlines()) YOLO_CONFIG.TRAIN_BATCH_NUM = int(math.ceil(float(YOLO_CONFIG.TRAIN_EXAMPLES)/YOLO_CONFIG.BATCH_SIZE)) YOLO_CONFIG.ANCHORS = parse_anchors(YOLO_CONFIG.ANCHORS_PATH) YOLO_CONFIG.MULTI_SCALE_TRAIN = True YOLO_CONFIG.USE_MIX_UP = True YOLO_CONFIG.LETTER_BOX_RESIZE = True YOLO_CONFIG.NUM_THREADS = 10 YOLO_CONFIG.PRE_FETCH = 5 YOLO_CONFIG.OPTIMIZER = 'adam' YOLO_CONFIG.LEARNING_RATE = 0.01 YOLO_CONFIG.GLOBAL_STEP = 0
import numpy as np from easydict import EasyDict __C = EasyDict() cfg = __C __C.TRAIN = EasyDict() __C.TEST = EasyDict() __C.ANCHORS = [(1.3221, 1.73145), (3.19275, 4.00944), (5.05587, 8.09892), (9.47112, 4.84053), (11.2364, 10.0071)] __C.STRIDE = 32 __C.CLASS_NUM = 20 __C.SATURATION = 1.5 __C.EXPOSURE = 1.5 __C.HUE = 0.1 __C.JITTER = 0.3 __C.INPUT_SIZE = (416, 416) __C.TEST_SIZE = (416, 416) __C.DEBUG = False #################################### # LOSS #################################### __C.COORD_SCALE = 1.0