def get_config(): conf = edict() conf.data = edict() conf.model = edict() conf.model.network = edict() conf.train = edict() conf.train.optimizer = edict() conf.train.criterion = edict() conf.job_name = 'test-20200301-4@1-ir-01' conf.train_list = 'anno/IR/4@1_train.txt' conf.val_list = [ 'anno/IR/4@1_dev.txt', 'anno/IR/4@2_dev.txt', 'anno/IR/4@3_dev.txt' ] conf.test_list = ['anno/IR/4@1_dev.txt', 'anno/IR/4@1_test.txt'] conf.data.folder = '/mnt/cephfs/smartauto/users/guoli.wang/jiachen.xue/anti_spoofing/data/CASIA-CeFA/phase1' conf.data.crop_size = [256, 256] conf.data.input_size = [224, 224] conf.data.expand_ratio = 1.0 conf.data.use_multi_color = False if conf.data.use_multi_color: conf.data.in_data_format = ['L', 'RGB', 'YCbCr'] conf.data.in_plane = sum( [color_channel_index[x] for x in conf.data.in_data_format]) else: conf.data.in_data_format = 'RGB' conf.data.in_plane = color_channel_index[conf.data.in_data_format] conf.data.pin_memory = True conf.data.num_workers = 4 conf.data.train_transform = trans.Compose([ trans.RandomCrop(conf.data.input_size), # trans.RandomResizedCrop(conf.crop_size), trans.RandomHorizontalFlip(p=0.5), trans.ColorJitter(brightness=0.3, contrast=0.3, saturation=0.3, hue=(-0.1, 0.1)), trans.ToTensor(), ]) conf.data.test_transform = trans.Compose([ trans.CenterCrop(conf.data.input_size), trans.ToTensor(), ]) conf.model.save_path = './snapshots' conf.model.batch_size = 128 conf.model.use_mixup = True conf.model.mixup_alpha = 0.5 conf.model.use_center_loss = False conf.model.center_loss_weight = 0.01 conf.model.network.use_senet = True conf.model.network.se_reduction = 16 conf.model.network.drop_out = 0. conf.model.network.embedding_size = 512 # --------------------Training Config ------------------------ # if training: conf.train.epoches = 50 conf.train.optimizer.lr = 0.001 conf.train.optimizer.gamma = 0.1 conf.train.optimizer.milestones = [20, 35, 45] conf.train.optimizer.momentum = 0.9 conf.train.optimizer.weight_decay = 1e-4 conf.train.criterion.sl1 = nn.SmoothL1Loss() conf.train.criterion.ce = nn.CrossEntropyLoss() conf.train.criterion.cent = CenterLoss( num_classes=2, feat_dim=conf.model.network.embedding_size) conf.test = edict() conf.test.save_name = [ '4@1-dev-single-best-acc-loss', '4@1-test-single-best-acc-loss' ] conf.test.epochs = range(50) conf.test.pred_path = './result/single_frame' return conf
def get_config(training=True): conf = edict() conf.model = edict() conf.train = edict() conf.eval = edict() # data root for training, and testing, you should change is according to your setting conf.data_folder = '/mnt/cephfs/smartauto/users/guoli.wang/jiachen.xue/anti_spoofing/data/CASIA-CeFA/phase1' # path for save model in training process, you should change it according to your setting conf.save_path = './snapshots' # path where training list is, you should change it according to your setting conf.train_list = 'anno/4@2_train.txt' # path where validation list is, you should change it according to your setting conf.val_list = 'anno/4@2_dev_test_res_label.txt' # path where test list is, you should change it according to your setting # conf.test_list = 'anno/4@2_dev_test_res_label.txt' conf.test_list = 'anno/phase2/4@2_test_res.txt' conf.batch_size = 128 # model is saved in conf.save_path/conf.exp, if you want to train different models, you can distinguish them according to this parameter conf.exp = 'test-20200228-4@2-05' conf.model.crop_size = [256, 256] # the crop size of our model conf.model.input_size = [224, 224] # the input size of our model conf.model.expand_ratio = 1.0 # the expand_ratio of bbox conf.model.random_offset = [16, 16] # for random crop conf.model.use_senet = True # senet is adopted in our resnet18 model conf.model.se_reduction = 16 # parameter concerning senet conf.model.drop_out = 0. # we add dropout layer in our resnet18 model conf.model.embedding_size = 512 # feature size of our resnet18 model conf.model.use_multi_color = False if conf.model.use_multi_color: conf.model.in_data_format = ['L', 'RGB', 'YCbCr'] conf.model.in_plane = sum( [color_channel_index[x] for x in conf.model.in_data_format]) else: conf.model.in_data_format = 'RGB' conf.model.in_plane = color_channel_index[conf.model.in_data_format] conf.model.use_mixup = True conf.model.mixup_alpha = 1.0 conf.pin_memory = True conf.num_workers = 4 # --------------------Training Config ------------------------ # if training: conf.train.lr = 0.01 # the initial learning rate # epoch milestones decreased by a factor of 10 conf.train.milestones = [20, 35, 45] conf.train.epoches = 50 # we trained our model for 200 epoches conf.train.momentum = 0.9 # parameter in setting SGD conf.train.weight_decay = 1e-4 # parameter in setting SGD conf.train.gamma = 0.1 # parameter in setting lr_scheduler conf.train.criterion_SL1 = nn.SmoothL1Loss() conf.train.criterion_ce = nn.CrossEntropyLoss( ) # we use CE in training stage conf.train.use_center_loss = False conf.train.center_loss_weight = 0.01 conf.train.criterion_cent = CenterLoss(num_classes=2, feat_dim=conf.model.embedding_size) mean_ = [0.5] * conf.model.in_plane std_ = [0.5] * conf.model.in_plane conf.train.transform = trans.Compose( [ # convert input from PIL.Image to Tensor and normalized trans.RandomCrop(conf.model.input_size), # trans.RandomResizedCrop(conf.crop_size), trans.RandomHorizontalFlip(p=0.5), trans.ColorJitter(brightness=0.3, contrast=0.3, saturation=0.3, hue=(-0.1, 0.1)), trans.ToTensor(), ]) # --------------------Inference Config ------------------------ conf.test = edict() # conf.test.save_name = '4@2-dev-single-best-acc-loss' conf.test.save_name = '4@2-test-single-best-acc-loss' conf.test.epoch = 33 conf.test.pred_path = './result/single_frame' conf.test.transform = trans.Compose( [ # convert input from PIL.Image to Tensor and normalized trans.CenterCrop(conf.model.input_size), trans.ToTensor(), ]) return conf