Игорь Градов
Игорь Градов
7 мин
ai

Компьютерное зрение на палубе судна: как трёхуровневая валидация убирает ложные тревоги

Компьютерное зрение (computer vision, технология, позволяющая нейросети «видеть» и анализировать изображения с камер) на открытой палубе судна сталкивается с тем, чего нет в цеху или на складе: брызги на объективе, качка, блики мокрого металла и ветер, меняющий форму одежды каждую секунду, поэтому стандартная детекция без многоуровневой логики заваливает оператора ложными тревогами.

Почему это важно

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

Контроль средств индивидуальной защиты (СИЗ) по камерам на судне звучит просто: поставил камеру, подключил нейросеть, получил уведомление. На практике палубная среда разрушает этот сценарий. Дождь и морская пыль снижают контраст, мокрый металл и лужи создают блики, которые модель принимает за светлые каски, а качка двигает границы зон и траектории людей. Оригинальный проект, описанный ниже, решил эту задачу разделением системы на два уровня: модель-сенсор, которая отвечает только за наблюдения, и отдельный слой логики, который отвечает за события.

Что понадобится

  • RTSP-потоки с судовых камер (протокол передачи видео в реальном времени, стандарт для IP-камер наблюдения)
  • Детектор объектов, обученный распознавать людей и элементы СИЗ: каски, спасательные жилеты, перчатки, костюмы-поплавки
  • Трекер для удержания идентификатора (ID) человека между кадрами
  • ReID-галерея (re-identification, повторная идентификация по визуальному «портрету» человека, а не по лицу) для восстановления ID после потери трекером
  • Статусная машина и менеджер событий для ведения журнала инцидентов
  • Локальная вычислительная архитектура: система работает анонимно, фиксирует факт нарушения, а не личность

Пошаговая инструкция: шесть звеньев пайплайна

  1. Детектор выдаёт рамки людей и СИЗ по каждому кадру. Нейросеть здесь работает как сенсор: отдаёт координаты прямоугольников и ничего не знает о контексте. Если каска в кадре меньше 40 пикселей, результат наблюдения отбрасывается, потому что ниже этой границы отсутствие детекции перестаёт быть доказательством нарушения.

  2. Ассоциатор решает, кому принадлежит каждый элемент экипировки. Стандартный метод IoU (Intersection over Union, отношение площади пересечения двух рамок к площади их объединения) здесь не работает: каска слишком мала по отношению к рамке человека, и скор всегда получается крошечным. Вместо него считается доля площади СИЗ, попавшая внутрь рамки человека. Добавлены анатомические зоны: каску ожидаем только в верхней части рамки, жилет по корпусу. Это отсекает ситуацию, когда чужая каска проходящего мимо работника попадает в чужую рамку.

  3. Трекер удерживает ID человека между кадрами при перекрытиях. Без устойчивого ID невозможно накопить историю наблюдений: если номер сбрасывается каждый раз, когда люди проходят друг за другом, таймеры обнуляются и множатся дубли.

  4. ReID-галерея восстанавливает сквозной ID. Поверх трекера добавлена галерея эмбеддингов (embedding, числовой «портрет» внешнего вида человека, который позволяет сравнивать людей без распознавания лиц). На качающейся палубе геометрия рамки нестабильна, и одного трекера по координатам не хватает. Галерея даёт вторую точку опоры. Четыре правила работы галереи:

  5. Сквозной ID: если трекер потерял человека за оборудованием и вернул с новым номером, галерея связывает новый локальный трек со старым
  6. Анти-свап: когда рамки двух людей сильно перекрываются, их эмбеддинги не обновляются, чтобы исключить путаницу
  7. Привязка к месту: если человек появился рядом с точкой, где он исчез, требования к совпадению эмбеддинга смягчаются
  8. Фильтр подозрительных обновлений: одиночный эмбеддинг, резко отличающийся от усреднённого портрета, не перезаписывает галерею сразу

  9. Статусная машина ведёт состояние каждого элемента экипировки у каждого человека. Здесь принципиальна разница между статусами «absent» и «unknown». Если человек далеко, каска занимает мало пикселей, а палубу заливает блик, отсутствие рамки каски не доказывает нарушение, это «unknown» (неизвестно). Если человек крупный, находится в рабочей зоне, голова видна, кадры валидны, а каска не появляется 15 секунд, это «absent» (отсутствует).

  10. Менеджер событий принимает итоговое решение: открыть алерт, обновить существующий или подавить дубль. Если сотрудник 10 минут работает без жилета, это одно нарушение, а не 600 сообщений. Жизненный цикл события:

  11. Статус «absent» появился, проверяются антидубли и зона
  12. Событие записано в журнал, оператор получил уведомление, сохранены кадр и короткий клип
  13. Нарушение продолжается, новые уведомления подавляются
  14. Если нарушение длится слишком долго, отправляется повторное напоминание через большой интервал
  15. СИЗ снова виден устойчиво, или человек покинул зону по корректной траектории
  16. Событие распознано как дубль уже открытого нарушения или как ошибка трекера

Почему одного кадра всегда мало?

