← Проекты

Разработка D2Tech · в продакшене

Видеоконтроль техники безопасности на производстве

Сервис подключается к камерам, которые уже висят в цеху, и в реальном времени видит людей и защиту на них. Из этого получаются две вещи: тревога, когда кто-то без каски там, где нельзя, и табель по факту прохода.

0 распознавания лиц по умолчанию

Задача

Нарушение требований к каске, жилету, перчаткам — частая причина травм и штрафов при проверках охраны труда. Бригадир не видит, кто сейчас в цеху без каски и кто опоздал сегодня, а учёт по бумажным журналам и отдельным СКУД не даёт оперативной картины.

Разбор инцидента постфактум — часы просмотра архива видеонаблюдения вручную.

Что сделали

Каска, жилет, перчатки, очки

Нарушение засчитывается, если человек стоит в размеченной опасной зоне без нужной защиты дольше нескольких секунд. Прошёл насквозь за две — не нарушение, никому не нужна тревога на каждый шаг.

Один человек под одним номером

Человек ведётся между кадрами. Зашёл за стойку, вышел — тот же человек, а не новый.

Присутствие без биометрии

Табель строится по бейджу или метке СКУД с видеоподтверждением. Узнавать людей по лицу мы не стали: это отдельный, юридически тяжёлый режим, и по умолчанию он выключен.

Зоны и тревоги

Зашёл в зону крана без сопровождения — ответственному уходит сообщение в Telegram с кадром. Раз в день и раз в неделю — отчёт на бригаду и тепловая карта, где ходят.

Почему этому можно верить

Ложные тревоги
Порог по времени в зоне убирает почти все. Остальное лечится разметкой зон под конкретный цех, а не универсальной.
Двойной счёт
Трекер держит номер при частичном перекрытии. Без этого один сварщик за смену превращается в пятерых.
Что уходит наружу
Только события в JSON и, если надо, кадр. Видео остаётся на объекте: и полосы не хватит, и незачем.
Лица
Выключены. Включать — только с согласием сотрудников и отдельным правовым основанием, и это решение заказчика, не наше.

Где это ломается

Точность сильно зависит от ракурса, света и разрешения. Модель приходится дообучать на видео с тех самых камер, открытых датасетов мало.

Несколько потоков 1080p в реальном времени — тяжёлая вычислительная задача. Инференс стоит на edge-устройстве у камер или на GPU-сервере, рассчитанном под число потоков.

Как устроено

Инференс
Python, YOLOv8, дообученная на своём датасете СИЗ; ByteTrack для трекинга и стабильного ID; OpenCV для препроцессинга; ONNX Runtime или TensorRT для ускорения.
Edge
NVIDIA Jetson рядом с камерами либо GPU-сервер при небольшом числе потоков. В облако уходят события в JSON и при необходимости кадр — не видеопоток.
Бэкенд
FastAPI как приёмник событий и API дашборда, PostgreSQL с TimescaleDB для временных рядов присутствия и нарушений, Redis как буфер между инференсом и API.
Дашборд
Next.js и React: живая лента нарушений по WebSocket, карточка сотрудника с историей, тепловая карта. Grafana для операционных метрик.

Похожая задача?

Опишите её — пришлём скоуп и смету за 24 часа: