Saurabh1105's picture
MMdet Model for Image Segmentation
6c9ac8f
import os.path as osp
import tempfile
from unittest import TestCase
import numpy as np
import torch
from mmdet.evaluation import CrowdHumanMetric
class TestCrowdHumanMetric(TestCase):
def _create_dummy_results(self):
bboxes = np.array([[1330, 317, 418, 1338], [792, 24, 723, 2017],
[693, 291, 307, 894], [522, 290, 285, 826],
[728, 336, 175, 602], [92, 337, 267, 681]])
bboxes[:, 2:4] += bboxes[:, 0:2]
scores = np.array([1.0, 1.0, 1.0, 1.0, 1.0, 1.0])
return dict(
bboxes=torch.from_numpy(bboxes), scores=torch.from_numpy(scores))
def setUp(self):
self.tmp_dir = tempfile.TemporaryDirectory()
self.ann_file_path = \
'tests/data/crowdhuman_dataset/test_annotation_train.odgt',
def tearDown(self):
self.tmp_dir.cleanup()
def test_init(self):
with self.assertRaisesRegex(KeyError, 'metric should be one of'):
CrowdHumanMetric(ann_file=self.ann_file_path[0], metric='unknown')
def test_evaluate(self):
# create dummy data
dummy_pred = self._create_dummy_results()
crowdhuman_metric = CrowdHumanMetric(
ann_file=self.ann_file_path[0],
outfile_prefix=f'{self.tmp_dir.name}/test')
crowdhuman_metric.process({}, [
dict(
pred_instances=dummy_pred,
img_id='283554,35288000868e92d4',
ori_shape=(1640, 1640))
])
eval_results = crowdhuman_metric.evaluate(size=1)
target = {
'crowd_human/mAP': 0.8333,
'crowd_human/mMR': 0.0,
'crowd_human/JI': 1.0
}
self.assertDictEqual(eval_results, target)
self.assertTrue(osp.isfile(osp.join(self.tmp_dir.name, 'test.json')))