Рубрика:
Наука и технологии
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
НИКОЛАЕВ П.Л., старший преподаватель, Московский авиационный институт (Национальный исследовательский университет), Москва, npavel89@gmail.com
Исследование подходов к построению сверточной нейронной сети, распознающей деятельность человека
В работе исследуются методы построения сверточной нейронной сети для распознавания деятельности человека по получаемому с камеры изображению. Рассматриваются два подхода построения сверточной сети – обучение с нуля ииспользование уже обученных нейронных сетей. Также приводятся результаты работы сверточных сетей, построенных и обученных по рассматриваемым методам
Введение
Системы распознавания деятельности человека имеют широкий круг применения. Подобные системы можно использовать в медицинской сфере для отслеживания состояния пациентов. Также их можно применять в системах безопасности в целях выявления опасных действий. Помимо этого, возможно автоматически подстраивать окружающую обстановку для выполнения текущей деятельности (например, изменять уровень освещенности или температурный режим впомещении).
Одним из способов определения деятельности человека является распознавание изображений с камеры. Лучшие результаты по распознаванию изображений в последние годы показывают сверточные нейронные сети.
В рамках данной работы будет рассмотрено построение сверточной нейронной сети для распознавания деятельности человека по изображению с камеры. Распознавание предлагается осуществлять по одному кадру, получаемому с камеры. Кадр с камеры будет подаваться на вход обученной сверточной сети, а на выходе должен быть определен тип выполняемой человеком деятельности.
Сверточные нейронные сети
Сверточные нейронные сети (СНС) состоят из слоев свертки и субдискретизации (пулинга), отвечающих за выделение признаков изображений, и полносвязных слоев, отвечающих за классификацию изображений.
Рассмотрим два подхода к обучению сверточной нейронной сети.
В первом случае создадим с нуля простую сверточную сеть (см. таблицу 1) и обучим ее на собранном наборе данных. Данная нейронная сеть состоит из пяти сверточных и двух полносвязных слоев.
Таблица 1. Архитектура сверточной нейронной сети
Слой (тип) |
Форма вывода |
conv2d_1 (Conv2D) |
(None, 222, 222, 32) |
activation_1 (Activation) |
(None, 222, 222, 32) |
max_pooling2d_1 (MaxPooling2D) |
(None, 111, 111, 32) |
conv2d_2 (Conv2D) |
(None, 109, 109, 32) |
activation_2 (Activation) |
(None, 109, 109, 32) |
max_pooling2d_2 (MaxPooling2D) |
(None, 54, 54, 32) |
dropout_1 (Dropout) |
(None, 54, 54, 32) |
conv2d_3 (Conv2D) |
(None, 52, 52, 64) |
activation_3 (Activation) |
(None, 52, 52, 64) |
max_pooling2d_3 (MaxPooling2D) |
(None, 26, 26, 64) |
conv2d_4 (Conv2D) |
(None, 24, 24, 128) |
activation_4 (Activation) |
(None, 24, 24, 128) |
max_pooling2d_4 (MaxPooling2D) |
(None, 12, 12, 128) |
dropout_2 (Dropout) |
(None, 12, 12, 128) |
conv2d_5 (Conv2D) |
(None, 10, 10, 256) |
activation_5 (Activation) |
(None, 10, 10, 256) |
max_pooling2d_5 (MaxPooling2D) |
(None, 5, 5, 256) |
flatten_1 (Flatten) |
(None, 6400) |
dense_1 (Dense) |
(None, 256) |
activation_6 (Activation) |
(None, 256) |
dropout_3 (Dropout) |
(None, 256) |
dense_2 (Dense) |
(None, 4) |
activation_7 (Activation) |
(None, 4) |
Другой подход – применение стратегии переноса обучения. Ее суть заключается в использовании уже предварительно обученной нейронной сети, причем обученной на большом наборе данных из миллионов изображений. Данный подход может применяться, когда в наличии есть только небольшой набор данных для обучения. Также при данном методе можно значительно сократить необходимое для достижения нужной точности время обучения нейронной сети.
Предварительно обученные сети уже умеют находить характерные признаки изображений. Необходимо только переобучить полносвязные слои для классификации изображений из нашего набора данных. Рассмотрим применение следующих предварительно обученных нейронных сетей: VGG16, VGG19 [1] и ResNet50 [2]. Данные сети были обучены на наборе данных ImageNet для классификации миллионов изображений, разделенных на 1000 классов.
Эксперименты
В рамках работы выполнялось обучение сверточной нейронной сети для распознавания изображений с различными видами деятельности человека. Был собран набор изображений для классификации, разделенный на четыре класса: чтение, работа за компьютером, письменная работа и игра на скрипке. Каждая категория включала в себя по 1400 изображений. 70% изображений использовались для обучения нейронной сети и 30% – для тестирования.
Сверточная нейронная сеть была реализована на языке программирования Python 3.6. Использовались библиотеки:
- TensorFlow 1.1.0;
- Keras 2.0.9;
- cuDNN 6.0.
Все вычисления производились на видеокарте Nvidia GeFoce GTX 1060 6 GB. Во всех случаях СНС обучались стохастическим градиентным спуском со следующими гиперпараметрами:
- простая сеть: коэффициент обучения, равный 0,01;
- предобученные сети: коэффициент обучения, равный 0,0001, и момент, равный 0,9.
В качестве функции потерь была использована категориальная энтропия. В процессе обучения применялась аугментация, позволяющая увеличить первоначальный набор данных путем изменения исходного изображения (например, спомощью зеркального отражения, поворота, зуммирования и т.п.). Также был применен метод прореживания (dropout) для избегания переобучения сети. На вход каждой сети подавалось изображение размером 224x224x3.
При использовании предобученных сверточных сетей их полносвязные слои, отвечающие за классификацию, были заменены на два полносвязных слоя – первый с 256 нейронами и второй с 4 (по числу категорий для классификации).
Обучение каждой сети проводилось в течение 100 эпох. На рис. 1 и 2 представлены данные о точности и о потерях простой сверточной сети, на рис. 3 и 4 – СНС на основе VGG16, на рис. 5 и 6 – СНС на основе VGG19 и на рис. 7 и 8 – СНС на основе ResNet50.
|
|
Рисунок 1. Точность простой СНС |
Рисунок 2. Потери простой СНС |
|
|
Рисунок 3. Точность СНС на основе VGG16 |
Рисунок 4. Потери СНС на основе VGG16 |
|
|
Рисунок 5. Точность СНС на основе VGG19 |
Рисунок 6. Потери СНС на основе VGG19 |
|
|
Рисунок 7. Точность СНС на основе ResNet50 |
Рисунок 8. Потери СНС на основе ResNet50 |
В таблице 2 представлены наилучшие результаты на тестовом наборе данных, достигнутые рассматриваемыми сетями.
Таблица 2. Наилучшие результаты на тестовой выборке
Тип СНС |
Точность |
Потери |
Среднее время обучения на одну эпоху |
Простая СНС |
75.54% |
0.8418 |
56 с |
СНС на основе VGG16 |
95.06% |
0.2792 |
132 с |
СНС на основе VGG19 |
94.52% |
0.3512 |
161 c |
СНС на основе ResNet50 |
95.12% |
0.2251 |
117 с |
Как видно по результатам из таблицы 2, наибольшая точность распознавания на тестовых данных получилась у сверточной нейронной сети на основе ResNet50. При этом хорошо видно, что применение предобученных нейронных сетей позволяет добиться большей точности в распознавании изображений.
Заключение
В данной работе были рассмотрены подходы к обучению сверточных нейронных сетей на примере распознавания деятельности человека. Были обучены несколько СНС – простая сеть из семи слоев и сети на основе VGG16, VGG19 иResNet50. Экспериментально установлено, что использование предобученных сверточных сетей позволяет добиться лучших результатов по сравнению с построением сверточных сетей с нуля. Далее необходимо добиться большей точности распознавания, а также увеличить количество распознаваемых типов деятельности человека. eof
- Simonyan K., Zisserman A. Very deep convolutional networks for large-scale image recognition // International Conference on Learning Representations (ICLR), 2015.
- 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.
Ключевые слова: искусственные нейронные сети, машинное обучение, глубокое обучение, сверточные нейронные сети, распознавание изображений.
Research of approaches to constructing the convolutional neural network for human activity recognition
Nikolaev P.L., Lecturer of Moscow Aviation Institute (National Research University), Moscow, npavel89@gmail.com
Abstract: In this paper we research methods for constructing the convolutional neural network for human activity recognition on the image obtained with the camera. Two approaches to building the convolutional network, such as training from scratch and the use of pretrained neural networks are considered. Also, the results of the work of convolutional networks constructed and trained by the considered methods are given.
Keywords: artificial neural networks, machine learning, deep learning, convolutional neural networks, image recognition.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|