Логическая модель сверточной нейронной сети для распознавания лица человека

А.С. Медведев, О.И. Федяев
Донецкий национальный технический университет
wwwalex_96@mail.ru, fedyaev@donntu.ru

Медведев А.С., Федяев О.И. Логическая модель свѐрточной нейронной сети для распознавания лица человека. В статье рассмотрена задача распознавания лица человека на основе свёрточной нейронной сети. Выполнен анализ параметров структуры свёрточной нейронной сети и модели нейронов для разных слоёв. На основе объектно-ориентированного анализа разработана логическая структура свёрточной нейронной сети в виде диаграммы классов на языке UML.

Ключевые слова: свёрточная нейронная сеть, распознавание лиц, диаграмма классов, искусственный нейрон

Введение

Распознавание образов в настоящее время встречается во многих прикладных задачах. Наиболее актуальной и сложной является задача распознавания лица человека. Необходимость в еѐ решении возникает при проектировании систем контроля за людьми, систем безопасности и многих других [1].

Несмотря на актуальность компьютерного зрения, качественного решения задачи распознавания нет. Основные трудности компьютерного распознавания лиц, которые необходимо преодолеть, состоят в том, чтобы распознать человека по изображению лица независимо от изменения ракурса и условий освещѐнности при съѐмке, а также при различных изменениях, связанных с возрастом, причѐской и т. д. [1].

В последнее время большие перспективы в решении данной проблемы связывают с применением глубинных нейронных сетей. К этому классу относится многослойная свѐрточная нейронная сеть [1]. В отличие от известных классических архитектур нейронных сетей данный тип построен и функционирует на принципах зрительной системы человека. В последнее время известными фирмами предложены мощные библиотеки, в которых реализованы модели глубоких нейронных сетей, позволяющие решать сложные задачи распознавания. Однако, использование сторонних библиотек может иметь недостаточно оптимизированное решение или нарушать информационную безопасность по отношению к распознаваемым изображениям.

Исходя из этого, в статье рассматривается разработка собственной системы распознавания лиц на основе свѐрточной нейронной сети. При этом возникает задача построения такой программной модели нейронной сети, которая позволяла бы исследовать особенности еѐ работы в реальных условиях. Архитектура свѐрточной нейронной сети как объект исследования характеризуется наличием большого набора настраиваемых параметров и сложностью функционирования. Поэтому в начале целесообразно провести системный анализ объекта и построить логические модели свѐрточной нейронной сети, что и является целью данной работы. Convolutional Neural Network или свѐрточная нейронная сеть (СНС) показала лучшие результаты в области распознавания лиц. Она является развитием идей таких архитектур нейронных сетей, как многослойные сети типа когнитрон и неокогнитрон [2]. Преимущества обусловлены своеобразной архитектурой СНС, позволяющей детально выделять особенности двумерной топологии изображения в отличие от многослойного персептрона.

К достоинствам СНС можно также отнести обеспечение частичной устойчивости к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям. Свѐрточные нейронные сети объединяют в себе три архитектурных идеи:
- локальные рецепторные поля, которые обеспечивают локальную двумерную связность нейронов; - общие синаптические коэффициенты для обеспечения детектирования некоторых черт в любом месте изображения и уменьшение общего числа весовых коэффициентов;
- иерархическая организация с пространственными подвыборками.
На данный момент свѐрточная нейронная сеть и еѐ модификации считаются лучшими по точности и скорости распознавания объектов на изображении.

Структура и функционирование свѐрточной нейронной сети

Сверточная нейронная сеть состоит из слоев нескольких видов таких как сверточные (convolutional), подвыборочные (subsampling) и слои персептрона [6]. В общей архитектуре многослойной нейросети свѐрточные слои и слои подвыборки, чередуясь между собой, формируют входной вектор признаков для выходного слоя - многослойного персептрона. Свое название свѐрточная сеть получила по операции с названием «свѐртка», суть которой будет описана в следующем разделе.

Основной причиной эффективности СНС является концепция общих весов. Они имеют меньшее количество настраиваемых параметров по сравнению с неокогнитроном. Имеются варианты СНС похожие на неокогнитрон. В таких сетях происходит частичный отказ от связанных весов, но алгоритм обучения остаѐтся тот же и основывается на обратном распространении ошибки. СНС могут быстро работать на последовательной машине и быстро обучаться за счѐт эффективного распараллеливания процесса свѐртки по каждой карте, а также обратной свѐртки при распространении ошибки по сети.

