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

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

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

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

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

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

image
СХД 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

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


Запуск инференса в консоли на system-docker

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:

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

По статистике потребления ресурсов видно, что их достаточно в рамках СХД. Фактически, инференс, т.е. исполнение нейронных сетей, выполняется на удаленных устройствах (серверах, камерах, специализированных устройствах рядом с камерами), а агрегацией, сборкой и хранением данных занимается само СХД со специализированным ПО. Это программное обеспечение собирает данные по REST API и по мере необходимости отдает смежным информационным системам.
Источник: habr.ru