人脸识别核心算法
在检测到人脸并定位面部关键特征点之后,主要的人脸区域就可以被裁剪出来,经过预处理之后,馈入后端的识别算法。识别算法要完成人脸特征的提取,并与库存的已知人脸进行比对,完成最终的分类。我们在这方面的主要工作包括:
基于LGBP的人脸识别方法
问题:
统计学习目前已经成为人脸识别领域的主流方法,但实践表明,基于统计学习的方法往往会存在“推广能力弱”的问题,尤其在待识别图像“属性”未知的情况下,更难以确定采用什么样的训练图像来训练人脸模型。鉴于此,在对统计学习方法进行研究的同时,我们还考虑了非统计模式识别的一类方法。
思路:
对于给定的人脸图像,LGBP方法首先将其与多个不同尺度和方向的Gabor滤波器卷积(卷积结
果称为Gabor特征图谱)获得多分辨率的变换图像。然后将每个Gabor特征图谱划分成若干互不相交的局部空间区域,对每个区域提取局部邻域像素的亮度变化模式,并在每个局部空间区域内提取这些变化模式的空间区域直方图,所有Gabor特征图谱的、所有区域的直方图串接为一高维特征直方图来编码人脸图像。并通过直方图之间的相似度匹配技术(如直方图交运算)来实现最终的人脸识别。在FERET四个人脸图像测试集合上与FERET97的结果对比情况见下表。由此可见,该方法具有良好的识别性能。而且LGBP方法具有计算速度快、无需大样本学习、推广能力强的优点。参见ICCV2005
表.LGBP方法与FERET'97最佳结果的对比情况
对比算法
各测试子集合性能(首选正确识别率)
FB
FC
Dup I
Dup II
我们的算法性能
97.5%
96.9%
73.8%
70.5%
FERET’97 最好结果
96.0%
82.0%
59.0%
52.0%
基于AdaBoostGabor特征选择及判别分析方法
问题:
人脸描述是人脸识别的核心问题之一,人脸识别的研究实践表明:在人脸三维形状信息难以准确获取的条件下,从图像数据中提取多方向、多尺度的Gabor特征是一种合适的选择。使用Gabor特征进行人脸识别的典型方法包括弹性图匹配方法(EGM)和Gabor特征判别分类法(GFCEGM在实用中需要解决关键特征点的定位问题,而且其速度也很难提高;而GFC则直接对下采样的Gabor特征用PCA降维并进行判别分析,尽管这避免了精确定位关键特征点的难题,但下采样的特征维数仍然偏高,而且简单的下采样策略很可能遗漏了非常多的有用特征。
摘要:
针对上述问题,我们考虑如何对Gabor特征进行有效降维,将目前受到极大关注的AdaBoost算法创新性的应用于Gabor特征的选择上来,用于提取对识别最有利的特征(我们称这些选择出来的Gabor特征为AdaGabor特征),并最终通过对AdaGabor特征的判别分析实现识别(称该方法为AGFC识别方法)。在CAS-PEALFERET人脸图像库上的对比实验表明:AGFC方法不但可以大大降低Gabor特征的维数从而可以更加有效地避免“维数灾难问题”,降
低了计算复杂度,同时识别精度也有了较大的提高。将AGFCEGMGFC进一步比较可以看出:无论是EGM还是GFC,均是主观的选择若干面部关键特征点提取人脸的特征表示,而我们提出的AGFC方法则是通过机器学习的方法自动的选择那些对区分不同人脸具有关键作用的Gabor特征。参见下图所示三者之间的区别与联系。参见FG04AMFG05
  
三种不同的人脸建模方法比较示意图
基于SVKernel判别分析方法sv-KFD
摘要:
支持向量机(SVM)Kernel Fisher分析是利用kernel方法解决线性不可分问题的两种不同途径,我们将二者进行了有机结合。我们首先证明了SVM最优分类面的法向量在基于支持向量的类内散度矩阵的前提下具有零空间性质,基于此定义了核化的决策边界特征矩阵(Kerneli
zed Decision Boundary Feature Matrix,简写为KDBFM),最后利用基于零空间的Kernel Fisher方法计算投影空间。我们还进一步提出了融合类均值向量差及KDBFM来构建扩展的决策边界特征矩阵(EKDBFM)的方法,并把这两种方法成功地应用到了人脸识别领域,在FERETCAS-PEAL数据库的实验结果表明该方法比传统人脸识别算法具有更好的识别性能。详见CVPR2005
基于特定人脸子空间的人脸识别方法
问题:
Eigenface是人脸识别领域最著名的算法之一,本质上是通过PCA来求取人脸图像分布的线性子空间,该空间从最佳重构的角度反映了所有人脸图像分布的共性特征,但对识别而言,这样的特征却未必有利于识别,识别任务需要的是最大可能区分不同人脸的特征。
摘要:
“特征脸”方法中所有人共有一个人脸子空间,而我们的方法则为每一个体人脸建立一个该个体对象所私有的人脸子空间,从而不但能够更好的描述不同个体人脸之间的差异性,而且最
大可能地摈弃了对识别不利的类内差异性和噪声,因而比传统的“特征脸算法”具有更好的判别能力。另外,针对每个待识别个体只有单一训练样本的人脸识别问题,我们提出了一种基于单一样本生成多个训练样本的技术,从而使得需要多个训练样本的个体人脸子空间方法可以适用于单训练样本人脸识别问题。在Yale Face DatabaseB人脸库对比实验也表明我们提出的方法比传统的特征脸方法、模板匹配方法对表情、光照、和一定范围内的姿态变化具有更优的识别性能。参见ICASSP2001,IJIST2003
1、人体面貌识别技术的内容
    人体面貌识别技术包含三个部分:
1 人体面貌检测
    面貌检测是指在动态的场景与复杂的背景中判断是否存在面像,并分离出这种面像。一般有下列几种方法:
参考模板法
  首先设计一个或数个标准人脸的模板,然后计算测试采集的样品与标准模板之间的匹配程度,并通过阈值来判断是否存在人脸;
人脸规则法
    由于人脸具有一定的结构分布特征,所谓人脸规则的方法即提取这些特征生成相应的规则以判断测试样品是否包含人脸;
样品学习法
    这种方法即采用模式识别中人工神经网络的方法,即通过对面像样品集和非面像样品集的学习产生分类器;
肤模型法
    这种方法是依据面貌肤在彩空间中分布相对集中的规律来进行检测。
正则化损伤识别matlab
特征子脸法
    这种方法是将所有面像集合视为一个面像子空间,并基于检测样品与其在子孔间的投影之间的距离判断是否存在面像。
    值得提出的是,上述5种方法在实际检测系统中也可综合采用。
2)人体面貌跟踪
    面貌跟踪是指对被检测到的面貌进行动态目标跟踪。具体采用基于模型的方法或基于运动与模型相结合的方法。
    此外,利用肤模型跟踪也不失为一种简单而有效的手段。
