10 февраля 2021

Дневники Разработчика “ВидеоМатрикс”. Выпуск 2. Трекинг людей, животных и экомониторинг выбросов

news-item

После праздников непросто войти в рабочий ритм. Но почтовый ящик уже забит письмами, а таск-трекер — делами и задачами. Программистам и тестировщикам из Videomatrix просто не оставалось вариантов, кроме как быстро вернуться в работу. А это значит, что нам всегда есть, что рассказать, например, о ходе январских работ и планах на будущее. Напомним, первый выпуск с Итогами года 2020 можно почитать тут. А в этом выпуске Дневников Разработчика вас ждут:

  • серьезные испытания для нашей системы трекинга в условиях московской зимы;
  • большое обновление инструмента мониторинга экологически опасных выбросов;
  • февральское внедрение отслеживания объектов в агросекторе.

 

Как точно посчитать трафик (людей)

Совместно с одной из спортивно-развлекательных площадок Москвы мы провели испытания нашей системы подсчёта людей, основанной на продукте Vmx SILA. Система получилась  уникальной — обеспечивает нейросетевой трекинг на камере 360 градусов обзора.

Плохое освещение, множество движущихся объектов, холод и снег — в таких условиях Системе необходимо было собрать статистику посещаемости площадки на протяжении заданного отрезка времени, данные о скоростях движения и преобладающие цвета в одежде каждого посетителя. В поле зрения камеры — участок площадки с известной протяженностью. Как только в границах этого участка кто-то появлялся, система оценивала вероятность того, что это действительно человек, обводила его рамочкой, присваивала ему идентификатор и отслеживала траекторию его движения. Система запоминала каждого гостя и фиксировала каждый его проход участка. В это же время собирались данные о цвете одежды и средней скорости движения посетителей. Сформированный из отдельных кадров видеоряд с маркерами и траекториями передавался Заказчику в режиме реального времени с помощью Vmx программы собственной разработки. А если объект уходил из поля зрения камеры, то некоторое время система сопровождала его по предсказанной модели движения, ожидая его обнаружение и повторную идентификацию.

Под капотом

В этом проекте мы используем движок собственной разработки, SEngine. После его запуска поступает поток кадров, которые обрабатываются нашими инструментами — SDetector и STracker. SDetector — это нейросетевой region-based детектор, определяющий наличие и класс объектов в кадре. Мы ищем объекты в отдельно взятой области ROI кадра (от англ. “region of interest” — “область интереса”). После того, как все объекты в области ROI одного кадра найдены, рассматривается следующий кадр. Особенность работы детектора заключается в том, что он не запоминает объект из кадра в кадр, что исключает возможность накопления ошибки. На следующем кадре подключается инструмент STracker, который решает т. н. “задачу о назначениях”: необходимо ассоциировать обнаруженный объект с прошлого кадра и текущего.

При решении этой задачи рассчитывается евклидово расстояние между объектами и “intersection over union” — перекрытие объектов с разных кадров при наложении друг на друга; оба параметра комбинируются и вычисления получаются точнее. Также мы используем специальный фильтр для отражения модели движения объекта, как простого твердого тела. Фильтр помогает сглаживать резкие смещения и убрать шумы, чтобы определить истинное положение объекта, а ещё с его помощью мы можем предсказывать будущее! Будущее положение объекта, т. е. решать ту же задачу о назначениях. А вы что подумали?

Схема людей

Эскиз кадра, передаваемого Заказчику. Здесь мы видим тип объекта (“человек”), соответствие объекта типу “человек” в процентах, его номер в порядке обнаружения и траекторию движения (линия за объектом)

В Системе также в полный рост применяется программный компонент VideoAnalizer, входящий в комплекс Vmx SILA. А вот поэтапный план работы этого компонента:

  • система получила кадры с камеры;
  • взяла первый кадр на обработку;
  • обработала, нашла объекты;
  • взяла следующий кадр и снова нашла объекты;
  • сравнила и приняла решение, те же это объекты или новые;
  • запомнила новые координаты объектов и построила траекторию их движения по изменению координат объектов из кадра в кадр.

