Представьте, что вы могли бы сделать с отслеживанием лиц… (включая полный код)

Отслеживание лиц - это обнаружение набора лиц в кадре 1 видео, установление соответствия между кадрами и поддержание уникального идентификатора для каждого из лиц на протяжении всего видео. Он используется в различных сценариях, начиная от: видеонаблюдения, при котором лицо цели отслеживается для наблюдения за движением цели; защита конфиденциальности при замене или размытии лица; и развлечения, где целевое лицо заменено мультфильмами или смешано с лицом суперзвезды.

Представьте, что вы могли бы сделать с отслеживанием лиц ... 💭 создайте нашу домашнюю систему наблюдения, чтобы, когда неизвестный человек входит в вашу дверь, она отслеживала его / ее движения и предупреждала вас, подсчитывала количество людей, которые входят и выходят свое здание, или создайте приложение, которое заменяет ваше лицо смайликом 😃 при создании танцевального видео для публикации на своем канале YouTube.

В этом посте я научу вас, как создать простую систему отслеживания лиц на Python, разделив задачу на два этапа:

  1. Распознавание лиц
  2. Отслеживание лица

К концу этой публикации вы сможете обнаруживать лица в первом кадре и отслеживать все обнаруженные лица в последующих кадрах.

ПРИМЕЧАНИЕ. В этой публикации я буду использовать Raspberry Pi 3B + и запускать на нем весь свой код.

Давайте начнем…

Распознавание лиц

Чтобы отслеживать лица, мы сначала должны иметь возможность обнаруживать лица на любом данном изображении.

Для задачи обнаружения лиц мы будем использовать Xailient Face Detector. Вы можете обратиться к этому сообщению, чтобы загрузить и установить F ace Detector SDK.

Распознавание лиц на изображении

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

Распознавание лиц в видеопотоке

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

Мы будем использовать пакет picamera для потоковой передачи видео, который предоставляет интерфейс для модуля камеры Raspberry Pi для Python.

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

Отслеживание лица

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

Для отслеживания воспользуемся correlation_tracker () из библиотеки dlib.

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

Чтобы установить dlib, используйте следующие команды:

apt-get install build-essential cmake
pip3 install dlib

ПРИМЕЧАНИЕ. Если вы столкнулись с проблемами при установке dlib, это руководство содержит подробные инструкции по его установке.

correlation_tracker () позволяет отслеживать положение объекта при его перемещении от кадра к кадру в видео.

В первом кадре будет выполняться распознавание лиц. Для каждого обнаруженного лица мы создадим объект отслеживания корреляции (dlib.correlation_tracker ()) и начнем отслеживать лицо, передав его координаты ограничивающей рамки объекту отслеживания. Затем для каждого из последующих кадров мы будем использовать эти трекеры для определения местоположения каждого лица.

Ваша система отслеживания лица готова!

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

Вот модифицированный код обнаружения и отслеживания лиц:

Ниже приведен экран видеозаписи обнаружения бегущего лица и отслеживания на видео. Видео, которое я использовал для тестирования своего кода, было обрезанной версией (я использовал только последние 8 секунд) оригинального видео Tim Savage из Pexels. Вы можете скачать оригинальное видео по этой ссылке.

Считаете этот пост полезным? Оставьте свои мысли в комментариях ниже.

Первоначально опубликовано в www.xailient.com/blog.

Хотите реализовать обнаружение лиц в реальном времени на Raspberry Pi? Посмотрите этот пост.

Другие истории:

Интегрируйте функцию распознавания лиц в свое приложение

Проблемы запуска компьютерного зрения с глубоким обучением на устройствах с ограниченными вычислительными возможностями

Проблемы с обнаружением запущенных объектов на Raspberry Pi

Вам нужно перейти от облачных вычислений к пограничным вычислениям!

Ссылки:

Ван З., Чжэн Л., Лю Ю. и Ван С. (2019). На пути к отслеживанию нескольких объектов в реальном времени. Ассоциация развития искусственного интеллекта.

Ван, К., Чжан, Л., Бертинетто, Л., Ху, В., и Х.С. Торр, П. (2019). Быстрое отслеживание и сегментация объектов в Интернете: объединяющий подход. Ассоциация развития искусственного интеллекта.

Http://dlib.net

Http://dlib.net/correlation_tracker.py.html