Видеодетекция лиц: 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-managerjob-задание с настройками и списком видеопотоков для обработки. - Сервис
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_urlIP-адрес и порт сервера findface-facerouter, который получает обнаруженные лица изfindface-video-worker. В FindFace Security функцииfindface-facerouterвыполняет компонентfindface-security. Значение по умолчанию:http://127.0.0.1:18820/v0/frame.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/.Если вы выбрали пакет
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-addrIP-адрес и порт сервера findface-ntls.mgr-staticIP-адрес сервера 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, опционально). Путь к детектору живых лиц.