Типичное фото к с камеры и детекции от YOLO. В самом низу - пример камеры.
Что такое визуальные дескрипторы?
Визуальный дескриптор — это способ «перевести» изображение объекта в набор чисел, с которым можно работать математически.
Нейросеть берёт картинку и превращает её в вектор — компактное описание внешнего вида объекта.
Идея простая:
- похожие объекты → похожие векторы,
- разные объекты → разные векторы.
Например, одна и та же пачка молока, снятая под разным углом или при другом освещении, будет иметь близкие дескрипторы. А молоко и шоколадка — уже нет.
Столбец - одно фото с камеры, строка - один набор координат. Конкретно на этой камере товары со временем почти не меняются и выглядят почти идентично, так, что трекинг будет работать хорошо. Но так хорошо дела обстоят далеко не на всех камерах.
Оригинальный DeepSORT: сначала матчинг по эмбеддингам (убирая нереалистичные фильтром Калмана), а для тех, что не сматчились по эмбеддингам - матчинг по IoU.
Наша версия DeepSORT: сначала матчинг по IoU, и только для тех, которые сматчились по IoU - матчинг по эмбеддингам (поскольку товары у нас особо не двигаются и нам важнее визуальные дескрипторы).
Про «последнюю неиспользованную разметку».
Делать трекинг между кадрами — хорошая идея, но если источником для трекинга становится обычное предсказание пайплайна (с качеством, например, 90%), то в 10% случаев трекинг будет «тащить» ошибку дальше. Чтобы уменьшить этот эффект, мы используем разметку как более надёжный источник.
На каждом кадре мы проверяем наличие разметки. Когда появляется новая разметка, мы один раз запускаем трекинг от неё и затем продолжаем трекинг на промежуточных кадрах. Да, с каждым кадром число треков, созданных из разметки (мы называем их «якорными»), уменьшается, но в зависимости от порогов между разметками сохраняется от 20% до 50% «якорных» треков.
Пайплайн v1 выглядит примерно так: из search space и realgram получаем промежуточные предсказания; получаем предсказания из трекинга; выбираем из них по скору с threshold.