datumaro.components.annotation#
Module Attributes
Represents { index -> color } mapping for segmentation masks |
Classes
|
A base annotation class. |
|
An enumeration. |
|
List of Annotation equipped with additional utility functions. |
|
Bbox annotation class. |
|
Represents arbitrary text annotations. |
|
A base class for annotation metainfo. |
|
Represents class- and instance- segmentation masks with all the instances (opposed to single-instance masks). |
|
Cuboid2D annotation class. |
|
Cuboid3d annotation class. |
|
Represents depth images. |
|
Ellipse represents an ellipse that is encapsulated by a rectangle. |
|
Mask annotation (binary mask) extracted from an index mask (integer 2D Numpy array). |
|
Method generated by attrs for class FeatureVector. |
|
An enumeration. |
|
Method generated by attrs for class HashKey. |
|
Method generated by attrs for class Label. |
|
Method generated by attrs for class LabelCategories. |
|
Represents a 2d single-instance binary segmentation mask. |
|
Describes a color map for segmentation masks. |
|
Represents an ordered set of points. |
|
Describes (key-)point metainfo such as point names and joints. |
|
PolyLine annotation class. |
|
Polygon annotation class. |
|
An RLE-encoded instance segmentation mask. |
|
RotatedBbox annotation class. |
|
Base class for shape annotations. |
|
Represents high resolution images. |
|
Represents values of target columns in a tabular dataset. |
|
Describes tabular data metainfo such as column names and types. |
- class datumaro.components.annotation.AnnotationType(value)[source]#
Bases:
IntEnum
An enumeration.
- unknown = 0#
- label = 1#
- mask = 2#
- points = 3#
- polygon = 4#
- polyline = 5#
- bbox = 6#
- cuboid_3d = 8#
- super_resolution_annotation = 9#
- depth_annotation = 10#
- ellipse = 11#
- hash_key = 12#
- feature_vector = 13#
- tabular = 14#
- rotated_bbox = 15#
- cuboid_2d = 16#
- class datumaro.components.annotation.Annotation(*, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1)[source]#
Bases:
object
A base annotation class.
Derived classes must define the ‘_type’ class variable with a value from the AnnotationType enum.
Method generated by attrs for class Annotation.
- property type: AnnotationType#
- class datumaro.components.annotation.Categories(*, attributes: Set[str] = _Nothing.NOTHING)[source]#
Bases:
object
A base class for annotation metainfo. It is supposed to include dataset-wide metainfo like available labels, label colors, label attributes etc.
Method generated by attrs for class Categories.
- class datumaro.components.annotation.GroupType(value)[source]#
Bases:
IntEnum
An enumeration.
- EXCLUSIVE = 0#
- INCLUSIVE = 1#
- RESTRICTED = 2#
- class datumaro.components.annotation.LabelCategories(items: List[str] = _Nothing.NOTHING, label_groups: List[LabelGroup] = _Nothing.NOTHING, *, attributes: Set[str] = _Nothing.NOTHING)[source]#
Bases:
Categories
Method generated by attrs for class LabelCategories.
- class Category(name, parent: str = '', attributes: Set[str] = _Nothing.NOTHING)[source]#
Bases:
object
Method generated by attrs for class LabelCategories.Category.
- class LabelGroup(name, labels: List[str] = [], group_type: GroupType = GroupType.EXCLUSIVE)[source]#
Bases:
object
Method generated by attrs for class LabelCategories.LabelGroup.
- label_groups: List[LabelGroup]#
- classmethod from_iterable(iterable: Iterable[str | Tuple[str] | Tuple[str, str] | Tuple[str, str, List[str]]]) LabelCategories [source]#
Creates a LabelCategories from iterable.
- Parameters:
iterable –
This iterable object can be:
a list of str - will be interpreted as list of Category names
a list of positional arguments - will generate Categories with these arguments
Returns: a LabelCategories object
- class datumaro.components.annotation.Label(label, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1)[source]#
Bases:
Annotation
Method generated by attrs for class Label.
- class datumaro.components.annotation.HashKey(hash_key: ndarray, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1)[source]#
Bases:
Annotation
Method generated by attrs for class HashKey.
- class datumaro.components.annotation.FeatureVector(vector: ndarray, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1)[source]#
Bases:
Annotation
Method generated by attrs for class FeatureVector.
- datumaro.components.annotation.Colormap#
Represents { index -> color } mapping for segmentation masks
- class datumaro.components.annotation.MaskCategories(colormap: Dict[int, Tuple[int, int, int]] = _Nothing.NOTHING, inverse_colormap: Dict[Tuple[int, int, int], int] | None = None, *, attributes: Set[str] = _Nothing.NOTHING)[source]#
Bases:
Categories
Describes a color map for segmentation masks.
Method generated by attrs for class MaskCategories.
- classmethod generate(size: int = 255, include_background: bool = True) MaskCategories [source]#
Generates MaskCategories with the specified size.
- If include_background is True, the result will include the item
“0: (0, 0, 0)”, which is typically used as a background color.
- class datumaro.components.annotation.Mask(image: ndarray | Callable[[], ndarray], *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1, label=None, z_order: int = 0)[source]#
Bases:
Annotation
Represents a 2d single-instance binary segmentation mask.
Method generated by attrs for class Mask.
- as_class_mask(label_id: int | None = None, ignore_index: int = 0, dtype: dtype | None = None) ndarray [source]#
Produces a class index mask based on the binary mask.
- Parameters:
label_id – Scalar value to represent the class index of the mask. If not specified, self.label will be used. Defaults to None.
ignore_index – Scalar value to fill in the zeros in the binary mask. Defaults to 0.
dtype – Data type for the resulting mask. If not specified, it will be inferred from the provided label_id to hold its value. For example, if label_id=255, the inferred dtype will be np.uint8. Defaults to None.
- Returns:
Class index mask generated from the binary mask.
- Return type:
IndexMaskImage
- as_instance_mask(instance_id: int, ignore_index: int = 0, dtype: dtype | None = None) ndarray [source]#
Produces an instance index mask based on the binary mask.
- Parameters:
instance_id – Scalar value to represent the instance id.
ignore_index – Scalar value to fill in the zeros in the binary mask. Defaults to 0.
dtype – Data type for the resulting mask. If not specified, it will be inferred from the provided label_id to hold its value. For example, if label_id=255, the inferred dtype will be np.uint8. Defaults to None.
- Returns:
Instance index mask generated from the binary mask.
- Return type:
IndexMaskImage
- class datumaro.components.annotation.RleMask(rle, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1, label=None, z_order: int = 0)[source]#
Bases:
Mask
An RLE-encoded instance segmentation mask.
Method generated by attrs for class RleMask.
- property rle#
- class datumaro.components.annotation.ExtractedMask(index_mask: ndarray | Callable[[], ndarray], index: int, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1, label=None, z_order: int = 0)[source]#
Bases:
Mask
Mask annotation (binary mask) extracted from an index mask (integer 2D Numpy array).
This class can extract a binary mask with given index mask and index value. The advantage of this class is that we can create multiple binary mask but they share a single index mask source.
- index_mask#
Integer 2D Numpy array. Its pixel can indicate a label id (class) or an instance id.
- Type:
numpy.ndarray | Callable[[], numpy.ndarray]
Examples
This example demonstrates how to create an ExtractedMask from a synthetic index mask, which denotes a semantic segmentation mask with binary values such as 0 for background and 1 for foreground.
>>> import numpy as np >>> from datumaro.components.annotation import ExtractedMask >>> >>> index_mask = np.random.randint(low=0, high=2, size=(10, 10), dtype=np.uint8) >>> mask1 = ExtractedMask(index_mask=index_mask, index=0, label=0) # 0 for background >>> mask2 = ExtractedMask(index_mask=index_mask, index=1, label=1) # 1 for foreground >>> np.unique(mask1.image).tolist() # `image` property create a binary mask np.array([0, 1]) >>> mask1.index_mask == mask2.index_mask # They share the same source True
Method generated by attrs for class ExtractedMask.
- class datumaro.components.annotation.CompiledMask(class_mask: None | ndarray | Callable[[], ndarray] = None, instance_mask: None | ndarray | Callable[[], ndarray] = None)[source]#
Bases:
object
Represents class- and instance- segmentation masks with all the instances (opposed to single-instance masks).
- static from_instance_masks(instance_masks: Iterable[Mask], instance_ids: Iterable[int] | None = None, instance_labels: Iterable[int] | None = None) CompiledMask [source]#
Joins instance masks into a single mask. Masks are sorted by z_order (ascending) prior to merging.
- Parameters:
instance_ids – Instance id values for the produced instance mask. By default, mask positions are used.
instance_labels – Instance label id values for the produced class mask. By default, mask labels are used.
- class datumaro.components.annotation.Shape(points, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1, label=None, z_order: int = 0)[source]#
Bases:
Annotation
Base class for shape annotations. This class defines the common attributes and methods for different types of shape annotations.
Method generated by attrs for class Shape.
- class datumaro.components.annotation.PolyLine(points, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1, label=None, z_order: int = 0)[source]#
Bases:
Shape
PolyLine annotation class. This class represents a polyline shape, which is a series of connected line segments.
- _type#
The type of annotation, set to AnnotationType.polyline.
- Type:
Method generated by attrs for class PolyLine.
- class datumaro.components.annotation.Cuboid3d(position, rotation=None, scale=None, **kwargs)[source]#
Bases:
Annotation
Cuboid3d annotation class. This class represents a 3D cuboid annotation with position, rotation, and scale.
- _type#
The type of annotation, set to AnnotationType.cuboid_3d.
- Type:
- _points#
List of float values representing the position, rotation, and scale of the cuboid.
- Type:
List[float]
- position()#
Property to get and set the position of the cuboid.
- rotation()#
Property to get and set the rotation of the cuboid.
- scale()#
Property to get and set the scale of the cuboid.
Initialize the Cuboid3d with position, rotation, and scale.
- Parameters:
- property position#
Get the position of the cuboid.
- Returns:
The position [x, y, z] of the cuboid.
- Return type:
List[float]
- class datumaro.components.annotation.Polygon(points, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1, label=None, z_order: int = 0)[source]#
Bases:
Shape
Polygon annotation class. This class represents a polygon shape defined by a series of points.
- _type#
The type of annotation, set to AnnotationType.polygon.
- Type:
- _get_shoelace_area()[source]#
Helper method to calculate the area of the polygon using the shoelace formula.
Method generated by attrs for class Polygon.
- class datumaro.components.annotation.Bbox(x, y, w, h, *args, **kwargs)[source]#
Bases:
Shape
Bbox annotation class. This class represents a bounding box defined by its top-left corner (x, y) and its width and height (w, h).
- _type#
The type of annotation, set to AnnotationType.bbox.
- Type:
- x()#
Property to get the x-coordinate of the bounding box.
- y()#
Property to get the y-coordinate of the bounding box.
- w()#
Property to get the width of the bounding box.
- h()#
Property to get the height of the bounding box.
Initialize the Bbox with its top-left corner (x, y) and its width and height (w, h).
- Parameters:
- property x#
Get the x-coordinate of the top-left corner of the bounding box.
- Returns:
The x-coordinate of the bounding box.
- Return type:
- property y#
Get the y-coordinate of the top-left corner of the bounding box.
- Returns:
The y-coordinate of the bounding box.
- Return type:
- property w#
Get the width of the bounding box.
- Returns:
The width of the bounding box.
- Return type:
- property h#
Get the height of the bounding box.
- Returns:
The height of the bounding box.
- Return type:
- get_area()[source]#
Calculate the area of the bounding box.
- Returns:
The area of the bounding box.
- Return type:
- get_bbox()[source]#
Get the bounding box coordinates and dimensions.
- Returns:
The bounding box as [x, y, w, h].
- Return type:
List[float]
- as_polygon() List[float] [source]#
Convert the bounding box into a polygon representation.
- Returns:
The bounding box as a polygon.
- Return type:
List[float]
- class datumaro.components.annotation.RotatedBbox(cx, cy, w, h, r, *args, **kwargs)[source]#
Bases:
Shape
RotatedBbox annotation class. This class represents a rotated bounding box defined by its center (cx, cy), width (w), height (h), and rotation angle (r).
- _type#
The type of annotation, set to AnnotationType.rotated_bbox.
- Type:
- cx()#
Property to get the x-coordinate of the center of the bounding box.
- cy()#
Property to get the y-coordinate of the center of the bounding box.
- w()#
Property to get the width of the bounding box.
- h()#
Property to get the height of the bounding box.
- r()#
Property to get the rotation angle of the bounding box.
Initialize the RotatedBbox with its center (cx, cy), width (w), height (h), and rotation angle (r).
- Parameters:
- classmethod from_rectangle(points: List[Tuple[float, float]], *args, **kwargs)[source]#
Create a RotatedBbox from a list of four corner points.
- Parameters:
- Returns:
A new RotatedBbox instance.
- Return type:
- property cx#
Get the x-coordinate of the center of the bounding box.
- Returns:
The x-coordinate of the center.
- Return type:
- property cy#
Get the y-coordinate of the center of the bounding box.
- Returns:
The y-coordinate of the center.
- Return type:
- property w#
Get the width of the bounding box.
- Returns:
The width of the bounding box.
- Return type:
- property h#
Get the height of the bounding box.
- Returns:
The height of the bounding box.
- Return type:
- property r#
Get the rotation angle of the bounding box in degrees.
- Returns:
The rotation angle of the bounding box.
- Return type:
- get_area()[source]#
Calculate the area of the bounding box.
- Returns:
The area of the bounding box.
- Return type:
- get_bbox()[source]#
Get the bounding box coordinates and dimensions.
- Returns:
The bounding box as [x, y, w, h].
- Return type:
List[float]
- get_rotated_bbox()[source]#
Get the rotated bounding box parameters.
- Returns:
The rotated bounding box as [cx, cy, w, h, r].
- Return type:
List[float]
- as_polygon() List[Tuple[float, float]] [source]#
Convert the rotated bounding box into a list of corner points.
- iou(other: Shape) float | ~typing.Literal[-1] [source]#
Calculate the Intersection over Union (IoU) with another shape.
- wrap(**kwargs)[source]#
Create a new RotatedBbox instance with updated attributes.
- Parameters:
item (RotatedBbox) – The original RotatedBbox instance.
kwargs – Additional attributes to update.
- Returns:
A new RotatedBbox instance with updated attributes.
- Return type:
- class datumaro.components.annotation.Cuboid2D(_points: Iterable[Tuple[float, float]], *args, **kwargs)[source]#
Bases:
Annotation
Cuboid2D annotation class. This class represents a 3D bounding box defined by its point coordinates in the following way: [(x1, y1), (x2, y2), (x3, y3), (x4, y4), (x5, y5), (x6, y6), (x7, y7), (x8, y8)].
6—7
/| /|
- _type#
The type of annotation, set to AnnotationType.bbox.
- Type:
- wrap()#
Creates a new Bbox instance with updated attributes.
Method generated by attrs for class Annotation.
- points#
- class datumaro.components.annotation.PointsCategories(items: Dict[int, Category] = _Nothing.NOTHING, *, attributes: Set[str] = _Nothing.NOTHING)[source]#
Bases:
Categories
Describes (key-)point metainfo such as point names and joints.
Method generated by attrs for class PointsCategories.
- class Category(labels: List[str] = _Nothing.NOTHING, joints: Set[Tuple[int, int]] = _Nothing.NOTHING)[source]#
Bases:
object
Method generated by attrs for class PointsCategories.Category.
- classmethod from_iterable(iterable: Tuple[int, List[str]] | Tuple[int, List[str], Set[Tuple[int, int]]]) PointsCategories [source]#
Create PointsCategories from an iterable.
- Parameters:
iterable –
An Iterable with the following elements:
a label id
a list of positional arguments for Categories
- Returns:
PointsCategories object
- Return type:
- class datumaro.components.annotation.Points(points, visibility: List[IntEnum] | None = None, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1, label=None, z_order: int = 0)[source]#
Bases:
Shape
Represents an ordered set of points.
- _type#
The type of annotation, set to AnnotationType.points.
- Type:
- Nested Class:
- Visibility (IntEnum): Enum representing the visibility state of points. It has three states:
absent: Point is absent (0).
hidden: Point is hidden (1).
visible: Point is visible (2).
Method generated by attrs for class Points.
- class Visibility(value)[source]#
Bases:
IntEnum
Enum representing the visibility state of points.
Point is hidden (1).
- Type:
- absent = 0#
- hidden = 1#
- visible = 2#
- class datumaro.components.annotation.Caption(caption, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1)[source]#
Bases:
Annotation
Represents arbitrary text annotations.
Method generated by attrs for class Caption.
- class datumaro.components.annotation.SuperResolutionAnnotation(image: Image, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1)[source]#
Bases:
_ImageAnnotation
Represents high resolution images.
Method generated by attrs for class SuperResolutionAnnotation.
- class datumaro.components.annotation.DepthAnnotation(image: Image, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1)[source]#
Bases:
_ImageAnnotation
Represents depth images.
Method generated by attrs for class DepthAnnotation.
- class datumaro.components.annotation.Ellipse(x1: float, y1: float, x2: float, y2: float, *args, **kwargs)[source]#
Bases:
Shape
Ellipse represents an ellipse that is encapsulated by a rectangle.
x1 and y1 represent the top-left coordinate of the encapsulating rectangle
x2 and y2 representing the bottom-right coordinate of the encapsulating rectangle
- Parameters:
Method generated by attrs for class Shape.
- property x1#
- property y1#
- property x2#
- property y2#
- property w#
- property h#
- property c_x#
- property c_y#
- get_points(num_points: int = 720) List[Tuple[float, float]] [source]#
Return points as a list of tuples, e.g. [(x0, y0), (x1, y1), …].
- Parameters:
num_points (int) – The number of boundary points of the ellipse. By default, one point is created for every 1 degree of interior angle (num_points=360).
- class datumaro.components.annotation.TabularCategories(items: List[Category] = _Nothing.NOTHING, *, attributes: Set[str] = _Nothing.NOTHING)[source]#
Bases:
Categories
Describes tabular data metainfo such as column names and types.
Method generated by attrs for class TabularCategories.
- class Category(name, dtype: Type[TableDtype], labels: Set[str | int] = _Nothing.NOTHING)[source]#
Bases:
object
Method generated by attrs for class TabularCategories.Category.
- classmethod from_iterable(iterable: Iterable[Tuple[str, Type[TableDtype]] | Tuple[str, Type[TableDtype], Set[str]]]) TabularCategories [source]#
Creates a TabularCategories from iterable.
- Parameters:
iterable – a list of (Category name, type) or (Category name, type, set of labels)
Returns: a TabularCategories object
- class datumaro.components.annotation.Tabular(values, *, id: int = 0, attributes: Dict[str, Any] = _Nothing.NOTHING, group: int = 0, object_id: int = -1)[source]#
Bases:
Annotation
Represents values of target columns in a tabular dataset.
Method generated by attrs for class Tabular.
- class datumaro.components.annotation.Annotations(iterable=(), /)[source]#
Bases:
List
[Annotation
]List of Annotation equipped with additional utility functions.
- get_semantic_seg_mask(ignore_index: int = 0, dtype: ~numpy.dtype = <class 'numpy.uint8'>) ndarray [source]#
Extract semantic segmentation mask from a collection of Datumaro `Mask`s.
- Parameters:
ignore_index – Scalar value to fill in the zeros in each binary mask before merging into a semantic segmentation mask. This value is usually used to represent a pixel denoting a not-interested region. Defaults to 0.
dtype – Data type for the resulting mask. Defaults to np.uint8.
- Returns:
Semantic segmentation mask generated by merging Datumaro `Mask`s.
- Raises:
ValueError – If there are no mask annotations or if there is an inconsistency in mask sizes.