Видеодетекция объектов: 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-managerjob-задание с настройками и списком видеопотоков для обработки.Сервис
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, детектор объектов выбирает лучшее изображение объекта динамически:Сначала оценивается качество изображения объекта. Если оно превышает некое предустановленное пороговое значение, то объект отправляется в
findface-facerouter.Порог повышается после каждой отправки изображения объекта в
findface-facerouter. Каждый раз, когда детектор объектов получает изображение того же объекта лучшего качества, оно отправляется.При исчезновении объекта из поля зрения видеокамеры снова устанавливается пороговое значение по умолчанию.
Если
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.
Настройка видеодетекции объектов
Настройка видеодетектора объектов выполняется через следующие файлы конфигурации:
Файл конфигурации компонента
findface-video-manager/etc/findface-video-manager.conf. Вы можете просмотреть его исходное содержимоездесь
Пользовательская настройка
findface-video-managerвыполняется с использованием следующих параметров:
Опция
Описание
etcd->endpointsIP-адрес и порт сервиса
etcd. Значение по умолчанию:127.0.0.1:2379.
ntls->enabledЕсли
true, компонентfindface-video-managerотправляет в компонентfindface-video-workerзадания только на обработку того количества видеокамер, которое указано в лицензии. Значение по умолчанию:false.
ntls->urlIP-адрес и порт сервера
findface-ntls. Значение по умолчанию:http://127.0.0.1:3185/.
router_urlIP-адрес и порт сервера
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.
Файл конфигурации
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-staticIP-адрес сервера
findface-video-manager, который обеспечиваетfindface-video-workerнастройками и списком видеопотоков для обработки.metrics_portПорт HTTP-сервера для отправки метрик. Если 0, метрики не отправляются.
min_sizeМинимальный обнаруживаемый размер объекта.
ntls-addrIP-адрес и порт сервера
findface-ntls.resize_scaleМасштабировать видеокадры с заданным коэффициентом.
resolutionsПредварительно инициализируйте
findface-video-workerдля конкретных разрешений. Например, «640x480;1920x1080».save_dir(Для отладки) Сохранять обнаруженные объекты в заданный каталог.
streamer->port,urlIP-адрес и порт для доступа к видеостене.
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-задание.