人脸识别算法的简介

人脸识别算法的简介,第1张

人脸识别(Facial Recognition),就是通过视频采集设备获取用户的面部图像,再利用核心的算法对其脸部的五官位置、脸型和角度进行计算分析,进而和自身数据库里已有的范本进行比对,后判断出用户的真实身份。人脸识别技术基于局部特征区域的单训练样本人脸识别方法。第一步,需要对局部区域进行定义;第二步,人脸局部区域特征的提取,依据经过样本训练后得到的变换矩阵将人脸图像向量映射为人脸特征向量;第三步,局部特征选择(可选);后一步是进行分类。分类器多采用组合分类器的形式,每个局部特征 对应一个分类器,后可用投票或线性加权等方式得到终识别结果。 人脸识别综合运用了数字图像/视频处理、模式识别、计算机视觉等多种技术,核心技 术是人脸识别算法。目前人脸识别的算法有 4 种:基于人脸特征点的识别算法、基于整幅 人脸图像的识别算法、基于模板的识别算法、利用神经网络进行识别的算法。

作为人脸识别的第一步,人脸检测所进行的工作是将人脸从图像背景中检测出来,由于受图像背景、亮度变化以及人的头部姿势等因素影响使人脸检测成为一项复杂研究内容。检测定位:检测是判别一幅图像中是否存在人脸,定位则是给出人脸在图像中的位置。定位后得到的脸部图像信息是测量空间的模式,要进行识别工作,首先要将测量空间中的数据映射到特征空间中。采用主分量分析方法,原理是将一高维向量,通过一个特殊的特征向量矩阵,投影到一个低维的向量空间中,表征为一个低维向量,并且仅仅损失一些次要信息。通过对经过检测和定位过的人脸图像进行特征提取 *** 作可以达到降低图像维数,从而可以减小识别计算量,提高识别精度的作用。人脸识别系统采用基于特征脸的主 成分分析法(PCA),根据一组人脸训练样本构造主元子空间,检测时,将测试图像投影到 主元空间上,得到一组投影系数,再和各已知的人脸图像模式比较,从而得到检测结果。

Java中常见的人脸识别算法有:

Eigenface: 这是一种基于主成分分析的人脸识别算法,它将人脸图像映射到一个低维的特征空间。

Fisherface: 这是一种基于投影的人脸识别算法,它利用线性判别分析技术对人脸图像进行分类。

Local Binary Patterns (LBP): 这是一种基于二进制像素点比较的人脸识别算法,它提取了图像中的纹理特征。

Haar-like特征: 这是一种基于积分图像的人脸识别算法,它检测图像中的边缘特征。

Convolutional Neural Networks (CNNs): 这是一种基于卷积神经网络的人脸识别算法,它模拟了人类大脑中的视觉识别过程。

这些算法都是广泛用于人脸识别应用中的,根据具体需求和应用环境选择合适的算法是很重要的。

人脸识别的方法很多,以下介绍一些主要的人脸识别方法。

  (1)几何特征的人脸识别方法

  (2)基于特征脸(PCA)的人脸识别方法

  (3)神经网络的人脸识别方法

  (4)d性图匹配的人脸识别方法

  (5)线段Hausdorff 距离(LHD) 的人脸识别方法

  (6)支持向量机(SVM) 的人脸识别方法

基于几何特征的人脸识别方法

基于特征的方法是一种自下而上的人脸检测方法,由于人眼可以将人脸在不此研究人员认为有一个潜在的假设:人脸或人脸的部件可能具有在各种条件下都不会改变的特征或属性,如形状、肤色、纹理、边缘信息等。基于特征的方法的目标就是寻找上述这些不变特征,并利用这些特征来定位入脸。这类方法在特定的环境下非常有效且检测速度较高,对人脸姿态、表情、旋转都不敏感。但是由于人脸部件的提取通常都借助于边缘算子,因此,这类方法对图像质量要求较高,对光照和背景等有较高的要求,因为光照、噪音、阴影都极有可能破坏人脸部件的边缘,从而影响算法的有效性。

