Skip to main content
This reference documents every annotation type supported by Avala, including their properties and JSON representations.

Overview

Avala supports the following annotation types:
TypeGeometryUse Cases
Bounding Box2D rectangleObject detection, localization
Polygon2D arbitrary shapeInstance segmentation, precise outlines
3D Cuboid3D boxAutonomous driving, robotics
Segmentation MaskPixel-level maskSemantic segmentation, panoptic segmentation
PolylineOpen line segmentsLane detection, path annotation
ClassificationNo geometryScene classification, image tagging
KeypointsNamed points with connectionsPose estimation, facial landmarks
All annotation types share a set of common properties in addition to their type-specific fields.

Bounding Box

A 2D axis-aligned rectangular box defined by its top-left corner, width, and height.

Properties

PropertyTypeDescription
xfloatX coordinate of the top-left corner (pixels)
yfloatY coordinate of the top-left corner (pixels)
widthfloatWidth of the box (pixels)
heightfloatHeight of the box (pixels)
labelstringClass label
attributesobjectOptional key-value attributes

JSON Example

{
  "uid": "ann_01HSN4X9K2M...",
  "type": "bounding_box",
  "label": "car",
  "x": 120.0,
  "y": 85.5,
  "width": 200.0,
  "height": 150.0,
  "attributes": {
    "occlusion": "partial",
    "truncated": false
  },
  "created_by": "user_01H...",
  "created_at": "2025-09-15T10:30:00Z"
}

Polygon

An arbitrary closed polygon defined by an ordered list of vertices.

Properties

PropertyTypeDescription
verticesarrayOrdered list of [x, y] coordinate pairs (pixels)
labelstringClass label
attributesobjectOptional key-value attributes

JSON Example

{
  "uid": "ann_01HSN4X9K2N...",
  "type": "polygon",
  "label": "pedestrian",
  "vertices": [
    [305.0, 120.0],
    [320.0, 115.0],
    [340.0, 130.0],
    [345.0, 200.0],
    [330.0, 210.0],
    [310.0, 205.0],
    [300.0, 150.0]
  ],
  "attributes": {
    "pose": "walking"
  },
  "created_by": "user_01H...",
  "created_at": "2025-09-15T10:32:00Z"
}

3D Cuboid

A 3D bounding box defined by its center position, dimensions (length, width, height), and rotation.

Properties

PropertyTypeDescription
centerobjectCenter position with x, y, z (meters)
dimensionsobjectSize with length, width, height (meters)
rotationobjectRotation with yaw, pitch, roll (radians)
labelstringClass label
attributesobjectOptional key-value attributes

JSON Example

{
  "uid": "ann_01HSN4X9K2P...",
  "type": "cuboid_3d",
  "label": "vehicle",
  "center": {
    "x": 12.5,
    "y": -3.2,
    "z": 0.8
  },
  "dimensions": {
    "length": 4.5,
    "width": 1.8,
    "height": 1.6
  },
  "rotation": {
    "yaw": 1.57,
    "pitch": 0.0,
    "roll": 0.0
  },
  "attributes": {
    "num_lidar_points": 342,
    "occlusion": "none",
    "activity": "moving"
  },
  "created_by": "user_01H...",
  "created_at": "2025-09-15T10:35:00Z"
}
3D cuboid coordinates use the sensor frame of the point cloud. The yaw value represents rotation around the Z-axis (vertical), which corresponds to the object’s heading direction.

Segmentation Mask

A pixel-level mask that labels every pixel within a region. Masks are stored in run-length encoding (RLE) for efficiency.

Properties

PropertyTypeDescription
maskobjectRLE-encoded mask with counts and size
labelstringClass label
instance_idintegerInstance identifier (for instance segmentation)
attributesobjectOptional key-value attributes

JSON Example

{
  "uid": "ann_01HSN4X9K2Q...",
  "type": "segmentation",
  "label": "road",
  "mask": {
    "counts": [10, 5, 20, 8, 15, 3, 40],
    "size": [1080, 1920]
  },
  "instance_id": 1,
  "attributes": {
    "surface": "asphalt"
  },
  "created_by": "user_01H...",
  "created_at": "2025-09-15T10:38:00Z"
}

Mask Format

The mask field uses COCO-style run-length encoding:
  • counts: Alternating runs of background and foreground pixel counts
  • size: [height, width] of the image

Polyline

An open line defined by an ordered sequence of points. Unlike polygons, polylines are not closed.

Properties

PropertyTypeDescription
pointsarrayOrdered list of [x, y] coordinate pairs (pixels)
labelstringClass label
attributesobjectOptional key-value attributes

JSON Example

{
  "uid": "ann_01HSN4X9K2R...",
  "type": "polyline",
  "label": "lane_marking",
  "points": [
    [400.0, 600.0],
    [420.0, 500.0],
    [450.0, 400.0],
    [490.0, 300.0],
    [540.0, 200.0]
  ],
  "attributes": {
    "line_type": "dashed",
    "color": "white"
  },
  "created_by": "user_01H...",
  "created_at": "2025-09-15T10:40:00Z"
}

Classification

An image-level or frame-level label with no spatial geometry. Used for categorizing entire images or frames.

Properties

PropertyTypeDescription
labelstringClassification label
confidencefloatConfidence score (0.0 to 1.0), typically set by auto-labeling models
attributesobjectOptional key-value attributes

JSON Example

{
  "uid": "ann_01HSN4X9K2S...",
  "type": "classification",
  "label": "highway",
  "confidence": 0.95,
  "attributes": {
    "weather": "clear",
    "time_of_day": "daytime"
  },
  "created_by": "user_01H...",
  "created_at": "2025-09-15T10:42:00Z"
}

Keypoints

A set of named points with connections between them, typically used for pose estimation and skeleton annotation.

Properties

PropertyTypeDescription
keypointsarrayList of keypoint objects, each with name, x, y, and visibility
connectionsarrayList of [name_a, name_b] pairs defining skeleton edges
labelstringClass label
attributesobjectOptional key-value attributes

Keypoint Visibility Values

ValueMeaning
0Not present (not in frame or not applicable)
1Occluded (estimated position, not directly visible)
2Visible

JSON Example

{
  "uid": "ann_01HSN4X9K2T...",
  "type": "keypoints",
  "label": "person",
  "keypoints": [
    { "name": "nose", "x": 250.0, "y": 100.0, "visibility": 2 },
    { "name": "left_eye", "x": 245.0, "y": 95.0, "visibility": 2 },
    { "name": "right_eye", "x": 255.0, "y": 95.0, "visibility": 2 },
    { "name": "left_shoulder", "x": 230.0, "y": 140.0, "visibility": 2 },
    { "name": "right_shoulder", "x": 270.0, "y": 140.0, "visibility": 2 },
    { "name": "left_elbow", "x": 215.0, "y": 180.0, "visibility": 2 },
    { "name": "right_elbow", "x": 285.0, "y": 180.0, "visibility": 1 },
    { "name": "left_wrist", "x": 200.0, "y": 210.0, "visibility": 2 },
    { "name": "right_wrist", "x": 295.0, "y": 215.0, "visibility": 0 }
  ],
  "connections": [
    ["left_shoulder", "right_shoulder"],
    ["left_shoulder", "left_elbow"],
    ["left_elbow", "left_wrist"],
    ["right_shoulder", "right_elbow"],
    ["right_elbow", "right_wrist"]
  ],
  "attributes": {
    "action": "standing"
  },
  "created_by": "user_01H...",
  "created_at": "2025-09-15T10:45:00Z"
}

Common Properties

Every annotation in Avala includes these shared properties regardless of type.
PropertyTypeDescription
uidstringUnique annotation identifier
typestringAnnotation type (e.g., bounding_box, polygon, cuboid_3d)
labelstringClass label from the project taxonomy
attributesobjectOptional key-value pairs for additional metadata (e.g., occlusion, truncation)
tracking_idstringObject tracking identifier for video/sequence annotations (same across frames)
frame_indexintegerFrame number within the sequence (for temporal data)
created_bystringUser ID of the annotator who created the annotation
created_atstringISO 8601 timestamp of creation
updated_bystringUser ID of the last person to modify the annotation
updated_atstringISO 8601 timestamp of the last modification
The tracking_id field is only present for annotations in video or multi-frame sequence data. It links the same object across frames for consistent tracking.

Next Steps