group-telegram.com/boris_again/1208
Last Update:
# Поиск работы: разбор тестового задания Planetfarms
Дано видео на пол минуты с камеры на капоте радиоуправляемой машинки. Нужно следить за машинкой, которая едет впереди. Координаты этой машинки на первом кадре даны. Видео непростое: камера прыгает, цель пропадает из кадра, вылезает много объектов включая вторую идентичную машинку. Для выполнения надо использовать предобученную модель детекции, Faster-RCNN. Нельзя ничего обучать. Было указано, что задание примерно на пару часов.
Посмотрел видео. Было не очень понятно, сколько на нем нужно трекать эту машинку, поэтому я решил делать, пока не получится отслеживать в течение всего видео.
Я не работал с детекцией, поэтому полез изучать, кто такой Faster-RCNN. Разобравшись попробовал запустить на паре кадров. Сеть принимает на вход изображение, а выдает кучу ббоксов (bounding box, прямоугольники вокруг объектов) для найденных объектов, а так же вероятности, что объект относится к одному из 1000 классов Imagenet. Окей, но надо обрабатывать не изображения, а видео. Пришлось работать с видео как с последовательностью изображений.
Начальная позиция машинки дана, так что ближайший к ней ббокс и нужно трекать. Главная проблема вот в сопоставлении. Есть куча ббоксов на фрейме 1, куча ббоксов на фрейме 2. Нужно определить, какие пары относятся к одним и тем же сущностям.
Очевидно, что два ближайших ббокса это один объект. Близость определяем по евклидовому расстоянию между центрами. Погуглил и оказалось, что я изобрел centroid tracker. Сразу вылезла тонна проблем. Например: машинка подъезжает близко, а потом резко отъезжает. Трекинг "перескакивает" на капот машины с камерой и успешно следит за ним до конца видео. Или машинка подпрыгивает на кочке и трекинг переключается на какое-нибудь дерево. Или когда две машинки подъезжают слишком близко и трекинг "перепрыгивает" на вторую. Наконец, непонятно что делать, когда машинка совсем пропадает из кадра.
Сначала я потюнил параметры модели и подобрал порог отсева ббоксов по вероятностям. Далее отсеял лишние ббоксы грубыми эвристиками. На видео дорога всегда в маленьком прямоугольнике в центре кадра. Обрезал все ббоксы, которые в него не попадают. Отфильтровал все слишком вытянутые в ширину или высоту ббоксы, потому что мы знаем, что машинка такой не бывает. Стало лучше.
Далее изменил метрику расстояния. Надо было учесть, что если ббокс t1 по форме похож на t2, то более вероятно, что это ббоксы одной сущности. Поэтому я стал считать расстояние между векторами из координат верхнего левого и нижнего правого углов, вида (x1, y1, x2, y2). Это учитывает форму ббоксов, расстояние между похожими меньше. Немного помогло.
BY Борис опять
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/boris_again/1208