Видеодетекция объектов: findface-video-manager и findface-video-worker

Примечание

Компонент findface-video-worker поставляется в пакетах с ускорением на CPU (findface-video-worker-cpu) и GPU (findface-video-worker-gpu).

В этом разделе:

Функции findface-video-manager

Сервис findface-video-manager является частью модуля видеодетекции объектов и используется для непосредственного управления детекцией объектов на видео.

Сервис findface-video-manager взаимодействует с findface-video-worker следующим образом:

  • Обеспечивает findface-video-worker настройками и списком видеопотоков для обработки. Для этого он выдает findface-video-worker так называемое job-задание, задачу на обработку видео, которая содержит параметры конфигурации и сведения о видеопотоке.

  • В распределенной системе распределяет видеопотоки (job-задания) по свободным экземплярам findface-video-worker.

Примечание

Параметры конфигурации, передаваемые через job-задания, имеют больший приоритет, чем аналогичные параметры в файле конфигурации /etc/findface-video-manager.conf.

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

Полный список функций findface-video-manager:

  • конфигурирование параметров видеодетектора объектов

  • управление списком видеопотоков для обработки

Функции findface-video-worker

Компонент findface-video-worker (или findface-video-worker-gpu) является частью модуля видеодетекции объектов и служит для обнаружения объектов «на лету» в видеопотоке или видеофайле. Он поддерживает большинство видеоформатов и кодеков, которые могут быть декодированы FFmpeg.

Сервис findface-video-worker взаимодействует с сервисами findface-video-manager и findface-facerouter следующим образом:

  • По запросу findface-video-worker получает от findface-video-manager job-задание с настройками и списком видеопотоков для обработки.

  • Сервис findface-video-worker отправляет полученные нормализованные изображения объектов вместе с полными кадрами и метаданными, такими как рамка вокруг объекта, ID камеры и время детекции, в сервис findface-facerouter для дальнейшей обработки.

Примечание

В FindFace Multi функции findface-facerouter выполняются сервисом findface-security.

Полный список функций findface-video-manager:

  • обнаружение объектов на видео,

  • извлечение нормализованных изображений объектов,

  • поиск наилучшего изображения объектов,

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

При обработке видео findface-video-worker последовательно использует следующие алгоритмы:

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

  • Детектор объектов. Детектор объектов отслеживает, обнаруживает и захватывает объекты на видео. Может работать одновременно с несколькими объектами в кадре. С помощью встроенной нейронной сети выполняет поиск кадра с лучшим изображением объекта. Как только лучшее изображение найдено, отправляет его в компонент findface-facerouter.

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

  • Режим реального времени

  • Буферный режим

Режим реального времени

В режиме реального времени findface-video-worker начинает отправлять изображения объекта в компонент findface-facerouter на лету после появления объекта в поле зрения видеокамеры. Доступны следующие опции отправки:

  • Если параметр realtime_post_every_interval: true, детектор объектов выбирает лучший кадр в течение каждого из последовательных промежутков времени, равных realtime_post_interval, и отправляет его в findface-facerouter.

  • Если realtime_post_every_interval: false, детектор объектов выбирает лучшее изображение объекта динамически:

    1. Сначала оценивается качество изображения объекта. Если оно превышает некое предустановленное пороговое значение, то объект отправляется в findface-facerouter.

    2. Порог повышается после каждой отправки изображения объекта в findface-facerouter. Каждый раз, когда детектор объектов получает изображение того же объекта лучшего качества, оно отправляется.

    3. При исчезновении объекта из поля зрения видеокамеры снова устанавливается пороговое значение по умолчанию.

  • Если realtime_post_first_immediately: true: детектор объектов отправляет первое изображение объекта из трека сразу после того, как он пройдет через фильтры качества, размера и региона захвата (ROI), не дожидаясь окончания первого realtime_post_interval. Способ отправки последующих изображений объекта зависит от установленного значения realtime_post_every_interval. Если realtime_post_first_immediately: false, детектор объектов отправляет первое изображение объекта только после окончания первого realtime_post_interval.

Буферный режим

Буферный режим требует меньший объем дискового пространства по сравнению с режимом реального времени, поскольку для каждого объекта компонент findface-video-worker отправляет только одно изображение из трека, но наивысшего качества. В этом режиме детектор объектов хранит в буфере видеопоток с объектом до тех пор, пока объект не исчезнет из поля зрения камеры. После этого детектор объектов выбирает лучшее изображение объекта из буферизованного видео и отправляет его в findface-facerouter.

Настройка видеодетекции объектов

Настройка видеодетектора объектов выполняется через следующие файлы конфигурации:

  1. Файл конфигурации компонента findface-video-manager /etc/findface-video-manager.conf. Вы можете просмотреть его исходное содержимое здесь

Пользовательская настройка findface-video-manager выполняется с использованием следующих параметров:

Опция

Описание

etcd -> endpoints

IP-адрес и порт сервиса etcd. Значение по умолчанию: 127.0.0.1:2379.

ntls -> enabled

