Процессы и события
Процессы
Процесс — это формат представления результатов распознавания и трекинга, реализованный в рамках временных интервалов.
Каждый процесс содержит следующий набор данных:
- Идентификатор процесса.
- Временной интервал процесса (начало и окончание процесса).
- Тип процесса (трек, человек, лицо, тело, эмоция и др.).
- Объект детекции с определёнными атрибутами лица (объектом выступает человек, попавший в поле зрения камеры).
- Лучший кадр (best shot).
Спецификация процессов
Структура процессов
Описание полей структуры процессов
Общая структура
{
"processes": [ { ... } ]
}
processes – список всех процессов, зафиксированных системой. Каждый процесс описывается в соответствии с одной из схем в "$defs/process".
Базовые определения
process_base
id – UUID процесса (уникальный идентификатор).
type – определяет тип процесса (track, emotion, action и т.д.).
time_interval – временной интервал процесса (начало и конец в ISO8601).
finalized – признак того, что процесс завершён.
object_base
object – источник (объект), для которого создаётся процесс:
id – UUID объекта.
class – тип объекта: "human", "face", "body".
child_process_base
- parent – UUID родительского процесса, к которому относится текущий (например, лицо связано с процессом human).
numerical_base
- numerical_id – внутренний числовой идентификатор процесса.
object_source_base
- object.source – источник, создавший объект (например, камера).
process_source_base
- source – уникальный идентификатор камеры, с которой наблюдается процесс.
crop_base_base64 и crop_base_binary
best_shot – сохранённый кадр (лучшее изображение объекта), может быть:
закодирован в Base64 (crop_base_base64),
бинарный с метаданными (crop_base_binary).
__bsm (Binary Sample with Meta)
blob – бинарные данные (base64).
format – формат хранения (например, NDARRAY).
dtype – тип данных (uint8_t, float и т.п.).
shape – размерность массива данных.
color_format – цветовое пространство (RGB, BGR, GRAY и т.д.).
Конкретные процессы
human_process: Процесс отслеживания человека.
Содержит:
ссылку на источник (source),
базовые атрибуты трекинга (process_base_track),
описание объекта (object_base),
опционально – match_data:
profileGroups – группы профилей, в которых найден человек.
distance, fr_r, fa_r, score – метрики распознавания.
face_process: Процесс отслеживания лица.
object:
class = "face",
age – возраст,
gender – пол (MALE, FEMALE, UNKNOWN),
quality – качество детекции.
Может содержать "best_shot" (кадр лица).
body_process: Процесс отслеживания тела.
object:
class = "body",
bbox – координаты рамки тела (x,y),
score – вероятность верной детекции.
emotion_process: Определение эмоции по лицу.
emotion – строка с названием эмоции.
type = "emotion".
attention_process: Определение внимания (например, смотрит ли человек на экран).
- type = "attention".
joint_process: Отслеживание ключевых точек скелета.
object:
class = "joint",
joint – название точки (например, "nose", "left_wrist"),
bbox – координаты,
score – метрика достоверности.
presence_process: Определение присутствия в зоне интереса (ROI).
object.class = "roi",
object.name – имя зоны,
action = "roi_presence".
trigger_crossing_process: Событие пересечения линии.
object.class = "trigger",
object.name – имя линии,
action = "trigger_crossing",
direction – направление (in или out).
action_recognition_process: Процесс распознавания действия.
- action – название действия (например, "fall").
external_process: Внешний процесс (например, воспроизведение видео).
object.class = "media",
name – название видео,
type = "external",
repeats – повторяется ли,
duration – длительность,
internal_time_interval – внутренний интервал.
Вспомогательные поля
__uuid – UUID (уникальный идентификатор).
timestamp – время в ISO8601.
positive_integer – положительное число.
__dtype – тип данных (для бинарных массивов).
События
Событие — это формат представления результатов распознавания и трекинга, отражающий факт совершения действия. OMNI Agent может формировать следующие типы событий:
- События типа Face:
- События идентификации (человек с камеры найден в базе).
- События неидентификации (человек с камеры не найден в базе).
- События контроля сокрытия лица (человек находится в области интереса (ROI) или пересекает размеченную линию, и при этом прячет лицо, чтобы избежать распознавания).
- События типа HAR:
- Падение
- Драка
- Лежание
- Сидение
- События типа Regions:
- События ROI (человек находится в области интереса (ROI) или вышел из нее).
- События пересечения линий (человек пересек размеченную на видеопотоке линию в прямом/обратном направлении).
События отправляются в OMNI Platform по проприетарному протоколу или во внешние сервисы по вебхукам. Из OMNI Platform можно настроить передачу полученных событий во внешние сервисы через веб-сокеты. Дополнительную информацию см. в документации OMNI Platform.
Спецификация событий
Структура событий
Описание полей структуры событий
Структура события идентификации:
- 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 — название триггера.