Перейти к содержанию
VVizorLabsТехнический центрОсновной сайт

Платформа 4.0 / BOX 5.0

«Сигма»: контроль рабочего места сценарием

«Сигма»: контроль рабочего места сценарием: пошаговая учебная задача, проверка результата и ссылки на инструкции.

Для кого: администратор / разработчик сценариев
На этой странице

Практикум «Сигма»: контроль рабочего места через сценарий

Связанный экран.

В BOX 3.2 эта задача разбиралась на штатном контроле дисциплины. Здесь проектируем её сценарием Platform 4.0, с собственным правилом состояния зоны и интервалов. Для распознавания присутствия достаточно подходящей CV-модели; LLM не обязателен.

Условие: в рабочее время пост должен быть занят хотя бы одним человеком. Перерыв исключается из расчёта. Краткий уход допускается в пределах согласованного порога. Потеря видео считается отсутствием наблюдения, а не уходом сотрудника.

Кадр + время + ID камеры
  → Проверка пригодности изображения
  → Детекция людей
  → Принадлежность людей зоне рабочего места
  → Агрегация по каждой зоне, включая пустой список людей
  → Состояние зоны: ЗАНЯТО / ПУСТО / НЕИЗВЕСТНО / ВНЕ ГРАФИКА
  → Таймер отсутствия и границы интервала
  → События начала/окончания + данные для отчёта

Критическая особенность: логика должна получать сообщения и при нуле людей. Если фильтр удаляет пустой список или весь msg, нижестоящий таймер не узнаёт, что место пусто. Обычное событие по отсутствующему атрибуту существующего трека это не исправляет.

Параметр проекта Учебный пример Как выбирать
Тип и ID зоны workplace, пост 01 Точный идентификатор справочника и геометрия без прохода
Минимальная занятость 1 человек Требование к посту, не общее число людей в кадре
Рабочие интервалы 09:00–18:00, перерыв 13:00–14:00 Реальный график и часовой пояс площадки
Порог отсутствия 60 секунд Согласованное правило; не выводится из возможностей модели
Допустимый разрыв наблюдений Например 5 секунд После превышения состояние неизвестно; подобрать по потоку
Подтверждение возвращения Несколько достоверных наблюдений / время Не завершать интервал по единичной ложной детекции
Повторное уведомление По регламенту Отдельно от длительности одного интервала
Источник времени Время кадров Для видеофайла это время материала, а не скорость воспроизведения

Состояние хранится по ключу (камера, зона, правило). Нужен блок состояния или программное расширение с документированным постоянным контекстом. Следующий алгоритм — псевдокод бизнес-логики, не готовый вставляемый Python-код:

при новом наблюдении зоны:
    если вне рабочего графика:
        завершить/приостановить расчёт по согласованному правилу
        состояние = ВНЕ ГРАФИКА
    иначе если кадр непригоден или интервал между кадрами слишком велик:
        состояние = НЕИЗВЕСТНО
        не включать этот интервал в доказанное отсутствие
    иначе если достоверно есть нужное число людей:
        подтвердить возвращение
        закрыть открытый интервал отсутствия, если он был
        состояние = ЗАНЯТО
    иначе:
        отметить начало наблюдаемой пустоты, если её раньше не было
        состояние = ПУСТО
        после порога создать одно событие начала отсутствия
        не создавать новое начало на каждом кадре

Отдельно определите поведение при перезапуске сценария, смене версии, длительном обрыве и переходе через полночь. Если нет новых кадров, нужен контроль свежести вне самого покадрового обработчика; функция, вызываемая только на кадрах, не обнаружит остановку потока сама по себе.

Для отчёта сохраняйте ID камеры/зоны, начало, конец, длительность, рабочий график, версию правила, статус завершения и интервалы неизвестности. Один сигнал «место пусто» не создаёт автоматически интервальный отчёт КТД. Интеграцию этих интервалов в штатную отчётность необходимо реализовать и проверить отдельно, либо строить отчёт по согласованному набору событий/данных.

Приёмочная таблица:

Эпизод Ожидаемое поведение
Работник на посту Занято, отсутствия нет
Уход короче порога Нет события длительного отсутствия
Уход дольше порога Одно начало и корректная длительность
Прохожий в соседнем проходе Пост не считается занятым
Два человека, один ушёл Занято, если требуется хотя бы один
Перерыв Не включается в рабочее отсутствие
Потеря потока / закрытая камера Неизвестно, отдельная диагностика
Возврат видео на пустой пост Дальнейший отсчёт по явно принятому правилу; без выдуманного знания обрыва
Перезапуск / новая версия Предсказуемое закрытие или восстановление интервала без дублей

На цеховых видео «Сигмы» сначала разметьте интервалы вручную и сравните сценарный результат с ними. В этой редакции описан способ реализации; готовый испытанный граф интервального КТД и его интеграция с отчётом не заявляются.

Общий модуль зон, снимок BOX 3.2: рабочее место выделено полигоном. Показан пример геометрии до сохранения; сценарное правило присутствия настраивается отдельно.
Общий модуль зон, снимок BOX 3.2: рабочее место выделено полигоном. Показан пример геометрии до сохранения; сценарное правило присутствия настраивается отдельно. Открыть в полном размере