Если true, компонент findface-video-manager отправляет в компонент findface-video-worker задания только на обработку того количества видеокамер, которое указано в лицензии. Значение по умолчанию: false.

ntls -> url

IP-адрес и порт сервера findface-ntls. Значение по умолчанию: http://127.0.0.1:3185/.

router_url

IP-адрес и порт сервера findface-facerouter, который получает обнаруженные объекты из findface-video-worker. В FindFace Multi функции findface-facerouter выполняет компонент findface-security. Значение по умолчанию: http://127.0.0.1:18820/v0/frame.

play_speed

Если меньше нуля, то скорость не ограничивается. В остальных случаях поток читается со скоростью play_speed. Не применимо для потоков с камер видеонаблюдения.

disable_drops

Включает/отключает отправку в компонент findface-facerouter всех подходящих объектов без пропусков. По умолчанию, если findface-video-worker не обладает достаточными ресурсами для обработки всех кадров с объектами, он отбрасывает некоторые из них. Если данная опция активна, findface-video-worker помещает лишние кадры в очередь, чтобы обработать их впоследствии. Значение по умолчанию: false.

imotion_threshold

Минимальная интенсивность движения, которая будет регистрироваться детектором движения. Пороговое значение определяется эмпирически. Реперные точки: 0 = детектор выключен, 0.002 = значение по умолчанию, 0.05 = минимальная интенсивность слишком высока, чтобы зарегистрировать движение.

router_timeout_ms

Время ожидания в миллисекундах ответа от компонента findface-facerouter (findface-security в стандартной конфигурации FindFace Multi) на API-запрос компонента findface-video-worker. Если время ожидания истекло, регистрируется ошибка. Значение по умолчанию: 15000.

router_verify_ssl

Включает/отключает проверку подписи SSL-сертификата при взаимодействии по https findface-video-worker с компонентом findface-facerouter (findface-security в стандартной конфигурации FindFace Multi). Значение по умолчанию: true. Если false, может быть принят самоподписанный сертификат.

router_headers

Массив дополнительных заголовков в POST-запросе с изображением объекта в формате [“ключ=значение”]. По умолчанию дополнительные заголовки не передаются.

router_body

Массив дополнительных полей в POST-запросе с изображением объекта в формате [“ключ=значение”]. По умолчанию дополнительные поля не передаются.

ffmpeg_params

Список ffmpeg-параметров видеопотока со значениями в виде массива ключ=значение: [“rtsp_transpotr=tcp”, .., “ss=00:20:00”]. Полный список параметров на сайте FFMPEG. Значение по умолчанию: параметры не указаны.

ffmpeg_format

Передает формат FFMPEG (mxg, flv и т. д.), если он не может быть автоматически определен.

use_stream_timestamp

Если true, отправлять на сервер временные метки полученные из потока. Если false, отправлять текущие дату и время.

start_stream_timestamp

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

rot

Включает детектирование и отслеживание объектов только внутри заданной прямоугольной области WxH+X+Y. Используйте данную опцию, чтобы уменьшить нагрузку на findface-video-worker. По умолчанию область не задана.

video_transform

Изменить ориентацию видеокадра сразу после декодирования. Значения (регистронезависимые, в скобках JPEG Exif Orientation Tag): None (1), FlipHorizontal (2), Rotate180 (3), FlipVertical (4), Transpose (5), Rotate90 (6), Transverse (7), Rotate270 (8). Значение по умолчанию: не задано.

Для каждого типа детектора (лицо, тело, автомобиль) для настройки доступны следующие параметры:

Опция

Описание

filter_min_quality

Минимальное пороговое значение качества изображения объекта. Значение по умолчанию: зависит от типа объекта. Не меняйте значение по умолчанию без предварительной консультации с нашими техническими экспертами (support@ntechlab.com).

filter_min_size

Определяет минимальный размер объекта в пикселях. Объекты меньшего размера не отправляются. Значение по умолчанию: 1.

filter_max_size

Определяет максимальный размер объекта в пикселях. Объекты большего размера не отправляются. Значение по умолчанию: 8192.

roi

Включает отправку на Сервер объектов, обнаруженных только внутри интересующей области WxH+X+Y. По умолчанию область не задана.

fullframe_crop_rot

Обрезать отправляемые полные кадры по ROT (региону отслеживания). Значение по умолчанию: false.

fullframe_use_png

Отправлять полные кадры в формате PNG, а не в формате JPEG, как установлено по умолчанию. Не включайте этот параметр, не посоветовавшись с нашей командой, так как он может повлиять на работу всей системы. Значение по умолчанию: false (отправлять в формате JPEG).

jpeg_quality

Качество сжатия исходного кадра в JPEG. Значение по умолчанию: 95 % от исходного размера.

overall_only

Буферный режим. Отправлять для объекта один кадр наилучшего качества. Значение по умолчанию: true (CPU), false (GPU).

realtime_post_first_immediately

Отправлять изображение объекта сразу после его появления в поле зрения видеокамеры (режим реального времени). Значение по умолчанию: false.

realtime_post_interval

