Существует большое количество задач, где процессинг и обработку контента необходимо выполнять «на краю», то есть в непосредственной близости от источника данных (камер). В частности, это касается и задач объектовой видеоаналитики, например, в рамках проектов по оптимизации транспортной инфраструктуры. 
Рассмотрим несколько совместных решений от российского интегратора ГК «Ларга» и разработчиков систем объектовой видеоаналитки, компании ComBox Technology.

Задача:
Условия:
В качестве решения мы остановились на AAEON VPC-3350S, так как это устройство обладает следующими, важными для нас, характеристиками:

AAEON VPC-3350S
Рассмотрим первый кейс раздельного применения детекторов. В сфере каршеринга уже сейчас предусмотрены меры наказания в виде штрафов за курение в салонах арендованных автомобилей. Сумма штрафа варьируется в зависимости от компании от 5 до 15 тысяч рублей. В сравнении объектовой видеоаналитики и датчиков детекции дыма, датчики не улавливают вейпы и иные приспособления для курения смесей, а также практически не чувствительны при открытых окнах автомобиля. Но это не отменяет факт нарушения и, соответственно, законного наказания в виде штрафа в соответствии с договором.
Помимо этого, на транспорте можно каскадом (последовательно) применять несколько нейронных сетей, таких как детекция курения и детекция факта/времени использования мобильного телефона. Понятно, что дальше подобные системы должны масштабироваться, например, с интеграцией телематики и подключением к CAN-шине автомобиля для отслеживания использования телефонов только при движении ТС, но это уже детали интеграции.
Наглядный пример, что конкретно детектируем и что получаем в итоге:
 


Демонстрация на ботах в Телеграме (вход – картинка с камеры смартфона или из галереи, выход – вероятность):
Конкретно наша версия AAEON VPC-3350S укомплектована процессором Intel Atom x5 E3940. В случае необходимости можно дополнительно устанавливать платы расширения с Intel MyriadX и переносить инференс нейронных сетей на VPU без каких-либо существенных доработок, так как используется фреймворк Intel OpenVINO.
Рассмотрим скорость инференса (FP16) на различных устройствах, включая CPU, iGPU (Intel HD) AAEON VPC-3350, VPU Intel Movidius и решения других производителей:

Скорость инференса (FP16) на различных устройствах, включая CPU, iGPU (Intel HD) AAEON VPC-3350, VPU Intel Movidius и решения других производителей
Таким образом, на графике iGPU процессора Intel Atom x5 E3940 мы получаем 54 FPS, а дополняя устройство VPU Intel Movidius – еще 45 FPS. Для детекции курения достаточно 15 FPS/камера, что позволит на одной графике процессора обрабатывать до 3 потоков. Также необходимо учитывать, что помимо выделения и использования ресурсов на инференс, необходимо декодировать входящий RTSP-поток. Рассмотрим тесты декодера:

Тест декодера AAEON VPC 3350
При максимальной загрузке процессора и графики мы декодируем 30 потоков 720p при 15 FPS, то есть получаем 450 кадров для 720p. Для 1080p это около 150 кадров.
Рассмотрим состав комплекта для использования в каршеринге и основные шаги обработки данных:
Вернемся ко второму кейсу применения AAEON VPC-3350S – детекция и счетчик пассажиров в автобусах:

Этапы выполненных работ:
Непосредственно, процесс обучения:
 

Интерфейс личного кабинета ГК «Ларга» для клиентов с отображением отчетов по пассажиропотоку:
 

Интерфейс личного кабинета ГК «Ларга» для клиентов с отображением отчетов по пассажиропотоку
Личный кабинет для клиентов с отображением отчетов по пассажиропотоку
Процесс детекции людей в зоне входа в автобус и разметка зон
Алгоритм работы счетчика:
Так как изначально предполагалось гибридное решение по инференсу нейронных сетей (краевой и обработка части данных в ЦОД), рассмотрим плюсы и минусы обоих подходов:

