Видеодетекция лиц: 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, детектор лиц выбирает лучшее изображение лица динамически:
    1. Сначала оценивается качество изображения лица. Если оно превышает некое предустановленное пороговое значение, то лицо отправляется в findface-facerouter.
    2. Порог повышается после каждой отправки изображения лица в findface-facerouter. Каждый раз, когда детектор лиц получает изображение того же лица лучшего качества, оно отправляется.
    3. При исчезновении лица из поля зрения видеокамеры снова устанавливается пороговое значение по умолчанию.
  • Если realtime_post_first_immediately: true, детектор лиц отправляет самый первый кадр непосредственно после появления лица в поле зрения видеокамеры. Последующие отправки зависят от значения realtime_post_every_interval.

Буферный режим

Буферный режим требует меньший объем дискового пространства по сравнению с режимом реального времени, поскольку для каждого лица компонент findface-video-worker отправляет только одно изображение из трека, но наивысшего качества.

Буферный режим включается через параметр overall_only (см. /etc/findface-video-manager.conf и Добавление камеры).

Настройка видеодетекции лиц

Настройка видеодетектора лиц выполняется через следующие файлы конфигурации:

  1. Файл конфигурации компонента 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.
  1. Если вы выбрали пакет 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-задание.