Только для режима реального времени. Период времени в секундах, в течение которого детектор объектов выбирает лучший кадр из трека и отправляет его в компонент findface-facerouter. Значение по умолчанию: 1.

realtime_post_every_interval

Только для режима реального времени. Включает отправку лучшего кадра в течение периода времени realtime_post_interval. Если false, лучший кадр ищется динамически в порядке возрастания качества. Значение по умолчанию: false.

track_interpolate_bboxes

Интерполировать пропущенные изображения объектов в треке. Например, если в кадрах №1 and №4 были обнаружены объекты, а в №2 и №3 нет, система воссоздаст отсутствующие изображения объектов №2 и №3 на основании данных №1 и №4. Включение данной опции позволяет добиться увеличения качества детектирования за счет производительности. Значение по умолчанию: true.

track_miss_interval

Система завершит трек, если в нем не было задетектировано новых изображений объекта в течение заданного времени (секунды). Значение по умолчанию: 1.

track_max_duration_frames

Максимальное приблизительное количество кадров в треке, по достижении которого трек будет принудительно закрыт. Включите опцию, чтобы автоматически завершать “вечные треки”, например, треки детектирования объектов с рекламных носителей. Значение по умолчанию: 0 (опция отключена).

track_send_history

Отправлять историю трека. Значение по умолчанию: false.

post_best_track_frame

Отправлять полные кадры для обнаруженных объектов. Значение по умолчанию: true.

post_best_track_normalize

Отправлять нормализованные изображения для обнаруженных объектов. Значение по умолчанию: true.

post_first_track_frame

Отправлять первый кадр трека. Значение по умолчанию: false.

post_last_track_frame

Отправлять последний кадр трека. Значение по умолчанию: false.

  1. Файл конфигурации findface-video-worker /etc/findface-video-worker-cpu.ini или /etc/findface-video-worker-gpu.ini, в зависимости от используемого типа ускорения.

    Пользовательская настройка findface-video-worker на CPU/GPU выполняется с использованием следующих параметров:

    CPU

    GPU

    Описание

    batch_size

    Отправлять лица в пакетах указанного размера.

    capacity

    Максимальное количество видеопотоков, обрабатываемых findface-video-worker.

    Н/п

    cpu

    При необходимости декодировать видео на CPU.

    Н/п

    device_number

    Номер используемого GPU-устройства.

    exit_on_first_finished

    (Только если указан input) Выйти после завершения первого job-задания.

    input

    Обрабатывать видеопотоки из файла, игнорируя данные потоков, поступающие от findface-video-manager.

    labels

    Метки, используемые для привязки экземпляра findface-video-worker к определенной группе камер. См. Привязка группы камер к экземпляру findface-video-worker.

    mgr-cmd

    Команда для получения IP-адреса компонента findface-video-manager (опционально вместо mgr-static).

    mgr-static

    IP-адрес сервера findface-video-manager, который обеспечивает findface-video-worker настройками и списком видеопотоков для обработки.

    metrics_port

    Порт HTTP-сервера для отправки метрик. Если 0, метрики не отправляются.

    min_size

    Минимальный обнаруживаемый размер объекта.

    ntls-addr

    IP-адрес и порт сервера findface-ntls.

    resize_scale

    Масштабировать видеокадры с заданным коэффициентом.

    resolutions

    Предварительно инициализируйте findface-video-worker для конкретных разрешений. Например, «640x480;1920x1080».

    save_dir

    (Для отладки) Сохранять обнаруженные объекты в заданный каталог.

    streamer -> port, url

    IP-адрес и порт для доступа к видеостене.

    use_time_from_sei

    (Для MPEG-2) Используйте временные метки SEI (supplemental enhancement information).

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

Job-задания

Сервис findface-video-manager выдает findface-video-worker так называемое job-задание, задачу на обработку видео, которая содержит параметры конфигурации и сведения о видеопотоке.

Пример job-задания приведен здесь.

Каждое job-задание имеет следующие параметры:

  • id: id job-задания.

  • enabled: статус активности.

  • stream_url: URL/адрес видеопотока или файла для обработки.

  • labels: метки, по которым будет осуществляться обработка обнаруженных лиц в компоненте findface-facerouter (findface-security в стандартной конфигурации FindFace Multi).

  • single_pass: если true (по умолчанию false), то не перезапускать обработку потока в случае ошибки.

  • router_url: IP-адрес и порт компонента findface-facerouter (findface-security в стандартной конфигурации FindFace Multi), в который компонент findface-video-worker отправляет обнаруженные лица для последующей обработки.

  • stream_settings: параметры видеопотока, дублирующие параметры в файле конфигурации /etc/findface-video-manager.conf (обладая при этом большим приоритетом).

  • status: статус job-задания.

  • status_msg: дополнительная информация о статусе job-задания.

  • statistic: статистика выполнения job-задания (продолжительность процесса обработки, количество отправленных и неотправленных объектов, кадровая частота обработки, количество обработанных и пропущенных кадров, время начала обработки и т. д.).

  • worker_id: id экземпляра findface-video-worker, выполняющего job-задание.