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

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

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 и включите или отключите опцию Анонимный режим в открывшейся вкладке.

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

Настройка через веб-интерфейс

img.png

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

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

{
"type": "processes", // тип (или оставить поле пустым)
"url": "http://127.0.0.1:5000/trigger" // указание адреса с эндпоинтом
}

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

Отправка процессов по 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 может формировать следующие типы событий:

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

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

ВАЖНО

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

Спецификация событий

Структура событий

Описание полей структуры событий

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

  • type (тип события) — identification.
  • date — время события.
  • id — идентификатор события.
  • object (объект, породивший событие):
    • class — класс объекта (например, human).
    • id — идентификатор объекта.
  • parents (родитель события, как правило, процесс):
    • id — идентификатор родителя события.
    • type — тип родителя события (например, human, face).
  • source — идентификатор видеопотока.
  • trigger_source:
    • id
  • image — кроп детекции.
  • image_bbox — нормализованные координаты детекции.
    • [0] - x1 координата
    • [1] - y1 координата
    • [2] - x2 координата
    • [3] - у2 координата
  • 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 — кроп детекции.
  • image_bbox — нормализованные координаты детекции.
    • [0] - x1 координата
    • [1] - y1 координата
    • [2] - x2 координата
    • [3] - у2 координата
  • original_image — исходный кадр (опционально).

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

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

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

  • type (тип события) — crossing.
  • date — время события.
  • id — идентификатор события.
  • parents (родитель события, как правило, процесс):
    • id — идентификатор родителя события.
    • type — тип родителя события (например, human, body).
  • source — идентификатор видеопотока.
  • trigger_source:
    • id
  • image — кроп детекции.
  • image_bbox — нормализованные координаты детекции.
    • [0] - x1 координата
    • [1] - y1 координата
    • [2] - x2 координата
    • [3] - у2 координата
  • original_image — исходный кадр (опционально).
  • crossing_data (данные о пересечении линии):
    • direction (пересечение линии в прямом/обратном направлении) — in/out.

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

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

Структура события контроля сокрытия лица:

  • type (тип события) — face_hide_control.
  • date — время события.
  • face_hide_control_data:
    • group_ids — идентификатор группы, в которую добавлен профиль.
    • match_event_id — идентификатор события идентификации.
    • no_suitable_face — флаг, описывающий, было ли задетектировано лицо, которое требуется найти в базе.
    • profile_id — идентификатор профиля из базы.
    • status — статус контрольной проверки.
  • id — идентификатор события.
  • image — кроп детекции.
  • image_bbox — нормализованные координаты детекции.
    • [0] - x1 координата
    • [1] - y1 координата
    • [2] - x2 координата
    • [3] - у2 координата
  • parents (родитель события, как правило, процесс):
    • id — идентификатор родителя события.
    • type — тип родителя события (например, human или body).
  • source — идентификатор видеопотока.
  • trigger_source (данные о триггере, запустившем событие, например, добавленной линии пересечения или ROI):
    • id — идентификатор триггера.
    • name — название триггера.

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

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

Для включения или отключения событий через файл конфигурации установите значения следующих параметров как true (модуль включен) или false (модуль отключен):

  • events.enable_activities (события активностей)
  • events.face_events.identification.enable (события идентификации)
  • events.face_events.non_identification.enable (события неидентификации)
  • events.face_events.face_hide_control.enable (события контроля сокрытия лица)
  • events.har_events.fall.enable (события HAR: падение)
  • events.har_events.fight.enable (события HAR: драка)
  • events.har_events.lie.enable (события HAR: лежание)
  • events.har_events.sit.enable (события HAR: сидение)
  • events.region_events.line_crossing.enable (события пересечения линий в прямом/обратном направлении)
  • events.region_events.roi_crossing.enable (события входа/выхода в/из ROI)

Настройка через веб-интерфейс

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

img.png

Отправка событий по вебхукам

Настройка через веб-интерфейс

img.png

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

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

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

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

Для событий идентификации и неидентификации

При появлении человека в кадре создается событие идентификации (лицо найдено в базе) или неидентификации (лицо не найдено в базе). Когда трек человека прерывается (человек вышел из кадра или зашел за препятстсвие), запускается заранее заданный временной интервал (по умолчанию 5 сек.). Если в течение этого времени человек вернется в кадр, OMNI Agent решит, что трек человека продолжается, а значит не нужно тратить ресурсы на генерацию еще одного события. Если же человек в кадр не вернется или вернется в него позже, OMNI Agent начнет новый трек и сгенерирует новое событие идентификации по этому человеку.

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

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

Для событий HAR

В случае падения, лежания или сидения людей, а также при возникновении драк OMNI Agent создает событие HAR. После этого запускается временной интервал (по умолчанию 5 сек.), в течение которого новые события на совершенное действие не приходят. Если по завершении этого временного интервала действие (драка, падение, лежание, сидение) продолжается, новое событие по нему не создается, тем самым экономятся вычислительные ресурсы системы.

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

  • Падение — events.har_events.fall.cooldown: int, значение по умолчанию — 0 — задержка событий HAR (в мс).
  • Драка — events.har_events.fight.cooldown: int, значение по умолчанию — 500 — задержка событий HAR (в мс).
  • Лежание — events.har_events.lie.cooldown: int, значение по умолчанию — 5000 — задержка событий HAR (в мс).
  • Сидение — events.har_events.sit.cooldown: int, значение по умолчанию — 5000 — задержка событий HAR (в мс).

Таймаут уверенной детекции

примечание

Параметр настраивается только для событий HAR: падение, драка, сидение, лежание.

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

Например, в сценарии безопасного города / предприятия системе необходимо реагировать только на людей, сидящих продолжительное время (человек сидит у двери (опасность взлома), или сидит / лежит рядом с техникой (опасность минирования, умышленной поломки)). Таймаут уверенной детекции, равный ~5 сек., позволяет отсечь отправку событий, в случаях если человек присел завязать шнурки, поднять упавший предмет и т.д.

Таймаут уверенной детекции можно настроить при включении отправки событий HAR в Настройках веб-интерфейса OMNI Agent. Значения по умолчанию:

img.png