← Назад

УДК 004.93'12

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

Логическая модель свёрточной нейронной сети для распознавания лица человека / А.С. Медведев, О.И. Федяев // ПРОГРАММНАЯ ИНЖЕНЕРИЯ: МЕТОДЫ И ТЕХНОЛОГИИ РАЗРАБОТКИ ИНФОРМАЦИОННО-ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ (ПИИВС-2018) : Сборник материалов II Международной научно-практической конференции, Том 2, Донецк, 14–15 ноября 2018 года. – Донецк: Донецкий национальный технический университет, 2018. – С. 76–81. – EDN HNBMEF.

Донецкий национальный технический университет
wwwalex_96@mail.ru, fedyaev@donntu.org

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

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

Введение

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

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

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

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

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

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

На данный момент свѐрточная нейронная сеть и еѐ модификации считаются лучшими по точности и скорости распознавания объектов на изображении.

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

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

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

Структура свѐрточной нейронной сети
Рисунок 1 – Структура свѐрточной нейронной сети

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

Положительные стороны такой функции:

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

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

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

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

Функция активации ReLU
Рисунок 2 – Функция активации ReLU

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

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

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

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

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

Формула 1
(1)

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

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

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

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

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

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

Процесс подвыборки
Рисунок 3 – Процесс подвыборки

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

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

Структура полносвязного слоя
Рисунок 4 – Структура полносвязного слоя

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

Формула 2
(2)

где xlj- карта признаков j (выход слоя l); f() – функция активации; bl – коэффициент сдвига слоя l; w(l-1)i, j – матрица весовых коэффициентов первого слоя.

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

Выполненный анализ параметров СНС, позволил построить логическую модель нейронной сети, которая будет содержать следующие основные классы, представленные на языке UML (см. рис. 5):

Диаграмма классов свѐрточной нейронной сети
Рисунок 5 – Диаграмма классов свѐрточной нейронной сети

Заключение

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

Литература

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%80%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B5%D0% B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C

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