Рубрика:
Наука и технологии
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
НИКОЛАЕВ П.Л., ст. преподаватель, Московский авиационный институт (национальный исследовательский университет), Москва, npavel89@gmail.com
Анализ деятельности человека посредством глубокого обучения
В работе рассматривается метод анализа выполняемой человеком деятельности посредством глубокого обучения. Предполагается проводить анализ кадра с камеры наблюдения, который можно осуществить с помощью сверточных нейронных сетей. На первом шаге выполняется сегментация изображения с выделением на нем человека и объектов, с которыми он взаимодействует в данный момент. На втором шаге изображение, очищенное от лишних деталей, подвергается классификации для определения выполняемой человеком деятельности. В работе приводятся модели сверточных сетей для решения поставленных задач. Обе модели реализованы на языке Python и обучены на собранных данных. Приводятся полученные результаты обучения сверточных нейронных сетей
1. Введение
Сегодня методы глубокого обучения находят свое применение в различных областях. Один из методов глубокого обучения – сверточные нейроные сети (СНС) – активно применяются при разработке системы компьютерного зрения, т.к. показывают гораздо лучшие результаты по сравнению с другими методами машинного обучения. Сверточные сети обычно используются в следующих задачах: распознавание и классификация изображений, детектирование и сегментация различных объектов на изображении.
Одним из применений компьютерного зрения может быть анализ выполняемой человеком деятельности. Подобные системы можно применять в различных сферах, таких как системы безопасности, умного дома, в учебном и рабочем процессах, в медицинской сфере с целью контроля и наблюдения за людьми и обстановкой, а также при автоматизации каких-либо рутинных задач.
В рамках данной статьи рассматривается подход к анализу подобного вида деятельности путем анализа изображений, получаемых с камеры наблюдения. В рассматриваемом случае предполагаются получение одного кадра за определенный промежуток времени (например, один раз в секунду) и анализ полученного кадра для определения деятельности человека, присутствующего на изображении.
Целью данной работы является разработка метода для анализа текущей деятельности человека по изображению с помощью сверточных нейронных сетей.
2. Предлагаемый метод
Для начала следует определить присутствие человека. Одним из способов является сегментация изображения. Сегментация позволяет более точно определить границы какого-либо объекта по сравнению с детектированием, когда вокруг строится рамка. В рамках задачи сегментации можно сразу выделить и объекты, с которыми взаимодействует человек.
Предлагается следующий метод:
- Получение кадра с камеры.
- Сегментация на изображении (кадре) человека или человека с предметом, с которым он взаимодействует, получение сегментированного изображения.
- Наложение маски на исходное изображение для очистки фона.
- Определение текущей деятельности человека на основе изображения с наложенной маской.
3. Модели сверточных сетей
В рамках предлагаемого метода необходимо решение двух основных задач – сегментации и категоризации. Соответственно нужны две сверточные нейронные сети.
Сверточная нейронная сеть для сегментации человека и связанных с ним предметов была построена на основе модели U-Net, созданной первоначально для сегментации биомедицинских изображений [1]. Особенность подобной архитектуры заключается в том, что при небольшом наборе данных можно получить весьма неплохие результаты. Сама сеть при этом имеет сжимающе-расширяющуюся (энкодерно-декодерную) архитектуру. Входное цветное изображение прогоняется по сверточным слоям, затем на основе полученных признаков строится выходное черно-белое изображение. В данной сети отсутствуют полносвязные слои для классификации, используются только сверточные (Conv2D), пулинговые (MaxPooling2D) и обратные пулингу (UpSampling2D) слои.
Для сегментации человека и связанных с ним объектов была реализована U-Net-подобная сеть с добавлением батч-нормализации и прореживания после слоев свертки и пулинга. Структура сети представлена на рис. 1.
Рисунок 1. Схема СНС для сегментации
Для классификации полученного изображения применяется другая сверточная нейронная сеть. При построении данной модели использовалась стратегия переноса обучения. В данной работе использовался следующий вид переноса обучения: была взята сверточная основа предобученной нейронной сети ResNet50 [2], обученной для классификации изображений на наборе данных ImageNet, данные слои были заморожены (данный процесс предотвращает изменение значений весов в них в процессе обучения [3]), полносвязные слои предобученной нейронной сети были заменены на другие. Структура сети представлена на рис. 2.
Рисунок 2. Схема СНС для классификации изображений
Входными данными для обеих СНС являются изображения размером 224x224x3. Выходом первой сети должно быть сегментированное черно-белое изображение размером 224x224x1, где черным цветом будет залит фон, а белым – человек и предметы, с которыми он взаимодействует. Далее должно генерироваться новое изображение путем наложения полученной маски, и это новое «очищенное» изображение подается на вход второй сети для классификации по категориям с целью определения текущей деятельности человека, присутствующего в кадре.
4. Эксперименты
В рамках данной работы были обучены две сверточные нейронные сети. Первая сеть предназначена для сегментации человека и связанных предметов. Автором был собран набор из 280 изображений, равномерно разделенных на две категории – на изображения, где есть просто человек, и на изображения с человеком, читающим книгу. Для каждого изображения были нарисованы черно-белые маски. Фон выделялся черным цветом, человек и человек с книгой в руках – белым цветом.
По общепринятым правилам собранный набор данных был разделен на три части – из 60% изображений была составлена обучающая выборка (168 изображений), из 10% – валидационная (28 изображений) и из 30% – тестовая (84изображения).
На вход данной сети подается изображение (кадр с камеры), на выходе должно получиться новое черно-белое изображение, на котором выделены человек или человек с книгой в руках.
Параметры обучения первой СНС:
- Оптимизатор – стохастический градиентный спуск.
- Коэффициент обучения – 0,1 (с 1 до 349 эпох) и 0,2 (с 350 до 600 эпох) и момент – 0,9.
- Размер мини-выборки – 2.
- Функция потерь – бинарная энтропия (binary_crossentropy).
- Метрика оценки правильности построения маски – коэффициент Сёренсена:
(1)
где Ymask – эталонная маска, Yprediction – полученная маска.
- Количество эпох обучения – 600.
Вторая сеть предназначена для классификации полученных изображений с наложенной маской.
Так как в первом случае был собран набор данных для сегментации двух видов объектов, то для второй сети был собран набор данных для классификации изображения по двум категориям – нет деятельности и чтение книги. Набор данных составил 1600 изображений (по 800 изображений для каждого класса). Данный набор также был разбит на три части – из 60% изображений была составлена обучающая выборка (960 изображений), из 10% – валидационная (160изображений) и из 30% – тестовая (480 изображений).
Параметры второй СНС:
- Оптимизатор – стохастический градиентный спуск.
- Коэффициент обучения – 0,0001 и момент – 0,9.
- Размер мини-выборки – 32.
- Функция потерь – бинарная энтропия (binary_crossentropy).
- Метрика оценки правильности определения класса – верность (accuracy, % правильно классифицированных изображений).
- Количество эпох обучения – 100.
Так как в обоих случаях наборы данных не очень большие, то для расширения первоначальных обучающих выборок применялась аугментация: зеркальное отражение, зуммирование, небольшой поворот с заливкой пустых областей черным цветом.
Программная реализация СНС была осуществлена на языке программирования Python 3.6 с использованием дополнительных Python-библиотек глубокого обучения TensorFlow 1.1.0 и Keras 2.0.9, работающих поверх библиотеки cuDNN 6.0.
Обучение нейронных сетей производилось на GPU Nvidia GeFoce GTX 1060 с 6 GB видеопамяти.
На рис. 3 и 4 представлены данные с оценкой правильности сегментирования и о потерях первой сверточной сети на тестовой и валидационной (проверочной) выборках.
Рисунок 3. Верность СНС для сегментации
Рисунок 4. Потери СНС для сегментации
Лучшие результаты обучения сверточной нейронной сети для сегментации представлены в таблице 1.
Таблица 1. Результаты обучения СНС для сегментации
Эпоха |
Обучающая выборка |
Валидационная выборка |
Тестовая выборка |
Коэфф. Сёренсена |
Потери |
Коэфф. Сёренсена |
Потери |
Коэфф. Сёренсена |
Потери |
494 |
95,60% |
0,0443 |
88,88% |
0,1018 |
85,69% |
0,1738 |
На рис. 5 и 6 приведены примеры сегментации изображений.
Рисунок 5. Пример сегментации человек: (a) – исходное изображение, (b) – эталонная маска, (с) – полученная маска
Рисунок 6. Пример сегментации человека с книгой: (a) – исходное изображение, (b) – эталонная маска, (с) – полученная маска
На рис. 7 и 8 представлены данные о верности классификации и потерях второй сети на тестовой и валидационной (проверочной) выборках.
Рисунок 7. Верность СНС на основе ResNet50 для классификации
Рисунок 8. Потери СНС на основе ResNet50 для классификации
Лучшие результаты обучения сверточной нейронной сети для классификации представлены в таблице 2.
Таблица 2. Результаты обучения СНС для классификации
Эпоха |
Обучающая выборка |
Валидационная выборка |
Тестовая выборка |
Верность |
Потери |
Верность |
Потери |
Верность |
Потери |
89 |
99,79% |
0,0197 |
91,87% |
0,1897 |
91,67% |
0,2763 |
Стоит отметить, что изображение с рис. 6(a) классифицируется верно (выход сети, равный 1 – класс «чтение», 0 – класс «нет деятельности»), значение нейрона на выходном слое составляет 0,996, а изображение с рис. 5(a) классифицируется неверно – 0,983. Однако при наложении маски на исходные изображения для рис. 6(a) значение выходного нейрона составляет 0,950 (немного ухудшилось), для рис. 5(a) – 0,490 (улучшилось).
5. Заключение
В работе был предложен метод анализа деятельности человека на изображении посредством сверточных нейронных сетей, решающих задачи сегментации и дальнейшей классификации сегментированного изображения. Сверточная сеть для сегментации создана по примеру модели U-Net, а сеть для классификации построена на основе предобученной сети ResNet50. Полученные показатели оценки обучения моделей сверточных сетей говорят о том, что еще есть необходимость в дальнейшем улучшении результатов.
- Ronneberger O., Fischer P., Brox T. U-net: Convolutional networks for biomedical image segmentation. // MICCAI 2015: Medical Image Computing and Computer-Assisted Intervention – MICCAI 2015. P. 234-241. DOI:10.1007/978-3-319-24574-4_28.
- He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition // 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016. P. 770-778. DOI: 10.1109/CVPR.2016.90.
- Шолле Ф. Глубокое обучение на Python. – СПб.: Питер, 2018. – 400 с.
Ключевые слова: искусственные нейронные сети, машинное обучение, глубокое обучение, сверточные нейронные сети, распознавание изображений, компьютерное зрение.
Analysis of human activity by deep learning
Nikolaev P.L., Lecturer of Moscow Aviation Institute (National Research University), Moscow, npavel89@gmail.com
Abstract: In this paper we research the method of analysis of human activities performed by deep learning. It is supposed to analyze the frame from the surveillance camera which can be implemented using convolutional neural networks. The first step is the segmentation of the image with the selection of the person and related objects with which he is interacting at the moment. In the second step the image cleared of unnecessary details is subjected to classification to determine the activities performed by the person. The paper presents models of convolutional networks for solving problems. Both models are implemented in Python and trained on the data collected. The obtained training results of convolutional neural networks are given.
Keywords: artificial neural networks, machine learning, deep learning, convolutional neural networks, image recognition, computer vision.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|