Видеодетекция лиц: findface-video-manager
и findface-video-worker
¶
Примечание
Компонент findface-video-worker
поставляется в пакетах с ускорением на CPU (findface-video-worker
) и 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
.
Для работы findface-video-mananger
требуется установленный сервис ETCD. ETCD представляет собой стороннее программное обеспечение, реализующее распределенное хранилище ключей findface-video-mananger
. Используется в качестве координационной службы в распределенной системе, обеспечивая отказоустойчивость работы видеодетектора лиц.
Полный список функций 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 Security функции findface-facerouter
выполняются сервисом findface-security
.
Полный список функций findface-video-manager
:
- обнаружение лиц на видео,
- извлечение нормализованных изображений лиц,
- поиск наилучшего изображения лица,
- дедупликация кадров с лицом (только один кадр на каждое событие распознавания лица).
При обработки видео findface-video-worker
последовательно использует следующие алгоритмы:
- Детектор движения. Данный алгоритм позволяет снизить потребление ресурсов, поскольку детектор лиц включается только по движению в кадре.
- Детектор лиц. Алгоритм детектирует, отслеживает и захватывает лица на видео. Может работать одновременно с несколькими лицами в кадре. С помощью встроенной нейронной сети выполняет поиск кадра с лучшим изображением лица. Как только лучшее изображение найдено, отправляет его в компонент
findface-facerouter
.
Подбор лучшего изображения лица может быть выполнен в одном из следующих режимов:
- Режим реального времени
- Буферный режим
Режим реального времени
В режиме реального времени findface-video-worker
начинает отправлять в компонент findface-facerouter
изображения лица сразу после появления лица в поле зрения видеокамеры.
- Если параметр
rt-perm=True
, детектор лиц выбирает лучший кадр в течение каждого из последовательных промежутков времени, равныхrt-delay
, и отправляет его вfindface-facerouter
. - Если
rt-perm=False
, детектор лиц выбирает лучшее изображение лица динамически:- Сначала оценивается качество изображения лица. Если оно превышает некое предустановленное пороговое значение, то лицо отправляется в
findface-facerouter
. - Порог повышается после каждой отправки изображения лица в
findface-facerouter
. Каждый раз, когда детектор лиц получает изображение того же лица лучшего качества, оно отправляется. - При исчезновении лица из поля зрения видеокамеры снова устанавливается пороговое значение по умолчанию.
- Сначала оценивается качество изображения лица. Если оно превышает некое предустановленное пороговое значение, то лицо отправляется в
По умолчанию режим реального времени отключен (параметр realtime=false
в файле конфигурации /etc/findface-video-manager.conf
).
Буферный режим
Буферный режим требует меньший объем дискового пространства по сравнению с режимом реального времени, поскольку для каждого лица компонент findface-video-worker
отправляет только одно изображение из трека, но наивысшего качества.
Буферный режим включен по умолчанию (параметр overall=true
в файле конфигурации /etc/findface-video-manager.conf
).
Настройка видеодетекции лиц¶
Настройка видеодетектора лиц выполняется через следующие файлы конфигурации:
Файл конфигурации компонента
findface-video-manager
/etc/findface-video-manager.conf
:etcd: dial_timeout: 3s endpoints: 127.0.0.1:2379 exp_backoff: enabled: false factor: 2 flush_interval: 2m0s max_delay: 1m0s min_delay: 1s job_scheduler_script: '' kafka: enabled: false endpoints: 127.0.0.1:9092 listen: 127.0.0.1:18810 master: lease_ttl: 10 self_url: 127.0.0.1:18811 self_url_http: 127.0.0.1:18811 ntls: enabled: false update_interval: 1m0s url: http://127.0.0.1:3185/ prometheus: jobs_processed_duration_buckets: - 1 - 30 - 60 - 500 - 1800 - 3600 - 21600 - .inf router_url: http://127.0.0.1:18820/v0/frame rpc: heart_beat_timeout: 4s listen: 127.0.0.1:18811 stream_settings: additional_body: [] additional_headers: [] api_ssl_verify: true api_timeout: 15000 det_period: 8 disable_drops: false draw_track: false fd_frame_height: -1 ffmpeg_format: '' ffmpeg_params: [] image_arg: photo jpeg_quality: 95 max_candidates: 0 max_face_size: 0 md_scale: 0.3 md_threshold: 0.002 min_d_score: -1000 min_face_size: 0 min_score: -2 npersons: 4 only_norm: false overall: true parse_sei: false post_uniq: true realtime: false realtime_dly: 500 realtime_post_perm: false roi: '' rot: '' send_track: 0 tracker_threads: 4 uc_max_avg_shift: 10 uc_max_dup: 3 uc_max_time_diff: 30 stream_settings_gpu: ffmpeg_format: '' ffmpeg_params: [] filter_max_face_size: 8192 filter_min_face_size: 1 filter_min_quality: -2 imotion_threshold: 0 jpeg_quality: 95 normalized_only: false overall_only: false play_speed: -1 realtime_post_every_interval: false realtime_post_interval: 1 roi: '' rot: '' router_body: [] router_headers: [] router_timeout_ms: 15000 router_verify_ssl: true start_stream_timestamp: 0 use_stream_timestamp: false
Пользовательская настройка
findface-video-manager
выполняется с использованием следующих параметров:Опция Описание router_url
IP-адрес и порт сервера findface-facerouter
, который получает обнаруженные лица изfindface-video-worker
. В FindFace Security функцииfindface-facerouter
выполняет компонентfindface-security
. Значение по умолчанию:http://127.0.0.1:18820/v0/frame
.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/
.Если вы выбрали пакет
findface-video-worker
с ускорением на CPU, используйте файл конфигурации/etc/findface-video-worker.ini
:ntls-addr=127.0.0.1:3133 mgr-static=127.0.0.1:18811 capacity=10 #mgr-exec=shell command with arguments
Если вы выбрали пакет
findface-video-worker-gpu
с ускорением на GPU, используйте файл конфигурации/etc/findface-video-worker-gpu.ini
:## cuda device number device_number = 0 ## read streams from file, do not use VideoManager input = ## exit on first finished job, only when --input specified exit_on_first_finished = false ## models directory models_dir = /usr/share/findface-gpudetector/models ## batch size batch_size = 1 ## http server port for metrics, 0=do not start server metrics_port = 0 ## resize scale, 1=do not resize resize_scale = 1.0 ## maximum number of streams capacity = 30 ## command to obtain videomanager's grpc ip:port mgr_cmd = ## videomanager grpc ip:port mgr_static = 127.0.0.1:18811 ## ntls server ip:port ntls_addr = 127.0.0.1:3133 ## debug: save faces to dir save_dir = ## minimum face size min_face_size = 60 ## preinit detector for specified resolutions: "640x480;1920x1080" resolutions = # worker labels: "k=v;group=enter" labels = ## use timestamps from SEI packet use_time_from_sei = false #------------------------------ [streamer] #------------------------------ ## streamer server port, 0=disabled port = 9999 ## streamer url - how to access this worker on streamer_port url = ws://127.0.0.1:9999/stream/ #------------------------------ [liveness] #------------------------------ ## path to liveness fnk fnk = ## liveness threshold threshold = 0.945 ## liveness internal algo param interval = 1.0 ## liveness internal algo param stdev_cnt = 1 #------------------------------ [video_decoder] #------------------------------ ## decode video on cpu cpu = false #------------------------------ [send] #------------------------------ ## posting faces threads threads = 8 ## posting faces maximum queue size queue_limit = 256 #------------------------------ [tracker] #------------------------------ ## max face miss duration, sec miss_interval = 1.0 ## overlap threshold overlap_threshold = 0.25```
Пользовательская настройка
findface-video-worker
/findface-video-worker-gpu
выполняется с использованием следующих параметров:Параметр Описание ntls-addr
IP-адрес и порт сервера findface-ntls
.mgr-static
IP-адрес сервера findface-video-manager
, который обеспечиваетfindface-video-worker
настройками и списком видеопотоков для обработки.capacity
Максимальное количество видеопотоков, обрабатываемых findface-video-worker
.mgr-exec
Возможность подключить скрипт, описывающий динамическое изменение адреса компонента findface-videomanager-api
(вместоmgr-static
).labels
(Только для GPU, опционально). Метки, используемые для привязки экземпляра findface-video-worker
к определенной группе камер. См. Привязка группы камер к экземпляру findface-video-worker.fnk
(Только для GPU, опционально). Путь к детектору живых лиц.