Pull to refresh

Опыт разработки и внедрения систем объектовой видеоаналитики на СХД

Reading time3 min
Views3.9K
СХД – это системы хранения данных, сервера или иные устройства с большим количеством установленных дисков и системами быстрого доступа к ним с гарантией сохранности информации (например, аппаратные или программные RAID-контроллеры). Если речь идёт про хранение видео с нескольких камер, то специализированных решений не требуется. СХД или обычные диски будут использоваться для хранения видеоархива и там же или на отдельном носителе будут храниться события (результат детекции, например, нарушения ПДД или пресечение запретных зон) для дальнейшего доступа к ним и анализа. Но если камер много, например, 80 штук и мы рассматриваем поток RTSP Full HD, 15 FPS с дорожных камер, то зарегистрированных событий в сутки будет уже около 100 Гб. Для хранения таких объемов данных требуются уже специализированные решения. Мы остановили свой выбор на СХД от компании QNAP, куда смогли встроить свой собственный продукт Cumulator. Цель и задача этого продукта – сбор событий с множества устройств: серверов для инференса (исполнения нейронных сетей), камер или микрокомпьютеров, установленных в непосредственной близости от камер.

Сервер на базе Intel NUC, который осуществляет обработку данных с 80 камер с агрегацией этих данных через ПО Cumulator
Сервер на базе Intel NUC, который осуществляет обработку данных с 80 камер с агрегацией этих данных через ПО Cumulator

Цели и задачи, которые решает программный продукт Cumulator:

  1. Сборка данных с множества устройств
  2. Единая точка доступа к событиям по REST API
  3. Централизованное хранение событий
  4. Визуализация и отображение данных об установленных и подключенных устройствах и событиях на них в режиме реального времени
  5. Управление множеством устройств (мониторинг, подключение)

Для интеграции мы остановились на QNAP AppCenter, т.к. внутри используются Docker-контейнеры, в рамках которых может работать программное обеспечение сторонних разработчиков. Тестовое оборудование QNAP:

СХД QNAP для агрегации данных в объектовой видеоаналитике
СХД QNAP для агрегации данных в объектовой видеоаналитике

Общая схема работы гибридного инференса


Для инференса (исполнения нейронных сетей) применяется три типа устройств: сервера в ДЦ в стойках на Intel NUC8i5BEK в форм-факторе 1U, сервера на Intel VCA2 на платформе Supermicro 1U, камеры с установленным в них ПО (Axis, Vivotek и др.), микрокомпьютеры наружной установки (в нашем варианте это или ARM на базе FriendlyARM Nano Pi M4, или х86 UP Board Intel Atom X5). Далее, с множества устройств (например, 2 сервера, 15 камер, 30 микрокомпьютеров) требуется агрегация и хранение данных. Для этого мы выбрали СХД от QNAP.
Общая схема работы гибридного инференса
Общая схема работы гибридного инференса

Технические детали


Все ПО было запущено на QNAP TVS-871T, Intel Core(TM) i5-4590S CPU 3.00GHz, Version 4.4.1.1086 (2019/10/10), Linux-kernel 4.14.24-qnap, под system-docker Version:17.09.1-ce, API version: 1.32, OS/Arch: linux/amd64

При тестировании решения СХД укомплектовали дисками Seagate 7200 Exos 7E2 объемом 1 Tb.

Cumulator запустился из консоли с помощью system-docker и через Container Station V2.0.356 (приложение в GUI-обертке для docker из AppCenter).

QNAP Container Station
QNAP Container Station

Параллельно мы протестировали работу инференса на СХД. Мы смогли запустить инференс только в консоли на system-docker. Причина – в графическом интерфейсе нет настроек по расширенному монтированию разделов (проблема всех GUI-приложений — урезание настроек, которые обычным пользователям не нужны).

Docker-контейнеры собираются из образа с помощью docker-compose, на этом этапе сборку из Dockerfile не делали. Строка запуска выглядит так:

system-docker run   --detach  --name=edgeserver-testing -p 18081:8081 -p 18082:8082 -p 15433:5433   --mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup   --mount type=bind,source=/sys/fs/fuse,target=/sys/fs/fuse   --mount type=tmpfs,destination=/run   --privileged -v /dev/bus/usb:/dev/bus/usb --mount type=tmpfs,destination=/run/lock ubuntu-edge

Как можно заметить, мы запустили Docker в привилегированном режиме для того, чтобы ПО смогло обнаружить USB-ключи Sentinel (все порты, так как мы заранее не знаем куда могут быть вставлены ключи, в каком количестве и не будут ли они потом перемещены на другой порт). На этом этапе запуск в привилегированном режиме посчитали приемлемым.

Резюме


Приложение Cumulator, запущенное на QNAP со статистикой потребления ресурсов CPU, RAM:

Приложение Cumulator, запущенное на СХД QNAP
Приложение Cumulator, запущенное на СХД QNAP

По статистике потребления ресурсов видно, что их достаточно в рамках СХД. Фактически, инференс, т.е. исполнение нейронных сетей, выполняется на удаленных устройствах (серверах, камерах, специализированных устройствах рядом с камерами), а агрегацией, сборкой и хранением данных занимается само СХД со специализированным ПО. Это программное обеспечение собирает данные по REST API и по мере необходимости отдает смежным информационным системам.
Tags:
Hubs:
Total votes 10: ↑4 and ↓60
Comments15

Articles