tensorbay.label.label_polyline#

The implementation of the TensorBay polyline label.

class tensorbay.label.label_polyline.Polyline2DSubcatalog(is_tracking=False, is_beizer_curve=False)[source]#

Bases: tensorbay.label.basic.SubcatalogBase, tensorbay.label.supports.IsTrackingMixin, tensorbay.label.supports.CategoriesMixin, tensorbay.label.supports.AttributesMixin

This class defines the subcatalog for 2D polyline type of labels.

Parameters
  • is_tracking (bool) – A boolean value indicates whether the corresponding subcatalog contains tracking information.

  • is_beizer_curve (bool) – A boolean value indicates whether the corresponding subcatalog contains beizer curve information.

Return type

None

description#

The description of the entire 2D polyline subcatalog.

Type

str

categories#

All the possible categories in the corresponding dataset stored in a NameList with the category names as keys and the CategoryInfo as values.

Type

tensorbay.utility.name.NameList[tensorbay.label.supports.CategoryInfo]

category_delimiter#

The delimiter in category values indicating parent-child relationship.

Type

str

attributes#

All the possible attributes in the corresponding dataset stored in a NameList with the attribute names as keys and the AttributeInfo as values.

Type

tensorbay.utility.name.NameList[tensorbay.label.attributes.AttributeInfo]

is_tracking#

Whether the Subcatalog contains tracking information.

Type

bool

is_beizer_curve#

Whether the Subcatalog contains beizer curve information.

Type

bool

Examples

Initialization Method 1: Init from Polyline2DSubcatalog.loads() method.

>>> catalog = {
...     "POLYLINE2D": {
...         "isTracking": True,
...         "isBeizerCurve": True,
...         "categories": [{"name": "0"}, {"name": "1"}],
...         "attributes": [{"name": "gender", "enum": ["male", "female"]}],
...     }
... }
>>> Polyline2DSubcatalog.loads(catalog["POLYLINE2D"])
Polyline2DSubcatalog(
  (is_beizer_curve): True,
  (is_tracking): True,
  (categories): NameList [...],
  (attributes): NameList [...]
)

Initialization Method 2: Init an empty Polyline2DSubcatalog and then add the attributes.

>>> from tensorbay.label import CategoryInfo, AttributeInfo
>>> from tensorbay.utility import NameList
>>> categories = NameList()
>>> categories.append(CategoryInfo("a"))
>>> attributes = NameList()
>>> attributes.append(AttributeInfo("gender", enum=["female", "male"]))
>>> polyline2d_subcatalog = Polyline2DSubcatalog()
>>> polyline2d_subcatalog.is_tracking = True
>>> polyline2d_subcatalog.is_beizer_curve = True
>>> polyline2d_subcatalog.categories = categories
>>> polyline2d_subcatalog.attributes = attributes
>>> polyline2d_subcatalog
Polyline2DSubcatalog(
  (is_beizer_curve): True,
  (is_tracking): True,
  (categories): NameList [...],
  (attributes): NameList [...]
)
class tensorbay.label.label_polyline.LabeledPolyline2D(points=None, *, category=None, attributes=None, instance=None, beizer_point_types=None)[source]#

Bases: tensorbay.geometry.point_list.PointList2D[tensorbay.geometry.vector.Vector2D]

This class defines the concept of polyline2D label.

LabeledPolyline2D is the 2D polyline type of label, which is often used for CV tasks such as lane detection.

Parameters
  • points – A list of 2D points representing the vertexes of the 2D polyline.

  • category – The category of the label.

  • attributes – The attributes of the label.

  • instance – The instance id of the label.

  • beizer_point_types – The beizer point types of the label.

category#

The category of the label.

Type

str

attributes#

The attributes of the label.

Type

Dict[str, Union[str, int, float, bool, List[Union[str, int, float, bool]]]]

instance#

The instance id of the label.

Type

str

beizer_point_types#

The beizer point types of the label.

Type

str

Examples

>>> LabeledPolyline2D(
...     [(1, 2), (2, 4), (2, 1)],
...     category="example",
...     attributes={"key": "value"},
...     instance="123",
...     beizer_point_types="LLL",
... )
LabeledPolyline2D [
  Vector2D(1, 2),
  Vector2D(2, 4),
  Vector2D(2, 1)
](
  (beizer_point_types): 'LLL',
  (category): 'example',
  (attributes): {...},
  (instance): '123'
)
classmethod loads(contents)[source]#

Loads a LabeledPolyline2D from a dict containing the information of the label.

Parameters

contents (Dict[str, Any]) – A dict containing the information of the 2D polyline label.

Returns

The loaded LabeledPolyline2D object.

Return type

tensorbay.label.label_polyline._T

Examples

>>> contents = {
...     "polyline2d": [{'x': 1, 'y': 2}, {'x': 2, 'y': 4}, {'x': 2, 'y': 1}],
...     "category": "example",
...     "attributes": {"key": "value"},
...     "instance": "12345",
...     "beizer_point_types": "LLL",
... }
>>> LabeledPolyline2D.loads(contents)
LabeledPolyline2D [
  Vector2D(1, 2),
  Vector2D(2, 4),
  Vector2D(2, 1)
](
  (beizer_point_types): 'LLL',
  (category): 'example',
  (attributes): {...},
  (instance): '12345'
)
dumps()[source]#

Dumps the current 2D polyline label into a dict.

Returns

A dict containing all the information of the 2D polyline label.

Return type

Dict[str, Any]

Examples

>>> labeledpolyline2d = LabeledPolyline2D(
...     [(1, 2), (2, 4), (2, 1)],
...     category="example",
...     attributes={"key": "value"},
...     instance="123",
...     beizer_point_types="LLL",
... )
>>> labeledpolyline2d.dumps()
{
    'category': 'example',
    'attributes': {'key': 'value'},
    'instance': '123',
    'polyline2d': [{'x': 1, 'y': 2}, {'x': 2, 'y': 4}, {'x': 2, 'y': 1}],
    'beizerPointTypes': 'LLL',
}
class tensorbay.label.label_polyline.MultiPolyline2DSubcatalog(is_tracking=False)[source]#

Bases: tensorbay.label.basic.SubcatalogBase, tensorbay.label.supports.IsTrackingMixin, tensorbay.label.supports.CategoriesMixin, tensorbay.label.supports.AttributesMixin

This class defines the subcatalog for 2D multiple polyline type of labels.

Parameters

is_tracking (bool) – A boolean value indicates whether the corresponding subcatalog contains tracking information.

Return type

None

description#

The description of the entire 2D multiple polyline subcatalog.

Type

str

categories#

All the possible categories in the corresponding dataset stored in a NameList with the category names as keys and the CategoryInfo as values.

Type

tensorbay.utility.name.NameList[tensorbay.label.supports.CategoryInfo]

category_delimiter#

The delimiter in category values indicating parent-child relationship.

Type

str

attributes#

All the possible attributes in the corresponding dataset stored in a NameList with the attribute names as keys and the AttributeInfo as values.

Type

tensorbay.utility.name.NameList[tensorbay.label.attributes.AttributeInfo]

is_tracking#

Whether the Subcatalog contains tracking information.

Type

bool

Examples

Initialization Method 1: Init from MultiPolyline2DSubcatalog.loads() method.

>>> catalog = {
...     "MULTI_POLYLINE2D": {
...         "isTracking": True,
...         "categories": [{"name": "0"}, {"name": "1"}],
...         "attributes": [{"name": "gender", "enum": ["male", "female"]}],
...     }
... }
>>> MultiPolyline2DSubcatalog.loads(catalog["MULTI_POLYLINE2D"])
MultiPolyline2DSubcatalog(
  (is_tracking): True,
  (categories): NameList [...],
  (attributes): NameList [...]
)

Initialization Method 2: Init an empty MultiPolyline2DSubcatalog and then add the attributes.

>>> from tensorbay.label import CategoryInfo, AttributeInfo
>>> multi_polyline2d_subcatalog = MultiPolyline2DSubcatalog()
>>> multi_polyline2d_subcatalog.is_tracking = True
>>> multi_polyline2d_subcatalog.add_category(CategoryInfo("a"))
>>> multi_polyline2d_subcatalog.add_attribute(
    AttributeInfo("gender", enum=["female", "male"]))
>>> multi_polyline2d_subcatalog
MultiPolyline2DSubcatalog(
  (is_tracking): True,
  (categories): NameList [...],
  (attributes): NameList [...]
)
class tensorbay.label.label_polyline.LabeledMultiPolyline2D(polylines=None, *, category=None, attributes=None, instance=None)[source]#

Bases: tensorbay.geometry.point_list.MultiPointList2D[tensorbay.geometry.polyline.Polyline2D]

This class defines the concept of multiPolyline2D label.

LabeledMultiPolyline2D is the 2D multiple polyline type of label, which is often used for CV tasks such as lane detection.

Parameters
  • polylines – A list of polylines.

  • category – The category of the label.

  • attributes – The attributes of the label.

  • instance – The instance id of the label.

category#

The category of the label.

Type

str

attributes#

The attributes of the label.

Type

Dict[str, Union[str, int, float, bool, List[Union[str, int, float, bool]]]]

instance#

The instance id of the label.

Type

str

Examples

>>> LabeledMultiPolyline2D(
...     [[[1, 2], [2, 3]], [[3, 4], [6, 8]]],
...     category="example",
...     attributes={"key": "value"},
...     instance="123",
... )
LabeledPolyline2D [
  Polyline2D [...]
  Polyline2D [...]
](
  (category): 'example',
  (attributes): {...},
  (instance): '123'
)
classmethod loads(contents)[source]#

Loads a LabeledMultiPolyline2D from a dict containing the information of the label.

Parameters

contents (Dict[str, Any]) – A dict containing the information of the 2D polyline label.

Returns

The loaded LabeledMultiPolyline2D object.

Return type

tensorbay.label.label_polyline._T

Examples

>>> contents = {
...     "multiPolyline2d": [[{'x': 1, 'y': 1}, {'x': 1, 'y': 2}, {'x': 2, 'y': 2}],
                            [{'x': 2, 'y': 3}, {'x': 3, 'y': 5}]],
...     "category": "example",
...     "attributes": {"key": "value"},
...     "instance": "12345",
... }
>>> LabeledMultiPolyline2D.loads(contents)
LabeledMultiPolyline2D [
  Polyline2D [...]
  Polyline2D [...]
](
  (category): 'example',
  (attributes): {...},
  (instance): '12345'
)
dumps()[source]#

Dumps the current 2D multiple polyline label into a dict.

Returns

A dict containing all the information of the 2D polyline label.

Return type

Dict[str, Any]

Examples

>>> labeledmultipolyline2d = LabeledMultiPolyline2D(
...     [[[1, 1], [1, 2], [2, 2]], [[2, 3], [3, 5]]],
...     category="example",
...     attributes={"key": "value"},
...     instance="123",
... )
>>> labeledpolyline2d.dumps()
{
    'category': 'example',
    'attributes': {'key': 'value'},
    'instance': '123',
    'polyline2d': [
        [{'x': 1, 'y': 1}, {'x': 1, 'y': 2}, {'x': 2, 'y': 2}],
        [{'x': 2, 'y': 3}, {'x': 3, 'y': 5}],
}