Система предупреждения об инцидентах и авариях на производстве

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

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

Запрос

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

При выявлении чрезвычайной ситуации система должна направлять на приложение оператора сигнал тревоги и выводить видео с соответствующей камеры наблюдения.

Решение

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

Разработка нового модуля для веб-приложения на Jmix

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

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

После первоначальной настройки пользователь может подключить IP-камеры, для чего указывается ссылка на RTSP-поток. Дополнительно можно указать теги и описание, видимые пользователям; настроить браузерные уведомления по ролям/типам пользователей с возможностью открыть новую вкладку с видеопотоком от соответствующей камеры; подключить SMS- и email-уведомления с выбором типов инцидентов.

RTSP-поток с IP-камер захватывается Jmix-приложением и записывается в видеофайлы максимальной продолжительностью 1 час. Указанная информация о камере (теги и описание) и видеофайле (продолжительность, разрешение и другая техническая информация) сохраняется в базе данных, а сам видеофайл в формате mp4 сохраняется в локальном файловом хранилище приложения. Время жизни видеофайла составляет 1 неделю, но если с файлом связан инцидент, его можно удалить только по решению пользователя с соответствующими привилегиями.

Отдельные кадры видеопотока периодически отправляются в ИИ-приложение. При детектировании чрезвычайной ситуации оно отправляет на Jmix-приложение сигнал тревоги, а также данные о событии:
  • ID камеры;
  • Время возникновения события;
  • Тип события;
  • Кадр с обведенной рамкой областью, где событие было обнаружено.

При получении сигнала тревоги Jmix-приложение выводит уведомление в браузере для соответствующих категорий пользователей, а также рассылает SMS- и email-уведомления в соответствии с настройками. При нажатии кнопки “Перейти” у пользователя открывается новая вкладка с видеопотоком от камеры, которая зафиксировала событие, и кадром, отображающим обнаруженный инцидент. Это позволяет быстро проверить, не произошла ли ошибка.

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

Сложности проекта и их решение

Встраивание видеопотока в Jmix-приложение

Стандартные средства Jmix не имеют функционала для работы с видео. Поэтому нужно либо разрабатывать собственные компоненты, либо использовать внешние. После исследования команда остановилась на аддоне VideoJS Player.

Работа с видеопотоками в данном случае проходит распространенный алгоритм:
  1. Захватывается RTSP-поток.
  2. Создается временный файл для видео.
  3. Поток записывается во временный файл.
  4. Плеер в браузере подгружает файл.

Получение видео из RTSP-потока для сервера

Ни VideoJS Player, ни стандартные средства Jmix и Java не умеют работать с RTSP-потоком, который приложение получает от IP-камер.

Решение в данном случае уже содержит фреймворк JavaCV, который применялся для реализации ИИ-приложения. Он содержит библиотеку FFMpeg, средства которой (FrameGrabber и FrameRecorder) используются для захвата и получения отдельных кадров, а также записи видео.

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

Выполненные работы

Разработка модуля для Jmix-приложения. Модуль посылает HTTP-запросы к ИИ-приложению и предоставляет для него HTTP API; позволяет просматривать видео с камер в режиме онлайн и рассылает пользователям уведомления в браузере, SMS- и email-уведомления. Также сохраняет видеофайлы и позволяет скачивать их для повторного просмотра.

Использованные технологии

  • Веб-приложение было написано на языке Java с помощью фреймворка Jmix.
  • Передача видео с IP-камер RTSP была реализована в формате H.264.
  • Захват видеопотока осуществлялся фреймворком JavaCV от Bytedeco.

Итоги

Команда КЕДР Solutions разработала дополнительный модуль для веб-приложения заказчика, таким образом расширив его функционал. Модуль принимает данные от IP-камер, размещенных в производственных помещениях, позволяет просматривать видео в режиме реального времени и сохранять видеофайлы на сервере. Отдельные кадры периодически отсылаются на ИИ-приложение, призванное детектировать опасные ситуации.

При обнаружении чрезвычайной ситуации веб-приложение рассылает пользователям уведомления в браузере, SMS- и email-уведомления. Получив предупреждение, оператор может перейти на видеотрансляцию с соответствующей IP-камеры, чтобы сразу проверить, что происходит в помещении и не ошиблась ли система.

Наша разработка позволила:
  • Повысить безопасность на предприятии.
  • При возникновении чрезвычайной ситуации или аварии быстро предупреждать сотрудников, вовремя принимать нужные меры или эвакуировать персонал.
  • Уменьшить потенциальный материальный ущерб за счет быстрой ликвидации аварии.
  • Максимально снизить риск травм среди персонала, а значит, свести к минимуму затраты, связанные с последующими компенсациями.
Бюджет проекта:
1 300 000 руб.
Срок проекта:
2 месяца