Видеодетекция объектов: 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-задания, имеют больший приоритет, чем аналогичные параметры в файле конфигурации findface-video-manager.yaml.

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

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

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

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

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

Компонент findface-video-worker (CPU/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-multi-legacy.

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

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

  • нормализация изображений объектов,

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

При обработке видео 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-managerfindface-video-manager.yaml. Вы можете просмотреть его исходное содержимое здесь.

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

    Опция

    Описание

    etcdendpoints

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

    ntlsenabled

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

    ntlsurl

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

    router_url

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

    Для настройки stream_settings доступны следующие параметры:

    Опция

    Описание

    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-multi-legacy в стандартной конфигурации FindFace Multi) на API-запрос компонента findface-video-worker. Если время ожидания истекло, регистрируется ошибка. Значение по умолчанию: 15000.

    router_verify_ssl

    Включает/отключает проверку подписи SSL-сертификата при взаимодействии по https findface-video-worker с компонентом findface-facerouter (findface-multi-legacy в стандартной конфигурации 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. По умолчанию область не задана.

    stream_data_filter

    POSIX extended регулярное выражение, если содержимое потока данных соответствует фильтру, оно будет отправлено в router_url. Значение по умолчанию не указано.

    video_transform

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

    enable_recorder

    Включает запись видео для Видеомагнитофона (должен быть установлен).

    enable_liveness

    Включает функциональность liveness (должна быть установлена). Значение по умолчанию: false.

    record_audio

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

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

    Опция

    Описание

    filter_min_quality

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

    filter_min_size

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

    filter_max_size

    Определяет максимальный размер объекта в пикселях. Вычисляется как корень квадратный из площади bbox объекта. Объекты большего размера не отправляются. Значение по умолчанию: 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_overlap_threshold

    Порог перекрытия трекера IoU. Значение по умолчанию: 0.25.

    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.

    tracker_type

    Тип трекера (simple_iou или deep_sort). Значение по умолчанию: simple_iou.

    track_deep_sort_matching_threshold

    Порог матчинга векторов признаков для deep_sort трекера. Значение по умолчанию: 0.65.

    track_deep_sort_filter_unconfirmed_tracks

    Фильтровать или нет неподтвержденные треки в deep_sort трекере. Значение по умолчанию: true.

    track_object_is_principal

    Отслеживать по данному объекту в случае N-in-1 детектора/трекера. Значение по умолчанию: false.

    track_history_active_track_miss_interval

    Не учитывать объект при подсчете их количества, если прошло больше N секунд. Параметр имеет смысл только при track_send_history=true. Значение по умолчанию: 0.

    filter_track_min_duration_frames

    Минимальная длина трека в кадрах для отправки. Значение по умолчанию: 1.

    extractors_track_triggers

    Настройки запуска экстракторов трекером.

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

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

    CPU

    GPU

    Описание

    batch_size

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

    capacity

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

    Н/п

    video_decoder

    cpu

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

    Н/п

    device_number

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

    exit_on_first_finished

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

    input

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

    labels

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

    mgrcmd

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

    mgrstatic

    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

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

    streamerport, 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: key-value метки, по которым будет осуществляться обработка обнаруженных объектов в роутер компоненте (findface-multi-legacy в стандартной конфигурации FindFace Multi).

  • router_url: URL/адрес роутер компонента (findface-facerouter, findface-multi-legacy), который будет получать обнаруженные объекты от экземпляра(ов) findface-video-worker.

  • router_events_url: URL/адрес роутер компонента (findface-facerouter, findface-multi-legacy) для извлечения событий.

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

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

  • stream_settings_gpu: устаревшие настройки видеопотока. Не рекомендуется использовать. Только для обеспечения совместимости.

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

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

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

  • restream_url: URL-адрес вебсокета, по которому обрабатывается поток с обнаруженными объектами в реальном времени.

  • restream_direct_url: URL-адрес вебсокета, по которому исходный поток транслируется в реальном времени.

  • shots_url: HTTP-адрес, по которому можно загрузить скриншот потокового видео.

  • worker_id: уникальный идентификатор экземпляра findface-video-worker с job-заданием на обработку.

  • version: job версия.