ВВЕДЕНИЕ 3
Актуальность задачи 4
Постановка задачи 5
1. АНАЛИЗ СУЩЕСТВУЮЩИХ РЕШЕНИЙ 7
1.1. Обработка информации в реальном времени 8
1.2. Сравнение распределенной обработки видеоданных у конкурентов 11
2. ОБОСНОВАНИЕ ВЫБОРА ТЕХНОЛОГИЙ 16
3. АРХИТЕКТУРА СИСТЕМЫ 20
4. ПРАКТИЧЕСКАЯ ЧАСТЬ 23
4.1. Серверная часть 24
4.1.1. Сбор потоков с автономных устройств видеонаблюдения 26
4.1.2. Распознавание движения 26
4.1.3. Настройка вычислительного кластера 27
4.2. Web-клиент 29
ЗАКЛЮЧЕНИЕ 33
ГЛОССАРИЙ 34
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 36
ПРИЛОЖЕНИЕ
В наше время камеры окружают нас повсеместно: и в магазинах, и в зданиях, и даже на улице. Устройства видеонаблюдения доступны настолько, что любой человек может приобрести их и установить на своей частной территории, стараясь обезопасить себя и свое имущество. К тому же, используя различные приложения, можно контролировать то, что снимают камеры прямо сейчас, а с развитием этой сферы стали доступны такие опции, как определение движения, распознавание лиц, выявление инцидентов.
Объемы видеоинформации растут с каждым днем. Только в черте города можно насчитать тысячи камер, которые наблюдают за происходящим на улицах. Возникает вопрос: как пользовательским приложениям удаленного видеонаблюдения осуществить быструю обработку потоков видеоданных с такого количества устройств в реальном времени? Классические решения, такие как последовательная обработка фрагментов видеопотока на одном сервере, позволяют приступить к анализу видео только после размещения видео в хранилище. При использовании приложениями удаленного видеонаблюдения такого способа возникает торможение при обработке видеопотока, связанные с его сохранением и нехваткой мощностей узла-обработчика. К тому же пользователь получает результаты анализа с некоторой задержкой, тогда получение актуальной информации в реальном времени остается под вопросом [1].
Недостатком процесса обрабатывания видеопотока единственным устройством является не только скорость. При возникновении сбоев в работе сервера, занимающегося видеостримингом, возможна потеря всего потока данных с автономного устройства. Решением может стать внедрение распределенной системы анализирования данных, приходящих с камер видеонаблюдения, позволяющей перенести обработку на другой узел системы без потерь.
Проблемы обработки, анализа и хранения видеозаписей актуальны не только в сфере использования систем видеонаблюдения для контроля за территорией и для обеспечения безопасности. В 2017 году на конференции Intelligent Video 2.0 поднимались вопросы, касающиеся важности видеоанализа и видеохранилища в сфере экономики и маркетинга [2]. Системы видеомониторинга приносят большую пользу в принятии бизнес - решений, анализируя, к примеру, поток клиентов. Так можно определять, какие торговые точки наиболее проходимые, куда лучше располагать товар. Однако нужно учитывать, что анализ потока с камер связан не только с обработкой видео. Для получения большей информации необходимо надежное хранилище для видеоданных.
Создание фреймворка видеостриминга с автономных устройств с распределенной обработкой и облачным хранением видеоданных является решением таких проблем анализа больших потоков видеоинформации.
Среди приложений удаленного видеонаблюдения, использующих распределенную обработку, найдено:
• ITRIUM video [3];
• TRASSIR [4].
В рассматриваемых системах видеомониторинга используется распределенное хранилище данных, что облегчает обработку больших объемов информации. Однако обязательное наличие отдельной базы данных для каждой камеры требует лишней информации о структуре данных, а при малом количестве либо отсутствии видеозаписей с каждой камеры приводит к растрате ресурсов. Таким образом, в силу отсутствия открытого исходного кода в существующих коммерческих решениях и возможных аналогах на российском рынке не найдено приложений с распределенной обработкой видеопотоков, которые бы не нуждались во внедрении распределенной базы данных для хранения видеозаписей для каждого отдельного устройства.
В 2017 году было разработано пилотное решение для удаленного видеомониторинга [5]. Предложенный фреймворк позволяет подключать до 1000 автономных сетевых устройств видеонаблюдения одновременно, просматривать видеозаписи с камер, делиться видео-файлами с использованием URL-ссылок. Рассматриваемая система предполагает хранение данных о пользователях и об их подключенных устройствах в базе данных на сервере, а сами видеоданные хранятся в облачном сервисе. Использование облачного решения для хранения видео позволяет накапливать большие объемы информации. Обработка видеозаписей происходит на сервере, что замедляет работу всей системы в целом и не является решением проблемы задержки и торможения при воспроизведении и анализе видеоинформации в реальном времени.
Постановка задачи
Таким образом, целью данной работы является создание фреймворка для распределенной обработки видео при его стриминге с автономных устройств, среди функционала которого можно выделить:
• добавление IP-камер видеонаблюдения, их удаление и редактирование настроек подключенных устройств;
• просмотр потока данных с автономных устройств видеонаблюдения;
• выявление подозрительной подвижности на осматриваемой территории путем распределенной обработки видеопотоков;
• сохранение в облачное хранилище и дальнейший просмотр кадров с выделенными движущимися объектами.
В рамках достижения цели должны быть выполнены следующие задачи:
• реализация системы удаленного видеонаблюдения с возможностью подключения своих IP-устройств;
• добавление функционала распределенной обработки видео с целью выявления подозрительной подвижности на территории для повышения скорости и отказоустойчивости системы;
• создание вычислительного кластера из трех узлов-обработчиков для распределенного анализа видеоинформации;
• внедрение облачного хранилища данных, позволяющего сохранять кадры произошедших инцидентов на охраняемой территории;
• создание удобного пользовательского интерфейса.
Перед разработкой рассматриваемой системы были проведены:
• анализ конкурентов и аналогов системы;
• анализ решений по реализации распределенной обработки видеоинформации.
Помимо этого в рамках работы будут рассмотрены следующие пункты:
• обоснование выбора технологий для реализации задач;
• архитектура системы;
• описание практической части разработанной системы видеомониторинга с распределенной обработкой видеоданных.
В рамках выполнения данной выпускной квалификационной работы был проведен анализ способов распределенной обработки существующих решений удаленного видеомониторинга. В качестве технологической новизны была предложена архитектура фреймворка, реализующего систему удаленного видеонаблюдения, позволяющего ускорить обработку видеострима с автономных устройств благодаря созданию вычислительного кластера.
Помимо этого были проведены разработка фреймворка, позволяющего просмотр кадров с обнаруженным движением, реализованным с использованием распределенной вычислительной системы, обоснование выбора технологий для ее реализации, представлены веб-интерфейсы и рассмотрен основной функционал.
В силу публикации открытого API система может быть как расширена дополнительным функционалом, к примеру, распознаванием только человеческих движений, так и являться модулем, расширяющим уже существующий функционал.
Благодаря использованию Apache Kafka можно отметить повышение надежности и отказоустойчивости системы распознавания движения на собранных кадрах, а на основе анализа времени выполнения с использованием кластера Spark — повышение производительности при обработке на распараллеленной на нескольких узлах системе.
Также стоит отметить, что результаты выполнения данной работы готовятся для оформления заявки на государственную регистрацию программы для ЭВМ в Роспатент.
1. Yoon-Ki, K., Chang-Sung, J. Large scale image processing in real-time environments with Kafka // David C. Wyld et al. (Eds) : CSITA, ISPR, ARIN, DMAP, CCSIT, AISC, SIPP, PDCTA, SOEN. - 2017. - p. 207215.
2. Intelligent Video 2.0: видеоанализ и СХД: форум // Москва. All-over-IP: сайт. Москва, 2017. [Электронный ресурс] - Режим доступа: https://www.all-over-ip.ru/intelligent-video/
3. ИТРИУМ | Для систем безопасности, видеонаблюдения, СКУД, охранной и пожарной сигнализации [Электронный ресурс] - Режим доступа: http://www.itrium.ru
4. TRASSIR.COM [Электронный ресурс] - Режим доступа: http://trassir.com/
5. Гришина А.С., Кугуракова В.В. Фреймворк для облачного видеомониторинга через IP-камеры с интуитивно-понятным интерфейсом // Электронные библиотеки. - 2017. - Т. 20, №4. - c. 225238.
6. Hu, Y., & Lu, X. Real-time video fire smoke detection by utilizing spatial- temporal ConvNet features // Multimedia Tools and Applications. - 2018. - p. 1-19.
7. Singh, G., Majumdar, S. & Rajan, S. Auto-resource provisioning for mapreduce-based multiple object tracking in video // ACM International Conference Proceeding Series. - 2018.
8. Apache Hadoop 2.9.1 - MapReduce Tutorial [Электронный ресурс] - Режим доступа: https://hadoop.apache.org/docs/stable/hadoop- mapreduce- client/hadoop-mapreduce-client-core/MapReduceTutorial.html
9. Kesavaraja, D., Shenbagavalli, A. Framework for Fast and Efficient Cloud Video Transcoding System Using Intelligent Splitter and Hadoop MapReduce // Wireless Personal Communications. - 2018. - p. 1-16.
10. Rathore, M.M., Son, H., Ahmad, A., Paul, A., Jeon, G. Real-Time Big Data Stream Processing Using GPU with Spark Over Hadoop Ecosystem // International Journal of Parallel Programming. - 2018. - p. 630-646.
11. Apache Spark™ - Unified Analytics Engine for Big Data [Электронный ресурс] - Режим доступа: https://spark.apache.org/
12. Облачное объектное хранилище | Сохранение и извлечение данных из любого места | Amazon Simple Storage Service [Электронный ресурс] - Режим доступа: https://aws.amazon.com/ru/s3/
13. Apache Kafka [Электронный ресурс] - Режим доступа: https ://kafka.apache. org/
14. Apache ZooKeeper [Электронный ресурс] - Режим доступа:
https://zookeeper.apache.org/
15. Библиотека OpenCV [Электронный ресурс] - Режим доступа: https://opencv.org/
16. Документация Java [Электронный ресурс] - Режим доступа:
https://www.java.com/
17. PHP: Hypertext Preprocessor [Электронный ресурс] - Режим доступа: http://php.net/
18. Symfony, High Performance PHP Framework for Web Development [Электронный ресурс] - Режим доступа: https://symfony.com/
19. Начало работы с FOSUserBundle [Электронный ресурс] - Режим доступа:
https://symfony.com/doc/current/bundles/FOSUserBundle/index.html
20. Twig - гибкий, быстрый и безопасный PHP-шаблон [Электронный ресурс] - Режим доступа: https://twig.symfony.com/
21. Materialize: документация [Электронный ресурс] - Режим доступа: https://materializecss.com
22. FFmpeg [Электронный ресурс] - Режим доступа: https://www.ffmpeg.org/
23. Docker - Build, Ship, and Run Any App, Anywhere [Электронный ресурс] - Режим доступа: https://www.docker.com/