Распознавание лиц на основе MATLAB

Система распознавания лиц на основе PCA-алгоритма анализа главных компонентов MATLAB

1. Введение в тему

Можно сказать, что с развитием общества и развитием технологий спрос на быструю и эффективную автоматическую проверку личности во всех аспектах общества становится повсеместным и растет день ото дня. Например, является ли человек резидентом нашей страны, имеет ли он право входа в систему безопасности, имеет ли право проводить конкретную сделку и т.д. Особенно после теракта «9.11» в США в 2001 году вопрос о том, как использовать высокотехнологичные средства для быстрого и точного обнаружения и подтверждения подозрительных элементов в общественных местах, таких как вокзалы и аэропорты, стал общей проблемой в борьбе с терроризмом в США. страны по всему миру вопрос. С этой целью страны вложили много сил и материальных ресурсов в исследования и разработки различных технологий идентификации, что привело к значительному развитию технологии биометрической идентификации. Технология биометрического распознавания в основном включает в себя: распознавание лиц, распознавание радужной оболочки глаза, распознавание отпечатков пальцев, распознавание походки, распознавание голоса, распознавание рукописного ввода, распознавание отпечатков ладоней и распознавание слияния нескольких биометрических признаков. Люди распознают текст и воспринимают внешнюю информацию посредством зрения. В объективном мире 75% информации поступает от зрения, поэтому обеспечение зрения для компьютеров или роботов является важной частью искусственного интеллекта. Поскольку биометрические данные являются неотъемлемыми атрибутами людей с высокой стабильностью и индивидуальными различиями, они являются наиболее идеальной основой для проверки личности. По сравнению с другими системами биометрической идентификации человеческого тела, такими как радужка, отпечаток пальца, ген, отпечаток ладони и т. д., система распознавания лиц является более прямой, удобной, дружественной и простой для восприятия пользователями. система для получения.

Технология распознавания лиц широко используется в важных государственных органах и сферах социального обеспечения. Например: идентификация преступников в системе общественной безопасности, проверка кредитных карт, медицина, управление файлами, видеоконференции, системы взаимодействия человека с компьютером и идентификация держателей различных карт. По сравнению с другими биометрическими данными человека (такими как: отпечатки пальцев, отпечатки ладоней, радужная оболочка глаза, голос и т.д.) Один из символов научно-технических средств и исследований. Хотя люди могут легко распознавать человеческие лица и выражения, автоматическое распознавание человеческих лиц машинами действительно является очень сложной задачей, которая включает в себя распознавание образов, обработку изображений и знание многих аспектов, таких как физиология и психология. Хотя исследования технологии распознавания лиц достигли некоторых обнадеживающих результатов, в практическом применении все еще остается много серьезных проблем. Нежесткий характер человеческих лиц, разнообразие поз, выражений, причесок и макияжа — все это создает трудности для правильного распознавания. работать вместе Неустанные усилия.

Технология распознавания лиц двух человек

Лица у разных людей разные и никогда не бывают одинаковыми Даже у пары близнецов должны быть некоторые отличия в лицах. Хотя люди могут без труда узнавать человека по лицу в случае значительных изменений в выражении лица, возрасте или прическе, очень сложно создать систему, которая могла бы полностью автоматически выполнять распознавание лиц. обработка изображений, компьютерное зрение, физиология, психология и когнитивная наука, а также тесно связаны с другими биометрическими методами идентификации и областями взаимодействия компьютерного восприятия человека и компьютера. По сравнению с другими системами биометрической идентификации человеческого тела, такими как отпечатки пальцев, сетчатка глаза, радужка, гены и форма ладони, системы распознавания лиц являются более прямыми и удобными, и у пользователей нет психологических барьеров.Некоторая информация, которую трудно получить с помощью других систем идентификации. С 1990-х годов в связи с резким ростом спроса технология распознавания лиц стала горячей темой исследований.

2.1 Содержание исследования распознавания лиц

Распознавание лиц (Face Recognition) — это технология распознавания образов, которая использует компьютер для извлечения и распознавания черт из изображений лиц. В начале 1970-х исследованием распознавания лиц занималась психологическая неврология. Его прямое назначение — выяснить, как люди узнают лица. После середины 1970-х годов были проведены исследования по автоматическому распознаванию лиц математическими, физическими и техническими методами.

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

2.1.1 Распознавание лиц

