Перейти к основному содержимому
Версия: 2.6.0

Процессы и события

OMNI Agent преобразует результаты распознавания и трекинга в формат процессов и событий для последующей передачи в OMNI Platform или сторонние сервисы.

Процессы

Процесс — это формат представления результатов распознавания и трекинга, реализованный в рамках временных интервалов.

Каждый процесс содержит следующий набор данных:

  • Идентификатор процесса.
  • Временной интервал процесса (начало и окончание процесса).
  • Тип процесса (трек, человек, лицо, тело, эмоция и др.).
  • Объект детекции с определёнными атрибутами лица (объектом выступает человек, попавший в поле зрения камеры).
  • Лучший кадр (best shot) и массив всех кадров, полученных, пока человек не вышел из поля зрения камеры.

Как включить или отключить отправку процессов

Настройка через файл конфигурации

Установите значение параметра events.enable_activities как true (модуль включен) или false (модуль отключен).

Настройка через дашборд

Нажмите на значок Настройки в дашборде OMNI Agent и включите или отключите опцию Отправка процессов в открывшейся вкладке.

Анонимный режим

Для защиты персональных данных в OMNI Agent предусмотрен анонимный режим, включенный по умолчанию. В анонимном режиме изображения лиц не передаются в OMNI Platform, что обеспечивает защиту персональных данных и исключает возможность распознавания человека вне системы. Включить или отключить анонимный режим можно через дашборд или через редактирование файла config/run_params.json.

Настройка через файл конфигурации

Установите значение параметра anonymous_mode:(Boolean) как true (модуль включен) или false (модуль отключен).

Настройка через дашборд

Нажмите на значок Настройки в дашборде OMNI Agent и включите или отключите опцию Анонимный режим в открывшейся вкладке.

Отправка процессов по вебхукам

Добавить вебхук можно в Настройках дашборда OMNI Agent или в файле конфигурации config/run_params.json, указав значения для параметра webhook_tracking_subscribers. Параметр представляет собой список объектов, описывающих адрес сервера, принимающего процессы с OMNI Agent и представлен в двух версиях:

Версия 1

{
"url": "http://127.0.0.1:5000/trigger" // указание адреса с эндпоинтом
}

Версия 2 (установлена по умолчанию)

{ 
"host": "127.0.0.1", // адрес
"port": "5000", // порт
"is_secured": false, // флаг http/https
"path": "/trigger" // эндпоинт
}

Массив процессов отправляется в начале и окончании трекинга, при идентификации человека по базе данных, при нахождении человека в области интереса или при пересечении размеченных линий, а также каждые пять секунд (по умолчанию). Чтобы изменить интервал отправки процессов, отредактируйте поле ongoings_interval_in_msec в файле config/run_params.json (измеряется в миллисекундах).

Отправка лучших кадров по вебхукам

Лучший кадр (best shot) — это лучший по качеству изображения кроп лица в треке. Для отправки лучших кадров по вебхукам включите опцию «Отправка лучших кадров по вебхукам» в Настройках дашборда OMNI Agent, либо укажите значение true для поля enable_webhook_image2jpg_conversion. Значение по умолчанию — false. Лучший кадр кодируется в base64 как jpeg изображение.

Отправка процессов по MQTT

  1. Скачайте и установите брокер MQTT по ссылке

  2. Откройте файл config/run_params.json и пропишите значения для следующих полей:

    • mqtt_settings: Параметры подключения к брокеру MQTT.
      • enable: bool.
      • brocker_address: string, адрес брокера MQTT, принимающего процессы. В текущей реализации будет работать только с localhost.
      • mqtt_port: int, порт, на котором брокер MQTT прослушивает подключения.
      • client_identifier: string, уникальный идентификатор клиента MQTT, который будет использоваться при подключении к брокеру.
      • mqtt_topic: string, тема в брокере MQTT, на которую будут отправлены процессы.

    Пример заполненных полей:

    "mqtt_settings": {
    "brocker_address": "localhost",
    "client_id": "default_mqtt_client",
    "mqtt_port": 1883,
    "mqtt_topic": "events",
    "enable": true
    }
  3. Запустите службу Mosquitto MQTT (на системе Linux):

    sudo /etc/init.d/mosquitto start

    Основные команды:

    • mosquitto_sub: команда в брокере сообщений MQTT, которая используется для подписки на темы ("mqtt_topic") и получения сообщений, опубликованных в эти темы.
    • -h <hostname>: указывает имя хоста (или IP-адрес) брокера MQTT, к которому нужно подключиться.
    • -p <port>: указывает порт, на котором слушает брокер MQTT (по умолчанию 1883).
    • -t <topic>: указывает тему, на которую вы хотите подписаться.

    Пример использования:

    mosquitto_sub -h localhost -p 1883 -t events

    Эта команда подключится к брокеру MQTT на локальном хосте, подпишется на тему events и будет выводить полученные сообщения на экран.

События

Событие — это формат представления результатов распознавания и трекинга, отражающий факт совершения действия. OMNI Agent может формировать следующие типы событий:

  • События идентификации/неидентификации (человек с камеры найден/не найден в базе).
  • События ROI (человек находится в области интереса (ROI) или вышел из нее).
  • События пересечения линий (человек пересек размеченную на видеопотоке линию в прямом/обратном направлении).
  • События HAR (человек упал, сидит, лежит или участвует в драке).
Структура событий

Структура события идентификации:

  • type (тип события) — identification.
  • date — время события.
  • id — идентификатор события.
  • object (объект, породивший событие):
    • class — класс объекта (например, human).
    • id — идентификатор объекта.
  • parents (родитель события, как правило, процесс):
    • id — идентификатор родителя события.
    • type — тип родителя события (например, human, face).
  • source — идентификатор видеопотока.
  • trigger_source:
    • id
  • image — кроп детекции.
  • original_image — полный кадр.
  • identification_data — массив профилей-кандидатов на идентификацию:
    • profile_id — идентификатор профиля.
    • group_ids — идентификатор группы, в которую добавлен профиль.
    • score — степень схожести лица с кадра с лицом из профиля от 0 (0%) до 1 (100%).
    • far — вероятность ошибочных подтверждений, когда система принимает изображения разных людей за изображение одного и того же человека.
    • frr — вероятность ошибочных отказов, когда система принимает два изображения одного и того же человека за изображения разных людей.
    • distance — расстояние между сравниваемыми векторами шаблонов. Чем меньше значение, тем выше уверенность в корректном распознавании

Структура события неидентификации:

  • type (тип события) — non_identification.
  • date — время события.
  • id — идентификатор события.
  • object (объект, породивший событие):
    • class — класс объекта (например, human).
    • id — идентификатор объекта.
  • parents (родитель события, как правило, процесс):
    • id — идентификатор родителя события.
    • type — тип родителя события (например, human, face).
  • source — идентификатор видеопотока.
  • trigger_source:
    • id
  • image — кроп детекции.
  • original_image — полный кадр.

Структура события ROI:

  • type (тип события) — roi.
  • date — время события.
  • id — идентификатор события.
  • parents (родитель события, как правило, процесс):
    • id — идентификатор родителя события.
    • type — тип родителя события (например, human, body).
  • source — идентификатор видеопотока.
  • trigger_source:
    • id
  • image — кроп детекции.
  • original_image — полный кадр.
  • roi_data (данные о нахождении в области интереса):
    • direction (нахождение/выход в/из ROI) — in/out.

Структура события пересечения линии:

  • type (тип события) — crossing.
  • date — время события.
  • id — идентификатор события.
  • parents (родитель события, как правило, процесс):
    • id — идентификатор родителя события.
    • type — тип родителя события (например, human, body).
  • source — идентификатор видеопотока.
  • trigger_source:
    • id
  • image — кроп детекции.
  • original_image — полный кадр.
  • crossing_data (данные о пересечении линии):
    • direction (пересечение линии в прямом/обратном направлении) — in/out.

Структура события HAR:

  • type (тип события) — har.
  • date — время события.
  • id — идентификатор события.
  • parents (родитель события, как правило, процесс):
    • id — идентификатор родителя события.
    • type — тип родителя события (например, human, body).
  • source — идентификатор видеопотока.
  • trigger_source:
    • id
  • image — кроп детекции.
  • original_image — полный кадр.
  • har_data (данные о распознанных действиях):
    • action (действие: драка, падение, сидение, лежание) — fight, fall, sit, lie.

События отправляются в OMNI Platform по HTTP-протоколу. Далее можно настроить передачу полученных событий из OMNI Platform во внешние сервисы через веб-сокеты. Дополнительную информацию см. в документации OMNI Platform.

ВАЖНО

События доступны только в OMNI Agent Online.

Как включить или отключить отправку событий

Настройка через файл конфигурации

Для включения или отключения событий через файл конфигурации установите значения параметров enable_activities (события активностей), enable_identification (события идентификации), enable_non_identification (события неидентификации), enable_har (события HAR: драка, падение, сидение, лежание), enable_line_crossing (события пересечения линий в прямом/обратном направлении) и enable_roi_crossing (события входа/выхода в/из ROI) как true (модуль включен) или false (модуль отключен).

В событиях идентификации передаются данные по кандидатам — профилям из базы, с которыми произошла идентификация (лицо с подаваемого кадра и лицо из базы имеют высокую степень схожести). Число допустимых кандидатов можно указать в поле pipelines.face.video_worker_override_parameters.search_k: int, значение по умолчанию — 3.

Настройка через дашборд

Для включения или отключения событий через дашборд нажмите на значок Настройки в дашборде OMNI Agent и включите типы событий, которые будут передаваться в OMNI Platform.

img.png

Задержка отправки повторных событий

Задержка (кулдаун) событий — это временной интервал, который отсчитывается от первой детекции события, и в течение которого приостанавливается отправка повторных событий (дублей) идентификации, неидентификации и распознавания действий человека (HAR), случающихся из-за смены ракурса, поворота головы, пересечения треков людей или кратковременных заслонений.

Для настройки задержки откройте файл config/run_params.json и измените значения в следующих полях:

  • events.har_cooldown_interval: int, значение по умолчанию — 5000 — задержка событий HAR (в мс).
  • events.same_human_identification_cooldown_interval: int, значение по умолчанию — 5000 — задержка событий идентификации (в мс).