Матрос в полной экипировке наклоняется над тросом. Каска спряталась за плечом, жилет перекрывается рукой. Человек защищён, но детектор на трёх кадрах подряд отдаёт «человек без каски». Система в этом случае не открывает нарушение сразу, а берёт паузу: трекер должен снова зацепиться за экипировку, когда работник сменит положение тела. Именно эта логика отличает компьютерное зрение с трёхуровневой валидацией от простого «алерт на каждый кадр».

Отдельная ловушка: визуальное перекрытие на камере и реальное снятие экипировки дают на кадре одну и ту же картину, отсутствие рамки СИЗ. Детектор не может различить эти два случая по одному кадру. Различает только история наблюдений, накопленная статусной машиной.

Конкретный пример: что ввели и что получили

Вход: RTSP-потоки с камер открытой палубы судна. Экипаж обязан быть в касках, спасательных жилетах и костюмах-поплавках. Визуальный контроль по камерам не масштабируется: оператор не может физически охватить все потоки за смену.

Результат: система автоматически фиксирует подтверждённые инциденты. Журнал инцидентов содержит только проверенные нарушения с привязкой кадра и короткого клипа. Подтверждённые статусы в интерфейсе оператора выделены отдельным цветом на нейтральном фоне, что упрощает просмотр журнала за смену. Система полностью анонимна: фиксирует факт нарушения, а не личность конкретного работника.

Частые ошибки

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

Генерировать алерт на каждый спорный кадр. Журнал за смену превращается в поток ложных тревог, оператор быстро перестаёт его читать. Один инцидент (10 минут без жилета) должен порождать одну запись, а не сотни сообщений.

Использовать IoU для привязки мелких объектов. Каска мала относительно рамки человека, и IoU-скор будет крошечным даже при идеальной посадке. Нужна доля площади СИЗ внутри рамки плюс анатомические зоны.

Доверять трекеру без ReID. На качающейся палубе геометрия рамки нестабильна. Без галереи эмбеддингов каждый проход за оборудование сбрасывает ID, обнуляет таймеры и множит дубли алертов.

Что делать с этим прямо сейчас?

Автору Дзена, который пишет про технологии или промышленную безопасность: эта архитектура «детекция отдельно, решение о нарушении отдельно» даёт готовый каркас для разбора любой задачи компьютерного зрения в контенте. Читатель ценит конкретику: не «нейросеть следит за касками», а «нейросеть отдаёт рамку, а статусная машина копит 15 секунд наблюдений перед алертом».

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

Предпринимателю в РФ и СНГ: палубная среда с её качкой, бликами и перекрытиями делает невозможным использование облачных решений с высокой задержкой. Локальная архитектура обязательна. Если вы рассматриваете внедрение, ищите интеграторов, которые работают именно с трёхуровневой валидацией (трекер, ReID-галерея, статусная машина), а не просто с детектором на одном кадре.

Мнение редакции dzen.guru

Самое ценное в этом подходе не сама нейросеть, а то, что ей сознательно не доверяют. Модель делает то, что умеет: находит рамки на кадре. Всё остальное, накопление контекста, подавление дублей, различение «не вижу» и «точно нет», отдано логике поверх модели. По моим наблюдениям, большинство провалов видеоаналитики в российских проектах происходят не потому, что детектор плох, а потому, что ему поручают принимать решения, к которым он не приспособлен. Если вы проектируете систему контроля СИЗ или любую другую задачу промышленного компьютерного зрения, начинайте не с выбора модели, а с проектирования слоя логики, который будет работать поверх неё. Честная оговорка: в описанном проекте оригинал обрывается на блоке оценки качества кадра при плохой погоде, полная методика в источнике не раскрыта, а значит, именно этот элемент придётся проектировать самостоятельно.

Хотите писать о технологиях так, чтобы даже сложные темы читались легко?

В dzen.guru мы помогаем авторам превращать технический материал в понятный контент, который собирает аудиторию на Дзене и за его пределами.

Попробовать dzen.guru
Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Передача энергии из космоса лазером: 152 Вт на 1 км и демонстраторы на орбите к 2026 году
ai

Передача энергии из космоса лазером: 152 Вт на 1 км и демонстраторы на орбите к 2026 году

Публикация по плану how-to. H1 не дублирую. Компании выстраивают орбитальные группировки, и лазерная передача энергии из космоса становится практическим…

6 мин
Meta выпустила приложение для создания игр по текстовому промпту: код больше не нужен
ai

Meta выпустила приложение для создания игр по текстовому промпту: код больше не нужен

Meta второго июля тихо выложила в магазины приложений Pocket, генератор мини-игр и интерактивных приложений, где единственный инструмент разработки это…

4 мин
Локальная нейросеть на ПК с 4 ГБ видеопамяти: пошаговая настройка без облака и подписок
ai

Локальная нейросеть на ПК с 4 ГБ видеопамяти: пошаговая настройка без облака и подписок

Локальная нейросеть на домашнем ПК с Windows 11 решает конкретную задачу: вы получаете языковую модель, которая работает без облака, без подписки и без…

7 мин