Видеодетекция лиц: 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
.
Для работы 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-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
на лету после появления лица в поле зрения видеокамеры. Доступны следующие опции отправки (см. /etc/findface-video-manager.conf
и Добавление камеры):
- Если параметр
realtime_post_every_interval: true
, детектор лиц выбирает лучший кадр в течение каждого из последовательных промежутков времени, равныхrealtime_post_interval
, и отправляет его вfindface-facerouter
. - Если
realtime_post_every_interval: false
, детектор лиц выбирает лучшее изображение лица динамически:- Сначала оценивается качество изображения лица. Если оно превышает некое предустановленное пороговое значение, то лицо отправляется в
findface-facerouter
. - Порог повышается после каждой отправки изображения лица в
findface-facerouter
. Каждый раз, когда детектор лиц получает изображение того же лица лучшего качества, оно отправляется. - При исчезновении лица из поля зрения видеокамеры снова устанавливается пороговое значение по умолчанию.
- Сначала оценивается качество изображения лица. Если оно превышает некое предустановленное пороговое значение, то лицо отправляется в
- Если
realtime_post_first_immediately: true
, детектор лиц отправляет самый первый кадр непосредственно после появления лица в поле зрения видеокамеры. Последующие отправки зависят от значенияrealtime_post_every_interval
.
Буферный режим
Буферный режим требует меньший объем дискового пространства по сравнению с режимом реального времени, поскольку для каждого лица компонент findface-video-worker
отправляет только одно изображение из трека, но наивысшего качества.
Буферный режим включается через параметр overall_only
(см. /etc/findface-video-manager.conf
и Добавление камеры).
Настройка видеодетекции лиц¶
Настройка видеодетектора лиц выполняется через следующие файлы конфигурации:
Файл конфигурации компонента
findface-video-manager
/etc/findface-video-manager.conf
:listen: 127.0.0.1:18810 etcd: endpoints: 127.0.0.1:2379 dial_timeout: 3s kafka: enabled: false endpoints: 127.0.0.1:9092 master: lease_ttl: 10 self_url: 127.0.0.1:18811 self_url_http: 127.0.0.1:18810 rpc: listen: 127.0.0.1:18811 heart_beat_timeout: 4s router_url: http://127.0.0.1:18820/v0/frame exp_backoff: enabled: false min_delay: 1s max_delay: 1m0s factor: 2 flush_interval: 2m0s ntls: enabled: false url: http://127.0.0.1:3185/ update_interval: 1m0s prometheus: jobs_processed_duration_buckets: - 1 - 30 - 60 - 500 - 1800 - 3600 - 21600 - .inf job_scheduler_script: '' stream_settings: ffmpeg_params: [] md_threshold: 0.002 md_scale: 0.3 fd_frame_height: -1 uc_max_time_diff: 30 uc_max_dup: 3 uc_max_avg_shift: 10 det_period: 8 realtime: false npersons: 4 disable_drops: false tracker_threads: 4 parse_sei: false image_arg: photo additional_headers: [] additional_body: [] api_timeout: 15000 api_ssl_verify: true post_uniq: true min_score: -2 min_d_score: -1000 realtime_dly: 500 realtime_post_perm: false rot: '' roi: '' draw_track: false send_track: 0 min_face_size: 0 max_face_size: 0 overall: true only_norm: false max_candidates: 0 jpeg_quality: 95 ffmpeg_format: '' stream_settings_gpu: play_speed: -1 filter_min_quality: -2 filter_min_face_size: 1 filter_max_face_size: 8192 normalized_only: false jpeg_quality: 95 overall_only: false use_stream_timestamp: false ffmpeg_params: [] router_timeout_ms: 15000 router_verify_ssl: true router_headers: [] router_body: [] start_stream_timestamp: 0 imotion_threshold: 0 rot: '' roi: '' realtime_post_interval: 1 realtime_post_every_interval: true ffmpeg_format: '' disable_drops: false router_full_frame_png: false router_disable_normalized: false crop_fullframe_rot: false realtime_post_first_immediately: 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/
.Вы также можете использовать следующие параметры:
Примечание
В разделе файла
stream_settings-gpu
вы найдете настройки, общие для всех видеопотоков. Настройки в данном разделе работают как в GPU, так и CPU-конфигурации. Настройки определенного потока, переданные в job-задании, имеют приоритет над настройками в файле конфигурации (см. Job-задания).Примечание
Раздел
stream_settings
файла устарел и необходим только для обратной совместимости.
Опция Описание play_speed
Если меньше нуля, то скорость не ограничивается. В остальных случаях поток читается со скоростью play_speed
. Не применимо для потоков с камер видеонаблюдения.filter_min_quality
Минимальное значение качества изображения лица, отправляемого компонентом findface-video-worker
в компонентfindface_facerouter
(findface-security
в стандартной конфигурации FindFace Security). Значение определяется эмпирически: отрицательные рациональные числа до 0. Реперные точки: 0 = наиболее качественные лица, -1 = хорошее качество, -2 = удовлетворительное качество, -5 = последующее распознавание лиц может быть неэффективным. Значение по умолчанию: -2.filter_min_face_size
Определяет минимальный размер лица в пикселях. Лица меньшего размера не отправляются. Значение по умолчанию: 0 (фильтр выключен). filter_max_face_size
Определяет максимальный размер лица в пикселях. Лица большего размера не отправляются. Значение по умолчанию: 0 (фильтр выключен). normalized_only
Включает/отключает отправку только нормализованных лиц без исходных кадров. Значение по умолчанию: false. jpeg_quality
Качество сжатия исходного кадра в JPEG. Значение по умолчанию: 95 % от исходного размера. overall_only
Буферный режим. Отправлять для лица один кадр наилучшего качества. Значение по умолчанию: true. use_stream_timestamp
Если true, отправлять на сервер временные метки полученные из потока. Если false, отправлять текущие дату и время. ffmpeg_params
Список ffmpeg-параметров видеопотока со значениями в виде массива ключ=значение: [“rtsp_transpotr=tcp”, .., “ss=00:20:00”]. Полный список параметров на сайте FFMPEG. Значение по умолчанию: параметры не указаны. router_timeout_ms
Время ожидания в миллисекундах ответа от компонента findface-facerouter
(findface-security
в стандартной конфигурации FindFace Security) на API-запрос компонентаfindface-video-worker
. Если время ожидания истекло, регистрируется ошибка. Значение по умолчанию: 15000.router_verify_ssl
Включает/отключает проверку подписи SSL-сертификата при взаимодействии по https findface-video-worker
с компонентомfindface-facerouter
(findface-security
в стандартной конфигурации FindFace Security). Значение по умолчанию: true. Если false, может быть принят самоподписанный сертификат.router_headers
Массив дополнительных заголовков в POST-запросе с изображением лица в формате [“ключ=значение”]. По умолчанию дополнительные заголовки не передаются. router_body
Массив дополнительных полей в POST-запросе с изображением лица в формате [“ключ=значение”]. По умолчанию дополнительные поля не передаются. start_stream_timestamp
Прибавлять указанное количество секунд к временным меткам из потока. imotion_threshold
Минимальная интенсивность движения, которая будет регистрироваться детектором движения. Пороговое значение определяется эмпирически. Реперные точки: 0 = детектор выключен, 0.002 = значение по умолчанию, 0.05 = минимальная интенсивность слишком высока, чтобы зарегистрировать движение. rot
Включает детектирование и отслеживание лиц только внутри заданной прямоугольной области WxH+X+Y. Используйте данную опцию, чтобы уменьшить нагрузку на findface-video-worker
. По умолчанию область не задана.roi
Включает отправку на Сервер лиц, обнаруженных только внутри интересующей области WxH+X+Y. По умолчанию область не задана. realtime_post_interval
Только для режима реального времени. Период времени в секундах, в течение которого детектор лиц выбирает лучший кадр из трека и отправляет его в компонент findface-facerouter
. Значение по умолчанию: 1.realtime_post_every_interval
Только для режима реального времени. Включает отправку лучшего кадра в течение периода времени realtime_post_interval
. Если false, лучший кадр ищется динамически в порядке возрастания качества. Значение по умолчанию: false.ffmpeg_format
Передает формат FFMPEG (mxg, flv и т. д.), если он не может быть автоматически определен. disable_drops
Включает/отключает отправку в компонент findface-facerouter
всех подходящих лиц без пропусков. По умолчанию, еслиfindface-video-worker
не обладает достаточными ресурсами для обработки всех кадров с лицами, он отбрасывает некоторые из них. Если данная опция активна,findface-video-worker
помещает лишние кадры в очередь, чтобы обработать их впоследствии. Значение по умолчанию: false.router_full_frame_png
Отправлять полные кадры в формате PNG, а не в формате JPEG, как установлено по умолчанию. Не включайте этот параметр, не посоветовавшись с нашей командой, так как он может повлиять на работу всей системы. Значение по умолчанию: false (отправлять в формате JPEG). router_disable_normalized
Отправлять только полные кадры без нормализованных изображений. Не включайте этот параметр, не посоветовавшись с нашей командой, так как он может повлиять на работу всей системы. Значение по умолчанию: false (отправка как полных кадров, так и нормализованных изображений). crop_fullframe_rot
Обрезать отправляемые полные кадры по ROT (региону отслеживания). Значение по умолчанию: false. realtime_post_first_immediately
Отправлять лицо сразу после его появления в поле зрения видеокамеры (режим реального времени). Значение по умолчанию: false.
Если вы выбрали пакет
findface-video-worker-cpu
с ускорением на CPU, используйте файл конфигурации/etc/findface-video-worker-cpu.ini
:## read streams from file, do not use VideoManager ## type:string env:CFG_INPUT longopt:--input input = ## exit on first finished job, only when --input specified ## type:bool env:CFG_EXIT_ON_FIRST_FINISHED longopt:--exit-on-first-finished exit_on_first_finished = false ## batch size ## type:number env:CFG_BATCH_SIZE longopt:--batch-size batch_size = 4 ## http server port for metrics, 0=do not start server ## type:number env:CFG_METRICS_PORT longopt:--metrics-port metrics_port = 0 ## resize scale, 1=do not resize ## type:double env:CFG_RESIZE_SCALE longopt:--resize-scale resize_scale = 1.000000 ## maximum number of streams ## type:number env:CFG_CAPACITY longopt:--capacity capacity = 10 ## command to obtain videomanager's grpc ip:port ## type:string env:CFG_MGR_CMD longopt:--mgr-cmd mgr_cmd = ## videomanager grpc ip:port ## type:string env:CFG_MGR_STATIC longopt:--mgr-static mgr_static = 127.0.0.1:18811 ## ntls server ip:port ## type:string env:CFG_NTLS_ADDR longopt:--ntls-addr ntls_addr = 127.0.0.1:3133 ## debug: save faces to dir ## type:string env:CFG_SAVE_DIR longopt:--save-dir save_dir = ## minimum face size ## type:number env:CFG_MIN_FACE_SIZE longopt:--min-face-size min_face_size = 60 ## preinit detector for specified resolutions: "640x480;1920x1080" ## type:string env:CFG_RESOLUTIONS longopt:--resolutions resolutions = ## worker labels: labels = k=v;group=enter ## type:string env:CFG_LABELS longopt:--labels labels = ## use timestamps from SEI packet ## type:bool env:CFG_USE_TIME_FROM_SEI longopt:--use-time-from-sei use_time_from_sei = false ## reader frame buffer size ## type:number env:CFG_FRAME_BUFFER_SIZE longopt:--frame-buffer-size frame_buffer_size = 128 ## skip count ## type:number env:CFG_SKIP_COUNT longopt:--skip-count skip_count = 2 #------------------------------ [streamer] #------------------------------ ## streamer/shots webserver port, 0=disabled ## type:number env:CFG_STREAMER_PORT longopt:--streamer-port port = 18999 ## streamer url - how to access this worker on streamer_port ## type:string env:CFG_STREAMER_URL longopt:--streamer-url url = 127.0.0.1:18999 #------------------------------ [liveness] #------------------------------ ## path to liveness fnk ## type:string env:CFG_LIVENESS_FNK longopt:--liveness-fnk fnk = ## path to normalization for liveness ## type:string env:CFG_LIVENESS_NORM longopt:--liveness-norm norm = ## liveness internal algo param ## type:double env:CFG_LIVENESS_INTERVAL longopt:--liveness-interval interval = 1.000000 ## liveness internal algo param ## type:number env:CFG_LIVENESS_STDEV_CNT longopt:--liveness-stdev-cnt stdev_cnt = 1 #------------------------------ [send] #------------------------------ ## posting faces threads ## type:number env:CFG_SEND_THREADS longopt:--send-threads threads = 8 ## posting faces maximum queue size ## type:number env:CFG_SEND_QUEUE_LIMIT longopt:--send-queue-limit queue_limit = 256 #------------------------------ [tracker] #------------------------------ ## interpolate undetected bboxes in track ## type:bool env:CFG_TRACKER_INTERPOLATE_BBOXES longopt:--tracker-interpolate-bboxes interpolate_bboxes = true ## max face miss duration, sec ## type:double env:CFG_TRACKER_MISS_INTERVAL longopt:--tracker-miss-interval miss_interval = 1.000000 ## overlap threshold ## type:double env:CFG_TRACKER_OVERLAP_THRESHOLD longopt:--tracker-overlap-threshold overlap_threshold = 0.250000 #------------------------------ [models] #------------------------------ ## path to pedestrian detector fnk ## type:string env:CFG_MODELS_BODY_DETECTOR longopt:--models-body-detector body_detector = ## path to detector fnk ## type:string env:CFG_MODELS_DETECTOR longopt:--models-detector detector = /usr/share/findface-data/models/facedet/cheetah_fast.cpu.fnk ## path to quality fnk ## type:string env:CFG_MODELS_QUALITY longopt:--models-quality quality = /usr/share/findface-data/models/faceattr/quality.v0.cpu.fnk ## path to norm for quality fnk ## type:string env:CFG_MODELS_NORM_QUALITY longopt:--models-norm-quality norm_quality = /usr/share/findface-data/models/facenorm/bee_fast.cpu.fnk ## path to norm200 fnk, for face send ## type:string env:CFG_MODELS_NORM_200 longopt:--models-norm-200 norm_200 = /usr/share/findface-data/models/facenorm/bee.v2.cpu.fnk ## path to norm_crop2x fnk, for face send ## type:string env:CFG_MODELS_NORM_CROP2X longopt:--models-norm-crop2x norm_crop2x = /usr/share/findface-data/models/facenorm/crop2x.v2_maxsize400.cpu.fnk ## path to cache directory ## type:string env:CFG_MODELS_CACHE_DIR longopt:--models-cache-dir cache_dir = /var/cache/findface/models_cache
Если вы выбрали пакет
findface-video-worker-gpu
с ускорением на GPU, используйте файл конфигурации/etc/findface-video-worker-gpu.ini
.## cuda device number ## type:number env:CFG_DEVICE_NUMBER longopt:--device-number device_number = 0 ## apply getprop patch ## type:bool env:CFG_PATCH_GETPROP longopt:--patch-getprop patch_getprop = false ## read streams from file, do not use VideoManager ## type:string env:CFG_INPUT longopt:--input input = ## exit on first finished job, only when --input specified ## type:bool env:CFG_EXIT_ON_FIRST_FINISHED longopt:--exit-on-first-finished exit_on_first_finished = false ## batch size ## type:number env:CFG_BATCH_SIZE longopt:--batch-size batch_size = 8 ## http server port for metrics, 0=do not start server ## type:number env:CFG_METRICS_PORT longopt:--metrics-port metrics_port = 0 ## resize scale, 1=do not resize ## type:double env:CFG_RESIZE_SCALE longopt:--resize-scale resize_scale = 1.000000 ## maximum number of streams ## type:number env:CFG_CAPACITY longopt:--capacity capacity = 30 ## command to obtain videomanager's grpc ip:port ## type:string env:CFG_MGR_CMD longopt:--mgr-cmd mgr_cmd = ## videomanager grpc ip:port ## type:string env:CFG_MGR_STATIC longopt:--mgr-static mgr_static = 127.0.0.1:18811 ## ntls server ip:port ## type:string env:CFG_NTLS_ADDR longopt:--ntls-addr ntls_addr = 127.0.0.1:3133 ## debug: save faces to dir ## type:string env:CFG_SAVE_DIR longopt:--save-dir save_dir = ## minimum face size ## type:number env:CFG_MIN_FACE_SIZE longopt:--min-face-size min_face_size = 60 ## preinit detector for specified resolutions: "640x480;1920x1080" ## type:string env:CFG_RESOLUTIONS longopt:--resolutions resolutions = ## worker labels: labels = k=v;group=enter ## type:string env:CFG_LABELS longopt:--labels labels = ## use timestamps from SEI packet ## type:bool env:CFG_USE_TIME_FROM_SEI longopt:--use-time-from-sei use_time_from_sei = false ## reader frame buffer size ## type:number env:CFG_FRAME_BUFFER_SIZE longopt:--frame-buffer-size frame_buffer_size = 128 ## skip count ## type:number env:CFG_SKIP_COUNT longopt:--skip-count skip_count = 0 #------------------------------ [streamer] #------------------------------ ## streamer/shots webserver port, 0=disabled ## type:number env:CFG_STREAMER_PORT longopt:--streamer-port port = 0 ## streamer url - how to access this worker on streamer_port ## type:string env:CFG_STREAMER_URL longopt:--streamer-url url = 127.0.0.1:9999 #------------------------------ [liveness] #------------------------------ ## path to liveness fnk ## type:string env:CFG_LIVENESS_FNK longopt:--liveness-fnk fnk = ## path to normalization for liveness ## type:string env:CFG_LIVENESS_NORM longopt:--liveness-norm norm = ## liveness internal algo param ## type:double env:CFG_LIVENESS_INTERVAL longopt:--liveness-interval interval = 1.000000 ## liveness internal algo param ## type:number env:CFG_LIVENESS_STDEV_CNT longopt:--liveness-stdev-cnt stdev_cnt = 1 #------------------------------ [send] #------------------------------ ## posting faces threads ## type:number env:CFG_SEND_THREADS longopt:--send-threads threads = 8 ## posting faces maximum queue size ## type:number env:CFG_SEND_QUEUE_LIMIT longopt:--send-queue-limit queue_limit = 256 #------------------------------ [tracker] #------------------------------ ## interpolate undetected bboxes in track ## type:bool env:CFG_TRACKER_INTERPOLATE_BBOXES longopt:--tracker-interpolate-bboxes interpolate_bboxes = true ## max face miss duration, sec ## type:double env:CFG_TRACKER_MISS_INTERVAL longopt:--tracker-miss-interval miss_interval = 1.000000 ## overlap threshold ## type:double env:CFG_TRACKER_OVERLAP_THRESHOLD longopt:--tracker-overlap-threshold overlap_threshold = 0.250000 #------------------------------ [models] #------------------------------ ## path to pedestrian detector fnk ## type:string env:CFG_MODELS_BODY_DETECTOR longopt:--models-body-detector body_detector = ## path to detector fnk ## type:string env:CFG_MODELS_DETECTOR longopt:--models-detector detector = /usr/share/findface-data/models/facedet/cheetah_fast.gpu.fnk ## path to quality fnk ## type:string env:CFG_MODELS_QUALITY longopt:--models-quality quality = /usr/share/findface-data/models/faceattr/quality.v0.gpu.fnk ## path to norm for quality fnk ## type:string env:CFG_MODELS_NORM_QUALITY longopt:--models-norm-quality norm_quality = /usr/share/findface-data/models/facenorm/bee_fast.gpu.fnk ## path to norm200 fnk, for face send ## type:string env:CFG_MODELS_NORM_200 longopt:--models-norm-200 norm_200 = /usr/share/findface-data/models/facenorm/bee.v2.gpu.fnk ## path to norm_crop2x fnk, for face send ## type:string env:CFG_MODELS_NORM_CROP2X longopt:--models-norm-crop2x norm_crop2x = /usr/share/findface-data/models/facenorm/crop2x.v2_maxsize400.gpu.fnk ## path to cache directory ## type:string env:CFG_MODELS_CACHE_DIR longopt:--models-cache-dir cache_dir = /var/cache/findface/models_cache #------------------------------ [video_decoder] #------------------------------ ## decode video on cpu ## type:bool env:CFG_VIDEO_DECODER_CPU longopt:--video-decoder-cpu cpu = false
Пользовательская настройка
findface-video-worker
на CPU/GPU выполняется с использованием следующих параметров:CPU GPU Описание ntls-addr
IP-адрес и порт сервера findface-ntls
.mgr-static
IP-адрес сервера findface-video-manager
, который обеспечиваетfindface-video-worker
настройками и списком видеопотоков для обработки.capacity
Максимальное количество видеопотоков, обрабатываемых findface-video-worker
.mgr-cmd
Команда для получения IP-адреса компонента findface-video-manager
(опционально вместоmgr-static
).labels
Метки, используемые для привязки экземпляра findface-video-worker
к определенной группе камер. См. Привязка группы камер к экземпляру findface-video-worker.streamer
->port
,url
IP-адрес и порт для доступа к видеостене. liveness
->fnk
Путь к детектору живых лиц (Liveness). liveness
->norm
Путь к нормализатору, используемому в детекторе живых лиц (Liveness). input
Обрабатывать видеопотоки из файла, игнорируя данные потоков, поступающие от findface-video-manager
.exit_on_first_finished
(Только если указан input
) Выйти после завершения первого job-задания.resize_scale
Масштабировать видеокадры с заданным коэффициентом. save_dir
(Для отладки) Сохранять обнаруженные лица в заданный каталог. min_face_size
Минимальный обнаруживаемый размер лица. Н/п device_number
Номер используемого GPU-устройства. Н/п models_dir
Старый каталог с моделями GPU-детектора. В противном случае используйте данные из секции [models]
.Н/п cpu
При необходимости декодировать видео на CPU.
Job-задания¶
Сервис findface-video-manager
выдает findface-video-worker
так называемое job-задание, задачу на обработку видео, которая содержит параметры конфигурации и сведения о видеопотоке.
Содержимое типичного job-задания показано в примере ниже.
curl http://127.0.0.1:18810/job/1 | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2045 100 2045 0 0 199k 0 --:--:-- --:--:-- --:--:-- 221k
[
{
"id": "ffsec_video_source",
"enabled": false,
"stream_url": "file:///var/lib/ffsecurity/uploads/videos/2.bin",
"labels": {
"camera_group_id": "1",
"camera_id": "0",
"video_source_id": "2"
},
"router_url": "http://127.0.0.1/video-detector/frame",
"single_pass": true,
"stream_settings": {
"ffmpeg_params": [],
"md_threshold": 0.002,
"md_scale": 0.3,
"fd_frame_height": -1,
"uc_max_time_diff": 30,
"uc_max_dup": 3,
"uc_max_avg_shift": 10,
"det_period": 8,
"realtime": false,
"npersons": 4,
"disable_drops": true,
"tracker_threads": 4,
"parse_sei": false,
"image_arg": "photo",
"additional_headers": [
"Authorization=Token 08ad0f283812584b731c62f7d14cb7d0"
],
"additional_body": [],
"api_timeout": 15000,
"api_ssl_verify": true,
"post_uniq": true,
"min_score": -2,
"min_d_score": -1000,
"realtime_dly": 500,
"realtime_post_perm": false,
"rot": "",
"roi": "",
"draw_track": false,
"send_track": 0,
"min_face_size": 0,
"max_face_size": 0,
"overall": true,
"only_norm": false,
"max_candidates": 0,
"jpeg_quality": 95,
"ffmpeg_format": ""
},
"stream_settings_gpu": {
"play_speed": -1,
"filter_min_quality": -2,
"filter_min_face_size": 1,
"filter_max_face_size": 8192,
"normalized_only": false,
"jpeg_quality": 95,
"overall_only": false,
"use_stream_timestamp": false,
"ffmpeg_params": [],
"router_timeout_ms": 15000,
"router_verify_ssl": true,
"router_headers": [
"Authorization=Token 08ad0f283812584b731c62f7d14cb7d0"
],
"router_body": [],
"start_stream_timestamp": 0,
"imotion_threshold": 0,
"rot": "",
"roi": "",
"realtime_post_interval": 1,
"realtime_post_every_interval": true,
"ffmpeg_format": "",
"disable_drops": true,
"router_full_frame_png": false,
"router_disable_normalized": false,
"crop_fullframe_rot": false,
"realtime_post_first_immediately": false
},
"status": "DISABLED",
"status_msg": "",
"statistic": {
"processed_duration": 0,
"faces_posted": 0,
"faces_failed": 0,
"faces_not_posted": 0,
"processing_fps": 0,
"frames_dropped": 0,
"frames_processed": 0,
"frames_imotion_skipped": 0,
"decoding_soft_errors": 0,
"job_starts": 0
},
"restream_url": "ws://127.0.0.1:18999/stream/ffsec_video_source",
"shots_url": "http://127.0.0.1:18999/shot/ffsec_video_source",
"worker_id": "",
"version": "brb4165r6c59llrq2a40"
}
]
Каждое job-задание имеет следующие параметры:
id
: id job-задания.enabled
: статус активности.stream_url
: URL/адрес видеопотока или файла для обработки.labels
: метки, по которым будет осуществляться обработка обнаруженных лиц в компонентеfindface-facerouter
(findface-security
в стандартной конфигурации FindFace Security).single_pass
: если true (по умолчанию false), то не перезапускать обработку потока в случае ошибки.router_url
: IP-адрес и порт компонентаfindface-facerouter
(findface-security
в стандартной конфигурации FindFace Security), в который компонентfindface-video-worker
отправляет обнаруженные лица для последующей обработки.stream_settings
: используется только для обратной совместимости.stream_settings_gpu
: параметры видеопотока, дублирующие параметры в файле конфигурацииfindface-video-manager
(обладая при этом приоритетом).status
: статус job-задания.status_msg
: дополнительная информация о статусе job-задания.statistic
: статистика выполнения job-задания (продолжительность процесса обработки, количество отправленных и неотправленных лиц, кадровая частота обработки, количество обработанных и пропущенных кадров, время начала обработки и т. д.).worker_id
: id экземпляраfindface-video-worker
, выполняющего job-задание.