Сетевое издание
Международный студенческий научный вестник
ISSN 2409-529X

FACE RECOGNITION FROM A PHOTO USING NEURAL NETWORKS

Alekseeva N.S. 1
1

В статье описывается модификация и применение программы для распознания лиц по фотографии.Данная работа выполнена в рамках курсового проекта «MachineLearning. Обучающиеся технические системы» [1]

Основные понятия

Одним из самых распространенных методов машинного обучения при решении данной задачи являются нейронные сети. Нейронные сети – это программная реализация сетей нервных клеток человека, т.е. биологических нейронных сетей. Активные работы над их созданием начались в 60-е годы, когда нейробиологами было установлено, что мозг – это миллиарды нейронов, соединенных между собой, а мозг человека способен выполнять сложнейшие задачи [2]Нейронная сеть состоит из связанных между собой нейронов, которые способны взаимодействовать друг с другом. Простая нейронная сетьприведена на рисунке 1.

Рис.1. Модель нейронной сети

это входные узлы, они относятся к первому слою, который называют входным; , - обозначения для активациинейронов, - активация узла i в слое j), они относятся ко второму слою, который называют скрытым, количество скрытых слоев в сети выбирается при разработке архитектуры, именно в этом слое происходят основные вычисления;– гипотеза.Последний слой называют выходным, т.к. он выдает конечное значение, вычисленное гипотезой, т.е. результат.

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

Логистическая регрессия – это самая распространенная функция активации, график которой представлен на рисунке 2: ), где q – матрица параметров («весов»), X – матрица входных признаков [1]. Функции активации: сигмоида.

Картинки по запросу сигмоидный график

Рис. 2 Логистическая функция (сигмоид) [1]

Распознавание лиц по фотографии

При создании программы для распознавания лиц по фотографии была модифицирована программа с использованием программного обеспеченияGNU Octaveна базе нейронной сети для распознавания рукописных цифр, которая находится в открытом доступе и используется в качестве задания по программированию в курсе лекций по машинному обучению AndrewNg от Стэнфордского университета [3], а так же репозиторий сайта https://github.com/ .

Существует несколько методов к распознаванию лиц и один из нихметод главных компонент или principalcomponentanalysis (PCA).Первоначально метод главных компонент начал применяться в статистике для снижения пространства признаков без существенной потери информации. В задаче распознавания лиц его применяют главным образом для представления изображения лица вектором малой размерности (главных компонент), который сравнивается затем с эталонными векторами, заложенными в базу данных.Главной целью метода главных компонент является значительное уменьшение размерности пространства признаков таким образом, чтобы оно как можно лучше описывало «типичные» образы, принадлежащие множеству лиц. Используя этот метод можно выявить различные изменчивости в обучающей выборке изображений лиц и описать эту изменчивость в базисе нескольких ортогональных векторов, которые называются собственными (eigenface). [7]Вначале весь обучающий набор лиц преобразуется в одну общую матрицу данных, где каждая строка представляет собой один экземпляр изображения лица, разложенного в строку, данные необходимо нормировать.

Рис.3 Архитектура сети

В этой сети (входной слой) равен 10 векторам, заложенным в базу данных, (скрытый слой) равен 25 элементам, равен 2 элементам.

В обучающий набор (dataset) входит 500 изображений лиц, этот набор был взят на сайте [https://github.com/dusenberrymw/eigenfaces/faces.mat], каждое изображение имеет размер 32 x 32 пикселей.Загружаем набор данных:

load ('faces.mat')

X=X(1:500,:);

Отображение лиц в наборе данных: displayData(X(1:100, :));

Рис.4 Отображение набора данных

Метод главных компонент чувствителен к выбору единиц измерения. Подход состоит в том, чтобы произвести нормировку: разделить все значения каждой из переменных на её стандартное отклонение. В этом случае все стандартные отклонения сравняются и никаких «перекосов» из-за разных масштабов не будет.

Для применения метода главных компонент (РСА) выполним нормализацию данных с помощью оператора bsxfun

[X_norm, mu, sigma] = featureNormalize(X);

mu = mean(X);

X_norm = bsxfun(@minus, X, mu);

sigma = std(X_norm);

X_norm = bsxfun(@rdivide, X_norm, sigma);

Затем выполним РСА, вычислим проекцию нормализованных входных данных X в уменьшенное размерное пространство:

Running PCA on face dataset.

[U, S] = pca(X_norm);

[m, n] = size(X);

U = zeros(n);

S = zeros(n);

Визуализируем полученные данные

Рис.5 Уменьшение размеров лиц набора данных

Функция активации нейронов «сигмоида»

functiong = sigmoid(z)

g = 1.0 ./ (1.0 + exp(-z));

Алгоритм обучения сети

Посте того, как мы посчитали выход нейронной сети, реализуем алгоритм обратного распространения ошибки для вычисления градиентов Theta1_grad и Theta2_grad. Выходной нейрон получает целевое значение — то выходное значение, которое является правильным для данного входного сигнала, и вычисляет ошибку , так же вычисляет величину, на которую изменится вес связи. Подсчитав ошибку, распространяем ее в обратном направлении по всей сети и находим значение локального градиента в каждом узле нейронной сети.

Вычисляем величину корректировки смещения и посылаем нейронам в предыдущем слое:

delta3=a3-y1;

Theta22=Theta2(:,2:end);

delta2=delta3*Theta22.*sigmoid(z2);

Delta_2=delta3'*a2;

Delta_1=delta2'*X;

Delta_1=1/m*Delta_1;

Delta_2=1/m*Delta_2;

Theta1(:,1)=0; Theta2(:,1)=0;

Delta_1 = Delta_1+lambda/m*Theta1;

Delta_2 = Delta_2+lambda/m*Theta2;

Theta1_grad=Delta_1;

Theta2_grad=Delta_2;

Визуализация результатов происходит путем выбора изображения из набора данных

Neural Network Prediction: male. Accuracy is 100 %.

Program paused. Press enter to continue.

Рис.6 Реализация прогноза

Оценка качества работы сети на основе обучающих данных показала точность 79%

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