playground_metrics.utils.iou_utils

playground_metrics.utils.iou_utils.add_confidence_from_max_iou(detections, ground_truths)[source]

Compute confidence scores for detections based on the maximum IoU between detections and ground truths.

Parameters:
  • detections (ndarray, list) –

    A ndarray of detections stored as:

    • Bounding boxes for a given class where each row is a detection stored as: [BoundingBox]

    • Polygons for a given class where each row is a detection stored as: [Polygon]

  • ground_truths (ndarray,list) –

    A ndarray of ground truth stored as:

    • Bounding boxes for a given class where each row is a ground truth stored as: [BoundingBox]

    • Polygons for a given class where each row is a ground truth stored as: [Polygon]

Returns:

The detection with an additional column containing maximum IoU between detections and ground truths to use as confidence scores, as:

  • Bounding boxes for a given class where each row is a detection stored as: [BoundingBox, confidence]

  • Polygons for a given class where each row is a detection stored as: [Polygon, confidence]

Return type:

ndarray

Examples

With a bounding box input:

>>> from playground_metrics.utils.geometry_utils import BoundingBox
>>> detections = np.array([[BoundingBox(0, 0, 9, 5)],
...                        [BoundingBox(23, 13, 29, 18)]])
>>> ground_truths = np.array([[BoundingBox(5, 2, 15, 9)],
...                           [BoundingBox(18, 10, 26, 15)]])
>>> add_confidence_from_max_IoU(detections, ground_truths)
array([[BoundingBox(xmin=0, ymin=0, xmax=9, ymax=5), 0.11650485436893204],
       [BoundingBox(xmin=23, ymin=13, xmax=29, ymax=18), 0.09375]],
      dtype=object)

The same with polygons:

>>> from playground_metrics.utils.geometry_utils import Polygon
>>> detections = np.array([[Polygon([[0.0, 0.0], [0.0, 5.0], [9.0, 5.0], [9.0, 0.0]])],
...                       [Polygon([[23.0, 13.0], [23.0, 18.0], [29.0, 18.0], [29.0, 13.0]])]])
>>> ground_truths = np.array([[Polygon([[5, 2], [5, 9], [15, 9], [15, 2]])],
...                           [Polygon([[18, 10], [18, 15], [26, 15], [26, 10]])]])
>>> add_confidence_from_max_IoU(detections, ground_truths)
array([[Polygon(shell=[[0. 0.] [0. 5.] [9. 5.] [9. 0.]], holes=[]),
        0.11650485436893204],
       [Polygon(shell=[[23. 13.] [23. 18.] [29. 18.] [29. 13.]], holes=[]),
        0.09375]], dtype=object)