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:

NameTypeDescription
Newint

State when the object is newly detected.

Trackedint

State when the object is successfully tracked in subsequent frames.

Lostint

State when the object is no longer tracked.

Removedint

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:

NameTypeDescription
_countint

Class-level counter for unique track IDs.

track_idint

Unique identifier for the track.

is_activatedbool

Flag indicating whether the track is currently active.

stateTrackState

Current state of the track.

historyOrderedDict

Ordered history of the track's states.

featuresList

List of features extracted from the object for tracking.

curr_featureAny

The current feature of the object being tracked.

scorefloat

The confidence score of the tracking.

start_frameint

The frame number where tracking started.

frame_idint

The most recent frame ID processed by the track.

time_since_updateint

Frames passed since the last update.

locationTuple

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

Methods:

NameDescription
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 11 months ago ✏️ Updated 1 month ago