datumaro.components.annotation#

Module Attributes

Colormap

Represents { index -> color } mapping for segmentation masks

Classes

Annotation(*[, id, attributes, group, object_id])

A base annotation class.

AnnotationType(value)

An enumeration.

Bbox(x, y, w, h, *args, **kwargs)

Method generated by attrs for class _Shape.

Caption(caption, *[, id, attributes, group, ...])

Represents arbitrary text annotations.

Categories(*[, attributes])

A base class for annotation metainfo.

CompiledMask([class_mask, instance_mask])

Represents class- and instance- segmentation masks with all the instances (opposed to single-instance masks).

Cuboid3d(position[, rotation, scale])

Method generated by attrs for class Annotation.

DepthAnnotation(image, *[, id, attributes, ...])

Represents depth images.

Ellipse(x1, y1, x2, y2, *args, **kwargs)

Ellipse represents an ellipse that is encapsulated by a rectangle.

FeatureVector(vector, *[, id, attributes, ...])

Method generated by attrs for class FeatureVector.

GroupType(value)

An enumeration.

HashKey(hash_key, *[, id, attributes, ...])

Method generated by attrs for class HashKey.

Label(label, *[, id, attributes, group, ...])

Method generated by attrs for class Label.

LabelCategories([items, label_groups, ...])

Method generated by attrs for class LabelCategories.

Mask(image, *[, id, attributes, group, ...])

Represents a 2d single-instance binary segmentation mask.

MaskCategories([colormap, inverse_colormap, ...])

Describes a color map for segmentation masks.

Points(points[, visibility, id, attributes, ...])

Represents an ordered set of points.

PointsCategories([items, attributes])

Describes (key-)point metainfo such as point names and joints.

PolyLine(points, *[, id, attributes, group, ...])

Method generated by attrs for class PolyLine.

Polygon(points, *[, id, attributes, group, ...])

Method generated by attrs for class Polygon.

RleMask(rle, *[, id, attributes, group, ...])

An RLE-encoded instance segmentation mask.

SuperResolutionAnnotation(image, *[, id, ...])

Represents high resolution images.

Tabular(values, *[, id, attributes, group, ...])

Represents values of target columns in a tabular dataset.

TabularCategories([items, attributes])

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#
caption = 7#
cuboid_3d = 8#
super_resolution_annotation = 9#
depth_annotation = 10#
ellipse = 11#
hash_key = 12#
feature_vector = 13#
tabular = 14#
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.

id: int#
attributes: Dict[str, Any]#
group: int#
object_id: int#
property type: AnnotationType#
as_dict() Dict[str, Any][source]#

Returns a dictionary { field_name: value }

wrap(**kwargs)[source]#

Returns a modified copy of the object

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.

attributes: Set[str]#
class datumaro.components.annotation.GroupType(value)[source]#

Bases: IntEnum

An enumeration.

EXCLUSIVE = 0#
INCLUSIVE = 1#
RESTRICTED = 2#
to_str() str[source]#
classmethod from_str(text: str) GroupType[source]#
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.

name: str#
parent: str#
attributes: Set[str]#
class LabelGroup(name, labels: List[str] = [], group_type: GroupType = GroupType.EXCLUSIVE)[source]#

Bases: object

Method generated by attrs for class LabelCategories.LabelGroup.

name: str#
labels: List[str]#
group_type: GroupType#
items: List[str]#
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

add(name: str, parent: str | None = None, attributes: Set[str] | None = None) int[source]#
add_label_group(name: str, labels: List[str], group_type: GroupType) int[source]#
find(name: str) Tuple[int | None, Category | None][source]#
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.

label: int#
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.

hash_key: ndarray#
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.

vector: ndarray#
id: int#
attributes: Dict[str, Any]#
group: int#
object_id: int#
datumaro.components.annotation.Colormap#

Represents { index -> color } mapping for segmentation masks

alias of Dict[int, Tuple[int, int, int]]

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.

