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.

Source code in ultralytics/trackers/basetrack.py
class TrackState:
    """
    Enumeration class representing the possible states of an object being tracked.

    Attributes:
        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.
    """

    New = 0
    Tracked = 1
    Lost = 2
    Removed = 3



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

    _count = 0

    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)

    @property
    def end_frame(self):
        """Return the last frame ID of the track."""
        return self.frame_id

    @staticmethod
    def next_id():
        """Increment and return the global track ID counter."""
        BaseTrack._count += 1
        return BaseTrack._count

    def activate(self, *args):
        """Abstract method to activate the track with provided arguments."""
        raise NotImplementedError

    def predict(self):
        """Abstract method to predict the next state of the track."""
        raise NotImplementedError

    def update(self, *args, **kwargs):
        """Abstract method to update the track with new observations."""
        raise NotImplementedError

    def mark_lost(self):
        """Mark the track as lost."""
        self.state = TrackState.Lost

    def mark_removed(self):
        """Mark the track as removed."""
        self.state = TrackState.Removed

    @staticmethod
    def reset_id():
        """Reset the global track ID counter."""
        BaseTrack._count = 0

end_frame property

Return the last frame ID of the track.

__init__()

Initializes a new track with unique ID and foundational tracking attributes.

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)

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 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 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

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()

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 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(*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 2023-11-25
Authors: glenn-jocher (3)