|
|
|
import os.path as osp |
|
from tempfile import TemporaryDirectory |
|
|
|
import mmengine |
|
import numpy as np |
|
|
|
from mmdet.datasets import CocoDataset |
|
from mmdet.evaluation import CocoOccludedSeparatedMetric |
|
|
|
|
|
def test_coco_occluded_separated_metric(): |
|
ann = [[ |
|
'fake1.jpg', 'person', 8, [219.9, 176.12, 11.14, 34.23], { |
|
'size': [480, 640], |
|
'counts': b'nYW31n>2N2FNbA48Kf=?XBDe=m0OM3M4YOPB8_>L4JXao5' |
|
} |
|
]] * 3 |
|
dummy_mask = np.zeros((10, 10), dtype=np.uint8) |
|
dummy_mask[:5, :5] = 1 |
|
rle = { |
|
'size': [480, 640], |
|
'counts': b'nYW31n>2N2FNbA48Kf=?XBDe=m0OM3M4YOPB8_>L4JXao5' |
|
} |
|
res = [(None, |
|
dict( |
|
img_id=0, |
|
bboxes=np.array([[50, 60, 70, 80]] * 2), |
|
masks=[rle] * 2, |
|
labels=np.array([0, 1], dtype=np.int64), |
|
scores=np.array([0.77, 0.77])))] * 3 |
|
|
|
tempdir = TemporaryDirectory() |
|
ann_path = osp.join(tempdir.name, 'coco_occluded.pkl') |
|
mmengine.dump(ann, ann_path) |
|
|
|
metric = CocoOccludedSeparatedMetric( |
|
ann_file='tests/data/coco_sample.json', |
|
occluded_ann=ann_path, |
|
separated_ann=ann_path, |
|
metric=[]) |
|
metric.dataset_meta = CocoDataset.METAINFO |
|
eval_res = metric.compute_metrics(res) |
|
assert isinstance(eval_res, dict) |
|
assert eval_res['occluded_recall'] == 100 |
|
assert eval_res['separated_recall'] == 100 |
|
|