Этот процесс включает в себя обнаружение лица (Detection), определение местоположения лица (Location) и отслеживание лица (Tracking). Так называемое обнаружение лица заключается в том, чтобы выдать любое изображение, определить, есть ли на нем лицо, и если да, то выдать информацию о состоянии, такую ​​как положение и размер лица. Отслеживание лиц относится к обнаружению человеческих лиц в реальном времени в динамическом видео, состоящем из непрерывного статического изображения. На обнаружение лиц в основном влияют такие факторы, как освещение, шум, осведомленность об отношении и окклюзия.Результат обнаружения лиц напрямую связан с точностью последних двух процессов. В последние годы обнаружение и отслеживание лиц стали самостоятельной темой исследований и привлекли к себе внимание.

2.1.2 Представление лица

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

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

Извлечение признаков и распознавание трех лиц

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

Анализ главных компонент (PCA) является наиболее часто используемым методом линейного картирования в распознавании образов и дискриминантном анализе.Этот метод основан на распределении позиций точек выборки в многомерном пространстве образов и направлении, в котором точки выборки изменяются больше всего в пространство, то есть направление с наибольшей дисперсией.Направление используется в качестве дискриминантного вектора для реализации извлечения признаков данных и сжатия данных. С точки зрения вероятности и статистики видно, что чем больше дисперсия случайной величины, тем больше информации содержит случайная величина.Например, когда дисперсия переменной равна нулю, переменная является константой без какой-либо информации. .

3.1 Классический алгоритм выделения признаков с использованием PCA — алгоритм Eigenface

Среди алгоритмов выделения признаков с помощью PCA метод собственных граней (Eigenface) является одним из классических алгоритмов. Метод собственного лица — это метод распознавания и описания лиц, основанный на анализе главных компонентов. Метод собственного лица рассматривает область изображения, содержащую человеческое лицо, как случайный вектор, поэтому преобразование KL можно использовать для получения его ортогонального базиса KL. Основание, соответствующее большему собственному значению, имеет форму, аналогичную форме человеческого лица, поэтому его также называют собственным лицом. Использование линейной комбинации этих оснований может описывать, выражать и аппроксимировать изображение лица, поэтому можно выполнять распознавание и синтез лиц. Процесс распознавания заключается в сопоставлении изображения лица с подпространством, образованным собственным лицом, и сравнении его положения с известным лицом в собственном пространстве Конкретные шаги заключаются в следующем:

(1) Инициализировать, получить обучающий набор изображений лиц и вычислить собственные лица, которые определены как пространство лиц и сохранены в библиотеке шаблонов, чтобы система могла их идентифицировать;

(2) Введите новое изображение лица, сопоставьте его с собственным пространством лица и получите набор данных о признаках лица;

(3) Судите, является ли это человеческим лицом, проверяя расстояние между изображением и пространством человеческого лица;

(4) Если это человеческое лицо, оцените, является ли это человеком в базе данных, в соответствии с режимом веса и выполните определенные операции.

3.2 Процесс распознавания лица PCA

Полное распознавание лица с помощью АПК должно включать следующие четыре шага: предварительная обработка изображения лица; чтение в базу данных лиц и обучение ее в подпространстве признаков; проецирование обучающего изображения и тестового изображения на подпространство, полученное на предыдущем шаге; выбор определенного расстояния. определяется функция. Весь процесс подробно описан ниже:

(1) Чтение в базе данных лиц

После нормализации базы данных лиц для каждого человека в базе данных отбирается определенное количество изображений для формирования обучающей выборки, а остальные формируют тестовую выборку. Предполагая, что нормализованное изображение имеет размер N×N, размерный вектор образован соединительными столбцами, которые можно рассматривать как точку в пространстве измерений, а изображение можно описать низкоразмерным подпространством посредством КЛ-преобразования.

(2) Рассчитайте матрицу генерации преобразования KL и получите собственные значения и собственные векторы изображения.

Предполагая, что в библиотеке изображений лиц имеется N изображений лиц, выраженных в виде вектора (размерность вектора установлена ​​равной L), среднее изображение лица отображается в формуле (2-1):

(2-1)

Отсюда можно получить среднюю разницу каждого изображения, как показано в формуле (2-2):

v2-e3537ce72ed2c80c2bacc026e76e38c7_b.jpg

,(2-2)

Таким образом можно рассчитать ковариационную матрицу, как показано в формуле (2-3):

(2-3)

Вычислите собственные значения и соответствующие собственные векторы матрицы C.

Однако в реальных расчетах размер матрицы C велик, даже для изображений небольшого размера объем вычислений все равно очень велик. Чтобы уменьшить объем вычислений, средняя разница каждого изображения теперь формируется в виде матрицы, как показано в формуле (2-4):

(2-4)

Тогда формулу (2-3) можно записать в виде формулы (2-5):

(2-5)

Поэтому согласно теории линейной алгебры задача вычисления собственных значений и соответствующих им собственных векторов трансформируется в задачу нахождения собственных значений и соответствующих им собственных векторов. Размер только намного меньше, чем N×N, поэтому расчет упрощается. После расчета его можно получить по формуле (2-6):

