Видеодетекция лиц: 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-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 на лету после появления лица в поле зрения видеокамеры. Доступны следующие опции отправки (см. /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_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/.Вы также можете использовать следующие параметры:
Примечание
В разделе файла
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-addrIP-адрес и порт сервера findface-ntls.mgr-staticIP-адрес сервера 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,urlIP-адрес и порт для доступа к видеостене. 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-задание.