Проблемы архитектур систем 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-интерфейс для работы с этим информационным потоком.

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

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

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

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

    We use cookies and other technologies to make our Website and its services convenient for you. By continuing to visit or use our services, you are agreeing to the use of Cookies and similar technologies for the purposes we describe in the «Cookie Statement»