From 96baa10f762d565b591d83c82666e577e5a2e138 Mon Sep 17 00:00:00 2001
From: Korabelnikov Aleks <nesoriti@yandex.ru>
Date: Tue, 5 Nov 2019 10:35:07 +0300
Subject: [PATCH] Update mean_ap.py (#1614)

Add print of area range to each metric table.
Now metrics are looking better.
---
 mmdet/core/evaluation/mean_ap.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/mmdet/core/evaluation/mean_ap.py b/mmdet/core/evaluation/mean_ap.py
index 74a972b..8f70898 100644
--- a/mmdet/core/evaluation/mean_ap.py
+++ b/mmdet/core/evaluation/mean_ap.py
@@ -325,21 +325,25 @@ def eval_map(det_results,
                 aps.append(cls_result['ap'])
         mean_ap = np.array(aps).mean().item() if aps else 0.0
     if print_summary:
-        print_map_summary(mean_ap, eval_results, dataset)
+        print_map_summary(mean_ap, eval_results, dataset, area_ranges)
 
     return mean_ap, eval_results
 
 
-def print_map_summary(mean_ap, results, dataset=None):
+def print_map_summary(mean_ap, results, dataset=None, ranges=None):
     """Print mAP and results of each class.
 
     Args:
         mean_ap(float): calculated from `eval_map`
         results(list): calculated from `eval_map`
         dataset(None or str or list): dataset name or dataset classes.
+        ranges(list or Tuple): ranges of areas
     """
     num_scales = len(results[0]['ap']) if isinstance(results[0]['ap'],
                                                      np.ndarray) else 1
+    if ranges is not None:
+        assert len(ranges) == num_scales
+
     num_classes = len(results)
 
     recalls = np.zeros((num_scales, num_classes), dtype=np.float32)
@@ -365,6 +369,8 @@ def print_map_summary(mean_ap, results, dataset=None):
         mean_ap = [mean_ap]
     header = ['class', 'gts', 'dets', 'recall', 'precision', 'ap']
     for i in range(num_scales):
+        if ranges is not None:
+            print("Area range ", ranges[i])
         table_data = [header]
         for j in range(num_classes):
             row_data = [
-- 
GitLab