В последние годы в СНС очень часто применяется функция активации под названием «выпрямитель» . Нейроны с данной функцией активации называются ReLU (rectified linear unit). ReLU имеет следующую формулу f(x) = max(0, x) и реализует простой пороговый переход в нуле [5].

Положительные стороны такой функции:
1. Вычисление сигмоиды и гиперболического тангенса требует выполнения ресурсоѐмких операций, таких как возведение в степень, в то время как ReLU может быть реализован с помощью простого порогового преобразования матрицы активаций в нуле. Кроме того, функция ReLU не подвержена насыщению.
2. Применение ReLU существенно повышает скорость сходимости стохастического градиентного спуска по сравнению с сигмоидой и гиперболическим тангенсом. Считается, что это обусловлено линейным характером и отсутствием насыщения данной функции.

Отрицательной стороной этой функции является то, что ReLU не всегда достаточно надѐжна при аппаратной реализации и в процессе обучения может выходить из строя. Например, большой градиент, проходящий через ReLU, может привести к такому обновлению весов, что данный нейрон никогда больше не активируется. Если это произойдет, то, начиная с данного момента, градиент, проходящий через этот нейрон, всегда будет равен нулю. Соответственно, данный нейрон будет необратимо выведен из строя. Например, при слишком большой скорости обучения может оказаться, что до 40% нейронов станут «мертвыми» (то есть, никогда не активируются). Эта проблема решается посредством выбора надлежащей скорости обучения.

На этапе анализа структуры СНС возникает важная задача, связанная с определением характеристик еѐ архитектуры: количество слоев, размеры полносвязного слоя, характер связей между нейронами и др.

Функции и параметры свѐрточного слоя

Слой свѐртки — это основной слой СНС, который выполняет большинство основных вычислений. Он представляет из себя набор матриц (карт), у каждой матрицы есть синаптическое ядро (фильтр). Количество таких матриц определяется требованиями к задаче, если взять большое количество карт, то повысится качество распознавания, но увеличится вычислительная сложность. Опираясь на анализ научных статей, предлагается брать соотношение один к двум, то есть каждая матрица предыдущего слоя связана с двумя матрицами свѐрточного слоя [2].

Размеры всех карт свѐрточного слоя одинаковы и вычисляются по формуле:

w = mW – kW + 1, h = mH – kH + 1,

где w – новая ширина свѐрточной карты; h – новая высота свѐрточной карты; mW – ширина предыдущей карты; mH – высота предыдущей карты; kW – ширина ядра; kH – высота ядра.

Ядро является системой разделяемых весов или синапсов - это одна из главных особенностей свѐрточной нейронной сети. Обычная нейронная сеть имеет очень много связей между нейронами, что весьма замедляет процесс детектирования. В свѐрточной сети – наоборот, общие веса позволяют сократить число связей, а также находить один и тот же признак по всей области изображения [5].

Ядро представляет из себя матрицу весов, которая скользит по всей области предыдущей карты и находит определѐнные признаки объектов на изображении. Например, если сеть обучали на множестве лиц, то одно из ядер могло бы в процессе обучения выдавать наибольший сигнал в области глаза, рта, брови или носа, другое ядро могло бы выявлять другие признаки. Размер ядра обычно колеблется в пределах от 3х3 до 7х7 пикселей. Если размер ядра маленький, то оно не сможет выделить какие-либо признаки, если слишком большое, то увеличивается количество связей между нейронами.

Функции и параметры подвыборочного слоя

Подвыборочный слой также как и слой свѐртки имеет матрицы и их количество совпадает с предыдущим слоем. Задача слоя состоит в уменьшении размерности карт предыдущего слоя. Если с помощью операции свѐртки уже были выявлены некоторые признаки, то для дальнейшей обработки настолько подробное изображение уже не нужно, и оно уплотняется (по определѐнному принципу) до менее подробного.

В процессе сканирования ядром подвыборочного слоя матрицы предыдущего слоя, сканирующее ядро не пересекается в отличие от свѐрточного слоя. Обычно, каждая карта имеет ядро размером 2x2, что позволяет уменьшить предыдущие матрицы сверточного слоя в 2 раза. Вся карта признаков разделяется на ячейки 2х2 элемента, из которых выбираются максимальные по значению.

