Example #1
0
def main():
    # parse options
    parser = TestOptions()
    opts = parser.parse()

    # data loader
    train_loader, input_data_par = get_loader(1)

    # model
    print('\n--- load model ---')
    model = DRIT(opts)
    model.setgpu(opts.gpu)
    model.resume(opts.resume, train=False)
    model.eval()

    # directory
    result_dir = os.path.join(opts.result_dir, opts.name)
    if not os.path.exists(result_dir):
        os.mkdir(result_dir)

    # test
    print('\n--- testing ---')
    for it, (images_a, images_b, labels) in enumerate(train_loader['test']):
        images_a = images_a.cuda(opts.gpu).detach()
        images_b = images_b.cuda(opts.gpu).detach()
        with torch.no_grad():
            loss = model.test_model(images_a, images_b)
            print('it:{}, loss:{}'.format(it, loss))
    return
Example #2
0
def main(args):
    parser = argparse.ArgumentParser(
        description=("Run deep models for visual semantic role segmentation "
                     "(or detection)"))
    parser.add_argument("mode", help="Mode to run model in (e.g. 'train')")
    parser.add_argument("-s",
                        "--save_dir",
                        help="directory for saving the model",
                        default="saved_models/%s" %
                        dt.datetime.now().strftime("%Y_%m_%d_%H_%M_%S"))
    parser.add_argument("-e",
                        "--epochs",
                        help="number of epochs for training",
                        type=int,
                        default=50)
    parser.add_argument("-p",
                        "--save_per",
                        help="epochs to wait before saving",
                        type=int,
                        default=5)
    parser.add_argument("-l",
                        "--learn_rate",
                        help="learning rate",
                        type=float,
                        default=0.001)
    parser.add_argument("-c",
                        "--cuda",
                        type=int,
                        nargs="+",
                        help="ids of gpus to use during training",
                        default=[])
    parser.add_argument("-f",
                        "--fake",
                        action="store_true",
                        help=("flag to use fake data that loads quickly (for"
                              "development purposes)"))
    parser.add_argument(
        "--net",
        help="file in which model is stored. Used in test mode.",
        default=None)
    cfg = parser.parse_args(args)

    if cfg.mode == 'train':
        model = md.CtxBB()
        if cfg.fake:
            dataloader = get_fake_loader()
        else:
            dataloader = ld.get_loader("vcoco_train", ld.COCO_IMGDIR)
        trainer = md.BasicTrainer(model, dataloader, **vars(cfg))
        logging.getLogger(__name__).info("Beginning Training...")
        trainer.train(cfg.epochs)
    elif cfg.mode == 'test':
        checkpoint = torch.load(cfg.net)
        model = checkpoint["model"]
        evaluator = ev.Evaluator(**vars(cfg))
        ev.do_eval(evaluator, model, "vcoco_val", cfg.save_dir)

    else:
        logging.getLogger(__name__).error("Invalid mode '%s'" % str(cfg.mode))
        sys.exit(1)
Example #3
0
    if embedding == 'glove':
        inp = loadmat('embedding/' + dataset + '-inp-glove6B.mat')['inp']
        inp = torch.FloatTensor(inp)
    elif embedding == 'googlenews':
        inp = loadmat('embedding/' + dataset + '-inp-googlenews.mat')['inp']
        inp = torch.FloatTensor(inp)
    elif embedding == 'fasttext':
        inp = loadmat('embedding/' + dataset + '-inp-fasttext.mat')['inp']
        inp = torch.FloatTensor(inp)
    else:
        inp = None

    print('...Data loading is beginning...')

    data_loader, input_data_par = get_loader(DATA_DIR, batch_size)

    print('...Data loading is completed...')

    model_ft = ALGCN(img_input_dim=input_data_par['img_dim'],
                     text_input_dim=input_data_par['text_dim'],
                     num_classes=input_data_par['num_class'],
                     t=t,
                     adj_file='data/' + dataset + '/adj.mat',
                     inp=inp,
                     gamma=gamma).cuda()
    # params_to_update = list(model_ft.parameters())
    params_to_update = model_ft.get_config_optim(lr)

    # Observe that all parameters are being optimized
    optimizer = optim.Adam(params_to_update, lr=lr, betas=betas)
