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

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

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

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

    Примечание

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

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

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

    Африка: Египет, Марокко, Тунис, ЮАР.

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

    Южная Америка: Аргентина, Бразилия, Колумбия, Перу.

  • цвет,

  • марка,

  • модель,

  • тип кузова,

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

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

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

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

    Примечание

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

Распознавание транспортных средств вместе с выбором атрибутов распознавания можно настроить на уровне установки продукта. При стандартной установке система по умолчанию разворачивает объект car под распознавание регистрационного знака, а не транспортного средства. Это означает, что событие обнаружения транспортного средства будет создано только в случае распознавания регистрационного знака. В этом разделе описывается как включить распознавание ТС и их атрибутов, если этот шаг был пропущен при установке. Также вы узнаете, как настроить сервис findface-video-worker, чтобы события обнаружения создавались либо при распознавании транспортного средства, либо при распознавании регистрационного знака.

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

  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/cardet.kali_accurate.008.gpu.fnk
            options:
              min_object_size: 32
              resolutions:
              - 2048x2048
        ...
      

      CPU

      detectors:
        ...
        models:
          ...
          gustav:
            aliases:
            - car
            - efreitor
            model: detector/cardet.kali_accurate.008.cpu.fnk
            options:
              min_object_size: 32
              resolutions:
              - 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/carnorm.briacon.v3.gpu.fnk carnorm/carnorm.briacon.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_types12, car_categories, car_orientation, car_weight_types7

      GPU

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

      CPU

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

      GPU

      extractors:
        ...
        models:
          car_categories:
            default:
              model: carattr/carattr.categories.v1.gpu.fnk
          car_color:
            default:
              model: ''
          car_container_number:
            default:
              model: ''
          car_description:
            default:
              model: carattr/carattr.description.v1.gpu.fnk
          car_dumptruck_types:
            default:
              model: ''
          car_emben:
            default:
              model: carrec/bottas.gpu.fnk
          car_license_plate:
            default:
              model: carattr/carattr.license_plate.v11.gpu.fnk
          car_license_plate_quality:
            default:
              model: carattr/carattr.license_plate_quality.v4.gpu.fnk
          car_license_plate_visibility:
            default:
              model: ''
          car_make:
            default:
              model: ''
          car_orientation:
            default:
              model: carattr/carattr.orientation.v0.gpu.fnk
          car_quality:
            default:
              model: carattr/carattr.quality.v1.gpu.fnk
          car_special_types:
            default:
              model: ''
          car_special_types11:
            default:
              model: ''
          car_special_types12:
            default:
              model: carattr/carattr.special_types12.v0.gpu.fnk
          car_trash:
            default:
              model: ''
          car_weight_types7:
            default:
              model: carattr/carattr.weight_types7.v0.gpu.fnk
      

      CPU

      extractors:
        ...
        models:
          car_categories:
            default:
              model: carattr/carattr.categories.v1.cpu.fnk
          car_color:
            default:
              model: ''
          car_container_number:
            default:
              model: ''
          car_description:
            default:
              model: carattr/carattr.description.v1.cpu.fnk
          car_dumptruck_types:
            default:
              model: ''
          car_emben:
            default:
              model: carrec/bottas.cpu.fnk
          car_license_plate:
            default:
              model: carattr/carattr.license_plate.v11.cpu.fnk
          car_license_plate_quality:
            default:
              model: carattr/carattr.license_plate_quality.v4.cpu.fnk
          car_license_plate_visibility:
            default:
              model: ''
          car_make:
            default:
              model: ''
          car_orientation:
            default:
              model: carattr/carattr.orientation.v0.cpu.fnk
          car_quality:
            default:
              model: carattr/carattr.quality.v1.cpu.fnk
          car_special_types:
            default:
              model: ''
          car_special_types11:
            default:
              model: ''
          car_special_types12:
            default:
              model: carattr/carattr.special_types12.v0.cpu.fnk
          car_trash:
            default:
              model: ''
          car_weight_types7:
            default:
              model: 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.v11.cpu.fnk car_license_plate_quality: carattr/carattr.license_plate_quality.v4.cpu.fnk

      car_license_plate: carattr/carattr.license_plate.v11.gpu.fnk car_license_plate_quality: carattr/carattr.license_plate_quality.v4.gpu.fnk

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

      car_description: carattr/carattr.description.v1.cpu.fnk

      car_description: carattr/carattr.description.v1.gpu.fnk

      качество изображения ТС

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

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

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

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

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

      категория ТС

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

      car_categories: carattr/carattr.categories.v1.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

      Примечание

      Модель распознавания специальных транспортных средств по умолчанию carattr.special_types12.v0 указана в экстракторе car_special_types12. Данная модель распознает 12 классов. Возможно, вам потребуется использовать модель распознавания спецтранспорта, которая распознает меньшее количество классов. Для подключения модели carattr.special_types11.v1 укажите ее в экстракторе car_special_types11 в файле /opt/findface-multi/configs/findface-extraction-api/findface-extraction-api.yaml. Для подключения модели carattr.special_types.v0 укажите ее в экстракторе car_special_types в файле /opt/findface-multi/configs/findface-extraction-api/findface-extraction-api.yaml.

      В файле /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py измените значение параметра CAR_SPECIAL_VEHICLE_TYPE_EXTRACTOR, которое по умолчанию установлено в car_special_types12. Укажите включенный экстрактор распознавания специальных транспортных средств. Например, если вы включили модель carattr.special_types11.v1, укажите 'CAR_SPECIAL_VEHICLE_TYPE_EXTRACTOR': 'car_special_types11'.

      Стандартная установка FindFace Multi включает модель распознавания спецтранспорта carattr.special_types12.v0. Если вы используете другую модель распознавания спецтранспорта, скопируйте ее в каталог /opt/findface-multi/models/carattr/ перед тем как вносить изменения в файлы конфигурации.

      Важно

      FindFace Multi распознает настроенные вами атрибуты. Значение уверенности распознавания атрибута зависит от используемых моделей нейронных сетей. За дополнительной информацией обращайтесь в службу поддержки по адресу support@ntechlab.com.

  2. Внесите изменения в конфигурационный файл /opt/findface-multi/configs/findface-video-worker/findface-video-worker.yaml.

    В зависимости от потребности можно настроить сервис findface-video-worker таким образом, чтобы события обнаружения создавались при распознавании ТС или ГРЗ. В примере ниже приведена конфигурация findface-video-worker, при которой события обнаружения ТС будут происходить только при распознавании регистрационного знака.

    Если вы хотите получать события обнаружения транспортного средства на основе распознавания самого транспортного средства, в примере ниже укажите модель carattr.quality.v1 в разделе extractorscar_quality. Остальные настройки останутся без изменений.

    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.007.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.license_plate_quality.v4.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.007.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.license_plate_quality.v4.cpu.fnk
            normalizer: car_norm_quality
      
    2. В раздел objects добавьте раздел для объекта car:

      objects:
        ...
        car:
          normalizer: car_norm
          quality: car_quality
          track_features: ''
      

    Важно

    При конфигурации findface-video-worker под распознавание ГРЗ событие обнаружения ТС может быть не создано, если не распознан ГРЗ.

  3. Откройте файл конфигурации /opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml и убедитесь, что он содержит раздел car в detectors, аналогичный приведенному ниже. Обратите внимание, что для параметра filter_min_quality по умолчанию установлено значение 0.6. Для получения более точных результатов с камер и других источников видео его можно увеличить. Рекомендованный порог равен 0.73.

    sudo vi /opt/findface-multi/configs/findface-video-manager/findface-video-manager.yaml
    
    detectors:
      ...
      car:
        filter_min_quality: 0.6
        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_track_min_duration_frames: 1
        tracker_settings:
          oc_sort:
            filter_unconfirmed_tracks: true
            high_quality_detects_threshold: 0.6
            momentum_delta_time: 3
            smooth_factor: 0.5
            time_since_update: 0
        extractors_track_triggers: {}
    

    Примечание

    Настройка параметра 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.6, что является рекомендуемым минимальным порогом качества изображения автомобиля, достаточным для создания карточки или для подсчета.

      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.6,  # model: [carattr.quality.v1]
          ...
      

      Если нужны более точные результаты подсчета или карточки автомобилей с изображениями лучшего качества, порог 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. В веб-интерфейсе перейдите на вкладку Источники видео. Выберите камеру на вкладке Камеры (либо загруженный файл на вкладке Загрузки, либо внешний детектор на соответствующей вкладке). Перейдите на вкладку Основные. Поставьте флажок ТС в разделе Детекторы.