⚫️
Как выжать максимум из модели детекции на видео: 7 идей, которые вы еще не пробовали.Взять датасет побольше и дообучить модель? Да, но в этой статье расскажем об альтернативных вариантах улучшения модели.
Трекинг объектов — это набор алгоритмов, которые связывают одни и те же объекты на соседних кадрах видео. Трекинг работает в тесной связке с детектором, поэтому качество первого напрямую зависит от точности второго. Ошибки детектора усложняют работу трекинга, но хороший трекер может справиться даже с неидеальными детекциями.
Шаг 0. Анализ ошибок модели детекции.
Между кадрами моргает детектор? Много кратковременных ложных предсказаний? Вам однозначно нужен алгоритм фильтрации, каким может выступить трекинг. Для быстрого старта подойдет библиотека
BoxMOT. В ней реализованы алгоритмы, помогающие стабилизировать слабые детекции.
Итак, связали детектор и трекер. Но все равно не работает.
Шаг 1. Локализация проблемных мест. Отрисуйте предсказания.
Объекта нет среди детекций → проблема, скорее всего, в детекторе.
Детекция есть, но трек обрывается → смотрим, как трекер работает со временной потерей объекта.
Объект остаётся в кадре, но получает другой ID → проблема в ассоциации.
Ошибки появляются при окклюзии → проверяем, насколько хорошо трекер использует информацию о движении и внешнем виде объекта.
Этот шаг помогает понять, что именно следует исправить в общем пайплайне.
Шаг 2. Проверка confidence детектора.
При окклюзии уверенность детектора может упасть, например, с 0.9 до 0.3. Если использовать порог уверенности детекции 0.5, такая детекция исчезнет ещё до трекера. Объект пропадёт, вместе с ним может оборваться и трек.
ВoostTrack предлагает простой приём: сначала сопоставлять уверенные детекции, затем использовать менее уверенные боксы для восстановления существующих треков.
Поэтому при частых пропусках объектов нужно проверить, что происходит с детекциями с низким confidence, и настроить порог.
При низком пороге могут появиться «ложняки». Да, но они кратковременные.
Шаг 3. Настройка инициализации треков.Можно отрисовывать трек не сразу, а при нескольких подряд идущих детекциях. Этот параметр обычно называется min_hits, измеряется в кадрах. Обычно 3 кадров в видео 30 FPS хватает. Но учитывайте скорость объектов, вращение камеры, FPS видео для своей задачи. Также подредактируйте код, чтобы не отрисовывать те треки, которые пока не прошли эту проверку.
Шаг 4. Борьба с окклюзией.Объект может исчезнуть на несколько кадров из-за окклюзии, а потом снова появиться. Если за это время трекер уже удалил старый трек, старый объект получит новый ID.
Здесь помогает настройка track_buffer: некоторое время трекер продолжает хранить информацию о потерянном объекте и пытается связать его с новой детекцией.
Если окклюзии в видео длинные, этот параметр стоит проверить в первую очередь. Но увеличивать его бесконечно нельзя: слишком большой буфер повышает риск вернуть старый ID новому объекту.
Шаг 5. Компенсация движения камеры Если камера поворачивается или перемещается, координаты всех объектов меняются одновременно при условии, что нет дисторсии. Для трекера это может выглядеть как движение самих объектов.
Компенсация движения камеры (Camera Motion Compensation) позволяет оценить, как сдвинулось изображение целиком, и учитывать это при трекинге объектов. Особенно полезно для спортивных трансляций, PTZ-камер и видео с дронов.
Из готовых решений можно взять идею из
BoT-SORT: компенсировать движение камеры перед ассоциацией, а затем использовать модель движения и ReID.
Шаг 6. Выбор алгоритма трекинга.Алгоритмы отличаются друг от друга применимостью к конкретной задаче.
ByteTrack — базовый вариант, особенно если проблема связана с потерей слабых детекций.
BoT-SORT можно попробовать при движении камеры и частых пересечениях объектов.
OC-SORT полезен для сцен с резкими изменениями направления движения.
Поэтому здесь нужен эксперимент — прогнать один и тот же детектор через несколько трекеров и сравнить не только общий score, но и конкретные ошибки (fragmentation и ID switch).
Не бойтесь экспериментировать и сочетать сильные стороны каждого алгоритма в своём пайплайне 💪🏻
Шаг 7. Что такое уверенность детектора?Представим bbox с confidence 0.3. Сам по себе это слабый сигнал.
Но если детекция появилась именно там, где мы ожидаем увидеть существующий трек, и совпадает с ним по положению, размеру и движению, её уже будет нелогично выбрасывать.
В
BoostTrack используется похожая идея: оценка детекции корректируется с учётом её соответствия существующему треку.
То есть к вопросу:
«Насколько уверен детектор?» добавляем:
«Насколько эта детекция соответствует тому, что мы ожидаем увидеть?»Итого: без дообучения модели пофиксили FP и стабилизировали детекции.
На курсе CV Rocket также разберем, как увеличить TP с помощью трекера и другие адаптации под ваши задачи. Присоединяйтесь до 15 сентября со скидкой 20%!
Авторы: Башаров Илья, Холодов Семен (НКБТех)