Пример #1
0
    val_split = 0.1
    with open(annotation_path) as f:
        lines = f.readlines()
    np.random.seed(10101)
    np.random.shuffle(lines)
    np.random.seed(None)
    num_val = int(len(lines)*val_split)
    num_train = len(lines) - num_val
    

    if True:
        lr = 1e-4
        Init_Epoch = 0
        Freeze_Epoch = 25
        
        optimizer = optim.Adam(model.parameters(),lr)
        lr_scheduler = optim.lr_scheduler.StepLR(optimizer,step_size=1,gamma=0.9)

        gen = Generator(lines[:num_train],(IMAGE_SHAPE[0],IMAGE_SHAPE[1])).generate()
        gen_val = Generator(lines[num_train:],(IMAGE_SHAPE[0],IMAGE_SHAPE[1])).generate()
                        
        epoch_size = EPOCH_LENGTH
        epoch_size_val = int(EPOCH_LENGTH/10)
        # ------------------------------------#
        #   冻结一定部分训练
        # ------------------------------------#
        for param in model.extractor.parameters():
            param.requires_grad = False

        for epoch in range(Init_Epoch,Freeze_Epoch):
            fit_ont_epoch(model,epoch,epoch_size,epoch_size_val,gen,gen_val,Freeze_Epoch)
Пример #2
0
    num_train = len(lines) - num_val
    '''
    一些建议的参数设置:
    VGG:SGD优化器,冻结时学习率1e-3,解冻时学习率1e-4
        nets.rpn中ProposalCreator的n_train_post_nms=2000;
        utils.utils中ProposalTargetCreator的pos_ratio=0.25;
    RESNET50:Adam优化器,冻结时学习率1e-4,解冻时学习率1e-5
        nets.rpn中ProposalCreator的n_train_post_nms=300;
        utils.utils中ProposalTargetCreator的pos_ratio=0.5;
    '''
    if True:
        lr = 1e-4
        Init_Epoch = 0
        Freeze_Epoch = 25

        optimizer = optim.Adam(model.parameters(), lr, weight_decay=5e-4)
        # optimizer = optim.SGD(model.parameters(),lr,weight_decay=5e-4,momentum=0.9)
        lr_scheduler = optim.lr_scheduler.StepLR(optimizer,
                                                 step_size=1,
                                                 gamma=0.95)

        if Use_Data_Loader:
            train_dataset = FRCNNDataset(lines[:num_train],
                                         (IMAGE_SHAPE[0], IMAGE_SHAPE[1]))
            val_dataset = FRCNNDataset(lines[num_train:],
                                       (IMAGE_SHAPE[0], IMAGE_SHAPE[1]))
            gen = DataLoader(train_dataset,
                             batch_size=1,
                             num_workers=4,
                             pin_memory=True,
                             drop_last=True,