From 1bfd3d7380b68489476b0b816b9911daa67074bc Mon Sep 17 00:00:00 2001 From: David MacNaughton Date: Tue, 7 Sep 2021 07:28:01 +1000 Subject: [PATCH 1/4] legend-labels Adjust legend labels for classes without instances. --- utils/metrics.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utils/metrics.py b/utils/metrics.py index 4f1b5e2d2c2d..bc304c0626a4 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -71,6 +71,9 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names # Compute F1 (harmonic mean of precision and recall) f1 = 2 * p * r / (p + r + 1e-16) + # Adjust legend labels for gaps + names = {k: v for k, v in names.items() if k in unique_classes} + names = {i: v for i, v in enumerate(names.values())} if plot: plot_pr_curve(px, py, ap, Path(save_dir) / 'PR_curve.png', names) plot_mc_curve(px, f1, Path(save_dir) / 'F1_curve.png', names, ylabel='F1') From cd1d8a0afaf122cf20d98b4371fd8ad3b4fbd275 Mon Sep 17 00:00:00 2001 From: David MacNaughton Date: Thu, 14 Oct 2021 18:21:17 +1000 Subject: [PATCH 2/4] #5158 Re-indexed series names: only classes containing data. --- utils/metrics.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/metrics.py b/utils/metrics.py index bc304c0626a4..a0ae78b12445 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -71,9 +71,8 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names # Compute F1 (harmonic mean of precision and recall) f1 = 2 * p * r / (p + r + 1e-16) - # Adjust legend labels for gaps - names = {k: v for k, v in names.items() if k in unique_classes} - names = {i: v for i, v in enumerate(names.values())} + names = [v for k, v in names.items() if k in unique_classes] # List: only series that have data + names = {i: v for i, v in enumerate(names)} # back to dict; re-indexed to start at 0 if plot: plot_pr_curve(px, py, ap, Path(save_dir) / 'PR_curve.png', names) plot_mc_curve(px, f1, Path(save_dir) / 'F1_curve.png', names, ylabel='F1') From d36889ba2a10864bf30124ce44adbbfea644a10d Mon Sep 17 00:00:00 2001 From: David MacNaughton Date: Thu, 14 Oct 2021 18:29:11 +1000 Subject: [PATCH 3/4] #5158 Re-indexed series names: only classes containing data. --- utils/metrics.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/metrics.py b/utils/metrics.py index a0ae78b12445..145c9d902e58 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -71,8 +71,8 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names # Compute F1 (harmonic mean of precision and recall) f1 = 2 * p * r / (p + r + 1e-16) - names = [v for k, v in names.items() if k in unique_classes] # List: only series that have data - names = {i: v for i, v in enumerate(names)} # back to dict; re-indexed to start at 0 + names = [v for k, v in names.items() if k in unique_classes] # List: only classes that have data + names = {i: v for i, v in enumerate(names)} # to dict if plot: plot_pr_curve(px, py, ap, Path(save_dir) / 'PR_curve.png', names) plot_mc_curve(px, f1, Path(save_dir) / 'F1_curve.png', names, ylabel='F1') From 32a1a143c52b4e2559340ddbbe307f1efffbfb53 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Oct 2021 11:56:20 -0700 Subject: [PATCH 4/4] Cleanup --- utils/metrics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/metrics.py b/utils/metrics.py index 145c9d902e58..2e0e0c65e63d 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -71,7 +71,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names # Compute F1 (harmonic mean of precision and recall) f1 = 2 * p * r / (p + r + 1e-16) - names = [v for k, v in names.items() if k in unique_classes] # List: only classes that have data + names = [v for k, v in names.items() if k in unique_classes] # list: only classes that have data names = {i: v for i, v in enumerate(names)} # to dict if plot: plot_pr_curve(px, py, ap, Path(save_dir) / 'PR_curve.png', names)