|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r"""Converts data from CSV to the OpenImagesDetectionChallengeEvaluator format. |
|
""" |
|
|
|
from __future__ import absolute_import |
|
from __future__ import division |
|
from __future__ import print_function |
|
|
|
from object_detection.core import standard_fields |
|
|
|
|
|
def build_groundtruth_boxes_dictionary(data, class_label_map): |
|
"""Builds a groundtruth dictionary from groundtruth data in CSV file. |
|
|
|
Args: |
|
data: Pandas DataFrame with the groundtruth data for a single image. |
|
class_label_map: Class labelmap from string label name to an integer. |
|
|
|
Returns: |
|
A dictionary with keys suitable for passing to |
|
OpenImagesDetectionChallengeEvaluator.add_single_ground_truth_image_info: |
|
standard_fields.InputDataFields.groundtruth_boxes: float32 numpy array |
|
of shape [num_boxes, 4] containing `num_boxes` groundtruth boxes of |
|
the format [ymin, xmin, ymax, xmax] in absolute image coordinates. |
|
standard_fields.InputDataFields.groundtruth_classes: integer numpy array |
|
of shape [num_boxes] containing 1-indexed groundtruth classes for the |
|
boxes. |
|
standard_fields.InputDataFields.verified_labels: integer 1D numpy array |
|
containing all classes for which labels are verified. |
|
standard_fields.InputDataFields.groundtruth_group_of: Optional length |
|
M numpy boolean array denoting whether a groundtruth box contains a |
|
group of instances. |
|
""" |
|
data_boxes = data[data.ConfidenceImageLabel.isnull()] |
|
data_labels = data[data.XMin.isnull()] |
|
|
|
return { |
|
standard_fields.InputDataFields.groundtruth_boxes: |
|
data_boxes[['YMin', 'XMin', 'YMax', 'XMax']].as_matrix(), |
|
standard_fields.InputDataFields.groundtruth_classes: |
|
data_boxes['LabelName'].map(lambda x: class_label_map[x]).as_matrix(), |
|
standard_fields.InputDataFields.groundtruth_group_of: |
|
data_boxes['IsGroupOf'].as_matrix().astype(int), |
|
standard_fields.InputDataFields.groundtruth_image_classes: |
|
data_labels['LabelName'].map(lambda x: class_label_map[x]) |
|
.as_matrix(), |
|
} |
|
|
|
|
|
def build_predictions_dictionary(data, class_label_map): |
|
"""Builds a predictions dictionary from predictions data in CSV file. |
|
|
|
Args: |
|
data: Pandas DataFrame with the predictions data for a single image. |
|
class_label_map: Class labelmap from string label name to an integer. |
|
|
|
Returns: |
|
Dictionary with keys suitable for passing to |
|
OpenImagesDetectionChallengeEvaluator.add_single_detected_image_info: |
|
standard_fields.DetectionResultFields.detection_boxes: float32 numpy |
|
array of shape [num_boxes, 4] containing `num_boxes` detection boxes |
|
of the format [ymin, xmin, ymax, xmax] in absolute image coordinates. |
|
standard_fields.DetectionResultFields.detection_scores: float32 numpy |
|
array of shape [num_boxes] containing detection scores for the boxes. |
|
standard_fields.DetectionResultFields.detection_classes: integer numpy |
|
array of shape [num_boxes] containing 1-indexed detection classes for |
|
the boxes. |
|
|
|
""" |
|
return { |
|
standard_fields.DetectionResultFields.detection_boxes: |
|
data[['YMin', 'XMin', 'YMax', 'XMax']].as_matrix(), |
|
standard_fields.DetectionResultFields.detection_classes: |
|
data['LabelName'].map(lambda x: class_label_map[x]).as_matrix(), |
|
standard_fields.DetectionResultFields.detection_scores: |
|
data['Score'].as_matrix() |
|
} |
|
|