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

FindFace Multi позволяет распознавать отдельные человеческие силуэты и атрибуты силуэтов.

Атрибуты силуэтов следующие:

  • тип одежды:

    • обобщенная категория одежды верхней части тела: с длинными рукавами, с короткими рукавами, без рукавов

    • детализированный тип одежды верхней части тела: куртка, пальто, жилет без рукавов, толстовка, футболка, рубашка, платье

    • тип одежды нижней части тела: брюки, юбка, шорты, необычный

    • тип головного убора: шляпа/шапка/кепка, капюшон, без головного убора

  • цвет одежды (верх/низ)

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

  1. В файле конфигурации /etc/findface-extraction-api.ini укажите модели нейронных сетей для распознавания объектов типа силуэт и их атрибутов. Выполните следующие действия:

    Важно

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

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

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

      GPU

      detectors:
      
        ...
        models:
          ...
          glenn:
            aliases:
            - body
            - silhouette
            model: pedet/glenn_005.gpu.fnk
            options:
              min_object_size: 32
              resolutions: [256x256, 384x384, 512x512, 768x768, 1024x1024, 1536x1536, 2048x2048]
      
        ...
      

      CPU

      detectors:
      
        ...
        models:
          ...
          glenn:
            aliases:
            - body
            - silhouette
            model: pedet/glenn_005.cpu.fnk
            options:
              min_object_size: 32
              resolutions: [256x256, 384x384, 512x512, 768x768, 1024x1024, 1536x1536, 2048x2048]
      
        ...
      
    3. Укажите модели для экстракции векторов признаков в разделе extractors -> models, в зависимости от необходимых экстракторов:

      GPU

      extractors:
         ...
         models:
          body_clothes: pedattr/pedattr.clothes_type.v0.gpu.fnk
          body_color: pedattr/pedattr.color.v1.gpu.fnk
          body_emben: pedrec/andariel.gpu.fnk
          body_quality: pedattr/pedattr.quality.v0.gpu.fnk
      

      CPU

      extractors:
         ...
         models:
          body_clothes: pedattr/pedattr.clothes_type.v0.cpu.fnk
          body_color: pedattr/pedattr.color.v1.cpu.fnk
          body_emben: pedrec/andariel.cpu.fnk
          body_quality: pedattr/pedattr.quality.v0.cpu.fnk
      

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

      Тип распознавания

      Настройка

      тип одежды

      body_clothes: pedattr/pedattr.clothes_type.v0.gpu.fnk

      body_clothes: pedattr/pedattr.clothes_type.v0.cpu.fnk

      цвет одежды

      body_color: pedattr/pedattr.color.v1.gpu.fnk

      body_color: pedattr/pedattr.color.v1.cpu.fnk

      отдельный объект типа силуэт

      body_emben: pedrec/andariel.gpu.fnk

      body_emben: pedrec/andariel.cpu.fnk

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

      body_quality: pedattr/pedattr.quality.v0.gpu.fnk

      body_quality: pedattr/pedattr.quality.v0.cpu.fnk

      Совет

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

      extractors:
         ...
         models:
          body_clothes: ''
          body_color: ''
          body_emben: ''
          body_quality: ''
      
    4. Убедитесь, что раздел normalizers содержит модель для нормализатора cropbbox, как показано в примере ниже. Данный нормализатор требуется для работы экстракторов, указанных на предыдущем шаге.

      GPU

      normalizers:
        ...
      
        models:
          ...
          cropbbox:
            model: facenorm/cropbbox.v2.gpu.fnk
      

      CPU

      normalizers:
        ...
      
        models:
          ...
          cropbbox:
            model: facenorm/cropbbox.v2.cpu.fnk
      
    5. Убедитесь, что раздел objects -> body содержит quality_attribute: body_quality:

      GPU

      objects:
        ...
        body:
          base_normalizer: facenorm/cropbbox.v2.gpu.fnk
          quality_attribute: body_quality
        ...
      

      CPU

      objects:
        ...
        body:
          base_normalizer: facenorm/cropbbox.v2.cpu.fnk
          quality_attribute: body_quality
      
    6. После внесения изменений в файл конфигурации убедитесь, что он выглядит аналогично следующему примеру.

    7. Перезапустите findface-extraction-api.

      sudo systemctl restart findface-extraction-api
      
  2. Внесите изменения в файл конфигурации /etc/findface-video-worker-gpu.ini (/etc/findface-video-worker-cpu.ini). В разделе body укажите модели нейронных сетей по аналогии с примером ниже. Перезапустите findface-video-worker-gpu (findface-video-worker-cpu).

    GPU

    sudo vi /etc/findface-video-worker-gpu.ini
    
    #------------------------------
    [body]
    #------------------------------
    ## detector param
    ## type:number env:CFG_BODY_MIN_SIZE longopt:--body-min-size
    min_size = 60
    
    ## path to body detector
    ## type:string env:CFG_BODY_DETECTOR longopt:--body-detector
    detector = /usr/share/findface-data/models/pedet/glenny_005_fast.gpu.fnk
    
    ## path to normalizer (usually crop2x)
    ## type:string env:CFG_BODY_NORM longopt:--body-norm
    norm = /usr/share/findface-data/models/facenorm/cropbbox.v2.gpu.fnk
    
    ## path to body quality extractor
    ## type:string env:CFG_BODY_QUALITY longopt:--body-quality
    quality = /usr/share/findface-data/models/pedattr/pedattr.quality.v0.gpu.fnk
    
    ## path to body quality normalizer
    ## type:string env:CFG_BODY_NORM_QUALITY longopt:--body-norm-quality
    norm_quality = /usr/share/findface-data/models/facenorm/cropbbox.v2.gpu.fnk
    
    sudo systemctl restart findface-video-worker-gpu.service
    

    CPU

    sudo vi /etc/findface-video-worker-cpu.ini
    
    #------------------------------
    [body]
    #------------------------------
    ## detector param
    ## type:number env:CFG_BODY_MIN_SIZE longopt:--body-min-size
    min_size = 60
    
    ## path to body detector
    ## type:string env:CFG_BODY_DETECTOR longopt:--body-detector
    detector = /usr/share/findface-data/models/pedet/glenny_005_fast.cpu.fnk
    
    ## path to normalizer (usually crop2x)
    ## type:string env:CFG_BODY_NORM longopt:--body-norm
    norm = /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
    
    ## path to body quality extractor
    ## type:string env:CFG_BODY_QUALITY longopt:--body-quality
    quality = /usr/share/findface-data/models/pedattr/pedattr.quality.v0.cpu.fnk
    
    ## path to body quality normalizer
    ## type:string env:CFG_BODY_NORM_QUALITY longopt:--body-norm-quality
    norm_quality = /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
    
    ## path to body track features extractor
    ## type:string env:CFG_BODY_TRACK_FEATURES longopt:--body-track-features
    track_features =
    
    ## path to body track features normalizer
    ## type:string env:CFG_BODY_TRACK_FEATURES_NORM longopt:--body-track-features-norm
    track_features_norm =
    
    sudo systemctl restart findface-video-worker-cpu.service
    
  3. Откройте файл конфигурации /etc/findface-video-manager.conf и убедитесь, что он содержит раздел body в detectors, аналогичный приведенному ниже.

    Совет

    В качестве эталонного значения параметра filter_min_quality можно взять значение параметра MINIMUM_BODY_QUALITY из файла конфигурации /etc/findface-security/config.py.

    sudo vi /etc/findface-video-manager.conf
    
    detectors:
      ...
      body:
        filter_min_quality: 0.65
        filter_min_size: 1
        filter_max_size: 8192
        roi: ""
        fullframe_crop_rot: false
        fullframe_use_png: false
        jpeg_quality: 95
        overall_only: false
        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
    
  4. Включите распознавание силуэтов и атрибутов силуэтов в файле конфигурации /etc/findface-security/config.py. Выполните следующие действия:

    1. В разделе FFSECURITY установите 'ENABLE_BODIES: True.

      sudo vi /etc/findface-security/config.py
      
      FFSECURITY = {
          ...
      
          # optional objects to detect
          'ENABLE_BODIES': True,
          ...
      
    2. В том же разделе укажите атрибуты силуэтов, которые требуется отображать в событиях распознавания.

      # available features are: color, clothes
      'BODY_EVENTS_FEATURES': ['color', 'clothes'],
      
    3. Перезапустите сервис findface-security.

      sudo systemctl restart findface-security.service