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

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.v4.gpu.fnk
          car_license_plate_quality: carattr/carattr.license_plate_quality.v0.gpu.fnk
          car_make: ''
          car_quality: carattr/carattr.quality.v0.gpu.fnk
          car_special_types: carattr/carattr.special_types.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.v4.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_special_types: carattr/carattr.special_types.v0.cpu.fnk
      

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

      Экстрактор

      Настройка

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

      car_emben: carrec/alonso.cpu.fnk

      car_emben: carrec/alonso.gpu.fnk

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

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

      car_license_plate: carattr/carattr.license_plate.v4.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

      спецтранспорт

      car_special_types: carattr/carattr.special_types.v0.cpu.fnk

      car_special_types: carattr/carattr.special_types.v0.gpu.fnk

      Совет

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

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

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

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

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

      carlicplate

      carnorm/anaferon.v3.gpu.fnk carnorm/anaferon.v3.cpu.fnk

      car_license_plate

      cropbbox

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

      car_license_plate_quality, car_description, car_quality, car_special_types

      GPU

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

      CPU

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

      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. Перезапустите 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
    
    ## path to car track features extractor
    ## type:string env:CFG_CAR_TRACK_FEATURES longopt:--car-track-features
    track_features =
    
    ## path to car track features normalizer
    ## type:string env:CFG_CAR_TRACK_FEATURES_NORM longopt:--car-track-features-norm
    track_features_norm =
    
    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.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_CARS': True.

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

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

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

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

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

      • make: марка,

      • model: модель,

      • special_vehicle_type: принадлежность к специальному транспорту.

      Для того чтобы включить дополнительный анализ атрибутов, установите 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},
              'special_vehicle_type': {'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