3)人体面貌比对
    面貌比对是对被检测到的面貌像进行身份确认或在面像库中进行目标搜索。这实际上就是说,将采样到的面像与库存的面像依次进行比对,并出最佳的匹配对象。所以,面像的描述决定了面像识别的具体方法与性能。目前主要采用特征向量与面纹模板两种描述方法:
特征向量法
    该方法是先确定眼虹膜、鼻翼、嘴角等面像五官轮廓的大小、位置、距离等属性,然后再计算出它们的几何特征量,而这些特征量形成一描述该面像的特征向量。
面纹模板法
    该方法是在库中存贮若干标准面像模板或面像器官模板,在进行比对时,将采样面像所有象素与库中所有模板采用归一化相关量度量进行匹配。
    此外,还有采用模式识别的自相关网络或特征与模板相结合的方法
    人体面貌识别技术的核心实际为局部人体特征分析图形/神经识别算法。这种算法是利用人体面部各器官及特征部位的方法。如对应几何关系多数据形成识别参数与数据库中所有的原始参数进行比较、判断与确认。一般要求判断时间低于1秒。
2、人体面貌的识别过程
    一般分三步:
  1)首先建立人体面貌的面像档案。即用摄像机采集单位人员的人体面貌的面像文件或取
他们的照片形成面像文件,并将这些面像文件生成面纹(Faceprint)编码贮存起来。
  2)获取当前的人体面像
    即用摄像机捕捉的当前出入人员的面像,或取照片输入,并将当前的面像文件生成面纹编码。
  3)用当前的面纹编码与档案库存的比对
    即将当前的面像的面纹编码与档案库存中的面纹编码进行检索比对。上述的面纹编码方式是根据人体面貌脸部的本质特征和开头来工作的。这种面纹编码可以抵抗光线、皮肤调、面部毛发、发型、眼镜、表情和姿态的变化,具有强大的可靠性,从而使它可以从百万人中精确地辩认出某个人。
人体面貌的识别过程,利用普通的图像处理设备就能自动、连续、实时地完成。
1.彩空间转换
function [r,g]=rgb_RGB(Ori_Face)
R=Ori_Face(:,:,1);
G=Ori_Face(:,:,2);
B=Ori_Face(:,:,3);
R1=im2double(R);        % uint8型转换成double
G1=im2double(G);
B1=im2double(B);
RGB=R1+G1+B1;
row=size(Ori_Face,1);      % 行像素
column=size(Ori_Face,2);  % 列像素
for i=1:row
for j=1:column
      rr(i,j)=R1(i,j)/RGB(i,j);
      gg(i,j)=G1(i,j)/RGB(i,j);
end
end
rrr=mean(rr);
r=mean(rrr);
ggg=mean(gg);
g=mean(ggg);
2.均值和协方差
t1=imread('D:\matlab\皮肤库\1.jpg');[r1,g1]=rgb_RGB(t1);
t2=imread('D:\matlab\皮肤库\2.jpg');[r2,g2]=rgb_RGB(t2);
t3=imread('D:\matlab\皮肤库\3.jpg');[r3,g3]=rgb_RGB(t3);
t4=imread('D:\matlab\皮肤库\4.jpg');[r4,g4]=rgb_RGB(t4);
t5=imread('D:\matlab\皮肤库\5.jpg');[r5,g5]=rgb_RGB(t5);
t6=imread('D:\matlab\皮肤库\6.jpg');[r6,g6]=rgb_RGB(t6);
t7=imread('D:\matlab\皮肤库\7.jpg');[r7,g7]=rgb_RGB(t7);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。