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

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

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

Распознавание объекта лицо включено по умолчанию. Если во время установки FindFace Multi вы удалили распознавание объекта лицо, можно добавить его позже, следуя пошаговой инструкции ниже. Если распознавание лица уже установлено, и вам нужно только включить распознавание атрибутов лица, перейдите к шагам 1.5, 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/facedet.kali.005.gpu.fnk
              options:
                min_object_size: 32
                resolutions:
                - 2048x2048
        ...
      

      CPU

      detectors:
        ...
          models:
            face_jasmine:
              aliases:
              - face
              - nnd
              - cheetah
              model: detector/facedet.kali.005.cpu.fnk
              options:
                min_object_size: 32
                resolutions:
                - 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:
            default:
              model: faceattr/faceattr.age.v3.gpu.fnk
          face_beard:
            default:
              model: faceattr/beard.v0.gpu.fnk
          face_beard4:
            default:
              model: ''
          face_countries47:
            default:
              model: ''
          face_emben:
            default:
              model: face/nectarine_l_320.gpu.fnk
          face_emotions:
            default:
              model: faceattr/emotions.v1.gpu.fnk
          face_eyes_attrs:
            default:
              model: faceattr/faceattr.eyes_attrs.v0.gpu.fnk
          face_eyes_openness:
            default:
              model: ''
          face_gender:
            default:
              model: faceattr/faceattr.gender.v3.gpu.fnk
          face_glasses3:
            default:
              model: ''
          face_glasses4:
            default:
              model: faceattr/faceattr.glasses4.v0.gpu.fnk
          face_hair:
            default:
              model: ''
          face_headpose:
            default:
              model: faceattr/headpose.v3.gpu.fnk
          face_headwear:
            default:
              model: ''
          face_highlight:
            default:
              model: ''
          face_liveness:
            default:
              model: faceattr/faceattr.liveness_web.v1.gpu.fnk
          face_luminance_overexposure:
            default:
              model: ''
          face_luminance_underexposure:
            default:
              model: ''
          face_luminance_uniformity:
            default:
              model: ''
          face_medmask3:
            default:
              model: faceattr/medmask3.v2.gpu.fnk
          face_medmask4:
            default:
              model: ''
          face_mouth_attrs:
            default:
              model: ''
          face_quality:
            default:
              model: faceattr/faceattr.quality.v5.gpu.fnk
          face_scar:
            default:
              model: ''
          face_sharpness:
            default:
              model: ''
          face_tattoo:
            default:
              model: ''
          face_validity:
            default:
              model: ''
      

      CPU

      extractors:
        ...
        models:
          face_age:
            default:
              model: faceattr/faceattr.age.v3.cpu.fnk
          face_beard:
            default:
              model: faceattr/beard.v0.cpu.fnk
          face_beard4:
            default:
              model: ''
          face_countries47:
            default:
              model: ''
          face_emben:
            default:
              model: face/nectarine_l_320.cpu.fnk
          face_emotions:
            default:
              model: faceattr/emotions.v1.cpu.fnk
          face_eyes_attrs:
            default:
              model: faceattr/faceattr.eyes_attrs.v0.cpu.fnk
          face_eyes_openness:
            default:
              model: ''
          face_gender:
            default:
              model: faceattr/faceattr.gender.v3.cpu.fnk
          face_glasses3:
            default:
              model: ''
          face_glasses4:
            default:
              model: faceattr/faceattr.glasses4.v0.cpu.fnk
          face_hair:
            default:
              model: ''
          face_headpose:
            default:
              model: faceattr/headpose.v3.cpu.fnk
          face_headwear:
            default:
              model: ''
          face_highlight:
            default:
              model: ''
          face_liveness:
            default:
              model: faceattr/faceattr.liveness_web.v1.cpu.fnk
          face_luminance_overexposure:
            default:
              model: ''
          face_luminance_underexposure:
            default:
              model: ''
          face_luminance_uniformity:
            default:
              model: ''
          face_medmask3:
            default:
              model: faceattr/medmask3.v2.cpu.fnk
          face_medmask4:
            default:
              model: ''
          face_mouth_attrs:
            default:
              model: ''
          face_quality:
            default:
              model: faceattr/faceattr.quality.v5.cpu.fnk
          face_scar:
            default:
              model: ''
          face_sharpness:
            default:
              model: ''
          face_tattoo:
            default:
              model: ''
          face_validity:
            default:
              model: ''
      

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

      Экстрактор

      Ускорение

      Настройка

      возраст

      CPU

      face_age: faceattr/faceattr.age.v3.cpu.fnk

      GPU

      face_age: faceattr/faceattr.age.v3.gpu.fnk

      борода

      CPU

      face_beard: faceattr/beard.v0.cpu.fnk

      GPU

      face_beard: faceattr/beard.v0.gpu.fnk

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

      CPU

      face_emben: face/nectarine_l_320.cpu.fnk

      GPU

      face_emben: face/nectarine_l_320.gpu.fnk

      пол

      CPU

      face_gender: faceattr/faceattr.gender.v3.cpu.fnk

      GPU

      face_gender: faceattr/faceattr.gender.v3.gpu.fnk

      эмоции

      CPU

      face_emotions: faceattr/emotions.v1.cpu.fnk

      GPU

      face_emotions: faceattr/emotions.v1.gpu.fnk

      очки

      CPU

      face_glasses3: faceattr/faceattr.glasses4.v0.cpu.fnk

      GPU

      face_glasses3: faceattr/faceattr.glasses4.v0.gpu.fnk

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

      CPU

      face_headpose: faceattr/headpose.v3.cpu.fnk

      GPU

      face_headpose: faceattr/headpose.v3.gpu.fnk

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

      CPU

      face_liveness: faceattr/faceattr.liveness_web.v1.cpu.fnk

      GPU

      face_liveness: faceattr/faceattr.liveness_web.v1.gpu.fnk

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

      CPU

      face_medmask3: faceattr/medmask3.v2.cpu.fnk

      GPU

      face_medmask3: faceattr/medmask3.v2.gpu.fnk

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

      CPU

      face_quality: faceattr/faceattr.quality.v5.cpu.fnk

      GPU

      face_quality: faceattr/faceattr.quality.v5.gpu.fnk

      состояние глаз

      CPU

      face_eyes_attrs: faceattr/faceattr.eyes_attrs.v0.cpu.fnk

      GPU

      face_eyes_attrs: faceattr/faceattr.eyes_attrs.v0.gpu.fnk

      Важно

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

  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/facedet.kali.005.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/faceattr.quality.v5.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/facedet.kali.005.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/faceattr.quality.v5.cpu.fnk
            normalizer: face_norm_quality
      
    2. Убедитесь, что добавлен раздел objects face:

      objects:
        ...
        face:
          normalizer: face_norm
          quality: face_quality
          track_features: ''
      
  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.42
        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
        filter_track_min_duration_frames: 1
        extractors_track_triggers: {}
    
  4. Примечание

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

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

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

      sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
      
      available features: age, beard, emotions, gender, glasses, headpose, medmask, eyes_attrs
      'FACE_EVENTS_FEATURES': ['gender', 'beard', 'emotions', 'headpose', 'age', 'medmask', 'glasses', 'eyes_attrs'],
      
    2. Выполните перезапуск контейнеров FindFace Multi.

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