Commit 96baa10f authored by Korabelnikov Aleks's avatar Korabelnikov Aleks Committed by Kai Chen
Browse files

Update mean_ap.py (#1614)

Add print of area range to each metric table.
Now metrics are looking better.
parent 82c533be
...@@ -325,21 +325,25 @@ def eval_map(det_results, ...@@ -325,21 +325,25 @@ def eval_map(det_results,
aps.append(cls_result['ap']) aps.append(cls_result['ap'])
mean_ap = np.array(aps).mean().item() if aps else 0.0 mean_ap = np.array(aps).mean().item() if aps else 0.0
if print_summary: 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 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. """Print mAP and results of each class.
Args: Args:
mean_ap(float): calculated from `eval_map` mean_ap(float): calculated from `eval_map`
results(list): calculated from `eval_map` results(list): calculated from `eval_map`
dataset(None or str or list): dataset name or dataset classes. 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'], num_scales = len(results[0]['ap']) if isinstance(results[0]['ap'],
np.ndarray) else 1 np.ndarray) else 1
if ranges is not None:
assert len(ranges) == num_scales
num_classes = len(results) num_classes = len(results)
recalls = np.zeros((num_scales, num_classes), dtype=np.float32) recalls = np.zeros((num_scales, num_classes), dtype=np.float32)
...@@ -365,6 +369,8 @@ def print_map_summary(mean_ap, results, dataset=None): ...@@ -365,6 +369,8 @@ def print_map_summary(mean_ap, results, dataset=None):
mean_ap = [mean_ap] mean_ap = [mean_ap]
header = ['class', 'gts', 'dets', 'recall', 'precision', 'ap'] header = ['class', 'gts', 'dets', 'recall', 'precision', 'ap']
for i in range(num_scales): for i in range(num_scales):
if ranges is not None:
print("Area range ", ranges[i])
table_data = [header] table_data = [header]
for j in range(num_classes): for j in range(num_classes):
row_data = [ row_data = [
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment