Донецкий национальный технический университет
wwwalex_96@mail.ru, fedyaev@donntu.org
Введение
Проблема распознавания [1] лиц очень актуальна на данный момент. Этой теме посвящено множество работ.
Основные трудности состоят в том, что бы распознать человека по изображению при различных изменениях, связанных с освещением, ракурсом, возрастом, мимикой, прической и т.д.
Существуют различные способы решения проблемы распознавания лиц, но все они не идеальны.
Свёрточная нейронная сеть [2] — архитектура искусственных нейронных сетей, которая нацелена на эффективное распознавание изображений [1].
Входит в состав технологий глубинного обучения. Использует особенности зрительной коры [3], в которой были открыты клетки, реагирующие на
прямые линии под разными углами, и сложные клетки, реакция которых связана с активацией определённого набора простых клеток.
Идея СНС заключается в чередовании свёрточных слоев и субдискретизирующих слоев. Структура сети многослойна и не содержит обратных связей.
Чаще всего для обучения используется метод обратного распространения ошибки [4].
Сверточная нейронная сеть является одним из лучших алгоритмов по распознаванию и классификации изображений.
Ее преимущество в удобном распараллеливании вычислений, что предоставляет возможность реализации алгоритмов работы и обучения сети на графических процессорах.
Так же СНС относительно устойчива к повороту и сдвигу распознаваемого изображения.
К недостаткам можно отнести трудность настройки сети, т.к. имеется большое количество настраиваемых параметров.
На данный момент существует множество архитектур сверточных нейронных сетей, которые решают задачи распознавания изображений с высокой степенью точности:
Указанные выше модели являются достаточно затратными с вычислительной точки зрения, так как в них имеется большое число обучаемых параметров, что делает выбор архитектуры СНС
для решения разного класса задач распознавания образов достаточно сложной задачей. Однако, такие сети не требуют ручной подготовки данных для дальнейшей работы, что является
важным преимуществом перед классическими методами классификации.
Метод обратного распространения ошибки — метод обучения многослойного перцептрона. Многослойный перцептрон — частный случай перцептрона Розенблатта, в котором один
алгоритм обратного распространения ошибки обучает все слои. Это итеративный градиентный алгоритм, который служит для минимизации ошибки работы многослойного перцептрона и
получения желаемого выхода. Идея этого метода заключается в распространении сигналов ошибки от выходов сети к её входам, в направлении, обратном прямому распространению
сигналов в обычном режиме работы.
Постановка задачи распознавания лица
Для начала обучения сети нужно определиться с тем, как измерять качество распознавания.
Для этого строится функция оценки. Она, явно зависит от выходных сигналов сети и неявно — от всех её параметров.
Самый распространенный пример оценки — сумма квадратов расстояний от выходных сигналов сети до их требуемых значений [9] показана на рисунке 1:
Рисунок 1 – Формула суммы квадратов расстояний от выходных сигналов сети до их требуемых значений
где Z(t) — требуемое значение выходного сигнала. Задача обучения так настроить веса, чтобы они для любой обучающей пары давали минимальную ошибку H.
Чтобы посчитать ошибку для всей обучающей выборки берется среднее арифметическое по ошибкам для всех обучающих пар.
Теперь необходимо выполнить обратное распространение через сеть. Это определит, какие веса оказали большее влияние на потери, поможет найти способы,
как их настроить, чтобы уменьшить потери. После вычисления производной осуществляется обновление весов показано на рисунке 2.
Берутся все фильтрованные веса и обновляются так, что они менять в направлении градиента.
Рисунок 2 - Обновление весов
Скорость обучения — это параметр, который выбирается программистом. Высокая скорость обучения означает, что в обновлениях веса делались более крупные шаги,
поэтому образцу может потребоваться меньше времени, чтобы набрать оптимальный набор весов. Слишком высокая скорость обучения может привести к большим и менее
точным скачкам, которые помешают достижению оптимальных показателей.
Архитектура сверточной нейронной сети
Свёрточные нейронные сети (СНС) очень похожи на обычные нейронные сети. Они также построены на основе нейронов, которые обладают изменяющимся весом и смещениями.
Каждый нейрон получает некоторые входные данные, выполняет скалярное произведение информации и в отдельных ситуациях сопровождает это нелинейностью.
Здесь также присутствует функция потери на последнем (полностью подключенном) слое.
В свёрточных нейронных сетях вводные данные состоят из изображений, и они ограничивают построение сети более разумным путем показано на рисунке 3 и рисунке 4.
В отличие от обычной нейронной сети, слои СНС состоят из нейронов, расположенных в 3-х измерениях: ширине, высоте и глубине, т. е. измерениях, которые формируют объем.
Рисунок 3 – Расположение нейронов в НСРисунок 4 – Расположение нейронов в СНС
Выше было показано, что СНС использует последовательность слоев. Каждый слой преобразует один активационный объем в другой.
Для организации свёрточной нейронной сети применяется 3 основных слоя показано на рисунке 5:
1. свёртки,
2. пулинга,
3. полносвязный слой.
Рисунок 5 – Архитектура СНС
Слой свертки (convolutions) служит для умножает значения фильтра на исходные значения пикселей изображения, после чего все эти умножения суммируются.
Каждая уникальная позиция введенного изображения производит число.
Слой пулинга (pool) выполняет операцию по понижающей дискретизации пространственных размеров, в результате чего объем может сократиться до двух раз.
На этом этапе выполняется нелинейное уплотнение карты признаков. Логика работы: если на предыдущей операции свертки уже были выявлены некоторые признаки,
то для дальнейшей обработки изображение уплотняется до менее подробной картинки.
Полносвязный слой (full connection) выводит N-мерный вектор (N — число классов) для определения нужного класса.
Работа организуется путем обращения к выходу предыдущего слоя и определения свойств, которые наиболее характерны для определенного класса.
Выделение лица в видео потоке
Выделение лиц в видеопотоке реализовано с помощью алгоритма детекции лиц Виолы-Джонса. Этот алгоритм позволяет обнаруживать объекты на изображениях в реальном времени.
Метод использует технологию скользящего окна. То есть рамка размером меньшим, чем исходное изображение, двигается с некоторым шагом по изображению и определяет,
есть ли в рассматриваемом окне лицо. Алгоритм имеет следующие преимущества:
возможно обнаружение более одного лица на изображении;
использование простых классификаторов показывает хорошую скорость и позволяет использовать этот метод в видеопотоке.
Однако алгоритм сложно обучаем, так как для обучения требуется большое количество тестовых данных и предполагает длительное время обучения, которое измеряется днями
[8].
Обобщенная схема алгоритма выглядит следующим образом: перед началом распознавания алгоритм обучения на основе тестовых изображений обучает базу данных, состоящую
из признаков, их паритета и границы. Далее алгоритм распознавания ищет объекты на разных масштабах изображения, используя созданную базу данных.
Алгоритм Виолы-Джонса на выходе даёт всё множество найденных необъединённых объектов на разных масштабах. Следующая задача – принять решение о том, какие из найденных
объектов действительно присутствуют в кадре, а какие – дубли. На рисунке 6 показан результат работы алгоритма.
Рисунок 6 – Результат работы алгоритма Виолы-Джонса
Оценка качества модели распознавания
На этапе объектно-ориентированного анализа и проектирования использован язык моделирования UML для описания моделей программной системы [9].
Для программной реализации данной системы выбран язык программирования C++ из-за его связи с библиотекой ConvNet.
Помимо этого в нём есть различные библиотеки для работы с изображениями.
ConvNet - это библиотека C ++, реализующая распространение данных в сверточных нейронных сетях.
ConvNet предоставляет эффективный и простой в использовании реализации сверточных нейронных сетей на C ++.
Система состоит из нескольких модулей: модуль выделения лица, модуль распознавания и модуль идентификации.
Первый модуль отвечает за выделение лиц в видеопотоке. Другими словами создает обучающую выборку для СНС.
Второй модуль отвечает за распознавание лиц в видеопотоке.
Третий модуль отвечает за идентификацию.
Выводы
Анализ сверточной нейронной сети показал хороший результат по распознаванию и классификации изображений.
Преимущество СНС заключается в удобном распараллеливании вычислений, что предоставляет возможность реализации алгоритмов работы и обучения сети на графических процессорах.
Так же СНС относительно устойчива к повороту и сдвигу распознаваемого изображения.
К недостаткам можно отнести трудность настройки сети, т.к. имеется большое количество настраиваемых параметров.
Большое количество неприятностей приносит долгий процесс обучения. В сложных задачах для обучения сети могут потребоваться дни или даже недели.
Существует риск, что СНС вообще не обучится.
Несмотря на это, алгоритм хорошо себя зарекомендовал в ходе экспериментов, поэтому он будет использован в системе распознавания лиц человека.
9. Козлов В.А., Потапов А.С. Анализ методов выделения движущихся объектов на видеопоследовательностях с шумами
// Научно-технич. вестник СПГУ ИТ, №3 (73), 2011.
10. Байгарова Н.С., Бухштаб Ю.А. Некоторые принципы организации поиска видеоданных
// Программирование, №3, 1999.
Медведев А.С., Федяев О.И. Идентификация студента при дистанционном обучении посредством компьютерного распознавания лиц.
В работе рассматривается разработка программной системы распознавания лиц в видеопотоке.
Она позволит идентифицировать студентов по их лицам.
Для решения этой задачи используется сверточная нейронная сеть.
Сверточная нейронная сеть является одним из лучших алгоритмов по распознаванию и классификации изображений.
Недостатком метода СНС являются трудность настройки сети, т.к. имеется большое количество настраиваемых параметров и долгий процесс обучения.
Ключевые слова: видеопоток, лицо человека, распознавание лица, сверточная нейронная сеть.
Medvedev A.S., Fedyaev O.I. Identification of the student for distance learning through computer recognition of persons.
The paper considers the development of a software system for recognizing faces in a video stream. It will identify students by their faces.
To solve this problem, a convolutional neural network is used. A convolutional neural network is one of the best algorithms for recognizing and classifying images.
The disadvantage of the SNS method is the difficulty in configuring the network; There are a large number of configurable parameters and a long learning process.
Keywords: video stream, human face, face recognition, convolutional neural network.