О видеодетекторе лиц¶
Для распознавания лиц на видео вам потребуется компонент fkvideo_detector
. Этот компонент обнаруживает лица «на лету» в видеопотоке или видеофайле и отправляет их на Сервер FindFace по API. Компонент поддерживает все форматы видеофайлов и кодеков, которые могут быть декодированы FFmpeg.
В этом разделе:
Установка¶
Установите fkvideo_detector
из пакета с компонентами <findface-repo>.deb на одном из серверов FindFace или на отдельном сервере:
Совет
Нажмите здесь для перехода к инструкции по подготовке deb-пакета.
sudo apt-get update
sudo apt-get install fkvideo-detector
Принцип работы¶
Детектор движения и трекер лиц¶
При обработке видео fkvideo_detector
последовательно использует следующие алгоритмы:
Детектор движения. Данный алгоритм позволяет снизить потребление ресурсов, поскольку трекер лиц включается только по движению в кадре.
Трекер лиц. Алгоритм детектирует, отслеживает и захватывает лица на видео и отправляет их на Сервер FindFace. Может работать одновременно с несколькими лицами в кадре.
Совет
Настройте максимальное количество активных лиц в файле конфигурации
fkvideo_detector
.Трекер лиц отправляет на Сервер область изображения с обнаруженным лицом (рамку с лицом) через запрос
POST /face
илиPOST /identify
(зависит от настроек видеодетектора). Если одновременно отслеживается несколько лиц, трекер отправит на Сервер такое же количество запросов с рамкой.
Поиск лучшего изображения лица¶
Перед тем как отправить лицо на Сервер FindFace, трекер лиц подбирает его лучшее изображение.
Подбор лучшего изображения лица может быть выполнен в одном из следующих режимов:
- в реальном времени,
- в буфере.
Режим реального времени¶
В режиме реального времени трекер лиц начинает отправлять на Сервер изображения лица сразу после его появления в поле зрения видеокамеры. В этом режиме трекер лиц подбирает лучшее изображение лица динамически:
- Сначала оценивается качество изображения лица. Если оно превышает некое предустановленное пороговое значение, то лицо отправляется на Сервер.
- Порог повышается после каждой отправки изображения лица на Сервер. Каждый раз, когда трекер лиц получает изображение того же лица лучшего качества, оно отправляется.
- При исчезновении лица из поля зрения видеокамеры снова устанавливается пороговое значение по умолчанию.
Буферный режим¶
В буферном режиме трекер лиц использует меньший объем дискового пространства по сравнению с режимом реального времени, поскольку для каждого лица отправляет на Сервер только одно изображение, но наивысшего качества. При работе в буферном режиме трекер лиц сохраняет в буфере фрагмент видео с лицом, после чего выбирает из этого фрагмента лучшее изображение лица и отправляет его.
Настройка и использование¶
Параметры конфигурации видеодетектора задаются одним из следующих способов:
непосредственно в интерфейсе командной строки как опции команды запуска видеодетектора;
fkvideo_detector [options]
в файле конфигурации.
Предупреждение
По умолчанию в качестве файла конфигурации fkvideo_detector используется файл
/etc/fkvideo.ini
. Не редактируйте файл/etc/fkvideo.ini
, особенно если fkvideo_detector и веб-интерфейс FindFace установлены на одном физическом сервере, т. к. веб-интерфейс тоже использует данный файл. Вместо этого скопируйте файл, отредактируйте копию и укажите ее в опции-c
при запуске fkvideo_detector.sudo cp /etc/fkvideo.ini /etc/fkvideo_example.ini fkvideo_detector -c /etc/fkvideo_example.ini
См. полный список параметров конфигурации в Параметры конфигурации.
Управление видеопотоками¶
Вы можете задать видеопотоки для обработки одним из следующих способов:
- Единственный поток может быть задан непосредственно с помощью параметров
--camid
и--source
при настройкеfkvideo_detector
. - Список видеопотоков должен быть сначала зарегистрирован на Сервере FindFace. Для этого для каждого потока из списка сформируйте и отправьте на Сервер запрос /camera POST с одинаковым пользовательским идентификатором
detector
. Данный идентификатор должен быть затем указан в параметре--detector-name
при настройкеfkvideo_detector
. В этом случаеfkvideo_detector
запросит список потоков от Сервера FindFace на основании ихdetector-name
и начнет по отдельности обрабатывать каждый из них. Он также будет периодически проверять список на наличие обновлений с интервалом, определяемым параметромreload-timeout
.