Розробка системи трекінгу об'єктів на відео (Object Tracking)

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка системи трекінгу об'єктів на відео (Object Tracking)
Середній
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Розробка системи трекингу об'єктів на відео

Трекинг — завдання стеження за конкретним об'єктом через послідовність кадрів зі збереженням тотожності. Якщо детекція відповідає на запитання "що і де на кадрі", то трекинг додає "це той же об'єкт, що й у попередніх кадрах". Застосування: підрахунок людей, що перетинають лінію, аналіз траєкторій у магазині, керування в системах автономного водіння, спортивна аналітика.

Алгоритми трекингу

SORT (Simple Online and Realtime Tracking) — базовий алгоритм: Kalman-фільтр для передбачення положення + IoU matching для асоціації. Швидкий, але втрачає об'єкт при перекриттях.

DeepSORT — SORT + ReID (Re-Identification): deep appearance features для асоціації за зовнішнім виглядом, не тільки за просторовим положенням. Краще справляється з перекриттями.

ByteTrack — поточний state-of-the-art для загальних завдань. Використовує всі детекції (включаючи низькоуверенні) для асоціації:

from ultralytics import YOLO

model = YOLO('yolov8l.pt')

# Трекинг вбудований у Ultralytics
results = model.track(
    source='video.mp4',
    tracker='bytetrack.yaml',
    persist=True,            # зберігати track-IDs між кадрами
    conf=0.3,
    iou=0.5
)

for result in results:
    boxes = result.boxes
    for box in boxes:
        track_id = box.id.item()  # унікальний ID об'єкту
        x1, y1, x2, y2 = box.xyxy[0]

BoT-SORT — ByteTrack + компенсація руху камери + ReID. Найкращі результати на MOT17 benchmark: HOTA 77.8.

StrongSORT — ще більш агресивна ReID інтеграція, краще для завдань з довгими перекриттями.

ReID моделі

ReID-модель видобуває embedding зовнішнього вигляду об'єкту. При втраті треку система шукає його по similarity в embeddings:

import torchreid

# Завантажуємо ReID модель
model = torchreid.models.build_model(
    name='osnet_x1_0',
    num_classes=751,  # Market-1501
    pretrained=True
)

def extract_appearance_features(crop: np.ndarray) -> np.ndarray:
    tensor = preprocess_crop(crop)
    with torch.no_grad():
        features = model(tensor)
    return features.cpu().numpy()

Метрика ReID: mAP та Rank-1 на Market-1501 / DukeMTMC. OSNet-x1.0: Rank-1 94.8%, mAP 84.9% на Market-1501.

Аналіз траєкторій

Після трекингу будуємо аналітику по траєкторіях:

class TrajectoryAnalyzer:
    def __init__(self):
        self.tracks = {}  # track_id -> list of (frame, x, y)

    def update(self, track_id, frame_num, cx, cy):
        if track_id not in self.tracks:
            self.tracks[track_id] = []
        self.tracks[track_id].append((frame_num, cx, cy))

    def count_line_crossings(self, line: tuple, direction='both') -> int:
        """Підрахунок пересічень віртуальної лінії"""
        count = 0
        for track in self.tracks.values():
            if self._crosses_line(track, line, direction):
                count += 1
        return count

Метрики якості трекингу

  • HOTA (Higher Order Tracking Accuracy) — основна метрика, балансує Detection та Association accuracy
  • MOTA (Multiple Object Tracking Accuracy) — враховує FP, FN, ID switches
  • IDF1 — ID F1 score: наскільки добре зберігаються ID через час
  • ID Switches — кількість змін ID у одного об'єкту
Алгоритм HOTA MOT17 MOTA ID Switches
SORT 55.1 63.3 4852
DeepSORT 61.2 71.4 1821
ByteTrack 77.3 80.3 2196
BoT-SORT 77.8 80.5 1871
Масштаб системи Хронологія
Трекинг 1 класу, 1–4 камери 2–3 тижні
Мультиклас, аналіз траєкторій 4–6 тижнів
Довгостроковий ReID трекинг (re-enter) 6–10 тижнів