人脸识别基本知识

来源:互联网 发布:网络层ddos 编辑:程序博客网 时间:2024/04/19 12:46

写在前面,我硕士期间主要做人脸特征点的定位和人脸识别的相关应用,期间读了一些人脸识别的paper,仍然记得开始做人脸识别理论研究的时候迟迟难入门的感觉,直到读到参考文献中的这一篇,本文算是在该论文的基础上,结合自己的一些总结和体会形成的。虽然自己今后不再做这方面的研究,但总觉得既然花费时间和精力在上面,理应留下些东西,其中错误之处还望指正。

介绍

我认为,解决一个问题,首先要明确问题所在领域的知识,其次是自己思考方式决定的方法论,二者结合才能解决好一个问题,如果没有了解一个领域内的基本知识而去谈上层的方法容易找错路,并且在错路上越走越远,最近一段时间看了一些有关人脸识别领域的神经学基础和人脸识别常用方法的论文,本文将对这两个问题进行详细阐述。

 

人脸识别的神经学基础

人脸识别是指通过人脸进行人的身份鉴别。

首先,人脸识别就人类的神经感知来说与对动物的识别或是对其他物体识别没有本质上的区别(猜想是在人脑部是用相似的神经元进行处理的)。但为什么人类可以轻易分辨不同的人脸,却不能分辨出不同的猫脸、鼠脸呢?这个问题很好解释,人在出生之后清醒时间内最经常看到的物体恐怕就是人脸了,而对人脸的鉴别有利于自身的生存(如妈妈的脸)和发现危险(陌生的脸),大量的训练样本让人类对人脸有了更强鉴别能力。例如在原始森林里人经过长期生活(比如贝爷),可以轻易分辨出我们认为长相类似的植物里哪些是有毒的,哪些是可以提供能量的。在人类的不同亚种间,也存在这种情况,比如国外电影节红毯经常叫错中国女明星名字,而普遍的白种人对黄种人的人脸没有足够的鉴别能力,而对于我们来说,即使人不出名,我们也可以轻易分辨两个类似的中国美女(注意不是韩国美女)。这就是因为我们所接触的黄种人人脸训练样本多,而白种人接触的少,反之亦然。那么,如果人类对人脸的识别和对其他物体的识别没有本质上的区别,采用的识别方法也可以相互借鉴,这为把其他物体的识别方法在人脸识别的问题上进行尝试提供了理论支持。

 

其次,人脸正面的2D图像和其他图像一样,从频率角度来看,都有高频分量和低频分量,低频分量对应人脸的全局描述在人脸检测中占主导地位,高频分量对应细节在人脸身份认证中起重要作用。低频分量对应我们远远地看到人脸得到的信息,我们不需要看到很清晰的眼睛、鼻子,通过大致的轮廓和五官分布就可以分辨出当前视野里有人脸,这说明对人脸检测来说,尺寸较小或是清晰度不太高的图片可以检测出是否有人脸,换句话说低频分量对人脸检测起比较大的作用,正是因为这个,大众脸(典型脸)在人脸检测中的正确率较高。高频分量对应我们近处所观察到的人脸细节,如柳叶眉、丹凤眼等,这些细节是我们鉴别这是哪个人(人脸识别)的重要参考信息,而具有特殊外观表现的人脸在人脸识别中准确率比大众脸高。从空间上来讲,人脸的图像中,一般情况下上半部分的信息相对于下半部分的信息更为重要,这从直观感受上来说,眼睛是人脸上最明显的器官(不论是亮度还是对比度),并且在不同人脸上的变化要比其他器官变化大,因此也具有更强的鉴别力。这就是为什么人脸检测和人脸识别方法喜欢着重在眼睛上做文章。

最后,我们来讨论人脸识别在不同的环境条件下的情况,首先人脸识别对光照方向、平面内和平面外的旋转很敏感,首先从人本身来讲对上述几种情况下人脸的鉴别能力就会下降,关于光照可以看下图感受下(还是顶光美),关于平面内和平面外旋转敏感的原因很好解释——训练样本少。

 

 

人脸识别常用方法

人脸识别系统输入一般是一张或者一系列含有未确定身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图象或者相应的编码,而其输出则是一系列相似度得分,表明待识别的人脸的身份。静止图像中人脸识别的一般过程为:人脸检测(face detection)—>归一化(normalization)—>提特征(feature extraction)—>匹配(matching)。


