Процессы и события
Процессы
Процесс — это формат представления результатов распознавания и трекинга, реализованный в рамках временных интервалов.
Каждый процесс содержит следующий набор данных:
- Идентификатор процесса.
- Временной интервал процесса (начало и окончание процесса).
- Тип процесса (трек, человек, лицо, тело, эмоция и др.).
- Объект детекции с определёнными атрибутами лица (объектом выступает человек, попавший в поле зрения камеры).
- Лучший кадр (best shot) и массив всех кадров, полученных, пока человек не вышел из поля зрения камеры.
Отправка процессов по вебхукам
Добавить вебхук можно в Настройках дашборда OMNI Agent или в файле конфигурации 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 в файле run_params.json (измеряется в миллисекундах).
Для отправки лучших кадров по вебхукам включите опцию «Отправка лучших кадров по вебхукам» в Настройках дашборда OMNI Agent, либо укажите значение true для поля enable_webhook_image2jpg_conversion. Значение по умолчанию — false. Лучший кадр кодируется в base64 как jpeg изображение.
Отправка процессов по MQTT
- Скачайте и установите брокер MQTT по ссылке 
- Откройте файл 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
 }
- Запустите службу 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.