def test_errors_for_bbox_wrong_size(self): with self.assertRaises(ValueError) as cm: next(submission_loader.gen_img_pboxes([{ 'label_probs': [0.1, 0.1, 0.1, 0.1, 0.2], 'bbox': [12, 14, 55] }], [list(range(5)), list(range(5))], num_classes=5, img_idx=13, sequence_name='test.json')) self.assert_contains_indexes(cm, 'test.json', 13, 0) with self.assertRaises(ValueError) as cm: next(submission_loader.gen_img_pboxes([{ 'label_probs': [0.1, 0.1, 0.1, 0.1, 0.2], 'bbox': [12, 14, 55, 46, 47] }], [list(range(5)), list(range(5))], num_classes=5, img_idx=13, sequence_name='test.json')) self.assert_contains_indexes(cm, 'test.json', 13, 0)
def test_errors_for_non_positive_definite_cov(self): with self.assertRaises(ValueError) as cm: next(submission_loader.gen_img_pboxes([{ 'label_probs': [0.1, 0.1, 0.1, 0.1, 0.2], 'bbox': [12, 14, 55, 46], 'covars': [[[1, 2], [2, 1]], [[1, 0], [0, 1]]] }], [list(range(5)), list(range(5))], num_classes=5, img_idx=13, sequence_name='test.json')) self.assert_contains_indexes(cm, 'test.json', 13, 0) with self.assertRaises(ValueError) as cm: next(submission_loader.gen_img_pboxes([{ 'label_probs': [0.1, 0.1, 0.1, 0.1, 0.2], 'bbox': [12, 14, 55, 46], 'covars': [[[1, 0], [0, 1]], [[1, 2], [2, 1]]] }], [list(range(5)), list(range(5))], num_classes=5, img_idx=13, sequence_name='test.json')) self.assert_contains_indexes(cm, 'test.json', 13, 0)
def test_doesnt_normalize_underestimate(self): det = next(submission_loader.gen_img_pboxes([{ 'label_probs': [0.1, 0.1, 0.1, 0.1, 0.2], 'bbox': [12, 14, 55, 46], 'covars': [[[0, 0], [0, 0]], [[0, 0], [0, 0]]] }], [list(range(5)), list(range(5))], num_classes=5)) expected_list = np.zeros(len(class_list.CLASSES), dtype=np.float32) expected_list[0:5] = [0.1, 0.1, 0.1, 0.1, 0.2] self.assertNPEqual(expected_list, det.class_list)
def test_reorders_label_probs(self): det = next(submission_loader.gen_img_pboxes([{ 'label_probs': [0.1, 0.2, 0.3, 0.4], 'bbox': [12, 14, 55, 46], 'covars': [[[0, 0], [0, 0]], [[0, 0], [0, 0]]] }], [[2, 1, 3], [0, 2, 3]], num_classes=4)) expected_list = np.zeros(len(class_list.CLASSES), dtype=np.float32) expected_list[2] = 0.1 expected_list[1] = 0.3 expected_list[3] = 0.4 self.assertNPEqual(expected_list, det.class_list)
def test_builds_detection_instances(self): img_dets = [{ 'label_probs': [0.1, 0.1, 0.1, 0.3, 0.4], 'bbox': [12, 14, 55, 46], 'covars': [[[0, 0], [0, 0]], [[0, 0], [0, 0]]] }, { 'label_probs': [0.8, 0.05, 0.05, 0.05, 0.05], 'bbox': [21, 81, 87, 112], 'covars': [[[15, 5], [5, 21]], [[100, 0], [0, 5]]] }, { 'label_probs': [0.2, 0.1, 0.3, 0.1, 0.3], 'bbox': [3, 6, 13, 121] }] dets = list(submission_loader.gen_img_pboxes(img_dets, [list(range(5)), list(range(5))], num_classes=5)) self.assertEqual(len(img_dets), len(dets)) for idx in range(len(img_dets)): self.assertIsInstance(dets[idx], data_holders.DetectionInstance) expected_list = np.zeros(len(class_list.CLASSES), dtype=np.float32) expected_list[0:5] = img_dets[idx]['label_probs'] self.assertNPEqual(expected_list, dets[idx].class_list)
def test_returns_empty_generator_for_no_detections(self): gen = submission_loader.gen_img_pboxes({}, [[0], [0]]) self.assertIsInstance(gen, types.GeneratorType) dets = list(gen) self.assertEqual(dets, [])