module documentation

Label utilities.

Copyright 2017-2025, Voxel51, Inc.

Function classification_to_detections Converts the fiftyone.core.labels.Classification field of the collection into a fiftyone.core.labels.Detections field containing a single detection whose bounding box spans the entire image.
Function classifications_to_detections Converts the fiftyone.core.labels.Classifications field of the collection into a fiftyone.core.labels.Detections field containing detections whose bounding boxes span the entire image with one detection for each classification.
Function export_segmentations Exports the semantic segmentations, instance segmentations, or heatmaps stored as in-database arrays in the specified field to images on disk.
Function import_segmentations Imports the semantic segmentations, instance segmentations, or heatmaps stored on disk in the specified field to in-database arrays.
Function instances_to_polylines Converts the instance segmentations in the specified field of the collection into fiftyone.core.labels.Polylines instances.
Function objects_to_segmentations Converts the instance segmentations or polylines in the specified field of the collection into semantic segmentation masks.
Function perform_nms Performs non-maximum suppression (NMS) on the specified fiftyone.core.labels.Detections field.
Function segmentations_to_detections Converts the semantic segmentations masks in the specified field of the collection into fiftyone.core.labels.Detections with instance masks populated.
Function segmentations_to_polylines Converts the semantic segmentations masks in the specified field of the collection into fiftyone.core.labels.Polylines instances.
Function transform_segmentations Transforms the segmentations in the given field according to the provided targets map.
Function _perform_nms Undocumented
Function _transform_mask_targets Undocumented
def classification_to_detections(sample_collection, in_field, out_field, progress=None): (source)

Converts the fiftyone.core.labels.Classification field of the collection into a fiftyone.core.labels.Detections field containing a single detection whose bounding box spans the entire image.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Classification field
out_fieldthe name of the fiftyone.core.labels.Detections field to populate
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def classifications_to_detections(sample_collection, in_field, out_field, progress=None): (source)

Converts the fiftyone.core.labels.Classifications field of the collection into a fiftyone.core.labels.Detections field containing detections whose bounding boxes span the entire image with one detection for each classification.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Classifications field
out_fieldthe name of the fiftyone.core.labels.Detections field to populate
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def export_segmentations(sample_collection, in_field, output_dir, rel_dir=None, update=True, overwrite=False, progress=None): (source)

Exports the semantic segmentations, instance segmentations, or heatmaps stored as in-database arrays in the specified field to images on disk.

Any labels without in-memory arrays are skipped.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Segmentation, fiftyone.core.labels.Detection, fiftyone.core.labels.Detections, or fiftyone.core.labels.Heatmap field
output_dirthe directory in which to write the images
rel_dir:Nonean optional relative directory to strip from each input filepath to generate a unique identifier that is joined with output_dir to generate an output path for each image. This argument allows for populating nested subdirectories in output_dir that match the shape of the input paths. The path is converted to an absolute path (if necessary) via fiftyone.core.storage.normalize_path
update:Truewhether to delete the arrays from the database
overwrite:Falsewhether to delete output_dir prior to exporting if it exists
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def import_segmentations(sample_collection, in_field, update=True, delete_images=False, progress=None): (source)

Imports the semantic segmentations, instance segmentations, or heatmaps stored on disk in the specified field to in-database arrays.

Any labels without images on disk are skipped.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Segmentation, fiftyone.core.labels.Detection, fiftyone.core.labels.Detections, or fiftyone.core.labels.Heatmap field
update:Truewhether to delete the image paths from the labels
delete_images:Falsewhether to delete any imported images from disk
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def instances_to_polylines(sample_collection, in_field, out_field, tolerance=2, filled=True, progress=None): (source)

Converts the instance segmentations in the specified field of the collection into fiftyone.core.labels.Polylines instances.

For detections with masks, the returned polylines will trace the boundaries of the masks; otherwise, the polylines will trace the bounding boxes themselves.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Detections field to convert
out_fieldthe name of the fiftyone.core.labels.Polylines field to populate
tolerance:2a tolerance, in pixels, when generating approximate polylines for each region. Typical values are 1-3 pixels
filled:Truewhether the polylines should be filled
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def objects_to_segmentations(sample_collection, in_field, out_field, mask_size=None, mask_targets=None, thickness=1, output_dir=None, rel_dir=None, overwrite=False, save_mask_targets=False, progress=None): (source)

Converts the instance segmentations or polylines in the specified field of the collection into semantic segmentation masks.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the objects field for which to render segmentation masks. Supported types are fiftyone.core.labels.Detection, fiftyone.core.labels.Detections, fiftyone.core.labels.Polyline, and fiftyone.core.labels.Polylines
out_fieldthe name of the fiftyone.core.labels.Segmentation field to populate
mask_size:Nonethe (width, height) at which to render the segmentation masks. If not provided, masks will be rendered to match the resolution of each input image
mask_targets:Nonea dict mapping pixel values (2D masks) or RGB hex strings (3D masks) to label strings defining which object classes to render and which pixel values to use for each class. If omitted, all objects are rendered with pixel value 255
thickness:1the thickness, in pixels, at which to render (non-filled) polylines
output_dir:Nonean optional output directory in which to write the segmentation images. If none is provided, the segmentations are stored in the database
rel_dir:Nonean optional relative directory to strip from each input filepath to generate a unique identifier that is joined with output_dir to generate an output path for each segmentation image. This argument allows for populating nested subdirectories in output_dir that match the shape of the input paths. The path is converted to an absolute path (if necessary) via fiftyone.core.storage.normalize_path
overwrite:Falsewhether to delete output_dir prior to exporting if it exists
save_mask_targets:Falsewhether to store the mask_targets on the dataset
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def perform_nms(sample_collection, in_field, out_field=None, iou_thresh=0.5, confidence_thresh=None, classwise=True, progress=None): (source)

