Видеодетекция объектов: 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-managerjob-задание с настройками и списком видеопотоков для обработки.Сервис
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, детектор объектов выбирает лучшее изображение объекта динамически:Сначала оценивается качество изображения объекта. Если оно превышает некое предустановленное пороговое значение, то объект отправляется в
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–findface-video-manager.yaml. Вы можете просмотреть его исходное содержимоездесь.Пользовательская настройка
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-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_filterPOSIX 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.
use_rtsp_timeЕсли
use_stream_timestamp: true, добавляет временную метку начала потока RTSP источника. Значение по умолчанию: true.Для каждого типа детектора (лицо, силуэт, транспортное средство) для настройки доступны следующие параметры:
Опция
Описание
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Настройки запуска экстракторов трекером.
Файл конфигурации
findface-video-workerfindface-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.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: 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 версия.
Настройки времени
При создании job-задания можно указать параметры времени. Эти параметры определяют, как будут формироваться временные метки событий при отправке или записи в VMS, что важно для определения конечной временной метки события. В файле video-worker.yaml параметр use_time_from_sei имеет значение false по умолчанию. В файле video-manager.yaml для параметров use_stream_timestamp и use_rtsp_time используются следующие значения по умолчанию: use_stream_timestamp: false, use_rtsp_time: true.
Рассмотрим возможные комбинации:
use_stream_timestamp: false,use_time_from_sei: либоtrue, либоfalse,use_rtsp_time: либоtrue, либоfalse.Будет использоваться текущее время сервера (wall-clock time)
use_stream_timestamp: true,use_time_from_sei: true,use_rtsp_time: либоtrue, либоfalse.Будут использоваться SEI временные метки (при их наличии) или временные метки потока (pts) без изменений.
use_stream_timestamp: true,use_time_from_sei: false,use_rtsp_time: true.Конечная временная метка будет определяться по формуле:
final_ts = pts - start_pts + start_stream_timestamp + rtsp_start_time, гдеpts— pts метки потока.start_pts— минимальный наблюдаемый pts потока; вычитается для того, чтобы время первого кадра стало равным0.start_stream_timestamp— настройка job-задания вstream_settings.rtsp_start_time— «Start time of the stream in real world time» (время начала потока в реальном времени), проставляется некоторыми RTSP серверами.
use_stream_timestamp: true,use_time_from_sei: false,use_rtsp_time: false.Конечная временная метка будет определяться по формуле:
final_ts = pts - start_pts + start_stream_timestamp.