22.04.2020

Проблемы архитектур систем Computer Vision

Владимир Хомяков, разработчик систем компьютерного зрения, Beltel Datanomics.

Рынок компьютерного зрения очень быстро развивается. Создаются новые устройства для выполнения алгоритмов нейронных сетей: FPGA, VPU, многоядерные процессоры и другие системы. Растет число топологий нейронных сетей, при этом они публикуются как open source, выкладываются уже предобученные веса нейронных сетей в открытый доступ, что только ускоряет их внедрение в проект. Развиваются различные подходы в компьютерном зрении: детекция, сегментация, подсчет потока людей, распознавание лиц, эмоций, возраста и гендера, и все это доступно для современных разработчиков.

Однако тенденция «Time to market» (быстрый вывод продукта на рынок) и сжатые сроки разработки приводят к тому, что отводится недостаточное время на проектирование и архитектуру решения. На начальном этапе также важно не забыть о системах контроля состояний и параметров устройств, например, неисправность камеры, перегрев, переполнение памяти и так далее. Спешка в запуске продукта приводит к созданию плохо масштабируемых монолитных систем, что в дальнейшем только ухудшает поддержку и развитие.

Какие последствия ждать от такого подхода

Для заказчиков:

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

Для разработчиков:

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

Почему так получается и как это исправить

Как отмечали выше, проблема заключается в концепции монолита и актуальном требовании «Time to market» и, как следствие, быстрой и некачественной проработки архитектуры системы.

Рассмотрим возможный сценарий построения решения в сжатые сроки:

  • Выбор нейросети для поставленной задачи.
    Этому шагу разработчики уделяют максимальное время и силы. Нейросеть – это основа системы, гарантия требуемой точности распознавания.
  • Архитектура проекта.
    Сроки поджимают и на проработку архитектуры выделяется минимум времени. Как следствие, получается некий монолит, где «всё включено» – прием видеопотока, подготовка для подачи этого видеопотока на нейросеть, само выполнение нейросети, СУБД, веб-интерфейс, REST API и прочие процессы.
  • Добавление нейросетей для детектирования дополнительных случаев.
    Основа системы – одна конкретная нейросеть, но решение начинает обрастать дополнительными.
  • Раздувание общего окружения подсистем.
    Здесь и возникают ошибки при расширении и доработке основной системы, теряется время на усложнившуюся отладку системы.

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

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

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

  • С видеокамер, установленных на объекте, передается видеопоток на блок «Обработка видеопотока». В данном блоке-контейнере docker происходит декодирование видеоинформации. Так как этот процесс требует ресурсов, то для масштабирования системы при увеличении количества камер можно использовать несколько таких контейнеров, размещенных на разных устройствах.
  • Далее декодированная информация передается на блок нейросетей. Заметим, что нейросети, развернутые в docker-контейнерах, можно использовать на разных устройствах, в числе которых GPU и CPU, чем достигается полное масштабирование системы.
  • Информационный поток с инференса нейросетей передается на блок «Сбор информации с нейросетей». На данном этапе происходит обработка распознанной информации и передача ее в СУБД.
  • Параллельно данные передаются на блок формирования выходного видеопотока. Здесь на видеокадры, полученные с блока-декодирования, накладывается распознанная информация, например, выделяется детектированные объекты, наносится на кадры информация о зарегистрированном событии и другие данные.
  • В итоге информация передается на вебсервис (WEB SERVICE), на котором может быть настроено визуальное отображение для пользователя, или имеет API-интерфейс для работы с этим информационным потоком.

Что получаем?

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

Оставьте заявку и получите бюджет и план внедрения наших решений в ваш бизнес

    Заполняя форму, Вы соглашаетесь с правилами обработки персональных данных.

    Мы используем файлы cookies, чтобы получать статистику и делать наш сайт и другие сервисы удобными для вас. Продолжая дальнейшее использование сайта и/или его сервисов, вы соглашаетесь с этим. Более подробную информацию можно прочитать в «Политика обработки персональных данных» и в «Политика Cookies»