Tracking является процессом определения местоположения движущегося объекта или нескольких объектов в зависимости от времени в видеопотоке. Отслеживание объекта не является тем же самым как обнаружением объектов. Обнаружение объектов является процессом определения местоположения предмета интереса в одной системе координат. Отслеживание обнаружений партнеров объекта через несколько систем координат.
Отслеживание нескольких объектов требует обнаружения, предсказания и ассоциации данных.
Обнаружение: Обнаружьте предметы интереса в видеокадре.
Предсказание: Предскажите объектные местоположения в следующей системе координат.
Ассоциация данных: Используйте предсказанные местоположения, чтобы сопоставить обнаружения через системы координат, чтобы сформировать дорожки.
Выбор правильного подхода для обнаружения предметов интереса зависит от того, что вы хотите отследить и является ли камера стационарной.
Чтобы обнаружить объекты в движении со стационарной камерой, можно выполнить фоновое вычитание с помощью vision.ForegroundDetector
Системный объект. Фоновый подход вычитания работает эффективно, но требует, чтобы камера была стационарной.
Чтобы обнаружить объекты в движении с движущейся камерой, можно использовать подход обнаружения раздвижного окна. Этот подход обычно работает более медленно, чем фоновый подход вычитания. Чтобы обнаружить и отследить определенную категорию объекта, используйте Системные объекты или функции, описанные в таблице.
Тип объекта отследить | Камера | Функциональность |
---|---|---|
Что-либо, что перемещается | Стационарный |
|
Поверхности, глаза, нос, рот, верхняя часть тела | Стационарный, перемещаясь |
|
Пешеходы | Стационарный, перемещаясь |
|
Категория пользовательского объекта | Стационарный, перемещаясь |
|
Отслеживать объект в зависимости от времени означает, что необходимо предсказать его местоположение в следующей системе координат. Самый простой метод предсказания должен принять, что объект будет около его последнего известного местоположения. Другими словами, предыдущее обнаружение служит следующим предсказанием. Этот метод является особенно эффективным для высокой частоты кадров. Однако использование этого метода предсказания может перестать работать, когда объекты перемещаются на различных скоростях, или когда частота кадров является низкой относительно скорости объекта в движении.
Более сложный метод предсказания должен использовать ранее наблюдаемое движение объекта. Фильтр Калмана (vision.KalmanFilter
) предсказывает следующее местоположение объекта, принимая, что оно перемещается согласно модели движения, такой как постоянная скорость или постоянное ускорение. Фильтр Калмана также учитывает шум процесса и шум измерения. Process noise является отклонением фактического движения объекта из модели движения. Measurement noise является ошибкой обнаружения.
Чтобы сделать конфигурирование Фильтра Калмана легче, используйте configureKalmanFilter
. Эта функция настраивает фильтр для отслеживания физического объекта, перемещающегося с постоянной скоростью или постоянным ускорением в Декартовой системе координат. Статистические данные являются тем же самым по всем измерениям. Если необходимо сконфигурировать Фильтр Калмана с различными предположениями, необходимо создать vision.KalmanFilter
возразите непосредственно.
Data association является процессом соединения обнаружений, соответствующих тому же физическому объекту через системы координат. Временная история конкретного объекта состоит из нескольких обнаружений и называется дорожкой. Представление дорожки может включать целую историю предыдущих местоположений объекта. В качестве альтернативы это может состоять только из последнего известного местоположения объекта и его текущей скорости.
Чтобы совпадать с обнаружением к дорожке, необходимо установить критерии оценки соответствий. Как правило, вы устанавливаете это критерии путем определения функции стоимости. Чем выше стоимость соответствия с обнаружением к дорожке, тем менее вероятно, что обнаружение принадлежит дорожке. Простая функция стоимости может быть задана как степень перекрытия между ограничительными рамками предсказанных и обнаруженных объектов. Пешеходы Отслеживания из Движущегося Автомобильного примера реализуют эту функцию стоимости с помощью bboxOverlapRatio
функция. Можно реализовать более сложную функцию стоимости, та, которая составляет неопределенность в предсказании, с помощью distance
функция vision.KalmanFilter
объект. Можно также реализовать пользовательскую функцию стоимости, чем может включить информацию о размере объекта и внешнем виде.
Gating является методом устранения очень маловероятных соответствий из фактора, такой как путем наложения порога на функцию стоимости. Наблюдение не может быть соответствующим к дорожке, если стоимость превышает значение определенного порога. Используя этот пороговый метод эффективно приводит к круговой области пропускания вокруг каждого предсказания, где соответствующее обнаружение может быть найдено. Альтернативный метод пропускания должен сделать область пропускания достаточно большой, чтобы включать k - самые близкие соседи предсказания.
Ассоциация данных уменьшает до минимального веса двустороннюю проблему соответствия, которая является хорошо изученной областью теории графов. Биграф представляет дорожки и обнаружения как вершины. Это также представляет стоимость соответствия с обнаружением и дорожкой как взвешенное ребро между соответствующими вершинами.
assignDetectionsToTracks
функционируйте реализует вариант Манкреса венгерского двустороннего алгоритма соответствия. Ее вход является матрицей стоимости, где строки соответствуют дорожкам, и столбцы соответствуют обнаружениям. Каждая запись содержит стоимость присвоения конкретного обнаружения к конкретной дорожке. Можно реализовать пропускание путем установки стоимости невозможных соответствий к бесконечности.
Ассоциация данных должна учесть то, что новые объекты могут появиться в поле зрения, или что прослеживаемый объект может покинуть поле представления. Другими словами, в любой данной системе координат, некоторое количество новых треков может должно быть быть создано, и некоторое количество существующих дорожек может должно быть быть отброшено. assignDetectionsToTracks
функция возвращает индексы неприсвоенных дорожек и неприсвоенных обнаружений в дополнение к совпадающим парам.
Один способ обработать несопоставленные обнаружения состоит в том, чтобы создать новый трек от каждого из них. В качестве альтернативы можно создать новые треки из несопоставленных обнаружений, больше, чем определенный размер, или от обнаружений, которые имеют определенные местоположения или внешний вид. Например, если сцена имеет однократную точку, такую как дверной проем, то можно указать, что только несопоставленные обнаружения, расположенные около точки входа, могут начать новые треки, и что все другие обнаружения рассматриваются шумом.
Другой способ обработать несопоставленные дорожки состоит в том, чтобы удалить любую дорожку, которые остаются несопоставленными для определенного числа систем координат. В качестве альтернативы можно задать, чтобы удалить несопоставленную дорожку, когда ее последнее известное местоположение около точки выхода.
assignDetectionsToTracks
| bboxOverlapRatio
| configureKalmanFilter
| extractHOGFeatures
| selectStrongestBbox
| trainCascadeObjectDetector
| vision.CascadeObjectDetector
| vision.ForegroundDetector
| vision.KalmanFilter
| vision.PeopleDetector
| vision.PointTracker