Performs non-maximum suppression (NMS) on the specified fiftyone.core.labels.Detections field.

NMS is a post-processing technique used in object detection to eliminate duplicate detections and select the most relevant detected objects. This helps reduce false positives.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Detections field
out_field:Nonethe name of the fiftyone.core.labels.Detections field to populate. If not specified, the input field is updated in-place
iou_thresh:0.5an intersection over union (IoU) threshold to use. This determines the minimum overlap required between bounding boxes to be considered duplicates. Bounding boxes with IoU values greater than or equal to this threshold will be suppressed
confidence_thresh:Nonea minimum confidence score required for a detection to be considered valid. Detections with confidence scores lower than this threshold will be discarded
classwise:Truewhether to treat each class label separately (True) or suppress all detections jointly (False)
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def segmentations_to_detections(sample_collection, in_field, out_field, mask_targets=None, mask_types='stuff', output_dir=None, rel_dir=None, overwrite=False, progress=None): (source)

Converts the semantic segmentations masks in the specified field of the collection into fiftyone.core.labels.Detections with instance masks populated.

Each "stuff" class will be converted to a single fiftyone.core.labels.Detection whose instance mask spans all region(s) of the class.

Each "thing" class will result in one fiftyone.core.labels.Detection instance per connected region of that class in the segmentation.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Segmentation field to convert
out_fieldthe name of the fiftyone.core.labels.Detections field to populate
mask_targets:Nonea dict mapping pixel values (2D masks) or RGB hex strings (3D masks) to label strings defining which object classes to label and which pixel values to use for each class. If omitted, all labels are assigned to the pixel values
mask_types:"stuff"

whether the classes are "stuff" (amorphous regions of pixels) or "thing" (connected regions, each representing an instance of the thing). Can be any of the following:

  • "stuff" if all classes are stuff classes
  • "thing" if all classes are thing classes
  • a dict mapping pixel values (2D masks) or RGB hex strings (3D masks) to "stuff" or "thing" for each class
output_dir:Nonean optional output directory in which to write instance segmentation images. If none is provided, the instance segmentations are stored in the database
rel_dir:Nonean optional relative directory to strip from each input filepath to generate a unique identifier that is joined with output_dir to generate an output path for each instance segmentation image. This argument allows for populating nested subdirectories in output_dir that match the shape of the input paths. The path is converted to an absolute path (if necessary) via fiftyone.core.storage.normalize_path
overwrite:Falsewhether to delete output_dir prior to exporting if it exists
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def segmentations_to_polylines(sample_collection, in_field, out_field, mask_targets=None, mask_types='stuff', tolerance=2, progress=None): (source)

Converts the semantic segmentations masks in the specified field of the collection into fiftyone.core.labels.Polylines instances.

Each "stuff" class will be converted to a single fiftyone.core.labels.Polylines that may contain multiple disjoint shapes capturing the class.

Each "thing" class will result in one fiftyone.core.labels.Polylines instance per connected region of that class.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Segmentation field to convert
out_fieldthe name of the fiftyone.core.labels.Polylines field to populate
mask_targets:Nonea dict mapping pixel values (2D masks) or RGB hex strings (3D masks) to label strings defining which object classes to label and which pixel values to use for each class. If omitted, all labels are assigned to the pixel values
mask_types:"stuff"

whether the classes are "stuff" (amorphous regions of pixels) or "thing" (connected regions, each representing an instance of the thing). Can be any of the following:

  • "stuff" if all classes are stuff classes
  • "thing" if all classes are thing classes
  • a dict mapping pixel values (2D masks) or RGB hex strings (3D masks) to "stuff" or "thing" for each class
tolerance:2a tolerance, in pixels, when generating approximate polylines for each region. Typical values are 1-3 pixels
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def transform_segmentations(sample_collection, in_field, targets_map, output_dir=None, rel_dir=None, update=True, update_mask_targets=False, overwrite=False, progress=None): (source)

Transforms the segmentations in the given field according to the provided targets map.

This method can be used to transform between grayscale and RGB masks, or it can be used to edit the pixel values or colors of masks without changing the number of channels.

Note that any pixel values not in targets_map will be zero in the transformed masks.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
in_fieldthe name of the fiftyone.core.labels.Segmentation field
targets_mapa dict mapping existing pixel values (2D masks) or RGB hex strings (3D masks) to new pixel values or RGB hex strings to use. You may convert between grayscale and RGB using this argument
output_dir:Nonean optional directory in which to write the transformed images
rel_dir:Nonean optional relative directory to strip from each input filepath to generate a unique identifier that is joined with output_dir to generate an output path for each image. This argument allows for populating nested subdirectories in output_dir that match the shape of the input paths. The path is converted to an absolute path (if necessary) via fiftyone.core.storage.normalize_path
update:Truewhether to update the mask paths on the instances
update_mask_targets:Falsewhether to update the mask targets on the dataset to reflect the transformed targets
overwrite:Falsewhether to delete output_dir prior to exporting if it exists
progress:Nonewhether to render a progress bar (True/False), use the default value fiftyone.config.show_progress_bars (None), or a progress callback function to invoke instead
def _perform_nms(detections, iou_thresh=0.5, confidence_thresh=None, classwise=True): (source)

Undocumented

def _transform_mask_targets(mask_targets, targets_map): (source)

Undocumented