From 72a53806746bc7ffa2f3939721e34b5cfdb7330a Mon Sep 17 00:00:00 2001 From: Jordan Gong Date: Mon, 11 Jan 2021 23:59:30 +0800 Subject: Add evaluation script, code review and fix some bugs 1. Add new `train_all` method for one shot calling 2. Print time used in 1k iterations 3. Correct label dimension in predict function 4. Transpose distance matrix for convenient indexing 5. Sort dictionary before generate signature 6. Extract visible CUDA setting function --- eval.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 eval.py (limited to 'eval.py') diff --git a/eval.py b/eval.py new file mode 100644 index 0000000..fee4ab9 --- /dev/null +++ b/eval.py @@ -0,0 +1,16 @@ +from config import config +from models import Model +from utils.dataset import ClipConditions +from utils.misc import set_visible_cuda + +set_visible_cuda(config['system']) +model = Model(config['system'], config['model'], config['hyperparameter']) + +dataset_selectors = { + 'nm': {'conditions': ClipConditions({r'nm-0\d'})}, + 'bg': {'conditions': ClipConditions({r'nm-0\d', r'bg-0\d'})}, + 'cl': {'conditions': ClipConditions({r'nm-0\d', r'cl-0\d'})}, +} + +accuracy = model.predict_all(config['model']['total_iter'], config['dataset'], + dataset_selectors, config['dataloader']) -- cgit v1.2.3 From 36cf502afe9b93efe31c244030270b0a62e644b8 Mon Sep 17 00:00:00 2001 From: Jordan Gong Date: Tue, 12 Jan 2021 11:13:39 +0800 Subject: Print result after evaluation --- eval.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'eval.py') diff --git a/eval.py b/eval.py index fee4ab9..7b68220 100644 --- a/eval.py +++ b/eval.py @@ -1,3 +1,5 @@ +import numpy as np + from config import config from models import Model from utils.dataset import ClipConditions @@ -14,3 +16,15 @@ dataset_selectors = { accuracy = model.predict_all(config['model']['total_iter'], config['dataset'], dataset_selectors, config['dataloader']) +rank = 5 +np.set_printoptions(formatter={'float': '{:5.2f}'.format}) +for n in range(rank): + print(f'===Rank-{n + 1} Accuracy===') + for (condition, accuracy_c) in accuracy.items(): + acc_excl_identical_view = accuracy_c[:, :, n].fill_diagonal_(0) + num_gallery_views = (acc_excl_identical_view != 0).sum() + acc_each_angle = acc_excl_identical_view.sum(0) / num_gallery_views + print('{0}: {1} mean: {2:5.2f}'.format( + condition, acc_each_angle.cpu().numpy() * 100, + acc_each_angle.mean() * 100) + ) -- cgit v1.2.3