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.





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.

Source code in ultralytics/trackers/basetrack.py
def __init__(self):
    """Initializes a new track with unique ID and foundational tracking attributes."""
    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

Return the last frame ID of the track.

activate

activate(*args)

Abstract method to activate the track with provided arguments.

Source code in ultralytics/trackers/basetrack.py
def activate(self, *args):
    """Abstract method to activate the track with provided arguments."""
    raise NotImplementedError

mark_lost

mark_lost()

Mark the track as lost.

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

mark_removed

mark_removed()

Mark the track as removed.

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

next_id staticmethod

next_id()

Increment and return the global track ID counter.

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

predict

predict()

Abstract method to predict the next state of the track.

Source code in ultralytics/trackers/basetrack.py
def predict(self):
    """Abstract method to predict the next state of the track."""
    raise NotImplementedError

reset_id staticmethod

reset_id()

Reset the global track ID counter.

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

update

update(*args, **kwargs)

Abstract method to update the track with new observations.

Source code in ultralytics/trackers/basetrack.py
def update(self, *args, **kwargs):
    """Abstract method to update the track with new observations."""
    raise NotImplementedError





Created 2023-11-12, Updated 2024-07-21
Authors: glenn-jocher (6), Burhan-Q (1)