Для запуска и контроля режимов работы системы применяется WinConsole — ПО собственной разработки. Дополнительные компоненты, WatchDog и DCleaner, следят за работоспособностью других частей ПО и очищают временные файлы, более не нужные в работе.

Ни погодные условия, ни освещение не помешало Системе выполнить задачу, а Заказчику — получить необходимую ему статистику. А нам — остаться довольными результатом.

 

Как еще улучшить Vmx-инструмент мониторинга загрязнения атмосферы

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

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

Облако дыма

Эскиз кадра, обрабатываемого Системой

 

Для технически подкованных

На аппаратно-программном уровне детектор обрабатывает изображения и считает площадь. В определенный момент определяется дым. WebAPI принимает решение, какой именно это дым. Рассмотрим пример. WebAPI получает сигнал от детектора о задымлении площадью 1000 кв. м. и ждёт от детектора либо изменение сигнала, либо отмену. Предположим, пороговая площадь срабатывания системы сигнализации — 2000 кв. м. В один момент площадь дыма превысила пороговое значение, тогда WebAPI генерирует и отправляет сигнал в систему сигнализации и индикации.

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

Определяющими значениями являются площадь задымления и их сумма, класс и длительность. Обмен данными между модулями программного комплекса осуществляется  JSON-сообщениями. 

RTSP-поток с камеры приходит на MJPEG-сервер, который перекодирует поток с камеры в формат, понятный браузеру. Поток к браузеру направляется по http/https и отображается в интерфейсе. Для обеспечения интерактива используется технология SignalR, которая позволяет серверному коду отправлять асинхронные уведомления клиентскому веб-приложению. Библиотека включает компоненты JavaScript как на стороне сервера, так  и на стороне клиента. Правила оповещения гибко настраиваются.

Жаль, что искусственный интеллект  не романтик

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

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

Фильтруй!

Мы также внедрили новый набор условий для фильтра: теперь система сигнализирует не только о задымлении и выбросах, но и о существенных выбросах. Основная разница — в площади задымления: для выбросов — это не менее заданного пользователем числа квадратных метров, а для существенных выбросов — более 20 000 кв. м., при этом площадь не должна уменьшаться  на протяжении определенного времени. Масштабно, длительно — одним словом, существенно! Конечно же, мы оставили возможность регулировать параметры фильтрации. Это упрощает процесс ввода в эксплуатацию системы на разных объектах. Количество параметров фильтра и количество фильтров для каждой камеры — гибко настраиваемые параметры, которые можно масштабировать на несколько камер. 

Кроме того, теперь индикация задымлений и выбросов сопровождается не только работой веб-интерфейса, но и уведомлением на e-mail — важная деталь для сотрудников и руководителей, находящихся не на рабочем месте, но желающим держать “руку на пульсе”. Возможность отправки уведомлений на e-mail обеспечивается работой .NET Core-фреймворка.

 

А как же автоматический трекинг животных?

Мы уже говорили, что наши решения можно применять даже в агропроме? Ага, это будет для вас сюрпризом!

Специально для одного из известных АПК мы разработали и внедрили коллаборацию нейронной сети и инструмента трекинга, основная задача которых — вести учет животных на приемке с целевой точностью не менее 99,9% со скоростью, равно естественной скорости передвижения объектов. Об этом кейсе по возможности мы расскажем в следующих выпусках Дневников Разработчика.

И напомним, что о появлении нового выпуска оперативно можно узнать на страницах компании на Facebook и  Instagram, или прямо здесь — в новостном разделе сайта.

На связи!

* * *

Предыдущие выпуски Дневников Разработчика:

Выпуск 1. Итоги 2020 года

Главная   >    Дневники Разработчика “ВидеоМатрикс”. Выпуск 2. Трекинг людей, животных и экомониторинг выбросов