Видеодетекция объектов: 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
, детектор объектов выбирает лучшее изображение объекта динамически:Сначала оценивается качество изображения объекта. Если оно превышает некое предустановленное пороговое значение, то объект отправляется в
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
→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-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
Настройки запуска экстракторов трекером.
Файл конфигурации
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.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
: 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 версия.