Блоки
- Начало
- Конец
- Значение для переменной
- Условие
- Выдать текст
- Запрос в БД
- HTTP-запрос
- Telegram
- Детектор лиц
- Детектор людей
- Детектор СИЗов
- Детектор Машин
- Детектор номеров машин
- Вычисление эмбеддингов
- Идентификатор номеров машин
- Трекер
- Вычисление скорости
- Универсальный детектор
- Детектор движений
- Детектор поз
- Детектор спецтранспорта
- Классификатор мусоровозов
- Детектор мусоровозов
- Сравнение эмбеддингов
- Проверка таймаутов
- Обновление таймаута
- Блок события
- Сегментация автомобилей
- Поиск свободных мест
- Детектор дефектов камеры
- Пересечение линии
- Проверка зоны
Начало
Блок “Начало” запускает работу сценария и принимает данные, необходимые для выполнения сценария. Это обязательный блок в сценарии наравне с блоком "Конец".
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Начало сценария Умного Шлагбаума"
Типы стартовых блоков:
Входящее изображение: используется для обработки сценариев основанных на получении изображения
Входящий видеопоток
Запрос к видеопотоку
Завершающий сценарий
Дополнительные параметры - параметры необходимые для выполнения сценария
Для большинства сценариев имеет смысл добавить в стартовый блок следующие переменные, поэтому они по умолчанию добавлены в блок "Начало", автоматически создаваемый в новом сценарии:
time - хранит время получения события
source - хранит источник получения события
img_key - хранит уникальный идентификатор изображения
camera_id - хранит уникальный идентификатор камеры
img_bytes - хранит изображение
camera_name - хранит название камеры присвоенное при ее добавлении
scenario_id - хранит уникальный идентификатор сценария
Конец
Блок "Конец" завершает работу сценария. Это обязательный блок в сценарии так же, как и блок "Начало".
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Конец сценария Умного Шлагбаума"
Действие. Сейчас в этом поле возможно выбрать только одно действие "Завершить обработку кадра"
Дополнительные параметры - здесь вы можете добавить при необходимости параметры в формате "Ключ - Значение"
Значение для переменной
Изменяет значение переменной по ходу выполнения сценария.
Входные параметры:
Переменная - поле принимает переменную значение которой нужно изменить по ходу выполнения сценария
Выходные параметры:
Та же переменная с новым значением
Условие
Дает возможность сравнивать переменные и в зависимости от результата сравнения разводить сценарий по разным веткам.
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Открыт шлагбаум?"
Переменная 1 - выберите первую переменную для сравнения из списка добавленных в сценарий.
Оператор - выберите один из математических операторов для сравнения
Переменная 2 - выберите вторую переменную для сравнения из списка добавленных в сценарий.
Выходные параметры блока:
результат сравнения в значении false/true
Выдать текст
Отдает текст по ходу выполнения сценария, может принимать переменные в следующем виде: {{ID_камеры}}
Чекбокс "Пройти по сценарию дальше" -
Запрос в БД
Отправляет ранее созданный в разделе SQL-запросы запрос в Базу Данных.
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Получение адреса"
Запрос к базе - поле позволяет выбрать из выпадающего списка ранее созданный SQL-запрос
Запрос и Результат запроса - поля, заполняющиеся автоматически при выборе SQL-запроса.
HTTP-запрос
Отправляет ранее созданный в разделе HTTP-запросы запрос.
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Получение текущего времени"
HTTP- запрос - поле позволяет выбрать из выпадающего списка ранее созданный HTTP-запрос
Код ответа - выберите переменную, в которой будет храниться код ответа
Текст ответа - выберите переменную, в которой будет храниться текст ответа
Входные параметры блока:
- http запрос - поле позволяет выбрать из выпадающего списка ранее созданный http запрос
Выходные параметры блока:
- результат запроса
- код ответа
- текст ответа
Служит для отправки email при наступлении события сценария, может содержать информацию в виде текста и изображений.
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Отправить письмо об открытии шлагбаума"
Логин – выберите переменную, которая хранит логин отправителя
Пароль – выберите переменную, которая хранит пароль отправителя
Адрес отправителя – выберите переменную, которая хранит адрес отправителя
Адрес получателя – выберите переменную, которая хранит адрес получателя
Тема – выберите переменную, которая хранит тему письма
Содержание сообщения – выберите переменную, которая хранит текст сообщения
Изображение – выберите переменную, которая хранит изображение события. Подставляется автоматически
Таймаут на отправку сообщений в минутах – выберите переменную, которая хранит значение таймаута
Telegram
Служит для отправки сообщения в telegram при наступлении события сценария, может содержать информацию в виде текста и изображений.
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Отправить сообщение об открытии шлагбаума"
Токен бота – выберите переменную, которая хранит текстовое значения токена бота, с которого будут отправляться сообщения
ID чата – выберите переменную, которая хранит текстовое значение ID чата
Содержание сообщения – выберите переменную, которая хранит текст сообщения
Изображение – выберите переменную, которая хранит изображение события. Подставляется автоматически
Таймаут на отправку сообщений в минутах – выберите переменную, которая хранит текстовое значение таймаута в минутах
Детектор лиц
Детектор лиц выполняет функцию детекции лиц на изображении и возвращает координаты лица в виде bbox
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти лица"
Изображения – поле принимает переменную, хранящую текстовое значения изображения события.
MAC домофона – поле принимает переменную, хранящую текстовое значение MAC адреса устройства, передающего изображение.
Ключ – uuid картинки, уникальный ключ изображения.
Время – поле принимает переменную, хранящую значение времени события.
Результаты
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов людей.
Точки – поле принимает массив чисел, хранящий координаты антропометрических точек лица. Нужен для выравнивания лица, приведения его в "нормальный вид" перед получением эмбеддинга
Детектор людей
Определяет координаты людей на изображении
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти людей"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
ID камеры – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Ключ – uuid картинки, уникальный ключ изображения.
Время – поле принимает переменную, хранящую значение времени события.
Результаты
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов.
Детектор СИЗов
Определяет наличие средств индивидуальной защиты на людях.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти СИЗы"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов.
Типы СИЗов – выбор типа СИЗа для детекции (шлем или спецодежда).
Результаты
Идентификатор нарушений – выдает два значения: true или false. True - если есть нарушение (человек без СИЗов), false - если нет нарушений
Маркеры СИЗов – строка в виде “1,0,0,1,..”, где 1 - наличие СИЗов, 0 - отсутствие СИЗов у соответствующих bbox-ов. Т.е. у первого СИЗы есть, у второго и третьего - нет, у четвертого есть …
Детектор Машин
Определяет координаты автомобилей на изображении
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти машины"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
ID источника – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Ключ – uuid картинки, уникальный ключ изображения.
Время – поле принимает переменную, хранящую значение времени события.
Результаты
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов.
Детектор номеров машин
Определяет наличие на изображении регистрационных знаков государственного образца (по ГОСТ Р 50577-93) возвращает контур (Bounding Boxes) в котором обнаружен номер.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти номера"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
ID источника – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Ключ – uuid картинки, уникальный ключ изображения. (не используется)
Время – поле принимает переменную, хранящую значение времени события.
Результаты
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов.
Вычисление эмбеддингов
Вычисляет уникальное векторное представление лица полученное из Bounding Boxes и возвращает эмбеддинг лица в виде массива/вектора чисел (256 или 128 float чисел, не помню) который характеризует данное лицо. По нему далее ведется сравнение похожести лиц.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Определить эмбеддинги"
Bounding Boxes - поле принимает переменную, хранящую координаты bbox'ов
Точки – полученные ранее от детектора антропометрические точки лица
Результаты
Эмбеддинг по лицу – поле принимает переменную хранящую текстовое уникальное векторное представление лица, по умолчанию - пустое значение.
Идентификатор номеров машин
Определяет координаты людей на изображении
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Идентифицировать номер"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
ID источника – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Ключ – uuid картинки, уникальный ключ изображения.
Время – поле принимает переменную, хранящую значение времени события.
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов.
Результаты
Распознанные номера – хранит значение распознанного номера.
Трекер
Сравнивает координаты объектов, возвращая треки - позиции объектов во времени.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Получить трекер"
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов.
Идентификатор камеры – id камеры, чтобы различать, какой камере принадлежат треки.
Время – поле принимает переменную, хранящую значение времени события.
Порог отсутствия новой детекции – число в секундах. Если трек не обновляется дольше указанного времени, он удаляется.
Порог близости контуров – расстояние в пикселях от одного центра объекта до другого. Максимальное расстояние, в пределах которого мы будем сопоставлять объекты на кадре с треками объектов предыдущего кадра.
Результаты
Активные треки – треки, которые активны на текущем кадре. Т.е. только те треки, которые мы сопоставили с объектами на текущем кадре. Когда треков нет - значение этой переменной будет “[]”
Потерянные треки – треки, которые мы удалили. Удаленный трек удаляется и попадает в этот список один раз. Когда потерянных треков нет - значение этой переменной будет равно “[]”
Вычисление скорости
Определяет координаты людей на изображении
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти людей"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события. (не используется в блоке)
Идентификатор камеры – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Результаты
Скорости – массив скоростей объектов.
Универсальный детектор
Позволяет использовать детекторы, обученные на публичных датасетах для детекции объектов, указанные в поле "Класс"
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти поезд"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
ID источника – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Ключ – uuid картинки, уникальный ключ изображения.
Время – поле принимает переменную, хранящую значение времени события.
Класс – позволяет выбрать один класс для детекции этим блоком.
Результаты
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов выбранных в "Классе" объектов.
Детектор движений
Определяет наличие движения относительно источника видео
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Выявить движение"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
ID источника – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Зона детекции – принимает переменную хранящую координаты интересующей зоны детекции движения.
Чувствительность – порог детектора движения. Достигаться вычитанием фона для устранения шума. Диапазон [0–255].
Минимальная область внимания – Минимальная площадь контура обнаруженного, движущегося объекта (в пикселях).
Размер буфера истории детекции – принимает переменную, определяющую, сколько изображений хранится в буфере. Далее по ним вычисляется движение
Результаты
Результат проверки – координаты bbox-ов областей с зафиксированным движением.
Детектор поз
Определяет положение тела человека.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Определить позу"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
ID источника – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Время – поле принимает переменную, хранящую значение времени события.
Результаты
Поза – поле принимает переменную хранящую список координат антропометрических точек тела человека.
Детектор спецтранспорта
Определяет наличие спецтранспорта на изображении и их местонахождение.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти людей"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
Контуры машин – поле принимает переменную, хранящую координаты bbox'ов машин
Контуры номеров – поле принимает переменную, хранящую координаты bbox'ов номеров
Результаты
Метки машин – записывает в переменную список c классами автомобилей. Пример: [“police_cars”, “firecars”].
Метки номеров – записывает в переменную список c классами номеров. Пример: [“police_cars”, “firecars”].
Классификатор мусоровозов
Определяет, является ли найденный автомобиль или грузовик мусоровозом.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти мусоровоз"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
Bounded Boxes – поле принимает переменную, хранящую координаты bbox'ов автомобиля или грузовика, задетектированного ранее.
Результаты
Идентификатор нахождения мусоровоза – "true" если есть и "false" если нет
Детектор мусоровозов
Определяет координаты мусоровозов на изображении
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти мусоровоз"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
ID источника – поле принимает переменную, хранящую id камеры в Платформе Видеоаналитики.
Ключ – uuid картинки, уникальный ключ изображения.
Время – поле принимает переменную, хранящую значение времени события.
Результаты
Bounding Boxes – поле принимает переменную, хранящую координаты bbox'ов найденных мусоровозов.
Сравнение эмбеддингов
Сравнивает полученный эмбеддинг с эмбеддингами, хранящимися в разделе “Доступы”, возвращает id пользователя, имеющего “Доступ”
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Определить доступ"
Эмбеддинг – поле ввода принимает переменную хранящую значение уникального векторного представления лица человека.
Порог [0-1] – поле ввода принимает переменную хранящую значение Порога уверенности совпадения эмбеддингов.
Результаты
Идентификатор нахождения мусоровоза – поле ввода принимает переменную для хранения значения id пользователя, имеющего “Доступ”
Проверка таймаутов
Блок позволяет проверять состояние устройства, принимающего команду к выполнению, и отправлять повторную команду не чаще установленного времени.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Прошло ли время?"
Имя сущности таймаута – то, к чему мы привяжем таймаут. Например, можно проверять таймаут на открытие ворот, либо таймаут на определенный номер. укажем здесь “relay_id”, т.е. будем проверять таймаут по id реле открытия.
Время таймаута, секунды – длительность таймаута в секундах после активации.
Инициализировать ли таймаут сразу? – Просто проверить таймаут, или проверить и инициализировать таймаут, если он не был активен. “True” - Инициализировать при проверке. “False” - просто проверить таймаут. Укажем “True”.
Результаты
Активен ли таймаут – в переменную записывается результат проверки. “True” если таймаут активен, ”False” если не активен.
Осталось секунд – в переменную запишется, сколько секунд осталось до конца таймаута.
Обновление таймаута
Обновляет значение активности таймаута
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Обновить таймаут"
Имя сущности таймаута – то, к чему мы привяжем таймаут. Например, можно проверять таймаут на открытие ворот, либо таймаут на определенный номер. укажем здесь “relay_id”, т.е. будем проверять таймаут по id реле открытия.
Действие – Активировать таймаут или сбросить таймаут. Активация таймаута, это запись текущего времени для следующей проверки таймаута блоком проверки таймаута. Сброс таймаута - удаление последнего времени сработкий таймаута
Блок события
Для более информативных событий можно добавлять собственные события в различных ветках сценария. В блок “событие” нельзя передавать переменные с длиной более 250 символов. Например, переменная с изображением очень длинная, поэтому события не запишутся и сценарий будет падать с ошибкой.
Сегментация автомобилей
Позволяет определить контуры автомобилей и тип транспортного средства.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Сегментировать автомобили"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
Результаты
Полигоны автомобилей – поле принимает переменную координаты полигонов автомобилей в виде списка WKT объектов shapely в виде строки.
Bbox'ы автомобилей – поле принимает переменную координаты (bbox’ы) автомобилей
Классы автомобилей – поле принимает переменную классы автомобилей
Поиск свободных мест
Блок проверяет наличие свободных мест в зоне размеченной парковки
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Найти свободные места"
Разметка парковки - поле принимает переменную, хранящую разметку парковки. Разметка задается в управлении камерами. Переменная, хранящая разметку - markup
Полигоны автомобилей – поле принимает переменную, хранящую значение полигонов автомобилей от блока сегментации автомобилей
Результаты
Зоны со свободными местами – поле принимает переменную, в которую записываются значения координат зон со свободными местами. Используется для отрисовки свободных мест для пользователей
Количество свободных мест– поле принимает переменную, в которую запишет значение количества свободных мест
Разметка для свободных мест – данные по всем свободным местам, используемые для отрисовки debug изображения для разработчиков
Детектор дефектов камеры
Блок проверяет наличие дефектов камеры, возвращает значение true или false в зависимости от того, есть ли дефект на изображении.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Определить дефекты"
Изображение – поле принимает переменную, хранящую текстовое значения изображения события.
Результаты
Есть ли дефект – поле принимает переменную, записывающую значение true или false в зависимости от наличия дефектов на изображении
Подробная информация о дефектах – поле принимает переменную, хранящую текстовую информацию о дефекте
Пересечение линии
Проверяет, что определенные треки объектов пересекли заданную линию в определенном направлении, вперед или назад.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Подсчет людей"
Линия пересечения – переменная, хранящая координаты линии, пересечения которой блок будет фиксировать
Треки объектов – переменная, хранящая треки, получаемые из блока "Трекер"
Результаты
Треки, пересекшие линию вперед – поле принимает переменную, записывающую определенные треки
Треки, пересекшие линию вперед - поле принимает переменную, записывающую определенные треки
Треки, не пересекшие линию - поле принимает переменную, записывающую определенные треки
Работа блока
Что значит “Пересечение вперед?” Что значит “Пересечение назад?”
Для работы блока нужно указать линию в настройках камеры. У линии должно быть указано две и только лишь две точки. Первая точка будет началом линии, а вторая - концом линии. Представьте часы со стрелками. Минутная стрелка часов указывает на 3 часа. Если начало линии лежит в центре циферблата, а конец на кончике стрелки (3 часа) то пересечение такое линии вперед будет значить, что мы пересекли эту линию снизу вверх. Пересечение назад же будет значить, что мы пересекли эту стрелку сверху вниз.
Очень важно то, как именно вы нарисуете линию пересечения. В зависимости от этого направления пересечения изменяются так, как показано ниже(точка начала - центр циферблата)
Ограничения блока:
-
Проверяет пересечения одной линии за раз
-
В линии должно быть отмечено только 2 точки
-
Корректная работа блока сильно зависит от fps камеры. Мы указывали 3 fps
-
Корректная работа блока сильно зависит от качества работы трекера, который зависит от fps камеры
-
Для работы блока требуется, чтобы в сценарии перед ним был блок “трекер”, т.к. блока работает с треками, а не bbox’aми.
Как проверить, что трек пересек линию?
Сравните выходную переменную с текстовой переменной “[]”. Список пустых треков, т.е. отсутствие треков в блоке обозначается как пустой список - “[]”.
Может возникнуть путаница с сравнением отсутствия bbox’ов и треков. Когда нет bbox’ов - блоки детекторов возвращают пустые строки, когда нет треков - возвращается строка с открывающей и закрывающей квадратными скобками “[]”.
Проверка зоны
Проверяет положение объектов относительно определенной зоны.
Входные параметры
Название блока - впишите любое название блока, чтобы отличать его от других блоков в рабочем пространстве. Например, "Есть ли человек в зоне?"
Область/зона интереса – зона, относительно которой происходит определение координат объектов
Координаты объектов – список из Bbox’ов объектов. Подойдут bbox’ы от любого детектора платформы.
Коэффициент уменьшения объекта – Число от 0 до 1, не включая 0. 1 значит, что будет проверяться весь объект в полную высоту. 0.5 - будет проверяться нахождение нижней половины бокса в зоне, 0.25 - нижней четверти и т.д. Обычно нужно для более точного подсчета людей в зоне по ногам.
Результаты
Объекты в зоне – поле принимает переменную, хранящую координаты bbox'ов объектов, у которых вся площадь bbox’a находится внутри зоны
Объекты вне зоны – поле принимает переменную, хранящую координаты bbox'ов объектов, у которых вся площадь bbox’a находится вне зоны
Объекты на границе зоны – поле принимает переменную, хранящую координаты bbox'ов объектов, у которых у которых хотя бы одна общая точка bbox’a совпадает с границей зоны
Как проверить, что в зоне есть объекты?
Сравните переменную из выходного параметра “Объекты в зоне” с текстовой переменной, значение которой равно строке нулевой длины: “” (тут двойные кавычки). Если они не равны - значит в зоне есть объекты. Если равны - объектов нет.