模板匹配算法首先需要人TN作标准模板(固定模板)或将模板先行参数化(可变模板),然后在检测人脸时,计算输入图像与模板之间的相关值,这个相关值通常都是独立计算脸部轮廓、眼睛、鼻子和嘴各自的匹配程度后得出的综合描述,最后再根据相关值和预先设定的阈值来确定图像中是否存在人脸。基于可变模板的人脸检测算法比固定模板算法检测效果要好很多,但是它仍不能有效地处理人脸尺度、姿态和形状等方面的变化。

基于外观形状的方法并不对输入图像进行复杂的预处理,也不需要人工的对人脸特征进行分析或是抽取模板,而是通过使用特定的方法(如主成分分析方法(PCA)、支持向量机(SVM)、神经网络方法(ANN)等)对大量的人脸和非人脸样本组成的训练集(一般为了保证训练得到的检测器精度,非人脸样本集的容量要为人脸样本集的两倍以上)进行学习,再将学习而成的模板或者说分类器用于人脸检测。因此,这也是j种自下而上的方法。这种方法的优点是利用强大的机器学习算法快速稳定地实现了很好的检测结果,并且该方法在复杂背景下,多姿态的人脸图像中也能得到有效的检测结果。但是这种方法通常需要遍历整个才能得到检测结果,并且在训练过程中需要大量的人脸与非人脸样本,以及较长的训练时间。近几年来,针对该方法的人脸检测研究相对比较活跃。

基于代数特征的人脸识别方法

