fiftyone.utils.labels#
Label utilities.
Functions:
|
Converts the instance segmentations or polylines in the specified field of the collection into semantic segmentation masks. |
|
Exports the semantic segmentations, instance segmentations, or heatmaps stored as in-database arrays in the specified field to images on disk. |
|
Imports the semantic segmentations, instance segmentations, or heatmaps stored on disk in the specified field to in-database arrays. |
|
Transforms the segmentations in the given field according to the provided targets map. |
|
Converts the semantic segmentations masks in the specified field of the collection into |
|
Binarizes the instance segmentations in the specified field according to the provided threshold. |
|
Converts the instance segmentations in the specified field of the collection into |
|
Converts the semantic segmentations masks in the specified field of the collection into |
|
Converts the |
|
Converts the |
|
Populates |
|
Performs non-maximum suppression (NMS) on the specified |
|
High-level orchestration of 3D β 2D label conversion. |
- fiftyone.utils.labels.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)#
Converts the instance segmentations or polylines in the specified field of the collection into semantic segmentation masks.
- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionin_field β the 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, andfiftyone.core.labels.Polylinesout_field β the name of the
fiftyone.core.labels.Segmentationfield to populatemask_size (None) β the
(width, height)at which to render the segmentation masks. If not provided, masks will be rendered to match the resolution of each input imagemask_targets (None) β a 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 (1) β the thickness, in pixels, at which to render (non-filled) polylines
output_dir (None) β an optional output directory in which to write the segmentation images. If none is provided, the segmentations are stored in the database
rel_dir (None) β an optional relative directory to strip from each input filepath to generate a unique identifier that is joined with
output_dirto generate an output path for each segmentation image. This argument allows for populating nested subdirectories inoutput_dirthat match the shape of the input paths. The path is converted to an absolute path (if necessary) viafiftyone.core.storage.normalize_path()overwrite (False) β whether to overwrite any existing files in
output_dirsave_mask_targets (False) β whether to store the
mask_targetson the datasetprogress (None) β whether 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
- fiftyone.utils.labels.export_segmentations(sample_collection, in_field, output_dir, rel_dir=None, update=True, overwrite=False, progress=None)#
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_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Segmentation,fiftyone.core.labels.Detection,fiftyone.core.labels.Detections, orfiftyone.core.labels.Heatmapfieldoutput_dir β the directory in which to write the images
rel_dir (None) β an optional relative directory to strip from each input filepath to generate a unique identifier that is joined with
output_dirto generate an output path for each image. This argument allows for populating nested subdirectories inoutput_dirthat match the shape of the input paths. The path is converted to an absolute path (if necessary) viafiftyone.core.storage.normalize_path()update (True) β whether to delete the arrays from the database
overwrite (False) β whether to overwrite any existing files in
output_dirprogress (None) β whether 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
- fiftyone.utils.labels.import_segmentations(sample_collection, in_field, update=True, delete_images=False, progress=None)#
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_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Segmentation,fiftyone.core.labels.Detection,fiftyone.core.labels.Detections, orfiftyone.core.labels.Heatmapfieldupdate (True) β whether to delete the image paths from the labels
delete_images (False) β whether to delete any imported images from disk
progress (None) β whether 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
- fiftyone.utils.labels.transform_segmentations(sample_collection, in_field, targets_map, output_dir=None, rel_dir=None, update=True, update_mask_targets=False, overwrite=False, progress=None)#
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_mapwill be zero in the transformed masks.- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Segmentationfieldtargets_map β a 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 (None) β an optional directory in which to write the transformed images
rel_dir (None) β an optional relative directory to strip from each input filepath to generate a unique identifier that is joined with
output_dirto generate an output path for each image. This argument allows for populating nested subdirectories inoutput_dirthat match the shape of the input paths. The path is converted to an absolute path (if necessary) viafiftyone.core.storage.normalize_path()update (True) β whether to update the mask paths on the instances
update_mask_targets (False) β whether to update the mask targets on the dataset to reflect the transformed targets
overwrite (False) β whether to overwrite any existing files in
output_dirprogress (None) β whether 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
- fiftyone.utils.labels.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)#
Converts the semantic segmentations masks in the specified field of the collection into
fiftyone.core.labels.Detectionswith instance masks populated.Each
"stuff"class will be converted to a singlefiftyone.core.labels.Detectionwhose instance mask spans all region(s) of the class.Each
"thing"class will result in onefiftyone.core.labels.Detectioninstance per connected region of that class in the segmentation.- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Segmentationfield to convertout_field β the name of the
fiftyone.core.labels.Detectionsfield to populatemask_targets (None) β a 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 classesa dict mapping pixel values (2D masks) or RGB hex strings (3D masks) to
"stuff"or"thing"for each class
output_dir (None) β an optional output directory in which to write instance segmentation images. If none is provided, the instance segmentations are stored in the database
rel_dir (None) β an optional relative directory to strip from each input filepath to generate a unique identifier that is joined with
output_dirto generate an output path for each instance segmentation image. This argument allows for populating nested subdirectories inoutput_dirthat match the shape of the input paths. The path is converted to an absolute path (if necessary) viafiftyone.core.storage.normalize_path()overwrite (False) β whether to overwrite any existing files in
output_dirprogress (None) β whether 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
- fiftyone.utils.labels.binarize_instances(sample_collection, in_field, threshold=1, output_dir=None, rel_dir=None, overwrite=False, progress=None)#
Binarizes the instance segmentations in the specified field according to the provided threshold.
Each instance mask is updated in-place with
mask >= threshold.- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of a
fiftyone.core.labels.Detectionorfiftyone.core.labels.Detectionsfield containing instance segmentationsthreshold (1) β the threshold for βinstanceβ pixels
output_dir (None) β an optional output directory in which to write the instance segmentation images. If none is provided, the segmentations are overwritten in-place, either on disk or in the database
rel_dir (None) β an optional relative directory to strip from each input filepath to generate a unique identifier that is joined with
output_dirto generate an output path for each instance segmentation image. This argument allows for populating nested subdirectories inoutput_dirthat match the shape of the input paths. The path is converted to an absolute path (if necessary) viafiftyone.core.storage.normalize_path()overwrite (False) β whether to overwrite any existing files in
output_dirprogress (None) β whether 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
- fiftyone.utils.labels.instances_to_polylines(sample_collection, in_field, out_field, tolerance=2, filled=True, progress=None)#
Converts the instance segmentations in the specified field of the collection into
fiftyone.core.labels.Polylinesinstances.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_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Detectionsfield to convertout_field β the name of the
fiftyone.core.labels.Polylinesfield to populatetolerance (2) β a tolerance, in pixels, when generating approximate polylines for each region. Typical values are 1-3 pixels
filled (True) β whether the polylines should be filled
progress (None) β whether 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
- fiftyone.utils.labels.segmentations_to_polylines(sample_collection, in_field, out_field, mask_targets=None, mask_types='stuff', tolerance=2, progress=None)#
Converts the semantic segmentations masks in the specified field of the collection into
fiftyone.core.labels.Polylinesinstances.Each
"stuff"class will be converted to a singlefiftyone.core.labels.Polylinesthat may contain multiple disjoint shapes capturing the class.Each
"thing"class will result in onefiftyone.core.labels.Polylinesinstance per connected region of that class.- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Segmentationfield to convertout_field β the name of the
fiftyone.core.labels.Polylinesfield to populatemask_targets (None) β a 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 classesa dict mapping pixel values (2D masks) or RGB hex strings (3D masks) to
"stuff"or"thing"for each class
tolerance (2) β a tolerance, in pixels, when generating approximate polylines for each region. Typical values are 1-3 pixels
progress (None) β whether 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
- fiftyone.utils.labels.classification_to_detections(sample_collection, in_field, out_field, progress=None)#
Converts the
fiftyone.core.labels.Classificationfield of the collection into afiftyone.core.labels.Detectionsfield containing a single detection whose bounding box spans the entire image.- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Classificationfieldout_field β the name of the
fiftyone.core.labels.Detectionsfield to populateprogress (None) β whether 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
- fiftyone.utils.labels.classifications_to_detections(sample_collection, in_field, out_field, progress=None)#
Converts the
fiftyone.core.labels.Classificationsfield of the collection into afiftyone.core.labels.Detectionsfield containing detections whose bounding boxes span the entire image with one detection for each classification.- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Classificationsfieldout_field β the name of the
fiftyone.core.labels.Detectionsfield to populateprogress (None) β whether 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
- fiftyone.utils.labels.index_to_instance(sample_collection, label_field, index_attr='index', clear_index=False, progress=None)#
Populates
fiftyone.core.labels.Instancevalues in the ``instance``attribute of the specified label field based on the values in the specified index attribute.- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionlabel_field β the label field to process. Supported types are
fiftyone.core.labels.Detection,fiftyone.core.labels.Detections,fiftyone.core.labels.Polyline,fiftyone.core.labels.Polylines,fiftyone.core.labels.Keypoint, andfiftyone.core.labels.Keypointsindex_attr ("index") β the attribute whose unique values define the object instances. When
index_attr="index"specifically, the(label, index)of each object is used as the unique identifier. Otherwise, theindex_attrvalues alone are used. In either case, any objects whose index attribute is None/missing are not assigned aninstanceclear_index (False) β whether to clear the values in
index_attr(True) or leave them (False) after populating theinstanceattributeprogress (None) β whether 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
- fiftyone.utils.labels.perform_nms(sample_collection, in_field, out_field=None, iou_thresh=0.5, confidence_thresh=None, classwise=True, progress=None)#
Performs non-maximum suppression (NMS) on the specified
fiftyone.core.labels.Detectionsfield.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_collection β a
fiftyone.core.collections.SampleCollectionin_field β the name of the
fiftyone.core.labels.Detectionsfieldout_field (None) β the name of the
fiftyone.core.labels.Detectionsfield to populate. If not specified, the input field is updated in-placeiou_thresh (0.5) β an 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 (None) β a minimum confidence score required for a detection to be considered valid. Detections with confidence scores lower than this threshold will be discarded
classwise (True) β whether to treat each class
labelseparately (True) or suppress all detections jointly (False)progress (None) β whether 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
- fiftyone.utils.labels.detections_3d_to_cuboids_2d(sample_collection: ~fiftyone.core.collections.SampleCollection, spatial_slice_name: str, camera_slice_name: str, in_field: str, out_field: str, transformations: ~typing.Dict[str, ~typing.List[~typing.Tuple[list[float] | ~numpy.ndarray, list[list[float]] | ~numpy.ndarray]]], camera_params: ~typing.Dict[str, ~typing.Dict[str, ~typing.Any]], forward_transform_flags: ~typing.Dict[str, ~typing.List[bool]] | None = None, camera_model: ~typing.Callable = <function pinhole_projector>, transformation_key_field: str = 'id', camera_key_field: str = 'id', progress=None)#
High-level orchestration of 3D β 2D label conversion. Processes the in_field on the spatial_slice_name slice of a grouped sample collection, uses the transformations and camera parameters to convert the labels to 2D polylines, and saves them to the out_field on the camera_slice_name slice.
- Parameters:
sample_collection β a
fiftyone.core.collections.SampleCollectionspatial_slice_name β the name of the spatial slice in the sample_collection
camera_slice_name β the name of the camera slice in the sample_collection
in_field β the name of the
fiftyone.core.labels.Detectionfield containing 3D labels to convertout_field β the name of the
fiftyone.core.labels.Polylinesfield to populate with 2D cuboidstransformations β a dict mapping transformation_key_field to a list of transformation tuples (translation, rotation) for each sample in the sample_collection. Translation is a 3-element list or np.ndarray, and rotation is a (3, 3) list of lists or np.ndarray representing a rotation matrix.
camera_params β a dict mapping camera_key_field to per-camera parameter dicts required by camera_model. Each dict must include an
"intrinsics"3x3 (or 4x4) matrix if using the default pinhole camera model; additional keys such as distortion parameters may be provided depending on the modelforward_transform_flags β an optional dict mapping transformation_key_field to lists of booleans indicating whether to apply forward or inverse transformations for each transform in the list of transformations for each sample
camera_model (fou3d.pinhole_projector) β a callable that takes 3D points in the camera coordinate system and the camera parameters dict and returns the projected 2D points in pixel coordinates
transformation_key_field ("id") β the key field to use for looking up transformations for each sample
camera_key_field ("id") β the key field to use for looking up camera parameters for each camera sample
progress (None) β whether 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