q_feat = feats[:num_query] g_feat = feats[num_query:] q_pids = np.asarray(pids[:num_query]) g_pids = np.asarray(pids[num_query:]) q_camids = np.asarray(camids[:num_query]) g_camids = np.asarray(camids[num_query:]) # compute cosine distance distmat = 1 - torch.mm(q_feat, g_feat.t()) distmat = distmat.numpy() logger.info("Computing APs for all query images ...") cmc, all_ap, all_inp = evaluate_rank(distmat, q_pids, g_pids, q_camids, g_camids) logger.info("Finish computing APs for all query images!") visualizer = Visualizer(test_loader.dataset) visualizer.get_model_output(all_ap, distmat, q_pids, g_pids, q_camids, g_camids) logger.info("Start saving ROC curve ...") fpr, tpr, pos, neg = visualizer.vis_roc_curve(args.output) visualizer.save_roc_info(args.output, fpr, tpr, pos, neg) logger.info("Finish saving ROC curve!") logger.info("Saving rank list result ...") query_indices = visualizer.vis_rank_list(args.output, args.vis_label, args.num_vis, args.rank_sort, args.label_sort, args.max_rank) logger.info("Finish saving rank list results!")
camids = [] for (feat, pid, camid) in tqdm.tqdm(demo.run_on_loader(test_loader), total=len(test_loader.loader)): feats.append(feat) pids.extend(pid) camids.extend(camid) feats = torch.cat(feats, dim=0) q_feat = feats[:num_query] g_feat = feats[num_query:] q_pids = np.asarray(pids[:num_query]) g_pids = np.asarray(pids[num_query:]) q_camids = np.asarray(camids[:num_query]) g_camids = np.asarray(camids[num_query:]) # compute cosine distance distmat = torch.mm(q_feat, g_feat.t()) distmat = distmat.numpy() logger.info("Computing APs for all query images ...") cmc, all_ap, all_inp = evaluate_rank(1 - distmat, q_pids, g_pids, q_camids, g_camids) visualizer = Visualizer(test_loader.loader.dataset) visualizer.get_model_output(all_ap, distmat, q_pids, g_pids, q_camids, g_camids) logger.info("Saving rank list result ...") query_indices = visualizer.vis_rank_list(args.output, args.vis_label, args.num_vis, args.rank_sort, args.label_sort, args.max_rank)
# encoding: utf-8 """ @author: xingyu liao @contact: [email protected] """ import matplotlib.pyplot as plt import sys sys.path.append('.') from fastreid.utils.visualizer import Visualizer if __name__ == "__main__": baseline_res = Visualizer.load_roc_info("logs/duke_vis/roc_info.pickle") mgn_res = Visualizer.load_roc_info("logs/mgn_duke_vis/roc_info.pickle") fig = Visualizer.plot_roc_curve(baseline_res['fpr'], baseline_res['tpr'], name='baseline') Visualizer.plot_roc_curve(mgn_res['fpr'], mgn_res['tpr'], name='mgn', fig=fig) plt.savefig('roc.jpg') fig = Visualizer.plot_distribution(baseline_res['pos'], baseline_res['neg'], name='baseline') Visualizer.plot_distribution(mgn_res['pos'], mgn_res['neg'], name='mgn', fig=fig) plt.savefig('dist.jpg')
logger.info("Start extracting image features") feats = [] pids = [] camids = [] for (feat, pid, camid) in tqdm.tqdm(demo.run_on_loader(test_loader), total=len(test_loader.loader)): feats.append(feat) pids.extend(pid) camids.extend(camid) feats = torch.cat(feats, dim=0) q_feat = feats[:num_query] g_feat = feats[num_query:] q_pids = np.asarray(pids[:num_query]) g_pids = np.asarray(pids[num_query:]) q_camids = np.asarray(camids[:num_query]) g_camids = np.asarray(camids[num_query:]) # compute cosine distance distmat = torch.mm(q_feat, g_feat.t()) distmat = distmat.numpy() logger.info("Computing APs for all query images ...") cmc, all_ap, all_inp = evaluate_rank(1-distmat, q_pids, g_pids, q_camids, g_camids) visualizer = Visualizer(test_loader.loader.dataset) visualizer.get_model_output(all_ap, distmat, q_pids, g_pids, q_camids, g_camids) logger.info("Saving ranking list result ...") visualizer.vis_ranking_list(args.output, args.num_vis, rank_sort=args.rank_sort, max_rank=args.max_rank)