在基于代数特征的人脸识别中,每一幅人脸图像被看成是以像素点灰度为元素的矩阵,用反映某些性质的数据特征来表示人脸的特征。 设人脸图像 ) , ( y x I 为二维 N M × 灰度图像,同样可以看成是 N M n × = 维列向量,可视为 N M × 维空间中的一个点。但这样的一个空间中,并不是空间中的每一部分都包含有价值的信息,故一般情况下,需要通过某种变换,将如此巨大的空间中的这些点映射到一个维数较低的空间中去。然后利用对图像投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。 在基于代数特征的人脸识别方法中,主成分分析法(PCA)和Fisher 线性判别分析(LDA)是研究最多的方法。本章简要介绍介绍了PCA。

完整的PCA(PrincipalComponentAnalysis)人脸识别的应用包括四个步骤:人脸图像预处理;读入人脸库,训练形成特征子空间;把训练图像和测试图像投影的上一步骤中得到的子空间上;选择一定的距离函数进行识别。详细描述如下:

41读入人脸库

一归一化人脸库后,将库中的每个人选择一定数量的图像构成训练集,设归一化后的图像是n×n,按列相连就构成n2维矢量,可视为n2维空间中的一个点,可以通过K-L变换用一个低维子空间描述这个图像。

42计算K.L变换的生成矩阵

训练样本集的总体散布矩阵为产生矩阵,即

或者写成:

式中xi为第i个训练样本的图像向量,|l为训练样本的均值向量,M为训练样本的总数。为了求n2×n2维矩阵∑的特征值和正交归一化的特征向量,要直接计算的话,计算量太大,由此引入奇异值分解定理来解决维数过高的问题。

43利用奇异值分解(AVD)定理计算图像的特征值和特征向量

设A是一个秩为r的行n×r维矩阵,则存在两个正交矩阵和对角阵:

其中凡则这两个正交矩阵和对角矩阵满足下式:

其中为矩阵的非零特征值,

 44 把训练图像和测试图像投影到特征空间每一副人脸图像向特征脸子空间投影,得到一组坐标系数,就对应于子空间中的一个点。同样,子空间中的任一点也对应于~副图像。这组系数便可作为人脸识别的依据,也就是这张人脸图像的特征脸特征。也就是说任何一幅人脸图像都可以表示为这组特征脸的线性组合,各个加权系数就是K.L变换的展开系数,可以作为图像的识别特征,表明了该图像在子空间的位置,也就是向量

可用于人脸检测,如果它大于某个阈值,可以认为f是人脸图像,否则就认为不是。这样原来的人脸图象识别问题就转化为依据子空间的训练样本点进行分类的问题。

基于连接机制的人脸识别方法

  基于连接机制的识别方法的代表性有神经网络和d性匹配法。

神经网络(ANN)在人工智能领域近年来是一个研究热门,基于神经网络技术来进行人脸特征提取和特征识别是一个积极的研究方向。神经网络通过大量简单神经元互联来构成复杂系统,在人脸识别中取得了较好的效果,特别是正面人脸图像。常用的神经网络有:BP网络、卷积网络、径向基函数网络、自组织网络以及模糊神经网络等n¨。BP网络的运算量较小耗时也短,它的自适应功能使系统的鲁棒性增强。神经网络用于人脸识别,相比较其他方法,其可以获得识别规则的隐性表达,缺点是训练时间长、运算量大、收敛速度慢且容易陷入局部极小点等。Gutta等人结合RBF与树型分类器的混合分类器模型来进行人脸识别乜螂1。Lin等人采用虚拟样本进行强化和反强化学习,采用模块化的网络结构网络的学习加快,实现了基于概率决策的神经网络方法获得了较理想结果,。此种方法能较好的应用于人脸检测和识别的各步骤中。d性匹配法采用属性拓扑图代表人脸,拓扑图的每个顶点包含一个特征向量,以此来记录人脸在该顶点位置周围的特征信息¨引。拓扑图的顶点是采用小波变换特征,对光线、角度和尺寸都具有一定的适应性,且能适应表情和视角的变化,其在理论上改进了特征脸算法的一些缺点。

基于三维数据的人脸识别方法

一个完整的人脸识别系统包括人脸面部数据的获取、数据分析处理和最终结果输出三个部分。图2-1 显示了三维人脸识别的基本步骤:1 、通过三维数据采集设备获得人脸面部的三维形状信息;2 、对获取的三维数据进行平滑去噪和提取面部区域等预处理;3 、从三维数据中提取人脸面部特征,通过与人脸库中的数据进行比对;4 、用分类器做分类判别,输出最后决策结果。

 

 

基于三维数据的方法的代表性是基于模型合成的方法和基于曲率的方法。

基于模型合成的方法,它的基本思想为:输入人脸图像的二维的,用某种技术恢复(或部分恢复)人脸的三维信息,再重新合成指定条件下的人脸图像。典型代表是3D可变形模型和基于形状恢复的3D增强人脸识别算法。3D可变形模型首先通过200个高精度的3D人脸模型构建一个可变形的3D人脸模型,用这个模型来对给定的人脸图像拟合,获得一组特定的参数,再合成任何姿态和光照的人脸图像n卜捌。基于形状恢复的3D增强人脸识别算法是利用通用的3D人脸模型合成新的人脸图像,合成过程改变了一定的姿态与光源情况。

曲率是最基本的表达曲面信息的局部特征,因而最早用来处理3D人脸识别问题的是人脸曲面的曲率。Lee禾lJ用平均曲率和高斯曲率值,将人脸深度图中凸的区域分割出来。

如果你是开发者的话,可以去Tel一下colorreco,更好地技术解答。

这种分类的案例很多,附件里面就有这类案例。主要还是要形成样本,输入输出都做好,进行训练,训练完成后就能满足分类需要。

模式识别是对表征事物或现象的各种形式的信息进行处理和分析,来对事物或现象进行描述、辨认、分类和解释的过程。该技术以贝叶斯概率论和申农的信息论为理论基础,对信息的处理过程更接近人类大脑的逻辑思维过程。现在有两种基本的模式识别方法,即统计模式识别方法和结构模式识别方法。人工神经网络是模式识别中的常用方法,近年来发展起来的人工神经网络模式的识别方法逐渐取代传统的模式识别方法。经过多年的研究和发展,模式识别已成为当前比较先进的技术,被广泛应用到文字识别、语音识别、指纹识别、遥感图像识别、人脸识别、手写体字符的识别、工业故障检测、精确制导等方面。

%人脸识别模型,脸部模型自己找吧。

function mytest()

clc;

images=[ ];

M_train=3;%表示人脸

N_train=5;%表示方向

sample=[];

pixel_value=[];

sample_number=0;

for j=1:N_train

for i=1:M_train

str=strcat('Images\',num2str(i),'_',num2str(j),'bmp'); %读取图像,连接字符串形成图像的文件名。

img= imread(str);

[rows cols]= size(img);%获得图像的行和列值。

img_edge=edge(img,'Sobel');

%由于在分割中我们可以看到这个人脸的眼睛部分也就是位于分割后的第二行中,位置变化比较大,而且眼睛边缘检测效果很好

sub_rows=floor(rows/6);%最接近的最小整数,分成6行

sub_cols=floor(cols/8);%最接近的最小整数,分成8列

sample_num=M_trainN_train;%前5个是第一幅人脸的5个角度

sample_number=sample_number+1;

for subblock_i=1:8 %因为这还在i,j的循环中,所以不可以用i

block_num=subblock_i;

pixel_value(sample_number,block_num)=0;

for ii=sub_rows:(2sub_rows)

for jj=(subblock_i-1)sub_cols+1:subblock_isub_cols

pixel_value(sample_number,block_num)=pixel_value(sample_number,block_num)+img_edge(ii,jj);

end

end

end

end

end

%将特征值转换为小于1的值

max_pixel_value=max(pixel_value);

max_pixel_value_1=max(max_pixel_value);

for i=1:3

mid_value=10^i;

if(((max_pixel_value_1/mid_value)>1)&&((max_pixel_value_1/mid_value)<10))

multiple_num=1/mid_value;

pixel_value=pixel_valuemultiple_num;

break;

end

end

% T 为目标矢量

t=zeros(3,sample_number);

%因为有五类,所以至少用3个数表示,5介于2的2次方和2的3次方之间

for i=1:sample_number

% if((mod(i,5)==1)||(mod(i,5)==4)||(mod(i,5)==0))

if(i<=3)||((i>9)&&(i<=12))||((i>12)&&(i<=15))

t(1,i)=1;

end

%if((mod(i,5)==2)||(mod(i,5)==4))

if((i>3)&&(i<=6))||((i>9)&&(i<=12))

t(2,i)=1;

end

%if((mod(i,5)==3)||(mod(i,5)==0))

if((i>6)&&(i<=9))||((i>12)&&(i<=15))

t(3,i)=1;

end

end

% NEWFF——生成一个新的前向神经网络

% TRAIN——对 BP 神经网络进行训练

% SIM——对 BP 神经网络进行仿真

% 定义训练样本

% P 为输入矢量

P=pixel_value'

% T 为目标矢量

T=t

size(P)

size(T)

% size(P)

% size(T)

% 创建一个新的前向神经网络

net_1=newff(minmax(P),[10,3],{'tansig','purelin'},'traingdm')

% 当前输入层权值和阈值

inputWeights=net_1IW{1,1}

inputbias=net_1b{1}

% 当前网络层权值和阈值

layerWeights=net_1LW{2,1}

layerbias=net_1b{2}

% 设置训练参数

net_1trainParamshow = 50;

net_1trainParamlr = 005;

net_1trainParammc = 09;

net_1trainParamepochs = 10000;

net_1trainParamgoal = 1e-3;

% 调用 TRAINGDM 算法训练 BP 网络

[net_1,tr]=train(net_1,P,T);

% 对 BP 网络进行仿真

A = sim(net_1,P);

% 计算仿真误差

E = T - A;

MSE=mse(E)

x=[014 0 1 1 0 1 1 12]';

sim(net_1,x)

一般来说,人脸识别系统包括图像摄取、人脸定位、图像预处理、以及人脸识别(身份确认或者身份查找)。系统输入一般是一张或者一系列含有未确定身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图象或者相应的编码,而其输出则是一系列相似度得分,表明待识别的人脸的身份。

人脸识别算法分类

基于人脸特征点的识别算法(Feature-based recognition algorithms)。

基于整幅人脸图像的识别算法(Appearance-based recognition algorithms)。

基于模板的识别算法(Template-based recognition algorithms)。

利用神经网络进行识别的算法(Recognition algorithms using neural network)。

基于光照估计模型理论

提出了基于Gamma灰度矫正的光照预处理方法,并且在光照估计模型的基础上,进行相应的光照补偿和光照平衡策略。

优化的形变统计校正理论

基于统计形变的校正理论,优化人脸姿态;强化迭代理论

强化迭代理论是对DLFA人脸检测算法的有效扩展;

独创的实时特征识别理论

该理论侧重于人脸实时数据的中间值处理,从而可以在识别速率和识别效能之间,达到最佳的匹配效果

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/12172583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存