def test(**kwargs): opt.parse(kwargs) train_L, query_L, retrieval_L, train_x, query_x, retrieval_x, train_y, query_y, retrieval_y = load_data( opt.data_path) y_dim = query_y.shape[1] print('...loading and splitting data finish') img_model = ImgModule(opt.bit) txt_model = TxtModule(y_dim, opt.bit) if opt.load_img_path: img_model.load(opt.load_img_path) if opt.load_txt_path: txt_model.load(opt.load_txt_path) if opt.use_gpu: img_model = img_model.cuda() txt_model = txt_model.cuda() qBX = generate_image_code(img_model, query_x, opt.bit) qBY = generate_text_code(txt_model, query_y, opt.bit) rBX = generate_image_code(img_model, retrieval_x, opt.bit) rBY = generate_text_code(txt_model, retrieval_y, opt.bit) if opt.use_gpu: query_L = query_L.cuda() retrieval_L = retrieval_L.cuda() mapi2t = calc_map_k(qBX, rBY, query_L, retrieval_L) mapt2i = calc_map_k(qBY, rBX, query_L, retrieval_L) print('...test MAP: MAP(i->t): %3.3f, MAP(t->i): %3.3f' % (mapi2t, mapt2i))
def test(**kwargs): opt.parse(kwargs) images, tags, labels = load_data(opt.data_path) y_dim = tags.shape[1] X, Y, L = split_data(images, tags, labels) print('...loading and splitting data finish') img_model = ImgModule(opt.bit) txt_model = TxtModule(y_dim, opt.bit) if opt.load_img_path: img_model.load(opt.load_img_path) if opt.load_txt_path: txt_model.load(opt.load_txt_path) if opt.use_gpu: img_model = img_model.cuda() txt_model = txt_model.cuda() print('-----------------------') query_L = torch.from_numpy(L['query']) query_x = torch.from_numpy(X['query']) query_y = torch.from_numpy(Y['query']) retrieval_L = torch.from_numpy(L['retrieval']) retrieval_x = torch.from_numpy(X['retrieval']) retrieval_y = torch.from_numpy(Y['retrieval']) qBX = generate_image_code(img_model, query_x, opt.bit) qBY = generate_text_code(txt_model, query_y, opt.bit) rBX = generate_image_code(img_model, retrieval_x, opt.bit) rBY = generate_text_code(txt_model, retrieval_y, opt.bit) if opt.use_gpu: query_L = query_L.cuda() retrieval_L = retrieval_L.cuda() mapi2t = calc_map_k(qBX, rBY, query_L, retrieval_L) mapt2i = calc_map_k(qBY, rBX, query_L, retrieval_L) print('...test MAP: MAP(i->t): %3.3f, MAP(t->i): %3.3f' % (mapi2t, mapt2i))
def debug(**kwargs): opt.parse(kwargs) # load data images, tags, labels = load_data(opt.data_path) y_dim = tags.shape[1] labels1 = np.load(opt.l1_path) X, Y, L, L1 = split_data(images, tags, labels, opt, labels1) print('...loading and splitting data finish') # init module img_model = ImgModule(opt.bit) txt_model = TxtModule(y_dim, opt.bit) if opt.use_gpu: img_model = img_model.cuda() txt_model = txt_model.cuda() print("load trained model from file..") img_model.load(opt.load_img_path, use_gpu=True) txt_model.load(opt.load_txt_path, use_gpu=True) train_L = torch.from_numpy(L['train']) train_L1 = torch.from_numpy(L1['train']) train_x = torch.from_numpy(X['train']) train_y = torch.from_numpy(Y['train']) query_L = torch.from_numpy(L['query']) query_x = torch.from_numpy(X['query']) query_y = torch.from_numpy(Y['query']) retrieval_L = torch.from_numpy(L['retrieval']) retrieval_x = torch.from_numpy(X['retrieval']) retrieval_y = torch.from_numpy(Y['retrieval']) mapi2t, mapt2i = evaluate(img_model, txt_model, query_x, query_y, retrieval_x, retrieval_y, query_L, retrieval_L, opt.bit) print('...test map: map(i->t): %3.3f, map(t->i): %3.3f' % (mapi2t, mapt2i))