(2-6)

(3) Спроецируйте обучающее изображение и тестовое изображение на пространство признаков.

Векторное пространство, образованное собственными векторами, может представлять информацию об основных признаках изображения лица и проецировать среднюю разность всех N изображений в базе данных изображений лица в это пространство для получения соответствующих векторов проекций, таких как формула (2-7) и (2-8) показывает:

(2-7)

(2-8)

Чтобы изображение лица I было распознано, вычислите вектор проекции его отличия от k, как показано в формуле (2-9):

(2-9)

Затем сравните с векторами проекций, соответствующими N изображениям лиц в библиотеке изображений лиц, и завершите распознавание в соответствии с определенным критерием расстояния.

(4) Сравните тестовое изображение и обучающее изображение, чтобы определить категорию образца, которую необходимо определить.

Для классификации можно использовать множество различных классификаторов: парадигма, парадигма, минимальное расстояние, угол и расстояние Махаланобиса.


Реализация программы MATLAB eigenface

m = mean(T,2);% Найти средний вектор выборки

Train_Number = размер (T, 2);

%%%% Вычислить вектор разности между каждым образцом и средним вектором

А = [];

для i = 1 : Train_Number

temp = double(T(:,i)) - m; % Рассчитать среднюю разницу каждого изображения в обучающем наборе Ai = Ti - m

А = [А темп];

конец

L = A'*A;% Рассчитать ковариационную матрицу

[VD] = eig(L);% найти собственный вектор и собственное значение

3.3 Выбор вектора признаков

Подпространство собственных граней, созданное выше для проекции, использует собственные векторы, соответствующие всем r ненулевым собственным значениям. Хотя ковариационная матрица C имеет не более N собственных векторов, соответствующих ненулевым собственным значениям, и r≤N, в общем случае r все еще слишком велико, и в соответствии с требованиями приложения не все из них имеют зарезервированное значение. Скорость расчета проекции пространства признаков напрямую связана с количеством собственных векторов, используемых для создания подпространств.Если учитывать время расчета и другие факторы, некоторые собственные векторы с меньшей информацией могут быть надлежащим образом вычтены, и после удаления этих собственных векторов это не обязательно невозможно , Это полезно для результатов классификации, а в некоторых случаях может повысить эффективность распознавания. Ниже обсуждаются несколько различных методов выбора собственных значений:

(1) Стандартная проекция собственного пространства: все собственные векторы r, соответствующие ненулевым собственным значениям, используются для создания подпространства собственных граней. Однако, когда значение r этого метода велико, скорость вычислений будет низкой, и это не способствует классификации.

(2) Чтобы еще больше сжать собственные векторы и уменьшить объем вычислений, собственные значения сортируются по размеру, а собственные векторы, соответствующие малым собственным значениям, игнорируются, что получается по следующей формуле. Пусть r будет рангом rN, тогда сжатый набор векторов признаков показан в формуле (2-10):

,М<р (2-10)

Экспериментально доказано, что скорость распознавания наилучшая, когда значение M равно M=[r*20%].

(3) Сохраните первые собственные векторы z–1: расположите собственные значения в порядке убывания, сохранив при этом первые собственные векторы z–1, где z — количество категорий обучающих изображений.

(4) Определить размерность в соответствии с количеством рассчитанной информации: в отличие от предыдущего фиксированного отбрасывания некоторых собственных векторов, этот метод использует значение, которое гарантирует, что информация, содержащаяся в оставшихся собственных векторах, больше определенного порога e по сравнению с общим количество информации Обычно принимается равным 0,9, его можно рассчитать по формуле (2-11):

(2-11)

Реализация классификации MATLAB и программы извлечения собственных значений

% Извлеките собственный вектор в соответствии с собственным значением> 1

L_eig_vec = [];

для i = 1 : размер (V, 2)

если( D(i,i)>1 )

L_eig_vec = [L_eig_vec V(:,i)];

конец

конец

%%%%%%% Вычислить собственные векторы ковариационной матрицы

% уменьшение размерности

Собственные грани = A * L_eig_vec; % A: центрированные векторы изображения

3.4 Выбор функции расстояния

Изображения проецируются в признаковое пространство, и остается задача, как судить о сходстве этих изображений. Обычно есть два способа различения: один — вычислить расстояние между изображениями в N-мерном пространстве, а другой — измерить сходство между изображениями. При измерении расстояния мы хотим, чтобы расстояние было как можно меньше, и обычно выбираем тренировочное изображение, наиболее близкое к тестовому изображению, в качестве его категории. При измерении сходства предполагается, что изображения максимально похожи, то есть категория обучающего изображения с наибольшим сходством является категорией, к которой принадлежит тестовое изображение. Вот несколько методов расчета:

