Spaces:
Runtime error
Runtime error
| # Copyright (c) OpenMMLab. All rights reserved. | |
| import tempfile | |
| import numpy as np | |
| import pytest | |
| from mmocr.core.evaluation.hmean import (eval_hmean, get_gt_masks, | |
| output_ranklist) | |
| def _create_dummy_ann_infos(): | |
| ann_infos = { | |
| 'bboxes': np.array([[50., 70., 80., 100.]], dtype=np.float32), | |
| 'labels': np.array([1], dtype=np.int64), | |
| 'bboxes_ignore': np.array([[120, 140, 200, 200]], dtype=np.float32), | |
| 'masks': [[[50, 70, 80, 70, 80, 100, 50, 100]]], | |
| 'masks_ignore': [[[120, 140, 200, 140, 200, 200, 120, 200]]] | |
| } | |
| return [ann_infos] | |
| def test_output_ranklist(): | |
| result = [{'hmean': 1}, {'hmean': 0.5}] | |
| file_name = tempfile.NamedTemporaryFile().name | |
| img_infos = [{'file_name': 'sample1.jpg'}, {'file_name': 'sample2.jpg'}] | |
| json_file = file_name + '.json' | |
| with pytest.raises(AssertionError): | |
| output_ranklist([[]], img_infos, json_file) | |
| with pytest.raises(AssertionError): | |
| output_ranklist(result, [[]], json_file) | |
| with pytest.raises(AssertionError): | |
| output_ranklist(result, img_infos, file_name) | |
| sorted_outputs = output_ranklist(result, img_infos, json_file) | |
| assert sorted_outputs[0]['hmean'] == 0.5 | |
| def test_get_gt_mask(): | |
| ann_infos = _create_dummy_ann_infos() | |
| gt_masks, gt_masks_ignore = get_gt_masks(ann_infos) | |
| assert np.allclose(gt_masks[0], [[50, 70, 80, 70, 80, 100, 50, 100]]) | |
| assert np.allclose(gt_masks_ignore[0], | |
| [[120, 140, 200, 140, 200, 200, 120, 200]]) | |
| def test_eval_hmean(): | |
| metrics = set(['hmean-iou', 'hmean-ic13']) | |
| results = [{ | |
| 'boundary_result': [[50, 70, 80, 70, 80, 100, 50, 100, 1], | |
| [120, 140, 200, 140, 200, 200, 120, 200, 1]] | |
| }] | |
| img_infos = [{'file_name': 'sample1.jpg'}] | |
| ann_infos = _create_dummy_ann_infos() | |
| # test invalid arguments | |
| with pytest.raises(AssertionError): | |
| eval_hmean(results, [[]], ann_infos, metrics=metrics) | |
| with pytest.raises(AssertionError): | |
| eval_hmean(results, img_infos, [[]], metrics=metrics) | |
| with pytest.raises(AssertionError): | |
| eval_hmean([[]], img_infos, ann_infos, metrics=metrics) | |
| with pytest.raises(AssertionError): | |
| eval_hmean(results, img_infos, ann_infos, metrics='hmean-iou') | |
| eval_results = eval_hmean(results, img_infos, ann_infos, metrics=metrics) | |
| assert eval_results['hmean-iou:hmean'] == 1 | |
| assert eval_results['hmean-ic13:hmean'] == 1 | |