|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""Tests for oid_od_challenge_evaluation_util.""" |
|
|
|
from __future__ import absolute_import |
|
from __future__ import division |
|
from __future__ import print_function |
|
|
|
import numpy as np |
|
import pandas as pd |
|
import tensorflow as tf |
|
from object_detection.core import standard_fields |
|
from object_detection.metrics import oid_od_challenge_evaluation_utils as utils |
|
|
|
|
|
class OidOdChallengeEvaluationUtilTest(tf.test.TestCase): |
|
|
|
def testBuildGroundtruthDictionary(self): |
|
np_data = pd.DataFrame( |
|
[['fe58ec1b06db2bb7', '/m/04bcr3', 0.0, 0.3, 0.5, 0.6, 1, None], [ |
|
'fe58ec1b06db2bb7', '/m/02gy9n', 0.1, 0.2, 0.3, 0.4, 0, None |
|
], ['fe58ec1b06db2bb7', '/m/04bcr3', None, None, None, None, None, 1], [ |
|
'fe58ec1b06db2bb7', '/m/083vt', None, None, None, None, None, 0 |
|
], ['fe58ec1b06db2bb7', '/m/02gy9n', None, None, None, None, None, 1]], |
|
columns=[ |
|
'ImageID', 'LabelName', 'XMin', 'XMax', 'YMin', 'YMax', 'IsGroupOf', |
|
'ConfidenceImageLabel' |
|
]) |
|
class_label_map = {'/m/04bcr3': 1, '/m/083vt': 2, '/m/02gy9n': 3} |
|
groundtruth_dictionary = utils.build_groundtruth_boxes_dictionary( |
|
np_data, class_label_map) |
|
|
|
self.assertTrue(standard_fields.InputDataFields.groundtruth_boxes in |
|
groundtruth_dictionary) |
|
self.assertTrue(standard_fields.InputDataFields.groundtruth_classes in |
|
groundtruth_dictionary) |
|
self.assertTrue(standard_fields.InputDataFields.groundtruth_group_of in |
|
groundtruth_dictionary) |
|
self.assertTrue(standard_fields.InputDataFields.groundtruth_image_classes in |
|
groundtruth_dictionary) |
|
|
|
self.assertAllEqual( |
|
np.array([1, 3]), groundtruth_dictionary[ |
|
standard_fields.InputDataFields.groundtruth_classes]) |
|
self.assertAllEqual( |
|
np.array([1, 0]), groundtruth_dictionary[ |
|
standard_fields.InputDataFields.groundtruth_group_of]) |
|
|
|
expected_boxes_data = np.array([[0.5, 0.0, 0.6, 0.3], [0.3, 0.1, 0.4, 0.2]]) |
|
|
|
self.assertNDArrayNear( |
|
expected_boxes_data, groundtruth_dictionary[ |
|
standard_fields.InputDataFields.groundtruth_boxes], 1e-5) |
|
self.assertAllEqual( |
|
np.array([1, 2, 3]), groundtruth_dictionary[ |
|
standard_fields.InputDataFields.groundtruth_image_classes]) |
|
|
|
def testBuildPredictionDictionary(self): |
|
np_data = pd.DataFrame( |
|
[['fe58ec1b06db2bb7', '/m/04bcr3', 0.0, 0.3, 0.5, 0.6, 0.1], [ |
|
'fe58ec1b06db2bb7', '/m/02gy9n', 0.1, 0.2, 0.3, 0.4, 0.2 |
|
], ['fe58ec1b06db2bb7', '/m/04bcr3', 0.0, 0.1, 0.2, 0.3, 0.3]], |
|
columns=[ |
|
'ImageID', 'LabelName', 'XMin', 'XMax', 'YMin', 'YMax', 'Score' |
|
]) |
|
class_label_map = {'/m/04bcr3': 1, '/m/083vt': 2, '/m/02gy9n': 3} |
|
prediction_dictionary = utils.build_predictions_dictionary( |
|
np_data, class_label_map) |
|
|
|
self.assertTrue(standard_fields.DetectionResultFields.detection_boxes in |
|
prediction_dictionary) |
|
self.assertTrue(standard_fields.DetectionResultFields.detection_classes in |
|
prediction_dictionary) |
|
self.assertTrue(standard_fields.DetectionResultFields.detection_scores in |
|
prediction_dictionary) |
|
|
|
self.assertAllEqual( |
|
np.array([1, 3, 1]), prediction_dictionary[ |
|
standard_fields.DetectionResultFields.detection_classes]) |
|
expected_boxes_data = np.array([[0.5, 0.0, 0.6, 0.3], [0.3, 0.1, 0.4, 0.2], |
|
[0.2, 0.0, 0.3, 0.1]]) |
|
self.assertNDArrayNear( |
|
expected_boxes_data, prediction_dictionary[ |
|
standard_fields.DetectionResultFields.detection_boxes], 1e-5) |
|
self.assertNDArrayNear( |
|
np.array([0.1, 0.2, 0.3]), prediction_dictionary[ |
|
standard_fields.DetectionResultFields.detection_scores], 1e-5) |
|
|
|
|
|
if __name__ == '__main__': |
|
tf.test.main() |
|
|