def add_single_ground_truth_image_info(self, image_id, groundtruth_dict):
    """Adds groundtruth for a single image to be used for evaluation.

    Args:
      image_id: A unique string/integer identifier for the image.
      groundtruth_dict: A dictionary containing -
        standard_fields.InputDataFields.groundtruth_boxes: A numpy array
          of structures with the shape [M, 1], representing M tuples, each tuple
          containing the same number of named bounding boxes.
          Each box is of the format [y_min, x_min, y_max, x_max] (see
          datatype vrd_box_data_type, single_box_data_type above).
        standard_fields.InputDataFields.groundtruth_classes: A numpy array of
          structures shape [M, 1], representing  the class labels of the
          corresponding bounding boxes and possibly additional classes (see
          datatype label_data_type above).
        standard_fields.InputDataFields.groundtruth_image_classes: numpy array
          of shape [K] containing verified labels.
    Raises:
      ValueError: On adding groundtruth for an image more than once.
    """
    if image_id in self._image_ids:
      raise ValueError('Image with id {} already added.'.format(image_id))

    groundtruth_class_tuples = (
        groundtruth_dict[standard_fields.InputDataFields.groundtruth_classes])
    groundtruth_box_tuples = (
        groundtruth_dict[standard_fields.InputDataFields.groundtruth_boxes])

    self._evaluation.add_single_ground_truth_image_info(
        image_key=image_id,
        groundtruth_box_tuples=self._process_groundtruth_boxes(
            groundtruth_box_tuples),
        groundtruth_class_tuples=groundtruth_class_tuples)
    self._image_ids.update([image_id])
    all_classes = []
    for field in groundtruth_box_tuples.dtype.fields:
      all_classes.append(groundtruth_class_tuples[field])
    groudtruth_positive_classes = np.unique(np.concatenate(all_classes))
    verified_labels = groundtruth_dict.get(
        standard_fields.InputDataFields.groundtruth_image_classes,
        np.array([], dtype=int))
    self._evaluatable_labels[image_id] = np.unique(
        np.concatenate((verified_labels, groudtruth_positive_classes)))

    self._negative_labels[image_id] = np.setdiff1d(verified_labels,
                                                   groudtruth_positive_classes)
Adds groundtruth for a single image to be used for evaluation.

    Args:
      image_id: A unique string/integer identifier for the image.
      groundtruth_dict: A dictionary containing -
        standard_fields.InputDataFields.groundtruth_boxes: A numpy array
          of structures with the shape [M, 1], representing M tuples, each tuple
          containing the same number of named bounding boxes.
          Each box is of the format [y_min, x_min, y_max, x_max] (see
          datatype vrd_box_data_type, single_box_data_type above).
        standard_fields.InputDataFields.groundtruth_classes: A numpy array of
          structures shape [M, 1], representing  the class labels of the
          corresponding bounding boxes and possibly additional classes (see
          datatype label_data_type above).
        standard_fields.InputDataFields.groundtruth_image_classes: numpy array
          of shape [K] containing verified labels.
    Raises:
      ValueError: On adding groundtruth for an image more than once.
    
inference_api/src/main/object_detection/utils/vrd_evaluation.py