Таким образом, мы получаем минимальную себестоимость потока в ЦОД при централизованной обработке, но высокие требования по наличию качественных и быстрых каналов связи. Для краевых решений – более высокая себестоимость, но минимальные требования по каналам связи и отсутствие требований к их резервированию.
			  Рассмотрим несколько совместных решений от российского интегратора ГК «Ларга» и разработчиков систем объектовой видеоаналитки, компании ComBox Technology.

Задача:
- Реализация счетчиков пассажиров в автобусах для контроля количества проданных билетов и получения статистики загруженности транспорта в разрезе маршрута.
 - Контроль действий водителя (детекция курения и использования мобильных телефонов).
 
Условия:
- Инференс нейронных сетей и исполнение аналитики «на краю» для минимизации трафика и ввиду нестабильности и высокой стоимости каналов связи.
 - Возможность совместного и раздельного применения различных детекторов (масштабируемость).
 - Передача данных для последующей обработки по мобильным каналам связи.
 
В качестве решения мы остановились на AAEON VPC-3350S, так как это устройство обладает следующими, важными для нас, характеристиками:
- Встроенный LTE-модуль.
 - Возможность расширения VPU ускорителем Intel MyriadX.
 - Встроенная графика Intel HD Graphics 500, на которой можно использовать аппаратные декодеры и энкодеры для обработки видеопотоков.
 - Множество LAN-портов для прямого подключения сетевых камер без необходимости установки коммутатора.
 - Широкий эксплуатационный температурный диапазон (-20+70).
 

AAEON VPC-3350S
Рассмотрим первый кейс раздельного применения детекторов. В сфере каршеринга уже сейчас предусмотрены меры наказания в виде штрафов за курение в салонах арендованных автомобилей. Сумма штрафа варьируется в зависимости от компании от 5 до 15 тысяч рублей. В сравнении объектовой видеоаналитики и датчиков детекции дыма, датчики не улавливают вейпы и иные приспособления для курения смесей, а также практически не чувствительны при открытых окнах автомобиля. Но это не отменяет факт нарушения и, соответственно, законного наказания в виде штрафа в соответствии с договором.
Помимо этого, на транспорте можно каскадом (последовательно) применять несколько нейронных сетей, таких как детекция курения и детекция факта/времени использования мобильного телефона. Понятно, что дальше подобные системы должны масштабироваться, например, с интеграцией телематики и подключением к CAN-шине автомобиля для отслеживания использования телефонов только при движении ТС, но это уже детали интеграции.
Наглядный пример, что конкретно детектируем и что получаем в итоге:


Демонстрация на ботах в Телеграме (вход – картинка с камеры смартфона или из галереи, выход – вероятность):
Конкретно наша версия AAEON VPC-3350S укомплектована процессором Intel Atom x5 E3940. В случае необходимости можно дополнительно устанавливать платы расширения с Intel MyriadX и переносить инференс нейронных сетей на VPU без каких-либо существенных доработок, так как используется фреймворк Intel OpenVINO.
Рассмотрим скорость инференса (FP16) на различных устройствах, включая CPU, iGPU (Intel HD) AAEON VPC-3350, VPU Intel Movidius и решения других производителей:

Скорость инференса (FP16) на различных устройствах, включая CPU, iGPU (Intel HD) AAEON VPC-3350, VPU Intel Movidius и решения других производителей
Таким образом, на графике iGPU процессора Intel Atom x5 E3940 мы получаем 54 FPS, а дополняя устройство VPU Intel Movidius – еще 45 FPS. Для детекции курения достаточно 15 FPS/камера, что позволит на одной графике процессора обрабатывать до 3 потоков. Также необходимо учитывать, что помимо выделения и использования ресурсов на инференс, необходимо декодировать входящий RTSP-поток. Рассмотрим тесты декодера:

