ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ содСрТимому

Бсылка для ultralytics/trackers/basetrack.py

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» доступСн ΠΏΠΎ адрСсу https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/trackers/basetrack .py. Если Ρ‚Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, поТалуйста, ΠΏΠΎΠΌΠΎΠ³ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ² Pull Request πŸ› οΈ. Бпасибо πŸ™!



ultralytics.trackers.basetrack.TrackState

Класс пСрСчислСния, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ состояния отслСТиваСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Атрибуты:

Имя Вип ОписаниС
New int

БостояниС, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.

Tracked int

БостояниС, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ отслСТиваСтся Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ°Π΄Ρ€Π°Ρ….

Lost int

БостояниС, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ большС Π½Π΅ отслСТиваСтся.

Removed int

БостояниС, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ снимаСтся с отслСТивания.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² 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

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для отслСТивания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Атрибуты:

Имя Вип ОписаниС
_count int

Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ уровня класса для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Ρ€Π΅ΠΊΠΎΠ².

track_id int

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для Ρ‚Ρ€Π΅ΠΊΠ°.

is_activated bool

Π€Π»Π°Π³, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π»ΠΈ Ρ‚Ρ€Π΅ΠΊ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

state TrackState

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС трассы.

history OrderedDict

УпорядочСнная история состояний Ρ‚Ρ€Π΅ΠΊΠ°.

features list

Бписок ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для отслСТивания.

curr_feature any

ВСкущая характСристика отслСТиваСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

score float

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ увСрСнности ΠΏΡ€ΠΈ отслСТивании.

start_frame int

НомСр ΠΊΠ°Π΄Ρ€Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ отслСТиваниС.

frame_id int

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ послСднСго ΠΊΠ°Π΄Ρ€Π°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΠΊΠΎΠΌ.

time_since_update int

ΠšΠ°Π΄Ρ€Ρ‹, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго обновлСния.

location tuple

РасполоТСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² контСкстС ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹:

Имя ОписаниС
end_frame

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ послСднСго ΠΊΠ°Π΄Ρ€Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ отслСТивался ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

next_id

Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Ρ€Π΅ΠΊΠ°.

activate

Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅ΠΊΠ°.

predict

Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ состояниС Ρ‚Ρ€Π΅ΠΊΠ°.

update

Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ обновлСния Ρ‚Ρ€Π΅ΠΊΠ° Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

mark_lost

ΠŸΠΎΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅ΠΊ ΠΊΠ°ΠΊ потСрянный.

mark_removed

ΠŸΠΎΠΌΠ΅Ρ‚ΡŒ Ρ‚Ρ€Π΅ΠΊ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ.

reset_id

Π‘Π±Ρ€ΠΎΡΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ счСтчик ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Ρ€Π΅ΠΊΠΎΠ².

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² 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

Π’Π΅Ρ€Π½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ послСднСго ΠΊΠ°Π΄Ρ€Π° Ρ‚Ρ€Π΅ΠΊΠ°.

__init__()

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Ρ€Π΅ΠΊ с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ID ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ отслСТивания.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² 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)

Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅ΠΊΠ° с прСдоставлСнными Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ultralytics/trackers/basetrack.py
def activate(self, *args):
    """Abstract method to activate the track with provided arguments."""
    raise NotImplementedError

mark_lost()

ΠŸΠΎΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅ΠΊ ΠΊΠ°ΠΊ потСрянный.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ultralytics/trackers/basetrack.py
def mark_lost(self):
    """Mark the track as lost."""
    self.state = TrackState.Lost

mark_removed()

ΠŸΠΎΠΌΠ΅Ρ‚ΡŒ Ρ‚Ρ€Π΅ΠΊ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ultralytics/trackers/basetrack.py
def mark_removed(self):
    """Mark the track as removed."""
    self.state = TrackState.Removed

next_id() staticmethod

Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ счСтчик ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Ρ€Π΅ΠΊΠΎΠ².

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ultralytics/trackers/basetrack.py
@staticmethod
def next_id():
    """Increment and return the global track ID counter."""
    BaseTrack._count += 1
    return BaseTrack._count

predict()

Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ состояниС Ρ‚Ρ€Π΅ΠΊΠ°.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ultralytics/trackers/basetrack.py
def predict(self):
    """Abstract method to predict the next state of the track."""
    raise NotImplementedError

reset_id() staticmethod

Π‘Π±Ρ€ΠΎΡΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ счСтчик ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Ρ€Π΅ΠΊΠΎΠ².

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ultralytics/trackers/basetrack.py
@staticmethod
def reset_id():
    """Reset the global track ID counter."""
    BaseTrack._count = 0

update(*args, **kwargs)

Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ для обновлСния Ρ‚Ρ€Π΅ΠΊΠ° Π½ΠΎΠ²Ρ‹ΠΌΠΈ наблюдСниями.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ultralytics/trackers/basetrack.py
def update(self, *args, **kwargs):
    """Abstract method to update the track with new observations."""
    raise NotImplementedError





Боздано 2023-11-12, ОбновлСно 2024-05-08
Авторы: Burhan-Q (1), glenn-jocher (3)