DeepSort - это модель машинного обучения для отслеживания людей, присвоения идентификаторов каждому человеку.



Традиционно для отслеживания используется алгоритм Сортировка (простое отслеживание в оперативном и реальном времени), который использует фильтр Калмана. Используя ограничивающие рамки, обнаруженные YOLO v3, мы можем назначить идентификатор и отслеживать человека, отображая ограничивающие рамки одинакового размера и похожего движения в предыдущем и следующем кадрах.

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

Архитектура

В DeepSort процесс выглядит следующим образом.

  1. Вычислить ограничивающие рамки с помощью YOLO v3 (обнаружения)
  2. Используйте Сортировка (фильтр Калмана) и ReID (модель идентификации) для связывания ограничивающих рамок и дорожек
  3. Если установить связь невозможно, назначается новый идентификатор, и он добавляется к дорожкам.

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

ReID в основном используется при связывании ограничивающих рамок и дорожек. Расстояние между векторами признаков, вычисленными с помощью ReID из изображения человека текущей цели отслеживания (треков), и векторами признаков, также рассчитанных с помощью ReID из изображения человека, вырезанного с помощью ограничивающая рамка (обнаружения) в YOLO v3 используется для связывания ограничивающих рамок и дорожек. Проще говоря, объект с наименьшим расстоянием считается одним и тем же человеком и ему присваивается идентификатор трека. Для вычисления расстояния между векторами используются векторы признаков для последних 100 кадров для каждой дорожки. В это время информация о координатах трека не принимается во внимание.

Функция стоимости определяется как Sort distance * λ + ReID distance, но в статье λ = 0, как оказалось, эмпирически дает хорошие результаты, поэтому информация о координатах не принимается во внимание.

В ходе наших экспериментов мы обнаружили, что установка λ = 0 является разумным выбором при значительном движении камеры. В этом параметре в термине стоимости связи используется только информация о внешнем виде. Тем не менее, ворота Махаланобиса по-прежнему используются для игнорирования недопустимых назначений на основе возможных местоположений объектов, определенных фильтром Калмана.

Если положение в текущем кадре, которое предполагается на основе прошлой информации отслеживания Сортировка, слишком далеко друг от друга, идентификатор не будет назначен. Когда ограничивающая рамка остается без идентификатора, для его назначения используется Сортировка.

Если ограничивающая рамка «потеряна» на 70 кадров, она будет удалена из отслеживания.

Модель ReID обучена на основе 1 100 000 изображений 1 261 пешехода из крупномасштабного набора данных для повторной идентификации человека.

Создание экземпляра DeepSort

DeepSort можно создать следующим образом.

MAX_COSINE_DISTANCE = 0.2 # порог соответствия объекта
NN_BUDGET = 100

# экземпляр класса трекера
metric = NearestNeighborDistanceMetric (
«косинус», MAX_COSINE_DISTANCE, NN_BUDGET
)

tracker = Tracker (
metric,
max_iou_distance = 0.7,
max_age = 70,
n_init = 3
)

MAX_COSINE_DISTANCE - это порог для определения сходства людей по ReID. Чем выше значение, тем легче предположить, что это один и тот же человек.

NN_BUDGET - это значение, указывающее, сколько предыдущих кадров векторов признаков следует сохранить для расчета расстояния для каждого трека.

Параметр max_age трекера указывает, через сколько кадров будут удалены нераспределенные треки. n_init указывает, через сколько кадров будут активированы вновь выделенные треки. max_iou_distance - это пороговое значение, которое определяет, насколько ограничивающие прямоугольники должны перекрываться, чтобы определить идентичность неназначенной дорожки.

# обновление трекера
tracker.predict ()
tracker.update (обнаружение)

В исходном коде, особенно insort/tracker.py, когда выполняется функция update, вызывается _match, и linear_assignment.matching_cascade, который использует Sort и ReID, и linear_assignment. min_cost_matching также вызываются в этом порядке. .

В linear_assignment.matching_cascade вызывается min_cost_matching, вычисляется расстояние по ReID, и вычисляется матрица стоимости обнаружений N и треков M. Здесь стоимость рассчитывается только по характеристикам, без учета координатной информации.

После этого в distance_metric вычисление расстояния Сортировка выполняется путем вызова gating_distance для матрицы затрат, которая была рассчитана с помощью ReID, и если расстояние Сортировка больше определенного значения, назначается значение стоимости Бесконечность.

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

gated_cost = INFTY_COST
cost_matrix [строка, gating_distance ›gating_threshold] = gated_cost
(sort / libnear_assignment.py / gate_cost_matrix)

Тест DeepSort

DeepSort оценивался на наборе данных MOT Challenge.



По сравнению с простой сортировкой, переключение идентификаторов пользователей улучшилось с 1423 до 781.

использование

Чтобы использовать DeepSort с SDK ailia, используйте пример ниже.



В этом примере DeepSort используется для отслеживания человека, обнаруженного YOLOv3. Вы можете использовать следующую команду для отслеживания по веб-камере.

$ python3 deepsort.py -v 0

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

$ python3 deepsort.py — pairimage IMAGE_PATH1 IMAGE_PATH2

Обратите внимание, что scipy является обязательным, поскольку он используется для вычисления фильтра Калмана.

Axe Inc. разработал ailia SDK, который обеспечивает кроссплатформенный быстрый вывод на основе графического процессора.

Axe Inc. предоставляет широкий спектр услуг от консультирования и создания моделей до разработки приложений и SDK на основе искусственного интеллекта. По любым вопросам обращайтесь к нам.