Задача
Крупная стройплощадка, парк уже стоящих IP-камер. Нужно автоматически фиксировать нарушения СИЗ — отсутствие каски и сигнального жилета — и в реальном времени дёргать бригадира. Гонять видео наружу нельзя: приватность рабочих и узкий канал на объекте. Весь инференс — на месте.
Главная боль не в самой детекции, а в ложных срабатываниях. Дальние зоны с низким разрешением, пыль, контровый свет. Если система «кричит волками», её быстро отключают, и весь проект мёртв.
Подход
Поставили edge-узел прямо на площадке, забор потоков по RTSP. Детектор человека и классификатор СИЗ квантовали в INT8 и скомпилировали под целевой ускоритель — иначе на нескольких потоках одновременно узел не тянул реальное время.
С false-positive боролись инженерно, а не поднятием порога. Ввели зонирование: СИЗ обязателен не везде, разметили рабочие зоны вручную. Поверх событий — дебаунс: нарушение засчитывается, только если трек устойчиво держится несколько кадров, а не мелькнул на одном размытом кадре. Backpressure на очереди кадров: под пиковой нагрузкой узел деградирует предсказуемо, дропает старые кадры, а не копит лаг и не падает.
Стек
Edge GPU node · TensorRT (INT8) · RTSP ingest · ByteTrack · Rust (демон событий)
Результат
- −74% ложных срабатываний — за счёт зонирования и дебаунса событий.
- 96.5% recall по реальным нарушениям — пропусков почти нет.
- 0.8 с от кадра до алерта бригадиру.
- 16 камер на один edge-узел в реальном времени, видео не уходит с объекта.