Link to this sectionReference for ultralytics/trackers/basetrack.py#
This page is sourced from https://github.com/ultralytics/ultralytics/blob/main/ultralytics/trackers/basetrack.py. Have an improvement or example to add? Open a Pull Request — thank you! 🙏
Link to this section ultralytics.trackers.basetrack.TrackState#
TrackState()Enumeration class representing the possible states of an object being tracked.
Attributes
| Name | Type | Description |
|---|---|---|
New | int | State when the object is newly detected. |
Tracked | int | State when the object is successfully tracked in subsequent frames. |
Lost | int | State when the object is no longer tracked. |
Removed | int | State when the object is removed from tracking. |
Examples
>>> state = TrackState.New
>>> if state == TrackState.New:
... print("Object is newly detected.")Link to this section ultralytics.trackers.basetrack.BaseTrack#
BaseTrack(self)Base class for object tracking, providing foundational attributes and methods.
Attributes
| Name | Type | Description |
|---|---|---|
_count | int | Class-level counter for unique track IDs. |
track_id | int | Unique identifier for the track. |
is_activated | bool | Flag indicating whether the track is currently active. |
state | TrackState | Current state of the track. |
score | float | The confidence score of the tracking. |
start_frame | int | The frame number where tracking started. |
frame_id | int | The most recent frame ID processed by the track. |
Methods
| Name | Description |
|---|---|
end_frame | Return the ID of the most recent frame where the object was tracked. |
activate | Activate the track with provided arguments, initializing necessary attributes for tracking. |
mark_lost | Mark the track as lost by updating its state to TrackState.Lost. |
mark_removed | Mark the track as removed by setting its state to TrackState.Removed. |
next_id | Increment and return the next unique global track ID for object tracking. |
predict | Predict the next state of the track based on the current state and tracking model. |
reset_id | Reset the global track ID counter to its initial value. |
update | Update the track with new observations and data, modifying its state and attributes accordingly. |
Examples
Initialize a new track and mark it as lost:
>>> track = BaseTrack()
>>> track.mark_lost()
>>> print(track.state) # Output: 2 (TrackState.Lost)Source code in ultralytics/trackers/basetrack.py
class BaseTrack:
"""Base class for object tracking, providing foundational attributes and methods.
Attributes:
_count (int): Class-level counter for unique track IDs.
track_id (int): Unique identifier for the track.
is_activated (bool): Flag indicating whether the track is currently active.
state (TrackState): Current state of the track.
score (float): The confidence score of the tracking.
start_frame (int): The frame number where tracking started.
frame_id (int): The most recent frame ID processed by the track.
Methods:
end_frame: Returns the ID of the last frame where the object was tracked.
next_id: Increments and returns the next global track ID.
activate: Abstract method to activate the track.
predict: Abstract method to predict the next state of the track.
update: Abstract method to update the track with new data.
mark_lost: Marks the track as lost.
mark_removed: Marks the track as removed.
reset_id: Resets the global track ID counter.
Examples:
Initialize a new track and mark it as lost:
>>> track = BaseTrack()
>>> track.mark_lost()
>>> print(track.state) # Output: 2 (TrackState.Lost)
"""
_count = 0
def __init__(self):
"""Initialize a new track with a unique ID and foundational tracking attributes."""
self.track_id = 0
self.is_activated = False
self.state = TrackState.New
self.score = 0
self.start_frame = 0
self.frame_id = 0Link to this section ultralytics.trackers.basetrack.BaseTrack.end_frame#
def end_frame(self) -> intReturn the ID of the most recent frame where the object was tracked.
Source code in ultralytics/trackers/basetrack.py
@property
def end_frame(self) -> int:
"""Return the ID of the most recent frame where the object was tracked."""
return self.frame_idLink to this section ultralytics.trackers.basetrack.BaseTrack.activate#
def activate(self, *args: Any) -> NoneActivate the track with provided arguments, initializing necessary attributes for tracking.
Args
| Name | Type | Description | Default |
|---|---|---|---|
*args | Any | required |
Source code in ultralytics/trackers/basetrack.py
def activate(self, *args: Any) -> None:
"""Activate the track with provided arguments, initializing necessary attributes for tracking."""
raise NotImplementedErrorLink to this section ultralytics.trackers.basetrack.BaseTrack.mark_lost#
def mark_lost(self) -> NoneMark the track as lost by updating its state to TrackState.Lost.
Source code in ultralytics/trackers/basetrack.py
def mark_lost(self) -> None:
"""Mark the track as lost by updating its state to TrackState.Lost."""
self.state = TrackState.LostLink to this section ultralytics.trackers.basetrack.BaseTrack.mark_removed#
def mark_removed(self) -> NoneMark the track as removed by setting its state to TrackState.Removed.
Source code in ultralytics/trackers/basetrack.py
def mark_removed(self) -> None:
"""Mark the track as removed by setting its state to TrackState.Removed."""
self.state = TrackState.RemovedLink to this section ultralytics.trackers.basetrack.BaseTrack.next_id#
def next_id() -> intIncrement and return the next unique global track ID for object tracking.
Source code in ultralytics/trackers/basetrack.py
@staticmethod
def next_id() -> int:
"""Increment and return the next unique global track ID for object tracking."""
BaseTrack._count += 1
return BaseTrack._countLink to this section ultralytics.trackers.basetrack.BaseTrack.predict#
def predict(self) -> NonePredict the next state of the track based on the current state and tracking model.
Source code in ultralytics/trackers/basetrack.py
def predict(self) -> None:
"""Predict the next state of the track based on the current state and tracking model."""
raise NotImplementedErrorLink to this section ultralytics.trackers.basetrack.BaseTrack.reset_id#
def reset_id() -> NoneReset the global track ID counter to its initial value.
Source code in ultralytics/trackers/basetrack.py
@staticmethod
def reset_id() -> None:
"""Reset the global track ID counter to its initial value."""
BaseTrack._count = 0Link to this section ultralytics.trackers.basetrack.BaseTrack.update#
def update(self, *args: Any, **kwargs: Any) -> NoneUpdate the track with new observations and data, modifying its state and attributes accordingly.
Args
| Name | Type | Description | Default |
|---|---|---|---|
*args | Any | required | |
**kwargs | Any | required |
Source code in ultralytics/trackers/basetrack.py
def update(self, *args: Any, **kwargs: Any) -> None:
"""Update the track with new observations and data, modifying its state and attributes accordingly."""
raise NotImplementedError