![Intel NUC8i5BEK](https://habrastorage.org/getpro/habr/post_images/0c8/395/be4/0c8395be4749da9c4a122bb0f0bbcc1f.jpg)
В этом посте мы расскажем о том, как решали задачу определения факта курения посредством объектовой видеоаналитики на Intel NUC. На входе – видеопотоки с камер видеонаблюдения, которые декодируются, нарезаются на вычислителе на фреймы, а далее каждый фрейм (с учетом делителя кадровой частоты) отдается нейронной сети, которая детектирует наличие факта курения и возвращает вероятность события.
Теперь рассмотрим более детально проблематику, основные отличия от существующих на рынке решений, а также полученные показатели по скорости и числу потоков.
Общая проблематика
В России с 1 июня 2014 года вступили в силу новые нормы Антитабачного закона. Закон против табака регулирует отношения, возникающие в сфере охраны здоровья граждан от воздействия окружающего табачного дыма и последствий потребления табака: запрещено курение в поездах дальнего следования, на пассажирских платформах, в общежитиях и гостиницах, торговых помещениях, на рынках, в кафе, барах, ресторанах.
В целях борьбы с курением многие государства ввели закон о запрете курения в общественных местах. Во всех офисах и театрах ликвидировали «курилки», а в местах общественного питания убрали залы для курения.
Введение описанных выше запретов подразумевает контроль соблюдения установленных норм и правил. На сегодняшний день для этой цели используются разнообразные датчики улавливания пыли и газоанализаторы (например, CO2). Общий принцип действия этих приборов следующий:
![Общий принцип действия разнообразных датчиков улавливания пыли и газоанализаторов](https://habrastorage.org/webt/81/rm/fi/81rmfi5soiqy-n0fhcydxczgume.png)
Датчик фиксирует изменения в окружающей среде, а управляющий микроконтроллер создает событие реакции по заданному заранее алгоритму.
Альтернативой датчикам улавливания пыли и газоанализиторам может быть объектовая видеоаналитика с применением нейронных сетей, где входом является фото или видеопоток с камеры видеонаблюдения, а выходом – вероятность наличия в кадре или наборе кадров факта курения табака или иных составов.
Общая блок-схема аппаратно-программного комплекса
Существует несколько вариантов реализации комплекса:
- Обособленная система в компактном исполнении для установки на объекте
- Централизованная система с передачей и обработкой данных в ЦОД с возможностью задействования существующих систем видеонаблюдения
- Гибридный вариант, когда часть данных обрабатывается в непосредственной близости от источника данных, а часть обрабатывается в ЦОД с централизованным хранением результата работы обоих систем
Рассмотрим их подробнее:
![Общая блок-схема аппаратно-программного комплекса детекции курения](https://habrastorage.org/webt/fm/k-/zj/fmk-zjhn4x5ohukja8jmpfje9fc.png)
Состав комплекса при использовании в непосредственной близости от источника данных:
- IP-камера / камера прямого подключения или набор камер (используются в качестве источника данных).
- Коммутатор (при подключении более чем одного источника данных).
- Исполнительное устройство, вычислитель Intel NUC8i5BEK.
При низкой себестоимости аппаратно-программного комплекса, решается множество значимых и существенных задач безопасности, таких как:
- Контроль соблюдения правил пожарной безопасности с высокой точностью и с фото-фиксацией факта правонарушения (включая данные о времени, дате, месте совершения правонарушения)
- Выявление фактов правонарушений на опасных производствах и компаний, деятельность которых связана с применением легковоспламеняющихся и горюче-смазочных материалов
- Контроль за соблюдением внутреннего режима на режимных объектах
Допустимым вариантом использования является серверная архитектура, при которой данные с камер передаются в ЦОД для дальнейшей обработки:
![Серверная архитектура, при которой данные с камер передаются в ЦОД для дальнейшей обработки](https://habrastorage.org/webt/-r/tg/xh/-rtgxh2gboodzm8nbhvslb6z6i8.png)
При масштабировании и использовании данной схемы, в качестве устройства для централизованного инференса, предполагается применение тех же Intel NUC8i5BEK, но в другом форм-факторе (серверном 1U):
![Сервер для исполнения нейронных сетей на базе 8 штук Intel NUC8i5BEK](https://habrastorage.org/webt/j2/3b/t7/j23bt7laybcszwbzlp8zid7l9a0.png)
Описание принципа детекции факта курения
Для детекции факта курения на фото (кадрах входящего видеопотока) используется нейронная сеть топологии SSD Mobilenet v2 из Open Model Zoo. Сеть предобучена на датасете COCO и далее обучена на Tensorflow. Далее модель сконвертирована через Intel OpenVINO для дальнейшей эксплуатации на CPU/GPU с целью оптимизации стоимости FPS. Показатели модели после конвертации:
![](https://habrastorage.org/webt/1c/u-/st/1cu-stxijzjwy1xrf__dqdrjqa8.png)
Итого на одном Intel NUC8i5BEK при значении делителя кадровой частоты – 5 (25 FPS / 5 = 5 FPS на входе), можно обработать до 40 потоков без учета затрат на декодирование. При использовании аппаратного декодирования VAAPI и свежего драйвера intel-media-driver затраты на декодирование будут минимальны.
Одним из преимуществ фреймворка Intel OpenVINO является возможность переноса сетей между различными устройствами, например, одну и ту же модель с минимальной модификацией можно запускать на CPU, GPU, FPGA, VPU и других устройствах.
Ради эксперимента модель детекции факта курения была запущена на Intel Neural Compute Stick 2 на базе Myriad X. Результаты:
![](https://habrastorage.org/webt/fn/xi/0m/fnxi0mymffxhuo3jqesocolcozu.png)
![Детекция факта курения, запущенная на Intel Neural Compute Stick 2 на базе Myriad X](https://habrastorage.org/webt/0j/lo/54/0jlo5481awaudqqack7ksqbt_sa.png)
На базе индустриальных ПК с платами от AAEON или других производителей со встроенными чипами MyriadX можно получать и использовать уже промышленные решения.
![](https://habrastorage.org/getpro/habr/post_images/55b/328/1b4/55b3281b45f08a53629d28d400c92a3e.jpg)
Для демонстрации работы нейронной сети реализован бот Телеграм – https://t.me/smokers_recognition_bot. Входом является изображение, а выходом – вероятность наличия факта курения на нем. Пробуем, смотрим, экспериментируем…
Инференс выполняется на GPU Intel NUC8i5BEK.
![](https://habrastorage.org/webt/i2/u3/ja/i2u3jaaxtfnuf531-sqs57ioyxs.png)
Преимущества решения
Можно отметить следующие преимущества:
- Наличие возможности обработки данных с множества источников в одном месте
- Наличие возможности детекции факта курения на расстоянии, ограниченном лишь фокусным расстоянием камеры, источника данных, например, 5, 50 или 100 м (подобные показатели невозможно получить классическими датчиками и/или устройствами)
- Наличие возможности детекции курения не только классических сигарет, но и иных устройств (например, вейпы или курительные смеси)
- Наличие возможности сохранения факта правонарушения (фото и метаданные события, такие как дата, время, местоположение) при курении в неположенных местах
- Наличие возможности дооснащения существующих камер функцией детекции факта курения и реакциями на это событие
- Наличие возможности интеграции с существующими системами мониторинга и системами видеонаблюдения, например, Zabbix, Telegraf, Hikvision NVR и др.
Области применения решения
Рассмотрим некоторые объекты и проблематику для применения описанного аппаратно-программного комплекса по детекции курения в видеопотоке:
- Коридоры бизнес-центров и иных зданий и сооружений, лестничные площадки
- Школы и детские сады (из-за неэффективности датчиков дыма и иных существующих решений на открытом пространстве и в продуваемых зонах)
- АЗС (из-за неэффективности датчиков дыма и иных существующих решений на открытом пространстве и в продуваемых зонах)
- Метрополитен (из-за большой площади, высоты потолков и возможности подключения множества камер в единую систему)
- Вокзалы и зоны ожидания (из-за большой площади, высоты потолков и возможности подключения множества камер в единую систему)
- Терминалы аэропортов, ВПП (из-за большой площади, высоты потолков, а также неэффективности датчиков дыма на открытом воздухе)
- Жилые и офисные помещения (чтобы обмануть существующие датчики достаточно открыть окно)
- Кафе, рестораны (чтобы обмануть существующие датчики достаточно открыть окно)
- Бары (чтобы обмануть существующие датчики достаточно открыть окно)
Несколько примеров, где можно использовать детектор курения с применением методов объектовой видеоаналитики![](https://habrastorage.org/r/w1560/webt/eh/xg/w2/ehxgw27opqk-iolhzbfv-qa9rpy.png)
![](https://habrastorage.org/r/w1560/webt/4m/c3/gl/4mc3glbwrk3nk4fgnl8g8_-aqhy.png)
![](https://habrastorage.org/r/w1560/webt/ue/fl/uq/uefluqsubwa62mhb5q_pvftiube.png)
![](https://habrastorage.org/webt/eh/xg/w2/ehxgw27opqk-iolhzbfv-qa9rpy.png)
![](https://habrastorage.org/webt/4m/c3/gl/4mc3glbwrk3nk4fgnl8g8_-aqhy.png)
![](https://habrastorage.org/webt/ue/fl/uq/uefluqsubwa62mhb5q_pvftiube.png)