Структура последнего слоя свѐрточной нейронной сети

На выходе СНС установлен слой обычного многослойного персептрона. Он служит для определения класса, к которому относится распознаваемый образ лица. Работа слоя организуется путѐм обращения к выходу предыдущего слоя и определения свойств, которые наиболее характерны для определенного класса [4].

Нейросеть данного слоя является полносвязной, т.е. нейроны каждой карты предыдущего подвыборочного слоя связаны с одним нейроном скрытого слоя. Таким образом, число нейронов скрытого слоя равно числу матриц подвыборочного слоя, но связи могут быть не обязательно полными. Например, только часть нейронов какой-либо из матриц подвыборочного слоя может быть связана с первым нейроном скрытого слоя, а оставшаяся часть - со вторым, либо все нейроны первой карты связаны с нейронами первого и второго скрытого слоя.

Объектно-ориентированная структура свѐрточной нейронной сети

Выполненный анализ параметров СНС, позволил построить логическую модель нейронной сети, которая будет содержать следующие основные классы, представленные на языке UML:
- нейронная система – основной класс, который содержит в себе все слои и параметры СНС;
- входной слой – класс, которые отвечает за первоначальную обработку изображения, для дальнейшей работы в СНС;
- слой свѐртки – класс, обеспечивающий функциональные возможности слоя свѐртки;
- слой подвыборки – класс, обеспечивающий функциональные возможности слоя подвыборки;
- слой полносвязный – класс, обеспечивающий функционал последнего слоя нейронной сети;
- активация – класс, содержащий различные функции активации;
- параметры – класс, содержащий в себе все настройки нейронной сети.

Заключение

В работе проведен параметрический и функциональный анализ архитектуры свѐрточной нейронной сети. Установлено, что она имеет ряд важных достоинств: ускоренное обучения сети и уменьшение необходимого количества обучающих данных за счѐт уменьшенного количества обучаемых нейронов и за счѐт большого количества абстрактных слоѐв. Слои обеспечивают частичную устойчивость к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям. Архитектура СНС позволяет осуществить распараллеливание вычислений, а, следовательно, имеется возможность реализации алгоритмов работы и обучения сети на графических процессорах. Но при этом у СНС есть и недостатки: слишком много варьируемых параметров сети.

Литература

1. Как работает свѐрточная нейронная сеть: архитектура примеры, особенности [Электронный ресурс]. – Режим доступа: https://neurohive.io/ru/osnovy-data-science/glubokaya-svertochnaja-nejronnaja-set/
2. Применение нейросетей в распознавании изображений. [Электронный ресурс]. https://habr.com/post/74326/
3. Солдатова О.П., Гаршин А.А. Применение сверточной нейронной сети для распознавания рукописных цифр.
4. Прохоров В.Г. Использование сверточной нейронной сети для распознавания рукописных символов.
5. Что такое свѐрточная нейронная сеть [Электронный ресурс]. – Режим доступа: https://habr.com/post/309508/
6. Свѐрточные нейронные сети: взгляд изнутри [Электронный ресурс]. – Режим доступа: http://ru.datasides.com/code/cnn-convolutional-neural-networks/
7. Свѐрточная нейронная сеть [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D1%91%D1%...

Медведев А.С., Федяев О.И. Логическая модель свѐрточной нейронной сети для распознавания лица человека. В статье рассмотрена задача распознавания лица человека на основе свёрточной нейронной сети. Выполнен анализ параметров структуры свёрточной нейронной сети и модели нейронов для разных слоёв. На основе объектно-ориентированного анализа разработана логическая структура свёрточной нейронной сети в виде диаграммы классов на языке UML.

Ключевые слова: свёрточная нейронная сеть, распознавание лиц, диаграмма классов, искусственный нейрон

Medvedev A.S., Fedyaev O.I. A convolutional neural network logical model for recognizing human faces. The article deals with the problem of recognizing a human face based on a convolutional neural network. Performs an analysis of the parameters of the structure of the convolutional neural network and the model of neurons for different layers. Based on object-oriented analysis and the logical structure of the convolutional neural network in the form of a class diagram in the UML language.

Keywords: convolutional neural network, face recognition, class diagram, artificial neuron