fiftyone.utils.iou¶
Intersection over union (IoU) utilities.
Functions:
|
Computes the pairwise IoUs between the predicted and ground truth objects. |
|
Populates an attribute on each label in the given spatial field(s) that records the max IoU between the object and another object in the same sample/frame. |
|
Computes the pairwise IoUs between the predicted and ground truth temporal detections. |
|
Returns IDs of duplicate labels in the given field of the collection, as defined as labels with an IoU greater than a chosen threshold with another label in the field. |
-
fiftyone.utils.iou.
compute_ious
(preds, gts, iscrowd=None, classwise=False, use_masks=False, use_boxes=False, tolerance=None, error_level=1)¶ Computes the pairwise IoUs between the predicted and ground truth objects.
For polylines, IoUs are computed assuming the shapes are solid (filled), regardless of their
filled
attributes.For keypoints, “IoUs” are computed via object keypoint similarity.
- Parameters
preds – a list of predicted
fiftyone.core.labels.Detection
,fiftyone.core.labels.Polyline
, orfiftyone.core.labels.Keypoints
instancesgts – a list of ground truth
fiftyone.core.labels.Detection
,fiftyone.core.labels.Polyline
, orfiftyone.core.labels.Keypoints
instancesiscrowd (None) – an optional name of a boolean attribute or boolean function to apply to each label that determines whether a ground truth object is a crowd. If provided, the area of the predicted object is used as the “union” area for IoU calculations involving crowd objects
classwise (False) – whether to consider objects with different
label
values as always non-overlapping (True) or to compute IoUs for all objects regardless of label (False)use_masks (False) – whether to compute IoUs using the instances masks in the
mask
attribute of the provided objects, which must befiftyone.core.labels.Detection
instancesuse_boxes (False) – whether to compute IoUs using the bounding boxes of the provided
fiftyone.core.labels.Polyline
instances rather than using their actual geometriestolerance (None) – a tolerance, in pixels, when generating approximate polylines for instance masks. Typical values are 1-3 pixels
error_level (1) –
the error level to use when manipulating instance masks or polylines. Valid values are:
0: raise geometric errors that are encountered
1: log warnings if geometric errors are encountered
2: ignore geometric errors
If
error_level > 0
, any calculation that raises a geometric error will default to an IoU of 0
- Returns
a
num_preds x num_gts
array of IoUs
-
fiftyone.utils.iou.
compute_segment_ious
(preds, gts)¶ Computes the pairwise IoUs between the predicted and ground truth temporal detections.
- Parameters
preds – a list of predicted
fiftyone.core.labels.TemporalDetection
instancesgts – a list of ground truth
fiftyone.core.labels.TemporalDetection
instances
- Returns
a
num_preds x num_gts
array of segment IoUs
-
fiftyone.utils.iou.
compute_max_ious
(sample_collection, label_field, other_field=None, iou_attr='max_iou', id_attr=None, **kwargs)¶ Populates an attribute on each label in the given spatial field(s) that records the max IoU between the object and another object in the same sample/frame.
If
other_field
is provided, IoUs are computed between objects inlabel_field
andother_field
.If no
other_field
is provided, IoUs are computed between objects inlabel_field
alone, excluding the object itself.- Parameters
sample_collection – a
fiftyone.core.collections.SampleCollection
label_field – a label field of type
fiftyone.core.labels.Detections
,fiftyone.core.labels.Polylines
, orfiftyone.core.labels.Keypoints
other_field (None) – another label field of type
fiftyone.core.labels.Detections
,fiftyone.core.labels.Polylines
, orfiftyone.core.labels.Keypoints
iou_attr ("max_iou") – the label attribute in which to store the max IoU
id_attr (None) – an optional attribute in which to store the label ID of the maximum overlapping label
**kwargs – optional keyword arguments for
compute_ious()
-
fiftyone.utils.iou.
find_duplicates
(sample_collection, label_field, iou_thresh=0.999, method='simple', **kwargs)¶ Returns IDs of duplicate labels in the given field of the collection, as defined as labels with an IoU greater than a chosen threshold with another label in the field.
The following duplicate removal methods are supported:
method="simple"
: mark the latter label in every pair of labels whose IoU exceeds the threshold. This may remove more labels than the greedy methodmethod="greedy"
: apply a greedy method to mark the fewest number of labels as duplicate such that no non-duplicate labels have IoU greater than the specified threshold. This method is more computationally expensive than the simple method
- Parameters
sample_collection – a
fiftyone.core.collections.SampleCollection
label_field – a label field of type
fiftyone.core.labels.Detections
,fiftyone.core.labels.Polylines
, orfiftyone.core.labels.Keypoints
iou_thresh (0.999) – the IoU threshold to use to determine whether labels are duplicates
method ("simple") – the duplicate removal method to use. The supported values are
("simple", "greedy")
**kwargs – optional keyword arguments for
compute_ious()
- Returns
a list of IDs of duplicate labels