人脸检测目前常用Haar特征做弱分类器然后通过boosting提升算法组合成为一个强分类器进行人脸检测。

 

归一化常采用人眼定位然后根据人眼位置与人脸的相对几何关系最终得到归一化的人脸。上文提到由于眼睛在灰度值和梯度值上与面部其他部分有很强的区分性,所以可以一方面利用眼睛的空间轮廓信息(眼睛椭圆,瞳孔圆形等形状特征),另一方面也可以利用梯度变化特征得到(如梯度值横纵向积分得到粗定位图片,然后提取局部特征)。归一化的图像大小不会很大,这一方面是出于计算量的考虑,另一方面考虑到信噪比和图片小可以提高对人脸器官定位错误的容忍度。


下面着重讨论人脸特征提取方法,主要可以分为基于人脸特征点的识别算法和基于整幅人脸图像的识别算法、基于模板的识别算法和利用神经网络进行识别的算法。

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

通过对特征点进行局部特纹理征提取,然后结合各部分的相对位置关系得到要优化的目标函数并构造迭代的方法,在给定的人脸图片上首先定位到眼睛等部位的位置,然后提取各特征点之间的分布形状特征和特征点自身具有的纹理、轮廓等特征,计算不同人脸的特征的“距离”从而对人脸进行识别。这里的特征点可以指眼睛、鼻子和嘴等面部主要器官,也可以指人脸上其他兴趣点。

基于特征点的人脸识别方法重点在于一方面要对特征点周围的图像进行描述(如GaborLBP)另一方面要对特征点之间的形状分布进行分析(如Elastic Bunch Graph Matching),因此对人脸几何变化有比较好的鲁棒性。

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

通过信息理论中对人脸图像进行分析,寻找对信息最高效的编码,具体化来说,将图像作为一个高维的数据输入,通过子空间的划分(子空间划分可以借助傅立叶变换来理解,用一组基底的线性组合表示当前的信号,达到既降维又好分类的目的)得到对人脸图像最有效的表达,并由此来对人脸进行识别,也称子空间方法或特征脸方法。

 

常用的降维方法有:

PCA方法:

它生成的子空间具有最佳表示特性。但具有很好的人脸表示特性并不是说具有很好的人脸鉴别能力,是无监督方法。最大特征值对应的特征向量对应了人脸整体(低频)的信息,这有利于减小噪声的影响,平滑图像,但是对高频信息的描述有损失。

 

LDA方法:

 

基于Fisher准则函数,求出能最大化类离散度同时最小化类内离散度的矩阵,是有监督方法。对于人脸图像这种高维数据且Sw出现奇异的情况,先对角化类间散布矩阵Sb,然后对角化类内散布矩阵Sw(有可能保留奇异性,但不影响结果),即在最大化类离散度的情况下最小化类内离散度,最终得到A矩阵,完成人脸识别。

 

一般情况下,如果同类的样本数量多可以采用LDA,数量少的话用PCA

 

ICA方法:

假设人脸是由一组相互独立的鉴别矢量线性叠加而成,利用人脸隐含重要特征的高阶统计信息把混合信号分解为独立的成分,使图像的二阶信息和高阶信息都得到利用。

 

一般的人脸识别方法都可以归为以上两类或者视为两类的结合,如AAM方法,既有兴趣点的分布形状描述和局部描述,同时借助PCA进行降维,个人认为可以视为上述两种方法的结合。早期的方法多把人脸识别当作是一个典型的模式识别问题处理(提特征--学习),后来转向描述人脸的方向(如PCA的特征脸),如今2D的人脸识别已经有成形的商业软件(如google出的picasa)。目前来说人脸识别方法以基于整幅人脸图像的方法为主,为了增强对几何变化的鲁棒性,会添加局部特征。

文章最初提到,人脸识别是物体识别的一个实例,我们可以将物体识别方法应用到人脸识别上,但可以进行许多简化,如人脸图像的能量集中于几个特征点周围,而且特征点的分布也较为固定。



参考文献:

Zhao, Wenyi, et al. "Face recognition: A literature survey." Acm Computing Surveys (CSUR) 35.4 (2003): 399-458.

2 0
原创粉丝点击