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 | |