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