Example #4
0
if __name__ == '__main__':
    # environmental setting: setting the following parameters based on your experimental environment.
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    # data parameters
    MAX_EPOCH = 100
    batch_size = 45
    lr = 1e-4
    betas = (0.5, 0.999)
    weight_decay = 0
    hyper_parameters = {'cm_tri': 1, 'margin': 50, 'num_per_cls': 3}

    print('...Data loading is beginning...')

    # the first dataloader is for training, while the next two are for validating
    dataloader, cartoon_dataloader, portrait_dataloader, input_data_par = get_loader(
        dataset_path='/media/ckq/datasets/cartoon/train',
        batch_size=batch_size,
        num_per_cls=hyper_parameters['num_per_cls'])
    #dataloader, cartoon_dataloader, portrait_dataloader, input_data_par = get_loader_split_label(dataset_path='/media/ckq/datasets/cartoon/train', batch_size=batch_size, num_per_cls=hyper_parameters['num_per_cls'])
    #dataloader, cartoon_dataloader, portrait_dataloader = get_loader_feature(cartoon_feature_path='/home/sxfd91307/cartoon_retrieval/features/cartoon_resnet34_adam.hdf5', portrait_feature_path='/home/sxfd91307/cartoon_retrieval/features/portrait_resnet152.hdf5', batch_size=batch_size, num_per_cls=hyper_parameters['num_per_cls'])

    print('...Data loading is completed...')

    model = C2R_single(input_data_par['num_class']).to(device)
    #model.load_state_dict(torch.load('weights/best_2771.pt'))
    #model = IDCM_NN().to(device)

    params_to_update = add_weight_decay(model, weight_decay)

    # params_to_update = list(model.parameters())

    # Observe that all parameters are being optimized
Example #5
0
        results_txt = 'results.txt'
        with open(results_txt, 'w') as f:
            for result in results:
                #print(result)
                f.write(result)
                f.write('\n')

        print('...Testing is completed...')

    if valid_compute:

        print('...Data loading is beginning...')

        dataloader, cartoon_dataloader, portrait_dataloader, _ = get_loader(
            dataset_path='/media/ckq/datasets/cartoon/train',
            batch_size=batch_size,
            num_per_cls=1)

        print('...Data loading is completed...')

        t_cartoon_features, t_cartoon_names, t_portrait_features, t_portrait_names = [], [], [], []
        with torch.no_grad():
            for cartoons, cartoon_names in cartoon_dataloader['valid']:
                cartoons = cartoons.to(device)
                cartoon_names = cartoon_names.to(device)
                #cartoon_names = np.asarray(cartoon_names)
                cartoons_feature, _ = model(cartoons=cartoons)
                t_cartoon_features.append(cartoons_feature.cpu().numpy())
                t_cartoon_names.append(cartoon_names.cpu().squeeze(-1).numpy())

            for portraits, portrait_names in portrait_dataloader['valid']:
Example #6
0
        # preds, sorted capts, dec lens, attention wieghts
        return predictions, encoded_captions, dec_len, alphas


# vocab indices
PAD = 0
START = 1
END = 2
UNK = 3

# Load vocabulary
with open('data/vocab.pkl', 'rb') as f:
    vocab = pickle.load(f)

# load data
train_loader = get_loader('train', vocab, batch_size)
val_loader = get_loader('val', vocab, batch_size)

#############
# Init model
#############

criterion = nn.CrossEntropyLoss().to(device)

if from_checkpoint:

    encoder = Encoder().to(device)
    decoder = Decoder(vocab_size=len(vocab),
                      use_glove=glove_model,
                      use_bert=bert_model).to(device)
Example #7
0
    # data parameters
    DATA_DIR = 'data/' + dataset + '/'
    alpha = 1e-3
    beta = 1e-1
    MAX_EPOCH = 500  #500
    batch_size = 100
    # batch_size = 512
    lr = 1e-4
    betas = (0.5, 0.999)
    weight_decay = 0

    #load data
    print('...Data loading is beginning...')

    data_loader, input_data_par = get_loader(
        DATA_DIR, batch_size
    )  #  load the datasets .mat files pretrained by the CNN networks which contain the image, text, label information

    print('...Data loading is completed...')

    # set train model
    model_ft = IDCM_NN(img_input_dim=input_data_par['img_dim'],
                       text_input_dim=input_data_par['text_dim'],
                       output_dim=input_data_par['num_class']).to(device)
    params_to_update = list(model_ft.parameters())

    # Observe that all parameters are being optimized
    optimizer = optim.Adam(params_to_update, lr=lr, betas=betas)

    print('...Training is beginning...')
    # Train and evaluate