Распознавание лиц и их атрибутов

FindFace Multi позволяет распознавать человеческие лица и атрибуты лиц. Поддерживается распознавание таких атрибутов лица, как возраст, пол, эмоции, борода, очки, медицинские маски, положение головы, витальность.

Распознавание лиц и их атрибутов можно автоматически включить и настроить в ходе установки FindFace Multi. Если этот шаг был пропущен при установке, можно впоследствии выполнить настройку вручную. Распознавание лиц и атрибутов лиц работает как на GPU-, так и на CPU-ускорении.

Распознавание объекта лицо включено по умолчанию. Если во время установки FindFace Multi вы удалили распознавание объекта лицо, можно добавить его позже, следуя пошаговой инструкции ниже. Если распознавание лица уже установлено, и вам нужно только включить распознавание атрибутов лица, перейдите к шагам 1.5, 1.6 и 4.1, 4.2. Другие шаги следует пропустить.

  1. Чтобы включить распознавание лиц, выполните следующее:

    В файле конфигурации /opt/findface-multi/configs/findface-extraction-api/findface-extraction-api.yaml укажите модели нейронных сетей для распознавания объекта лицо и его атрибутов.

    Важно

    Удостоверьтесь, что для каждой модели вы указали правильный тип ускорения CPU или GPU: он должен совпадать с типом ускорения findface-extraction-api. Обратите внимание, что findface-extraction-api на CPU может работать только с CPU-моделями, в то время как findface-extraction-api на GPU поддерживает как GPU-, так и CPU-модели.

    1. Откройте файл конфигурации findface-extraction-api.yaml.

      sudo vi /opt/findface-multi/configs/findface-extraction-api/findface-extraction-api.yaml
      
    2. Укажите модель детектора лиц в разделе detectors -> models, вставив следующий код:

      GPU

      detectors:
      
        ...
        models:
          ...
          face_jasmine:
            aliases:
            - face
            - nnd
            - cheetah
            model: detector/face.jasmine_fast.003.gpu.fnk
            options:
              min_object_size: 32
              resolutions:
              - 256x256
              - 384x384
              - 512x512
              - 768x768
              - 1024x1024
              - 1536x1536
              - 2048x2048
      
        ...
      

      CPU

      detectors:
      
        ...
        models:
          ...
          face_jasmine:
            aliases:
            - face
            - nnd
            - cheetah
            model: detector/face.jasmine_fast.003.cpu.fnk
            options:
              min_object_size: 32
              resolutions:
              - 256x256
              - 384x384
              - 512x512
              - 768x768
              - 1024x1024
              - 1536x1536
              - 2048x2048
      
        ...
      
    3. Убедитесь, что раздел objects -> face содержит quality_attribute: face_quality и, в зависимости от вашего типа ускорения, base_normalizer: facenorm/crop2x.v2_maxsize400.gpu.fnk или base_normalizer: facenorm/crop2x.v2_maxsize400.cpu.fnk:

      GPU

      objects:
        ...
        face:
          base_normalizer: facenorm/crop2x.v2_maxsize400.gpu.fnk
          quality_attribute: face_quality
        ...
      

      CPU

      objects:
        ...
        face:
          base_normalizer: facenorm/crop2x.v2_maxsize400.cpu.fnk
          quality_attribute: face_quality
        ...
      
    4. В разделе normalizers укажите модели нормализаторов лица, вставив следующий код:

      GPU

      normalizers:
        ...
        models:
          crop1x:
            model: facenorm/crop1x.v2_maxsize400.gpu.fnk
          crop2x:
            model: facenorm/crop2x.v2_maxsize400.gpu.fnk
          cropbbox:
            model: facenorm/cropbbox.v2.gpu.fnk
          multicrop_full_center:
            model: ''
          multicrop_full_crop2x:
            model: facenorm/facenorm.multicrop_full_crop2x_size400.gpu.fnk
          norm200:
            model: facenorm/bee.v3.gpu.fnk
        ...
      

      CPU

      normalizers:
        ...
        models:
          crop1x:
            model: facenorm/crop1x.v2_maxsize400.cpu.fnk
          crop2x:
            model: facenorm/crop2x.v2_maxsize400.cpu.fnk
          cropbbox:
            model: facenorm/cropbbox.v2.cpu.fnk
          multicrop_full_center:
            model: ''
          multicrop_full_crop2x:
            model: facenorm/facenorm.multicrop_full_crop2x_size400.cpu.fnk
          norm200:
            model: facenorm/bee.v3.cpu.fnk
        ...
      
    5. Примечание

      Необходимо выполнить этот шаг для включения распознавания атрибутов лица.

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

      В файле конфигурации /opt/findface-multi/configs/findface-extraction-api/findface-extraction-api.yaml укажите модели для экстракции векторов признаков в разделе extractors, как показано в примере ниже. Удостоверьтесь, что для каждой модели вы указали правильный тип ускорения CPU или GPU: он должен совпадать с типом ускорения findface-extraction-api.

      GPU

      extractors:
        ...
        models:
          face_age: faceattr/age.v2.gpu.fnk
          face_beard: faceattr/beard.v0.gpu.fnk
          face_beard4: ''
          face_countries47: ''
          face_emben: face/mango_320.gpu.fnk
          face_emotions: faceattr/emotions.v1.gpu.fnk
          face_eyes_attrs: ''
          face_eyes_openness: ''
          face_gender: faceattr/gender.v2.gpu.fnk
          face_glasses3: faceattr/glasses3.v0.gpu.fnk
          face_glasses4: ''
          face_hair: ''
          face_headpose: faceattr/headpose.v3.gpu.fnk
          face_headwear: ''
          face_highlight: ''
          face_liveness: faceattr/liveness.web.v0.gpu.fnk
          face_luminance_overexposure: ''
          face_luminance_underexposure: ''
          face_luminance_uniformity: ''
          face_medmask3: faceattr/medmask3.v2.gpu.fnk
          face_medmask4: ''
          face_mouth_attrs: ''
          face_quality: faceattr/quality_fast.v1.gpu.fnk
          face_scar: ''
          face_sharpness: ''
          face_tattoo: ''
          face_validity: ''
      

      CPU

      extractors:
        ...
        models:
          face_age: faceattr/age.v2.cpu.fnk
          face_beard: faceattr/beard.v0.cpu.fnk
          face_beard4: ''
          face_countries47: ''
          face_emben: face/mango_320.cpu.fnk
          face_emotions: faceattr/emotions.v1.cpu.fnk
          face_eyes_attrs: ''
          face_eyes_openness: ''
          face_gender: faceattr/gender.v2.cpu.fnk
          face_glasses3: faceattr/glasses3.v0.cpu.fnk
          face_glasses4: ''
          face_hair: ''
          face_headpose: faceattr/headpose.v3.cpu.fnk
          face_headwear: ''
          face_highlight: ''
          face_liveness: faceattr/liveness.web.v0.cpu.fnk
          face_luminance_overexposure: ''
          face_luminance_underexposure: ''
          face_luminance_uniformity: ''
          face_medmask3: faceattr/medmask3.v2.cpu.fnk
          face_medmask4: ''
          face_mouth_attrs: ''
          face_quality: faceattr/quality_fast.v1.cpu.fnk
          face_scar: ''
          face_sharpness: ''
          face_tattoo: ''
          face_validity: ''
      

      Доступны следующие модели экстракторов:

      Экстрактор

      Ускорение

      Настройка

      возраст

      CPU

      face_age: faceattr/age.v2.cpu.fnk

      GPU

      face_age: faceattr/age.v2.gpu.fnk

      борода

      CPU

      face_beard: faceattr/beard.v0.cpu.fnk

      GPU

      face_beard: faceattr/beard.v0.gpu.fnk

      вектор признаков объекта лицо

      CPU

      face_emben: face/mango_320.cpu.fnk

      GPU

      face_emben: face/mango_320.gpu.fnk

      пол

      CPU

      face_gender: faceattr/gender.v2.cpu.fnk

      GPU

      face_gender: faceattr/gender.v2.gpu.fnk

      эмоции

      CPU

      face_emotions: faceattr/emotions.v1.cpu.fnk

      GPU

      face_emotions: faceattr/emotions.v1.gpu.fnk

      очки

      CPU

      face_glasses3: faceattr/glasses3.v0.cpu.fnk

      GPU

      face_glasses3: faceattr/glasses3.v0.gpu.fnk

      положение головы

      CPU

      face_headpose: faceattr/headpose.v3.cpu.fnk

      GPU

      face_headpose: faceattr/headpose.v3.gpu.fnk

      витальность лица

      CPU

      face_liveness: faceattr/liveness.web.v0.cpu.fnk

      GPU

      face_liveness: faceattr/liveness.web.v0.gpu.fnk

      медицинская маска

      CPU

      face_medmask3: faceattr/medmask3.v2.cpu.fnk

      GPU

      face_medmask3: faceattr/medmask3.v2.gpu.fnk

      качество изображения лица

      CPU

      face_quality: faceattr/quality_fast.v1.cpu.fnk

      GPU

      face_quality: faceattr/quality_fast.v1.gpu.fnk

      Совет

      Для того чтобы отключить модель распознавания, передайте в соответствующий параметр пустое значение ''. Не удаляйте сам параметр, поскольку в этом случае будет выполняться поиск модели по умолчанию.

      extractors:
        face_age: ''
        face_beard: ''
        face_beard4: ''
        face_countries47: ''
        face_emben: ''
        face_emotions: ''
        face_eyes_attrs: ''
        face_eyes_openness: ''
        face_gender: ''
        face_glasses3: ''
        face_glasses4: ''
        face_hair: ''
        face_headpose: ''
        face_headwear: ''
        face_highlight: ''
        face_liveness: ''
        face_luminance_overexposure: ''
        face_luminance_underexposure: ''
        face_luminance_uniformity: ''
        face_medmask3: ''
        face_medmask4: ''
        face_mouth_attrs: ''
        face_quality: ''
        face_scar: ''
        face_sharpness: ''
        face_tattoo: ''
        face_validity: ''
      

      Важно

      Модель экстрактора для определения витальности лица liveness.web.v0 включена по умолчанию. Не выключайте ее, если используется аутентификация по лицу пользователя.

    6. Перезапустите контейнер findface-multi-findface-extraction-api-1.

      sudo docker container restart findface-multi-findface-extraction-api-1
      
  2. Чтобы включить распознавание лиц, внесите изменения в конфигурационный файл /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml.

    1. В разделе models укажите модели нейронных сетей для объекта face по аналогии с примером:

      GPU

      sudo vi /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml
      
      models:
        ...
        detectors:
          ...
          face:
            fnk_path: /usr/share/findface-data/models/detector/face.jasmine_fast.003.gpu.fnk
            min_size: 60
          ...
        normalizers:
          ...
          face_norm:
            fnk_path: /usr/share/findface-data/models/facenorm/crop2x.v2_maxsize400.gpu.fnk
          face_norm_quality:
            fnk_path: /usr/share/findface-data/models/facenorm/crop1x.v2_maxsize400.gpu.fnk
          ...
        extractors:
          ...
          face_quality:
            fnk_path: /usr/share/findface-data/models/faceattr/quality_fast.v1.gpu.fnk
            normalizer: face_norm_quality
      

      CPU

      sudo vi /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml
      
      models:
        ...
        detectors:
          ...
          face:
            fnk_path: /usr/share/findface-data/models/detector/face.jasmine_fast.003.cpu.fnk
            min_size: 60
          ...
        normalizers:
          ...
          face_norm:
            fnk_path: /usr/share/findface-data/models/facenorm/crop2x.v2_maxsize400.cpu.fnk
          face_norm_quality:
            fnk_path: /usr/share/findface-data/models/facenorm/crop1x.v2_maxsize400.cpu.fnk
          ...
        extractors:
          ...
          face_quality:
            fnk_path: /usr/share/findface-data/models/faceattr/quality_fast.v1.cpu.fnk
            normalizer: face_norm_quality
      
    2. Убедитесь, что добавлен раздел objects -> face:

      objects:
        ...
        face:
          normalizer: face_norm
          quality: face_quality
          track_features: ''
      
    3. Перезапустите контейнер findface-multi-findface-video-worker-1.

      sudo docker container restart findface-multi-findface-video-worker-1
      
  3. Для включения распознавания лиц, откройте файл конфигурации /opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml и убедитесь, что он содержит раздел face в detectors, аналогичный приведенному ниже.

    sudo vi /opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml
    
    detectors:
      ...
      face:
        filter_min_quality: 0.5
        filter_min_size: 60
        filter_max_size: 8192
        roi: ''
        fullframe_crop_rot: false
        fullframe_use_png: false
        jpeg_quality: 95
        overall_only: true
        realtime_post_first_immediately: false
        realtime_post_interval: 1
        realtime_post_every_interval: false
        track_interpolate_bboxes: true
        track_miss_interval: 1
        track_overlap_threshold: 0.25
        track_max_duration_frames: 0
        track_send_history: false
        post_best_track_frame: true
        post_best_track_normalize: true
        post_first_track_frame: false
        post_last_track_frame: false
        tracker_type: simple_iou
        track_deep_sort_matching_threshold: 0.65
        track_deep_sort_filter_unconfirmed_tracks: true
        track_object_is_principal: false
        track_history_active_track_miss_interval: 0
    
  4. Примечание

    Необходимо выполнить этот шаг для включения распознавания атрибутов лица.

    Включите распознавание атрибутов лица в файле конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py.

    1. В разделе FFSECURITY укажите атрибуты лица, которые требуется отображать в событиях распознавания.

      # available features: age, beard, emotions, gender, glasses, headpose, medmask
      'FACE_EVENTS_FEATURES': ['glasses', 'beard', 'age', 'gender', 'headpose', 'medmask', 'emotions'],
      
    2. Выполните перезапуск контейнеров FindFace Multi.

      cd /opt/findface-multi/
      
      sudo docker-compose restart