Тест декодера AAEON VPC 3350
При максимальной загрузке процессора и графики мы декодируем 30 потоков 720p при 15 FPS, то есть получаем 450 кадров для 720p. Для 1080p это около 150 кадров.
Рассмотрим состав комплекта для использования в каршеринге и основные шаги обработки данных:
- На автомобиле устанавливаются IP-камеры с питанием по Ethernet, PoE (одна на водителя или две: водитель, пассажир).
 - Данные с камер поступают напрямую на вычислитель, в данном случае AAEON NVR 3350.
 - На вычислителе выполняется декодирование и нарезка видеопотока на фреймы.
 - Фреймы с заданным делителем кадровой частоты обрабатываются нейронной сетью.
 - Нейронная сеть возвращает вероятность события (курение или наличие телефона в руках). Каждое изображение пропускается через эти нейронные сети последовательно. Если одна из них выдала вероятность выше, условно, 50%, то фотография и запись об этом фиксируется во временной таблице в базе данных (в памяти).
 - На основе количества повторяющихся событий фиксируется время действия/нарушения.
 - Если время действия превышает заданную константу (10 секунд), то происходит фиксация факта события в базе данных. Событие включает следующую информацию: 
- дата, время
 - фотография факта нарушения
 - длительность события в сек.
 - идентификатор ТС (статичный GUID)
 - номер камеры (0, 1)
 - тип события
 
 - Данные о событиях по факту наличия 3G/LTE передаются на центральный сервер обработки данных с интеграцией с существующей информационной системой каршеринга для проведения билинговых операций.
 
Вернемся ко второму кейсу применения AAEON VPC-3350S – детекция и счетчик пассажиров в автобусах:

Этапы выполненных работ:
- Подготовительные работы (тестирование камер, выбор фокусного расстояния, постановка граничных условий задачи):
- Разметка 600 фреймов с нескольких камер с различным фокусным расстоянием
 - Обучение нейронной сети на nVidia GPU, 10 тыс. шагов
 - Тестирование модели по валидационному датасету
 - Конвертация модели в Intel OpenVINO
 - Тестирование полученной модели в Intel OpenVINO по валидационному датасету, сравнение качества и скорости с моделью до конвертации
 - Формирование сводного отчета по быстродействию модели и качественным параметрам, согласование необходимого оборудования для исполнения (камеры, CPU, VPU)
 
 - Построение архитектуры решения (край + централизованная аналитика в ДЦ)
 - Разметка контента, 20 тыс. фреймов
 - Обучение нейронной сети на nVidia GPU
 - Конвертация модели в OpenVINO
 - Разработка алгоритма траекторного анализа для выделения уникальных событий
 - Разработка программного обеспечения для подсчета и выгрузки событий:
- Получение и нарезка потоков на кадры с учетом делителя кадровой частоты при помощи gstreamer/ffserver
 - Партируемый интерфейс настройки подключаемых камер (зона, адресация, список источников, параметры передачи в ДЦ)
 - Хранение событий в mongoDB/PostgreSQL
 - REST API для интеграции
 
 - Адаптация решения под аппаратную базу для инференса в ЦОД и «на краю»
 
Непосредственно, процесс обучения:

Интерфейс личного кабинета ГК «Ларга» для клиентов с отображением отчетов по пассажиропотоку:

Интерфейс личного кабинета ГК «Ларга» для клиентов с отображением отчетов по пассажиропотоку
Личный кабинет для клиентов с отображением отчетов по пассажиропотоку
Процесс детекции людей в зоне входа в автобус и разметка зон
Алгоритм работы счетчика:
- Нарезка RTSP-потока на фреймы
 - Детекция голов на каждом фрейме
 - Траекторный анализ (удержание головы в кадре при движении)
 - Анализ направления движения на основе последовательности пересечения 3-х заранее размеченных зон
 - Запись событий в локальную базу данных с учетом направления движения (вход/выход)
 - Предоставление доступа по REST API сторонним информационным системам и системам формирования отчетности
 
Так как изначально предполагалось гибридное решение по инференсу нейронных сетей (краевой и обработка части данных в ЦОД), рассмотрим плюсы и минусы обоих подходов:

Таким образом, мы получаем минимальную себестоимость потока в ЦОД при централизованной обработке, но высокие требования по наличию качественных и быстрых каналов связи. Для краевых решений – более высокая себестоимость, но минимальные требования по каналам связи и отсутствие требований к их резервированию.