Сопровождение нескольких объектов

Tracking - процесс определения местоположения движущегося объекта или нескольких объектов с течением времени в видеопотоке. Отслеживание объекта не совпадает с обнаружением объектов. Обнаружение объектов является процессом определения местоположения объекта, представляющего интерес, в одной системе координат. Отслеживание связывает обнаружения объекта в нескольких системах координат.

Отслеживание нескольких объектов требует обнаружения, предсказания и связи данных.

  • Обнаружение: Обнаружение объектов интереса в видеокадре.

  • Предсказание: Предсказать местоположение объекта в следующей системе координат.

  • Ассоциация данных: Используйте предсказанные местоположения, чтобы связать обнаружения между системами координат для формирования треков.

Обнаружение

Выбор правильного подхода для обнаружения объектов интереса зависит от того, что вы хотите отследить и является ли камера стационарной.

Обнаружение объектов с помощью стационарной камеры

Чтобы обнаружить объекты в движении со стационарной камерой, можно выполнить вычитание фона с помощью vision.ForegroundDetector Системный объект. Подход вычитания фона работает эффективно, но требует, чтобы камера была стационарной.

Обнаружение объектов с помощью движущейся камеры

Чтобы обнаружить объекты в движении с помощью движущейся камеры, можно использовать подход обнаружения скользящего окна. Этот подход обычно работает медленнее, чем подход вычитания фона. Чтобы обнаружить и отследить определенную категорию объектов, используйте системные объекты или функции, описанные в таблице.

Выберите алгоритм обнаружения

Тип объекта для отслеживанияКамераФункциональность
Все, что движетсяПостоянный

vision.ForegroundDetector Системные object™

Лица, глаза, нос, рот, верхняя часть телаСтационарный, Подвижный

vision.CascadeObjectDetector Системный объект

ПешеходыСтационарный, Подвижный

vision.PeopleDetector Системный объект

Категория пользовательских объектовСтационарный, Подвижный

trainCascadeObjectDetector функция
или
пользовательский детектор скользящего окна с использованием extractHOGFeatures и selectStrongestBbox

Предсказание

Отслеживать объект с течением времени означает, что вы должны предсказать его местоположение в следующей системе координат. Самый простой метод предсказания состоит в том, чтобы предположить, что объект будет близок к своему последнему известному местоположению. Другими словами, предыдущее обнаружение служит следующим предсказанием. Этот способ особенно эффективен для высокой системы координат. Однако использование этого метода предсказания может оказаться неудачным, когда объекты перемещаются с различными скоростями или когда частота систем координат низкая относительно скорости объекта в движении.

Более сложным методом предсказания является использование ранее наблюдавшегося движения объекта. Фильтр Калмана (vision.KalmanFilter) предсказывает следующее местоположение объекта, принимая, что он движется согласно модели движения, такой как постоянная скорость или постоянное ускорение. Фильтр Калмана также учитывает технологический шум и измерительный шум. Process noise - это отклонение фактического движения объекта от модели движения. Measurement noise - ошибка обнаружения.

Чтобы упростить настройку фильтра Калмана, используйте configureKalmanFilter. Эта функция настраивает фильтр для отслеживания физического объекта, движущегося с постоянной скоростью или постоянным ускорением в Декартовой системе координат. Статистика одинаковая по всем размерностям. Если вам нужно сконфигурировать фильтр Калмана с различными предположениями, необходимо создать vision.KalmanFilter объект непосредственно.

Ассоциация данных

Data association - процесс связи обнаружений, соответствующих тому же физическому объекту, между системами координат. Временная история конкретного объекта состоит из нескольких обнаружений и называется дорожкой. Представление дорожки может включать всю историю предыдущих расположений объекта. Кроме того, он может состоять только из последнего известного местоположения объекта и его текущей скорости.

Обнаружение для отслеживания функций затрат

Чтобы сопоставить обнаружение с дорожкой, необходимо задать критерии для оценки соответствий. Как правило, эти критерии устанавливаются путем определения функции затрат. Чем выше стоимость соответствия обнаружения дорожке, тем меньше вероятность того, что обнаружение принадлежит дорожке. Функция простой стоимости может быть определена как степень перекрытия между ограничивающими рамками предсказанных и обнаруженных объектов. Пример Отслеживания Пешеходов из Движущегося Автомобиля реализует эту функцию затрат, используя bboxOverlapRatio функция. Можно реализовать более сложную функцию затрат, которая учитывает неопределенность предсказания, используя distance функция vision.KalmanFilter объект. Можно также реализовать пользовательскую функцию затрат, которая может включать информацию о размере объекта и его внешнем виде.

Исключение маловероятных матчей

Gating метод исключения из фактора очень маловероятных совпадений, например, путем наложения порога на функцию затрат. Наблюдение не может быть согласовано с дорожкой, если стоимость превышает определенное пороговое значение. Использование этого порогового способа эффективно приводит к округлой области стробирования вокруг каждого предсказания, где может быть найдено совпадающее обнаружение. Альтернативный метод стробирования состоит в том, чтобы сделать область стробирования достаточно большой, чтобы включать k - ближайших соседей предсказания.

Присвоение обнаружений для отслеживания

Ассоциация данных сводится к задаче соответствия двухпартийного графика с минимальным весом, которая является хорошо изученной областью теории графов. Двудольный график представляет треки и обнаружения как вершины. Это также представляет стоимость соответствия обнаружения и дорожки как взвешенного ребра между соответствующими вершинами.

assignDetectionsToTracks функция реализует вариант Мункреса венгерского двухпартийного алгоритма соответствия. Его входом является матрица затрат, где строки соответствуют трекам, а столбцы - обнаружениям. Каждая запись содержит стоимость назначения конкретного обнаружения конкретной дорожке. Можно реализовать гейтинг, установив стоимость невозможных матчей в бесконечность.

Управление треками

Ассоциация данных должна учитывать тот факт, что новые объекты могут появиться в поле зрения или что отслеживаемый объект может покинуть поле зрения. Другими словами, в любой конкретной системе координат может потребоваться создать некоторое количество новых дорожек, и некоторое количество существующих дорожек может потребоваться отбросить. assignDetectionsToTracks функция возвращает индексы неназначенных треков и неназначенных обнаружений в дополнение к совпадающим парам.

Одним из способов обработки несопоставленных обнаружений является создание новой дорожки из каждого из них. Кроме того, можно создать новые дорожки от несопоставленных обнаружений, больше определенного размера, или от обнаружений, которые имеют определенные местоположения или внешний вид. Например, если сцена имеет одну точку входа, такую как дверной проем, то можно задать, что только несопоставленные обнаружения, расположенные рядом с точкой входа, могут начать новые дорожки, и что все другие обнаружения считаются шумом.

Другой способ обработки несопоставленных треков - удалить любой трек, который остается несопоставленным для определенного количества систем координат. Кроме того, можно задать, чтобы удалить несопоставленную дорожку, когда ее последнее известное местоположение находится рядом с выходной точкой.

См. также

| | | | | | | | | |

Похожие примеры

Подробнее о

Внешние веб-сайты