Распознавание транспортных средств и их атрибутов

FindFace Multi может распознавать отдельные транспортные средства и их атрибуты.

Атрибуты ТС следующие:

  • номерной знак (для отдельных стран),

    Примечание

    Поддерживается распознавание номерных знаков для следующих стран:

    Европа: Россия, Литва, Латвия, Эстония, Финляндия, Чехия, Сербия, Белоруссия, Украина, Молдавия, Грузия, Азербайджан, Армения.

    Азия: ОАЭ, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Саудовская Аравия, Вьетнам, Индия, Пакистан, Таиланд.

    Северная Америка: Мексика.

    Южная Америка: Аргентина, Бразилия.

  • цвет,

  • марка,

  • модель,

  • тип кузова,

  • категория ТС,

  • ракурс (вид спереди, сзади или сбоку),

  • принадлежность к спецтранспорту (такси, маршрутный транспорт, каршеринг, скорая помощь, полиция, спасательные службы, газоспасательные и аварийно-спасательные службы, военная техника, техника дорожных служб, остальной спецтранспорт),

  • тип ТС по весу и размеру кузова.

    Примечание

    Распознавание спецтранспорта, так же как и распознавание ТС по весу и размеру кузова, работает только для некоторых стран. За дополнительной информацией обращайтесь к вашему менеджеру или в службу поддержки (support@ntechlab.com).

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

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

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

      CPU

      detectors:
      
        ...
        models:
          ...
          gustav:
            aliases:
            - car
            - efreitor
            model: detector/car.gustav_accurate.006.cpu.fnk
            options:
              min_object_size: 32
              resolutions:
              - 256x256
              - 384x384
              - 512x512
              - 768x768
              - 1024x1024
              - 1536x1536
              - 2048x2048
        ...
      
    3. Убедитесь, что раздел objects -> car содержит quality_attribute: car_quality и, в зависимости от вашего типа ускорения, base_normalizer: facenorm/cropbbox.v2.gpu.fnk или base_normalizer: facenorm/cropbbox.v2.cpu.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
        ...
      
    4. Укажите нормализаторы, необходимые для работы экстракторов. Например, если вам требуется настроить распознавание автомобильных номеров, укажите нормализатор carlicplate. Для остальных экстракторов укажите нормализатор cropbbox.

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

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

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

      carlicplate

      carnorm/briacon.v0.gpu.fnk carnorm/briacon.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, car_special_types11, car_categories, car_orientation, car_weight_types7

      GPU

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

      CPU

      normalizers:
        ...
      
        models:
          ...
          carlicplate:
            model: carnorm/briacon.v0.cpu.fnk
          ...
          cropbbox:
            model: facenorm/cropbbox.v2.cpu.fnk
          ...
      
    5. Укажите модели необходимых экстракторов в разделе extractors -> models:

      GPU

      extractors:
         ...
         models:
          car_categories: carattr/carattr.categories.v0.gpu.fnk
          car_color: ''
          car_container_number: ''
          car_description: carattr/description.v0.gpu.fnk
          car_emben: carrec/bottas.gpu.fnk
          car_license_plate: carattr/carattr.license_plate.v7.gpu.fnk
          car_license_plate_quality: carattr/carattr.license_plate_quality.v1.gpu.fnk
          car_license_plate_visibility: ''
          car_make: ''
          car_orientation: carattr/carattr.orientation.v0.gpu.fnk
          car_quality: carattr/carattr.quality.v0.gpu.fnk
          car_special_types: ''
          car_special_types11: carattr/carattr.special_types11.v1.gpu.fnk
          car_trash: ''
          car_weight_types7: carattr/carattr.weight_types7.v0.gpu.fnk
      

      CPU

      extractors:
         ...
         models:
          car_categories: carattr/carattr.categories.v0.cpu.fnk
          car_color: ''
          car_container_number: ''
          car_description: carattr/description.v0.cpu.fnk
          car_emben: carrec/bottas.cpu.fnk
          car_license_plate: carattr/carattr.license_plate.v7.cpu.fnk
          car_license_plate_quality: carattr/carattr.license_plate_quality.v1.cpu.fnk
          car_license_plate_visibility: ''
          car_make: ''
          car_orientation: carattr/carattr.orientation.v0.cpu.fnk
          car_quality: carattr/carattr.quality.v0.cpu.fnk
          car_special_types: ''
          car_special_types11: carattr/carattr.special_types11.v1.cpu.fnk
          car_trash: ''
          car_weight_types7: carattr/carattr.weight_types7.v0.cpu.fnk
      

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

      Экстрактор

      Настройка

      вектор признаков отдельного ТС

      car_emben: carrec/bottas.cpu.fnk

      car_emben: carrec/bottas.gpu.fnk

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

      car_license_plate: carattr/carattr.license_plate.v7.cpu.fnk car_license_plate_quality: carattr/carattr.license_plate_quality.v1.cpu.fnk

      car_license_plate: carattr/carattr.license_plate.v7.gpu.fnk car_license_plate_quality: carattr/carattr.license_plate_quality.v1.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_types11.v1.cpu.fnk

      car_special_types: carattr/carattr.special_types11.v1.gpu.fnk

      категория ТС

      car_categories: carattr/carattr.categories.v0.cpu.fnk

      car_categories: carattr/carattr.categories.v0.gpu.fnk

      тип ТС по весу и размеру кузова

      car_weight_types7: carattr/carattr.weight_types7.v0.cpu.fnk

      car_weight_types7: carattr/carattr.weight_types7.v0.gpu.fnk

      ракурс ТС

      car_orientation: carattr/carattr.orientation.v0.cpu.fnk

      car_orientation: carattr/carattr.orientation.v0.gpu.fnk

      Совет

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

      extractors:
         ...
         models:
          car_categories: ''
          car_color: ''
          car_container_number: ''
          car_description: ''
          car_emben: ''
          car_license_plate: ''
          car_license_plate_quality: ''
          car_license_plate_visibility: ''
          car_make: ''
          car_orientation: ''
          car_quality: ''
          car_special_types: ''
          car_special_types11: ''
          car_trash: ''
          car_weight_types7: ''
      
    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 укажите модели детектора, нормализатора и экстрактора для объекта car, как показано в примере ниже:

      GPU

      sudo vi /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml
      
      models:
        ...
        detectors:
          ...
          car:
            fnk_path: /usr/share/findface-data/models/detector/car.gustav_normal.004.gpu.fnk
            min_size: 60
          ...
        normalizers:
          ...
          car_norm:
            fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.gpu.fnk
          car_norm_quality:
            fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.gpu.fnk
          ...
        extractors:
          ...
          car_quality:
            fnk_path: /usr/share/findface-data/models/carattr/carattr.quality.v0.gpu.fnk
            normalizer: car_norm_quality
      

      CPU

      sudo vi /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml
      
      
      models:
        ...
        detectors:
          ...
          car:
            fnk_path: /usr/share/findface-data/models/detector/car.gustav_normal.004.cpu.fnk
            min_size: 60
          ...
        normalizers:
          ...
          car_norm:
            fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
          car_norm_quality:
            fnk_path: /usr/share/findface-data/models/facenorm/cropbbox.v2.cpu.fnk
          ...
        extractors:
          ...
          car_quality:
            fnk_path: /usr/share/findface-data/models/carattr/carattr.quality.v0.cpu.fnk
            normalizer: car_norm_quality
      
    2. Убедитесь, что добавлен раздел objects -> car:

      objects:
        ...
        car:
          normalizer: car_norm
          quality: car_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 и убедитесь, что он содержит раздел car в detectors, аналогичный приведенному ниже. Обратите внимание, что для параметра filter_min_quality по умолчанию установлено значение 0.65. Для получения более точных результатов с камер и других источников видео его можно увеличить. Рекомендованный порог равен 0.73.

    sudo vi /opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml
    
    detectors:
      ...
      car:
        filter_min_quality: 0.65
        filter_min_size: 100
        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_min_quality влияет только на результаты, получаемые от видеоисточников, и не влияет на результаты подсчета транспортных средств и качество изображений транспортных средств, используемых в карточках. Чтобы получить более точные результаты подсчета или карточки ТС с изображениями лучшего качества, отдельно настройте параметр MINIMUM_CAR_QUALITY в файле конфигурации findface-multi-legacy.py. Эта настройка будет описана ниже.

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

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

      sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
      
      FFSECURITY = {
          ...
          # optional objects to detect
          'ENABLE_CARS': True,
          ...
      
    2. В этом же разделе можно настроить параметр MINIMUM_CAR_QUALITY. По умолчанию для него установлено значение 0.65, что является рекомендуемым минимальным порогом качества изображения автомобиля, достаточным для создания карточки или для подсчета.

      FFSECURITY = {
          ...
          # minimum car quality sufficient to add it to a card and use object in counter
          # p.s. set this parameter equals to `0.73` for more accurate results
          'MINIMUM_CAR_QUALITY': 0.65,  # model: [carattr.quality.v0]
          ...
      

      Если нужны более точные результаты подсчета или карточки автомобилей с изображениями лучшего качества, порог MINIMUM_CAR_QUALITY можно увеличить. Рекомендовано значение, равное 0.73.

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

      # available features are: category, description, license_plate, orientation, special_vehicle_type, weight_type
      'CAR_EVENTS_FEATURES': ['license_plate', 'category', 'special_vehicle_type', 'description', 'weight_type', 'orientation'],
      
    4. Выполните перезапуск контейнеров FindFace Multi.

      cd /opt/findface-multi/
      
      sudo docker-compose restart
      
  5. В веб-интерфейсе перейдите на вкладку Источники видео. Выберите камеру на вкладке Камеры (либо загруженный файл на вкладке Загрузки, либо внешний детектор на соответствующей вкладке). Перейдите на вкладку Основные. Поставьте флажок ТС в разделе Детекторы.