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

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:
          ...
          efreitor:
            aliases:
            - car
            model: cadet/efreitor.gpu.fnk
            options:
              min_object_size: 32
              resolutions: [256x256, 384x384, 512x512, 768x768, 1024x1024, 1536x1536, 2048x2048]
      
        ...
      

      CPU

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

      GPU

      extractors:
         ...
         models:
          car_color: ''
          car_description: carattr/description.v0.gpu.fnk
          car_emben: carrec/alonso.gpu.fnk
          car_license_plate: carattr/carattr.license_plate.v0.gpu.fnk
          car_license_plate_quality: carattr/carattr.license_plate_quality.v0.gpu.fnk
          car_make: ''
          car_quality: carattr/carattr.quality.v0.gpu.fnk
      

      CPU

      extractors:
         ...
         models:
          car_color: ''
          car_description: carattr/description.v0.cpu.fnk
          car_emben: carrec/alonso.cpu.fnk
          car_license_plate: carattr/carattr.license_plate.v0.cpu.fnk
          car_license_plate_quality: carattr/carattr.license_plate_quality.v0.cpu.fnk
          car_make: ''
          car_quality: carattr/carattr.quality.v0.cpu.fnk
      

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

      Экстрактор

      Настройка

      отдельный объект типа автомобиль

      car_emben: carrec/alonso.cpu.fnk

      car_emben: carrec/alonso.gpu.fnk

      номерной знак

      car_license_plate: carattr/carattr.license_plate.v0.cpu.fnk car_license_plate_quality: carattr/carattr.license_plate_quality.v0.cpu.fnk

      car_license_plate: carattr/carattr.license_plate.v0.gpu.fnk car_license_plate_quality: carattr/carattr.license_plate_quality.v0.gpu.fnk

      набор атрибутов: марка / цвет / модель / тип кузова

      car_description: carattr/description.v0.cpu.fnk

      car_description: carattr/description.v0.gpu.fnk

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

      car_quality: carattr/carattr.quality.v0.cpu.fnk

      car_quality: carattr/carattr.quality.v0.gpu.fnk

      Совет

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

      extractors:
         ...
         models:
          car_color: ''
          car_description: ''
          car_emben: ''
          car_license_plate: ''
          car_license_plate_quality: ''
          car_make: ''
          car_quality: ''
          car_trash: ''
      
    4. Укажите нормализаторы, необходимые для работы экстракторов, заданных на предыдущем шаге. Например, если вам требуется настроить распознавание автомобильных номеров, укажите нормализатор carlicplate .

      Нормализатор

      Модель нормализатора

      Используется для экстракторов

      carlicplate

      carnorm/anaferon.v0.gpu.fnk carnorm/anaferon.v0.cpu.fnk

      car_license_plate

      cropbbox

      facenorm/cropbbox.v2.gpu.fnk facenorm/cropbbox.v2.cpu.fnk

      car_license_plate_quality, car_description, car_quality

      GPU

      normalizers:
        ...
      
        models:
          carlicplate:
            model: carnorm/anaferon.v0.gpu.fnk
          ...
          cropbbox:
            model: facenorm/cropbbox.v2.gpu.fnk
      

      CPU

      normalizers:
        ...
      
        models:
          carlicplate:
            model: carnorm/anaferon.v0.cpu.fnk
          ...
          cropbbox:
            model: facenorm/cropbbox.v2.cpu.fnk
      
    5. Убедитесь, что раздел objects -> car содержит quality_attribute: car_quality и base_normalizer: facenorm/cropbbox.v2.*.fnk:

      GPU

      objects:
        ...
        car:
          base_normalizer: facenorm/cropbbox.v2.gpu.fnk
          quality_attribute: car_quality
        ...
      

      CPU

      objects:
        ...
        car:
          base_normalizer: facenorm/cropbbox.v2.cpu.fnk
          quality_attribute: car_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). В разделе car укажите модели нейронных сетей по аналогии с примером ниже. Перезапустите findface-video-worker-gpu (findface-video-worker-cpu).

    GPU

    sudo vi /etc/findface-video-worker-gpu.ini
    
    
    #------------------------------
    [car]
    #------------------------------
    ## detector param
    ## type:number env:CFG_CAR_MIN_SIZE longopt:--car-min-size
    min_size = 60
    
    ## path to car detector
    ## type:string env:CFG_CAR_DETECTOR longopt:--car-detector
    detector = /usr/share/findface-data/models/cadet/efreitor.gpu.fnk
    
    ## path to normalizer (usually crop2x)
    ## type:string env:CFG_CAR_NORM longopt:--car-norm
    norm = /usr/share/findface-data/models/facenorm/cropbbox.v2.gpu.fnk
    
    ## path to car quality extractor
    ## type:string env:CFG_CAR_QUALITY longopt:--car-quality
    quality = /usr/share/findface-data/models/carattr/carattr.quality.v0.gpu.fnk
    
    ## path to car quality normalizer
    ## type:string env:CFG_CAR_NORM_QUALITY longopt:--car-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
    
    
    #------------------------------
    [car]
    #------------------------------
    ## detector param
    ## type:number env:CFG_CAR_MIN_SIZE longopt:--car-min-size
    min_size = 60
    
    ## path to car detector
    ## type:string env:CFG_CAR_DETECTOR longopt:--car-detector
    detector = /usr/share/findface-data/models/cadet/efreitor.cpu.fnk
    
    ## path to normalizer (usually crop2x)
    ## type:string env:CFG_CAR_NORM longopt:--car-norm
    norm = /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
    
    ## path to car quality extractor
    ## type:string env:CFG_CAR_QUALITY longopt:--car-quality
    quality = /usr/share/findface-data/models/carattr/carattr.quality.v0.cpu.fnk
    
    ## path to car quality normalizer
    ## type:string env:CFG_CAR_NORM_QUALITY longopt:--car-norm-quality
    norm_quality = /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
    
    sudo systemctl restart findface-video-worker-cpu.service
    
  3. Откройте файл конфигурации /etc/findface-video-manager.conf и убедитесь, что он содержит раздел car в detectors, аналогичный приведенному ниже.

    Совет

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

    sudo vi /etc/findface-video-manager.conf
    
    detectors:
        ...
        car:
          filter_min_quality: 0.73
          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
    
  4. Включите распознавание автомобилей и атрибутов автомобилей в файле конфигурации /etc/findface-security/config.py. Выполните следующие действия:

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

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

      # available features are: description, license_plate
      'CAR_EVENTS_FEATURES': ['description', 'license_plate'],
      
    3. Для того чтобы улучшить качество распознавания отдельных автомобилей, мы настоятельно рекомендуем вам включить дополнительный анализ атрибутов. В этом случае система будет сравнивать не только векторы признаков двух автомобилей, но и атрибуты автомобилей. Вывод о совпадении автомобилей будет делаться только в том случае, если совпадают как векторы признаков, так и атрибуты.

      Для дополнительного анализа вы можете использовать следующие атрибуты:

      • color: цвет автомобиля,

      • body: тип кузова,

      • make: марка,

      • model: модель.

      Для того чтобы включить дополнительный анализ атрибутов, установите True в разделе FFSECURITY -> EXTRA_CAR_MATCHING для атрибутов, которые вы хотите сравнивать.

      FFSECURITY = {
          # use additional features for extra confidence when matching cars by emben
          'EXTRA_CAR_MATCHING': {
              'color': {'enabled': False, 'min_confidence': 0},
              'body': {'enabled': False, 'min_confidence': 0},
              'make': {'enabled': False, 'min_confidence': 0},
              'model': {'enabled': False, 'min_confidence': 0},
          },
      

      Важно

      Для того чтобы анализ атрибутов работал, в файлах конфигурации /etc/findface-extraction-api.ini и /etc/findface-security/config.py должна быть включена модель description (см. выше).

      Примечание

      Включение дополнительного анализа атрибутов уменьшает количество ложноположительных срабатываний, однако могут быть пропущены также некоторые реальные совпадения.

      Предупреждение

      Не меняйте значения по умолчанию, установленные для min_confidence, без предварительной консультации с нашими техническими специалистами (support@ntechlab.com).

    4. Перезапустите сервис findface-security.

      sudo systemctl restart findface-security.service