colormap: Dict[int, Tuple[int, int, int]]#
property inverse_colormap: Dict[Tuple[int, int, int], int]#
class datumaro.components.annotation.Mask(image, *, 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.

label: int | None#
z_order: int#
property image: ndarray#
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

get_area() int[source]#
get_bbox() Tuple[int, int, int, int][source]#

Computes the bounding box of the mask.

Returns: [x, y, w, h]

paint(colormap: Dict[int, Tuple[int, int, int]]) ndarray[source]#

Applies a colormap to the mask and produces the resulting image.

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 image: ndarray#
property rle#
get_area() int[source]#
get_bbox() Tuple[int, int, int, int][source]#

Computes the bounding box of the mask.

Returns: [x, y, w, h]

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.

property class_mask: ndarray | None#
property instance_mask: ndarray | None#
property instance_count: int#
get_instance_labels() Dict[int, int][source]#

Matches the class and instance masks.

Returns: { instance id: class id }

extract(instance_id: int) ndarray[source]#

Extracts a single-instance mask from the compiled mask.

lazy_extract(instance_id: int) Callable[[], ndarray][source]#
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

Method generated by attrs for class PolyLine.

as_polygon()[source]#
get_area()[source]#
class datumaro.components.annotation.Cuboid3d(position, rotation=None, scale=None, **kwargs)[source]#

Bases: Annotation

Method generated by attrs for class Annotation.

label: int | None#
property position#

[x, y, z]

property rotation#

[rx, ry, rz]

property scale#

[sx, sy, sz]

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

Method generated by attrs for class Polygon.

get_area()[source]#
as_polygon() List[float][source]#
class datumaro.components.annotation.Bbox(x, y, w, h, *args, **kwargs)[source]#

Bases: _Shape

Method generated by attrs for class _Shape.

property x#
property y#
property w#
property h#
get_area()[source]#
get_bbox()[source]#

Returns [x, y, w, h]

as_polygon() List[float][source]#
iou(other: _Shape) float | ~typing.Literal[-1][source]#
wrap(**kwargs)[source]#

Returns a modified copy of the object

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.

labels: List[str]#
joints: Set[Tuple[int, int]]#
items: Dict[int, 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:

PointsCategories

add(label_id: int, labels: Iterable[str] | None = None, joints: Iterable[Tuple[int, int]] | None = None)[source]#
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.

Method generated by attrs for class Points.

class Visibility(value)[source]#

Bases: IntEnum

An enumeration.

absent = 0#
hidden = 1#
visible = 2#
visibility: List[IntEnum]#
get_area()[source]#
get_bbox()[source]#

Returns [x, y, w, h]

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.

caption: str#
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:
  • x1 (float) – left x coordinate of encapsulating rectangle

  • y1 (float) – top y coordinate of encapsulating rectangle

  • x2 (float) – right x coordinate of encapsulating rectangle

  • y2 (float) – bottom y coordinate of encapsulating rectangle

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_area()[source]#
get_bbox()[source]#

Returns [x, y, w, h]

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).

as_polygon(num_points: int = 720) List[float][source]#

Return a polygon 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).

iou(other: _Shape) float | ~typing.Literal[-1][source]#
wrap(**kwargs) Ellipse[source]#

Returns a modified copy of the object

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.

name: str#
dtype: Type[TableDtype]#
labels: Set[str | int]#
items: List[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

add(name: str, dtype: Type[TableDtype], labels: Set[str] | None = None) int[source]#

Add a Tabular Category.

Parameters:
  • name (str) – Column name

  • dtype (type) – Type of the corresponding column. (str, int, or float)

  • labels (optional, set(str)) – Label values where the column can have.

Returns:

A index of added category.

Return type:

int

find(name: str) Tuple[int | None, Category | None][source]#

Find Category information for the given column name.

Parameters:

name (str) – Column name

Returns:

A index and Category information.

Return type:

tuple(int, Category)

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.

values: Dict[str, TableDtype]#