12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # Copyright (c) OpenMMLab. All rights reserved.
- 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
|