Skip to content

Reference for ultralytics/trackers/basetrack.py

Note

This file is available at https://github.com/ultralytics/ultralytics/blob/main/ultralytics/trackers/basetrack.py. If you spot a problem please help fix it by contributing a Pull Request 🛠️. Thank you 🙏!


ultralytics.trackers.basetrack.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.")





ultralytics.trackers.basetrack.BaseTrack

BaseTrack()

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.

history OrderedDict

Ordered history of the track's states.

features List

List of features extracted from the object for tracking.

curr_feature Any

The current feature of the object being tracked.

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.

time_since_update int

Frames passed since the last update.

location tuple

The location of the object in the context of multi-camera tracking.

Methods:

Name Description
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)

Examples:

Initialize a new track

>>> track = BaseTrack()
>>> print(track.track_id)
0
Source code in ultralytics/trackers/basetrack.py
def __init__(self):
    """
    Initializes a new track with a unique ID and foundational tracking attributes.

    Examples:
        Initialize a new track
        >>> track = BaseTrack()
        >>> print(track.track_id)
        0
    """
    self.track_id = 0
    self.is_activated = False
    self.state = TrackState.New
    self.history = OrderedDict()
    self.features = []
    self.curr_feature = None
    self.score = 0
    self.start_frame = 0
    self.frame_id = 0
    self.time_since_update = 0
    self.location = (np.inf, np.inf)

end_frame property

end_frame

Returns the ID of the most recent frame where the object was tracked.

activate

activate(*args)

Activates the track with provided arguments, initializing necessary attributes for tracking.

Source code in ultralytics/trackers/basetrack.py
def activate(self, *args):
    """Activates the track with provided arguments, initializing necessary attributes for tracking."""
    raise NotImplementedError

mark_lost

mark_lost()

Marks the track as lost by updating its state to TrackState.Lost.

Source code in ultralytics/trackers/basetrack.py
def mark_lost(self):
    """Marks the track as lost by updating its state to TrackState.Lost."""
    self.state = TrackState.Lost

mark_removed

mark_removed()

Marks the track as removed by setting its state to TrackState.Removed.

Source code in ultralytics/trackers/basetrack.py
def mark_removed(self):
    """Marks the track as removed by setting its state to TrackState.Removed."""
    self.state = TrackState.Removed

next_id staticmethod

next_id()

Increment and return the next unique global track ID for object tracking.

Source code in ultralytics/trackers/basetrack.py
@staticmethod
def next_id():
    """Increment and return the next unique global track ID for object tracking."""
    BaseTrack._count += 1
    return BaseTrack._count

predict

predict()

Predicts the next state of the track based on the current state and tracking model.

Source code in ultralytics/trackers/basetrack.py
def predict(self):
    """Predicts the next state of the track based on the current state and tracking model."""
    raise NotImplementedError

reset_id staticmethod

reset_id()

Reset the global track ID counter to its initial value.

Source code in ultralytics/trackers/basetrack.py
@staticmethod
def reset_id():
    """Reset the global track ID counter to its initial value."""
    BaseTrack._count = 0

update

update(*args, **kwargs)

Updates the track with new observations and data, modifying its state and attributes accordingly.

Source code in ultralytics/trackers/basetrack.py
def update(self, *args, **kwargs):
    """Updates the track with new observations and data, modifying its state and attributes accordingly."""
    raise NotImplementedError



📅 Created 1 year ago ✏️ Updated 3 months ago