Видеодетекция лиц: 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-задания, имеют больший приоритет, чем аналогичные параметры в файле конфигурации /etc/findface-video-manager.conf
.
Для работы 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 функции 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
: детектор лиц отправляет первое лицо из трека сразу после того, как оно пройдет через фильтры качества, размера и региона захвата (ROI), не дожидаясь окончания первогоrealtime_post_interval
в режиме реального времени. Способ отправки последующих изображений лица зависит от установленного значенияrealtime_post_every_interval
. Еслиrealtime_post_first_immediately: false
, детектор лиц отправляет первое лицо после окончания первогоrealtime_post_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: 0.45 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: false ffmpeg_format: '' disable_drops: false router_full_frame_png: false router_disable_normalized: false crop_fullframe_rot: false realtime_post_first_immediately: false post_first_track_frame: false post_last_track_frame: false track_max_duration_frames: 0 send_track_history: false stream_data_filter: ''
Пользовательская настройка
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 функцииfindface-facerouter
выполняет компонентfindface-security
. Значение по умолчанию:http://127.0.0.1:18820/v0/frame
.Вы также можете использовать следующие параметры:
Примечание
В разделе файла
stream_settings-gpu
вы найдете настройки, общие для всех видеопотоков. Настройки в данном разделе работают как в GPU, так и CPU-конфигурации. Настройки определенного потока, переданные в job-задании, имеют приоритет над настройками в файле конфигурации (см. Job-задания).Примечание
Раздел
stream_settings
файла устарел и необходим только для обратной совместимости.
Опция
Описание
crop_fullframe_rot
Обрезать отправляемые полные кадры по ROT (региону отслеживания). Значение по умолчанию: false.
disable_drops
Включает/отключает отправку в компонент
findface-facerouter
всех подходящих лиц без пропусков. По умолчанию, еслиfindface-video-worker
не обладает достаточными ресурсами для обработки всех кадров с лицами, он отбрасывает некоторые из них. Если данная опция активна,findface-video-worker
помещает лишние кадры в очередь, чтобы обработать их впоследствии. Значение по умолчанию: false.
ffmpeg_format
Передает формат FFMPEG (mxg, flv и т. д.), если он не может быть автоматически определен.
ffmpeg_params
Список ffmpeg-параметров видеопотока со значениями в виде массива ключ=значение: [“rtsp_transpotr=tcp”, .., “ss=00:20:00”]. Полный список параметров на сайте FFMPEG. Значение по умолчанию: параметры не указаны.
filter_max_face_size
Определяет максимальный размер лица в пикселях. Лица большего размера не отправляются. Значение по умолчанию: 8192.
filter_min_face_size
Определяет минимальный размер лица в пикселях. Лица меньшего размера не отправляются. Значение по умолчанию: 1.
filter_min_quality
Минимальное пороговое значение качества изображения лица. Значение по умолчанию: 0.45. Не меняйте значение по умолчанию без предварительной консультации с нашими техническими экспертами (support@ntechlab.com).
imotion_threshold
Минимальная интенсивность движения, которая будет регистрироваться детектором движения. Пороговое значение определяется эмпирически. Реперные точки: 0 = детектор выключен, 0.002 = значение по умолчанию, 0.05 = минимальная интенсивность слишком высока, чтобы зарегистрировать движение.
jpeg_quality
Качество сжатия исходного кадра в JPEG. Значение по умолчанию: 95 % от исходного размера.
normalized_only
Включает/отключает отправку только нормализованных лиц без исходных кадров. Значение по умолчанию: false.
overall_only
Буферный режим. Отправлять для лица один кадр наилучшего качества. Значение по умолчанию: true.
play_speed
Если меньше нуля, то скорость не ограничивается. В остальных случаях поток читается со скоростью
play_speed
. Не применимо для потоков с камер видеонаблюдения.
post_first_track_frame
Отправлять первый кадр трека. Значение по умолчанию: false.
post_last_track_frame
Отправлять последний кадр трека. Значение по умолчанию: false.
realtime_post_every_interval
Только для режима реального времени. Включает отправку лучшего кадра в течение периода времени
realtime_post_interval
. Если false, лучший кадр ищется динамически в порядке возрастания качества. Значение по умолчанию: false.
realtime_post_first_immediately
Отправлять лицо сразу после его появления в поле зрения видеокамеры (режим реального времени). Значение по умолчанию: false.
realtime_post_interval
Только для режима реального времени. Период времени в секундах, в течение которого детектор лиц выбирает лучший кадр из трека и отправляет его в компонент
findface-facerouter
. Значение по умолчанию: 1.
router_body
Массив дополнительных полей в POST-запросе с изображением лица в формате [“ключ=значение”]. По умолчанию дополнительные поля не передаются.
roi
Включает отправку на Сервер лиц, обнаруженных только внутри интересующей области WxH+X+Y. По умолчанию область не задана.
rot
Включает детектирование и отслеживание лиц только внутри заданной прямоугольной области WxH+X+Y. Используйте данную опцию, чтобы уменьшить нагрузку на
findface-video-worker
. По умолчанию область не задана.
router_disable_normalized
Отправлять только полные кадры без нормализованных изображений. Не включайте этот параметр, не посоветовавшись с нашей командой, так как он может повлиять на работу всей системы. Значение по умолчанию: false (отправка как полных кадров, так и нормализованных изображений).
router_full_frame_png
Отправлять полные кадры в формате PNG, а не в формате JPEG, как установлено по умолчанию. Не включайте этот параметр, не посоветовавшись с нашей командой, так как он может повлиять на работу всей системы. Значение по умолчанию: false (отправлять в формате JPEG).
router_headers
Массив дополнительных заголовков в POST-запросе с изображением лица в формате [“ключ=значение”]. По умолчанию дополнительные заголовки не передаются.
router_timeout_ms
Время ожидания в миллисекундах ответа от компонента
findface-facerouter
(findface-security
в стандартной конфигурации ПК FindFace) на API-запрос компонентаfindface-video-worker
. Если время ожидания истекло, регистрируется ошибка. Значение по умолчанию: 15000.
router_verify_ssl
Включает/отключает проверку подписи SSL-сертификата при взаимодействии по https
findface-video-worker
с компонентомfindface-facerouter
(findface-security
в стандартной конфигурации ПК FindFace). Значение по умолчанию: true. Если false, может быть принят самоподписанный сертификат.
send_track_history
Отправлять историю трека. Значение по умолчанию: false.
start_stream_timestamp
Прибавлять указанное количество секунд к временным меткам из потока.
use_stream_timestamp
Если true, отправлять на сервер временные метки полученные из потока. Если 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 = ## use `resolutions` as only possible values, others will rescale ## type:bool env:CFG_STRICT_RESOLUTIONS longopt:--strict-resolutions strict_resolutions = false ## 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 ## use tracks instead detects for streamer ## type:bool env:CFG_STREAMER_TRACKS longopt:--streamer-tracks tracks = false ## use tracks with lastFrameId=currentFrameId (.tracks must be true) ## type:bool env:CFG_STREAMER_TRACKS_LAST longopt:--streamer-tracks-last tracks_last = false #------------------------------ [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 #------------------------------ [imotion] #------------------------------ ## use shared decoder for imotion (experimental) ## type:bool env:CFG_IMOTION_SHARED_DECODER longopt:--imotion-shared-decoder shared_decoder = false #------------------------------ [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.v1.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 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 ## 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 = ## use `resolutions` as only possible values, others will rescale ## type:bool env:CFG_STRICT_RESOLUTIONS longopt:--strict-resolutions strict_resolutions = false ## 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 = 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 ## use tracks instead detects for streamer ## type:bool env:CFG_STREAMER_TRACKS longopt:--streamer-tracks tracks = false ## use tracks with lastFrameId=currentFrameId (.tracks must be true) ## type:bool env:CFG_STREAMER_TRACKS_LAST longopt:--streamer-tracks-last tracks_last = false #------------------------------ [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 #------------------------------ [imotion] #------------------------------ ## use shared decoder for imotion (experimental) ## type:bool env:CFG_IMOTION_SHARED_DECODER longopt:--imotion-shared-decoder shared_decoder = false #------------------------------ [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.v1.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 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
Описание
batch_size
Отправлять лица в пакетах указанного размера.
capacity
Максимальное количество видеопотоков, обрабатываемых
findface-video-worker
.Н/п
cpu
При необходимости декодировать видео на CPU.
Н/п
device_number
Номер используемого GPU-устройства.
exit_on_first_finished
(Только если указан
input
) Выйти после завершения первого job-задания.input
Обрабатывать видеопотоки из файла, игнорируя данные потоков, поступающие от
findface-video-manager
.labels
Метки, используемые для привязки экземпляра
findface-video-worker
к определенной группе камер. См. Привязка группы камер к экземпляру findface-video-worker.liveness
->fnk
Путь к детектору живых лиц (Liveness).
liveness
->norm
Путь к нормализатору, используемому в детекторе живых лиц (Liveness).
mgr-cmd
Команда для получения IP-адреса компонента
findface-video-manager
(опционально вместоmgr-static
).mgr-static
IP-адрес сервера
findface-video-manager
, который обеспечиваетfindface-video-worker
настройками и списком видеопотоков для обработки.metrics_port
Порт HTTP-сервера для отправки метрик. Если 0, метрики не отправляются.
min_face_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).
Job-задания
Сервис findface-video-manager
выдает findface-video-worker
так называемое job-задание, задачу на обработку видео, которая содержит параметры конфигурации и сведения о видеопотоке.
Существует 2 типа job-заданий:
камера:
curl http://127.0.0.1:18810/job/ffsec-camera:22 | jq { "id": "ffsec-camera:22", "enabled": true, "stream_url": "rtsp://ntech:[email protected]:654/000000010000babe0000accc8e9e3a58/live", "labels": {}, "router_url": "http://127.0.0.1/video-detector/frame", "single_pass": false, "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": 0.45, "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 7db297c4107518b52b4e2195b72c5947" ], "router_body": [], "start_stream_timestamp": 0, "imotion_threshold": 0, "rot": "", "roi": "", "realtime_post_interval": 1, "realtime_post_every_interval": false, "ffmpeg_format": "", "disable_drops": false, "router_full_frame_png": false, "router_disable_normalized": false, "crop_fullframe_rot": false, "realtime_post_first_immediately": false }, "status": "INPROGRESS", "status_msg": "", "statistic": { "processed_duration": 5729.5728, "faces_posted": 43, "faces_failed": 0, "faces_not_posted": 0, "processing_fps": 15.589469, "frames_dropped": 0, "frames_processed": 87121, "frames_imotion_skipped": 0, "decoding_soft_errors": 0, "frame_width": 1920, "frame_height": 1200, "job_starts": 1 }, "restream_url": "ws://127.0.0.1:18999/stream/ffsec-camera:22", "shots_url": "http://127.0.0.1:18999/shot/ffsec-camera:22", "worker_id": "tevmenova-ntechlab_gpu_2a1fd5290195670b689d8e01e93b673c", "version": "bt1s8kjm51nv2hqc4qg0"
видеоархив:
curl http://127.0.0.1:18810/job/ffsec-video-archive:1 | jq % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2094 0 2094 0 0 2044k 0 --:--:-- --:--:-- --:--:-- 2044k { "id": "ffsec-video-archive:1", "enabled": true, "stream_url": "file:///var/lib/findface-security/uploads/videos/1.bin", "labels": { "camera_group_id": "1", "camera_id": "" }, "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": 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": 0.45, "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 7db297c4107518b52b4e2195b72c5947" ], "router_body": [], "start_stream_timestamp": 0, "imotion_threshold": 0, "rot": "", "roi": "", "realtime_post_interval": 1, "realtime_post_every_interval": false, "ffmpeg_format": "", "disable_drops": true, "router_full_frame_png": false, "router_disable_normalized": false, "crop_fullframe_rot": false, "realtime_post_first_immediately": false }, "status": "INPROGRESS", "status_msg": "", "statistic": { "processed_duration": 291, "faces_posted": 335, "faces_failed": 0, "faces_not_posted": 0, "processing_fps": 359.69928, "frames_dropped": 0, "frames_processed": 8731, "frames_imotion_skipped": 0, "decoding_soft_errors": 0, "frame_width": 1280, "frame_height": 720, "job_starts": 1 }, "restream_url": "ws://127.0.0.1:18999/stream/ffsec-video-archive:1", "shots_url": "http://127.0.0.1:18999/shot/ffsec-video-archive:1", "worker_id": "tevmenova-ntechlab_gpu_2a1fd5290195670b689d8e01e93b673c", "version": "bt1tm3bm51nv2hqc4qh0"
Каждое job-задание имеет следующие параметры:
id
: id job-задания.enabled
: статус активности.stream_url
: URL/адрес видеопотока или файла для обработки.labels
: метки, по которым будет осуществляться обработка обнаруженных лиц в компонентеfindface-facerouter
(findface-security
в стандартной конфигурации ПК FindFace).single_pass
: если true (по умолчанию false), то не перезапускать обработку потока в случае ошибки.router_url
: IP-адрес и порт компонентаfindface-facerouter
(findface-security
в стандартной конфигурации ПК FindFace), в который компонентfindface-video-worker
отправляет обнаруженные лица для последующей обработки.stream_settings
: используется только для обратной совместимости.stream_settings_gpu
: параметры видеопотока, дублирующие параметры в файле конфигурации/etc/findface-video-manager.conf
(обладая при этом большим приоритетом).status
: статус job-задания.status_msg
: дополнительная информация о статусе job-задания.statistic
: статистика выполнения job-задания (продолжительность процесса обработки, количество отправленных и неотправленных лиц, кадровая частота обработки, количество обработанных и пропущенных кадров, время начала обработки и т. д.).worker_id
: id экземпляраfindface-video-worker
, выполняющего job-задание.