(1) Парадигма

Добавьте разницу абсолютного значения между пикселями, также известную как парадигма суммы. Формула парадигмального расстояния показана в формуле (2-12):

(2-12)

(2) Парадигма

Добавляет квадрат разницы между пикселями. Также известно как евклидово расстояние. Формула расстояния в нормальной форме показана в формуле (2-13):

(2-13)

(3) Минимальное расстояние

Сначала вычислите среднее значение различных обучающих выборок, а следующее сравнение расстояний точно такое же, как в приведенной выше парадигме. Таким образом, каждую категорию необходимо сравнить только один раз во время классификации, что сокращает объем вычислений. Определение расстояния между образцом x и классом i показано в формуле (2-14):

(2-14)

где - среднее значение всех образцов класса i.

3.5 Распознавание лиц на основе PCA

Процесс распознавания лиц на основе алгоритма PCA состоит из двух этапов: этапа обучения и этапа распознавания. На этапе обучения каждая известная грань X отображается в подпространство, состоящее из собственных граней, и получается N-мерный вектор.

Порог расстояния определяется по формуле (2-15):

(j,k=1,2,…,N) (2-15)

Во время распознавания распознаваемое изображение сначала сопоставляется с пространством собственных граней, и получаются вектор P и его расстояние от каждого набора граней (i=1, 2, 3, ..., N), а также метод евклидова расстояния используется для распознавания лиц.Для распознавания лиц применяются следующие правила классификации:

(1) Если >, входное изображение не является изображением лица;

(2) Если <,

v2-77b4184ad99ec549f85723c1a03bc5da_b.jpg

, >, входное изображение содержит неизвестное лицо;

(3) Если <, =min{}, входным изображением является лицо k-го человека в библиотеке.

Четыре исходных кода MATLAB

4.1. Создание базы данных изображений

function T = CreateDatabase(TrainDatabasePath)
%%%%%%读取训练库路径,并统计样本个数
TrainFiles = dir(TrainDatabasePath);
%%%%%%%%将2维图像转化为一维向量
T = [];
for i = 1 : Train_Number
% I have chosen the name of each image in databases as a corresponding number. However, it is not mandatory!
    str = int2str(i);     
    img = imread(str);
    img = rgb2gray(img);   
    [irow icol] = size(img);   
    temp = reshape(img',irow*icol,1);   % Reshaping 2D images into 1D image vectors
    T = [T temp]; % 'T' grows after each turn                    
end
4.2 主程序
clear all
clc
close all 
% You can customize and fix initial directory paths
TrainDatabasePath = uigetdir(strcat(matlabroot,'\work'), 'Select training database path' );%设置训练集路径
TestDatabasePath = uigetdir(strcat(matlabroot,'\work'), 'Select test database path'); 
prompt = {'Enter test image name (a number between 1 to 10):'};
dlg_title = 'Input of PCA-Based Face Recognition System';
num_lines= 1;
def = {'1'};
 
TestImage  = inputdlg(prompt,dlg_title,num_lines,def);
TestImage = strcat(TestDatabasePath,'\',char(TestImage),'.jpg');
im = imread(TestImage); 
[m, A, Eigenfaces] = EigenfaceCore(T);
OutputName = Recognition(TestImage, m, A, Eigenfaces); 
SelectedImage = strcat(TrainDatabasePath,'\',OutputName);
SelectedImage = imread(SelectedImage); 
figure;
subplot(1,2,1);imshow(im);
title('Test Image');
subplot(1,2,2);imshow(SelectedImage);
title('Equivalent Image');
str = strcat('Matched image is :  ',OutputName);
disp(str)
4.3最终程序结果

В TrainDatabase хранится 20 изображений, а в TestDatabase — 10 изображений, все они имеют одинаковый формат и разрешение. При запуске основной программы сначала установите путь к базе данных TrainDatabase, а затем укажите путь к базе данных TestDatabase, после чего появится номер изображения (1-10), который вы хотите сопоставить, и, наконец, тестовое изображение и эквивалентное изображение. будет отображаться в базе данных TrainDatabase. Если совпадающее изображение совпадает с изображением в базе данных TrainDatabase, совпадающее изображение будет таким же (как показано на рисунке 4-5-1); если совпадающее изображение отсутствует в базе данных TrainDatabase, выполните поиск наиболее похожая картина (как показано на рис. 4-5-2).

Supongo que te gusta

Origin blog.csdn.net/TuTu998/article/details/120177077
Recomendado
Clasificación