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

Навіщо потрібен трекінг об'єктів?

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

Часті запитання

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

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

Навіщо потрібен трекінг об'єктів?

При підрахунку потоку відвідувачів у торговельному центрі камера фіксує кожну людину, але без трекінгу ви не дізнаєтеся, скільки унікальних відвідувачів пройшло через зону. Це класичне завдання Object Tracking — утримувати ідентичність об'єкта на всьому шляху його руху по кадру. Ми, команда AI-інженерів, вирішуємо такі завдання з 2018 року. Запустили понад 20 проєктів трекінгу для рітейлу, логістики та спорту, і готові побудувати рішення під ключ для вашого кейсу. Помилка у виборі алгоритму може коштувати до 30% точності підрахунку, тому важливий правильний підхід.

Який алгоритм трекінгу обрати?

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

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

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

Чому ByteTrack — найкращий вибір для продакшену?

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

from ultralytics import YOLO model = YOLO('yolov8l.pt') # Трекінг вбудований в Ultralytics results = model.track( source='video.mp4', tracker='bytetrack.yaml', persist=True, # зберігати трек-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 + camera motion compensation + 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. Discovery — аналіз завдання, відео-датасету, вимог до точності та швидкості.
  2. Вибір моделі — тестуємо ByteTrack, DeepSORT, BoT-SORT на ваших даних.
  3. Оптимізація — квантування (INT8), обрізання графа, налаштування hyperparams для latency p99 < 30 ms на Jetson.
  4. Розгортання — контейнеризація, інтеграція з відеопотоком (RTSP, HLS), деплой на GPU/CPU.
  5. Аналітика — особистий кабінет з heatmaps, лічильниками, треками.

Терміни та обсяг робіт

Масштаб системи Термін
Трекінг 1 класу, 1–4 камери 2–3 тижні
Мультиклас, аналіз траєкторій 4–6 тижнів
Довгостроковий ReID трекінг (re-enter) 6–10 тижнів

Вартість розраховується індивідуально, виходячи з кількості камер, типів об'єктів та необхідної точності. Зв'яжіться з нами — ми безкоштовно оцінимо складність.

Що входить у результат

  • Навчена та оптимізована модель трекінгу (ByteTrack або BoT-SORT).
  • Docker-образ з REST API для інтеграції.
  • Інтерактивний дашборд для аналітики.
  • Технічна документація (опис архітектури, метрики, інструкція з запуску).
  • Підтримка протягом 12 місяців.

Досвід і гарантії

Наша команда має сертифікованих ML-інженерів з досвідом роботи над системами відеоаналітики протягом багатьох років. Реалізовано 25+ проєктів для рітейлу, логістики та безпеки. Надаємо гарантію на коректну роботу трекінгу в межах узгоджених метрик (HOTA ≥ 70). Пишіть — обговоримо ваш проєкт і підготуємо пропозицію. Замовте консультацію, щоб отримати індивідуальне рішення під вашу задачу.