Spaces:
Runtime error
Runtime error
| # Copyright (c) OpenMMLab. All rights reserved. | |
| """Test hmean_ic13.""" | |
| import math | |
| import pytest | |
| import mmocr.core.evaluation.hmean_ic13 as hmean_ic13 | |
| import mmocr.core.evaluation.utils as utils | |
| def test_compute_recall_precision(): | |
| gt_polys = [] | |
| det_polys = [] | |
| # test invalid arguments. | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.compute_recall_precision(1, 1) | |
| box1 = [0, 0, 1, 0, 1, 1, 0, 1] | |
| box2 = [0, 0, 10, 0, 10, 1, 0, 1] | |
| gt_polys = [utils.points2polygon(box1)] | |
| det_polys = [utils.points2polygon(box2)] | |
| recall, precision = hmean_ic13.compute_recall_precision( | |
| gt_polys, det_polys) | |
| assert recall == 1 | |
| assert precision == 0.1 | |
| def test_eval_hmean_ic13(): | |
| det_boxes = [] | |
| gt_boxes = [] | |
| gt_ignored_boxes = [] | |
| precision_thr = 0.4 | |
| recall_thr = 0.8 | |
| center_dist_thr = 1.0 | |
| one2one_score = 1. | |
| one2many_score = 0.8 | |
| many2one_score = 1 | |
| # test invalid arguments. | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13([1], gt_boxes, gt_ignored_boxes, | |
| precision_thr, recall_thr, center_dist_thr, | |
| one2one_score, one2many_score, | |
| many2one_score) | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13(det_boxes, 1, gt_ignored_boxes, | |
| precision_thr, recall_thr, center_dist_thr, | |
| one2one_score, one2many_score, | |
| many2one_score) | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13(det_boxes, gt_boxes, 1, precision_thr, | |
| recall_thr, center_dist_thr, one2one_score, | |
| one2many_score, many2one_score) | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13(det_boxes, gt_boxes, gt_ignored_boxes, 1.1, | |
| recall_thr, center_dist_thr, one2one_score, | |
| one2many_score, many2one_score) | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13(det_boxes, gt_boxes, gt_ignored_boxes, | |
| precision_thr, 1.1, center_dist_thr, | |
| one2one_score, one2many_score, | |
| many2one_score) | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13(det_boxes, gt_boxes, gt_ignored_boxes, | |
| precision_thr, recall_thr, -1, | |
| one2one_score, one2many_score, | |
| many2one_score) | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13(det_boxes, gt_boxes, gt_ignored_boxes, | |
| precision_thr, recall_thr, center_dist_thr, | |
| -1, one2many_score, many2one_score) | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13(det_boxes, gt_boxes, gt_ignored_boxes, | |
| precision_thr, recall_thr, center_dist_thr, | |
| one2one_score, -1, many2one_score) | |
| with pytest.raises(AssertionError): | |
| hmean_ic13.eval_hmean_ic13(det_boxes, gt_boxes, gt_ignored_boxes, | |
| precision_thr, recall_thr, center_dist_thr, | |
| one2one_score, one2many_score, -1) | |
| # test one2one match | |
| det_boxes = [[[0, 0, 1, 0, 1, 1, 0, 1], [10, 0, 11, 0, 11, 1, 10, 1]]] | |
| gt_boxes = [[[0, 0, 1, 0, 1, 1, 0, 1]]] | |
| gt_ignored_boxes = [[]] | |
| dataset_result, img_result = hmean_ic13.eval_hmean_ic13( | |
| det_boxes, gt_boxes, gt_ignored_boxes, precision_thr, recall_thr, | |
| center_dist_thr, one2one_score, one2many_score, many2one_score) | |
| assert img_result[0]['recall'] == 1 | |
| assert img_result[0]['precision'] == 0.5 | |
| assert math.isclose(img_result[0]['hmean'], 2 * (0.5) / 1.5) | |
| # test one2many match | |
| gt_boxes = [[[0, 0, 2, 0, 2, 1, 0, 1]]] | |
| det_boxes = [[[0, 0, 1, 0, 1, 1, 0, 1], [1, 0, 2, 0, 2, 1, 1, 1]]] | |
| dataset_result, img_result = hmean_ic13.eval_hmean_ic13( | |
| det_boxes, gt_boxes, gt_ignored_boxes, precision_thr, recall_thr, | |
| center_dist_thr, one2one_score, one2many_score, many2one_score) | |
| assert img_result[0]['recall'] == 0.8 | |
| assert img_result[0]['precision'] == 1.6 / 2 | |
| assert math.isclose(img_result[0]['hmean'], 2 * (0.64) / 1.6) | |
| # test many2one match | |
| precision_thr = 0.6 | |
| recall_thr = 0.8 | |
| det_boxes = [[[0, 0, 2, 0, 2, 1, 0, 1]]] | |
| gt_boxes = [[[0, 0, 1, 0, 1, 1, 0, 1], [1, 0, 2, 0, 2, 1, 1, 1]]] | |
| dataset_result, img_result = hmean_ic13.eval_hmean_ic13( | |
| det_boxes, gt_boxes, gt_ignored_boxes, precision_thr, recall_thr, | |
| center_dist_thr, one2one_score, one2many_score, many2one_score) | |
| assert img_result[0]['recall'] == 1 | |
| assert img_result[0]['precision'] == 1 | |
| assert math.isclose(img_result[0]['hmean'], 1) | |