工程实践课程设计报告

1.人脸识别的具体实现

一个完整的人脸识别系统由以下几个环节组成,人脸检测,特征提取,和分类识别。人脸检测即为从输入的静止图像或序列图像中检测图像是否包含人脸。因为本次实验主要是验证PCA和KNN算法的精度,所以选择的图像都是包含人脸的图像。实验中采用PCA算法对特征进行提取,用KNN算法对实验结果进行检测,测定测试图像属于哪个分类。

在计算机中,一幅数字图像可以看成是一个矩阵或者是一个数组,用B(i,j)表示。其行列下标对应了图像上的一个点,而在矩阵中对应相应元素,则标出了该点的灰度值。一幅nxm大

小的

图像

按行列

相连

构成一

n*m

维向量

x(b11b12b1mb21b22b2mbn1bn2bnm),它被视为n*m空间中的一个点。

人脸图像样本

集可用矩阵X表示,其中,

X[x1x2xp]

,P为样本集中人脸图像的数量。

2.交叉验证

当数据源不充足时,为了保证所建分类器的性能和错误率估计的准确性,交叉验证技术常常被采用.在交叉验证中,先要决定一个固定的重数,或者说折数.一般地,将重数定为k,这就是k 重交叉验证,记为k-CV.

由于本次试验中采集了40组图像,每组10帧,数据源相对不充足,为了充分验证算法的性能,分别采用了3-CV, 4-CV, 5-CV交叉验证法,随机选择训练样例。

3.实验结果分析

实验中采取了40组图像,每组10帧。其中一组图像如下图所示:

图 5-1样本图例

为了保证分类的健壮性,在试验中在训练集上采取交叉验证的方法,分别从每组样本中国随机选取3,4,5张图像作为训练样本,其余的样本作为测试样本。计算训练样本的特征向量。

实验中使用的图像为1024*92大小的图片,通过resize()函数的处理,把图像变为32*32

大小的图像,把此图像重置为1*1023的向量。当每组选择3张训练样本时,训练样本矩阵大小为120*1024.,训练样本的大小为:280*1024。使用PCA方法得到了训练样本矩阵的特征值和特征向量,特征值按从大到小排序。较大特征值对应的一些正交基(也称主分量)能够表达人脸的大体形状。

贡献率表示所定义的主成分在整个数据分析中承担的主要意义占多大的比重,当取前 r 个主成分来代替原来全部变量时,累计贡献率的大小反应了这种取代的可靠性,累计贡献率越大,可靠性越大;反之,则可靠性越小。一般要求累计贡献率达到 70% 以上。实验中的贡献率是通过选择的特征值之和与总的特征值之和的比值来计算的,要求贡献率达到98%以上。实验中计算得到的特征向量即特征脸部分如下图所示。

实验中通过变换不同的参数,统计了参数对实验进度的影响。具体如下。 (1)KNN算法中近邻个数的选择

当每组的训练样本数取5个,近邻数分别为1,2,3时的情况

虽然很多文献中提到,当近邻数位1时,并不足以确定测试样本的类别,因为数据中有噪声和异常值。但在本次实验中,通过结果我们可以看到实验进度不受近邻个数的影响。 (2)交叉验证次数的影响

本次实验中进行了5次交叉验证,为论文测试交叉验证的次数是否对实验进行影响,我们采集了K=5,每组的训练样本为5时,CV变换的进度结果。

表 5-2 交叉次数对进度的影响统计

通过上述实验结果分析可知,在本次实验中

(1)交叉验证中CV的选择和KNN中K的选择对精度的影响不大; (2)训练样本的数量和特征向量的数量与识别精度成正相关;

(3)但为了保证对全局的识别更加稳定,我们需要选择尽量高的CV次数;

(4)为了识别精度和系统的运行速度,我们选择的特征向量的数目为15到50个比较合理,训练数目选择3-5个比较合理。

4.展望

从压缩能量的角度来看,K-L变换是最优的,变换后的低维空间对于人脸有很好的表达能力,然而这并不等同于对不同人脸具有较好的判别能力。选择训练样本的散布矩阵作为K.L变换的生成矩阵,其最大特征向量反映了该样本集合的最大分布的方向,但这是图像统计方

法,而不是人脸统计方法。它查找的是图像之间所有的差异,并根据这些差异来确定不同人脸间的距离,而不管这些差异是由于光线、发型或背景的改变引起的,还是属于人脸本身的内在差异,因此特征脸的方法用于人脸识别存在理论的缺陷。研究表明,特征连的方法随着光线、

角度以及人脸的尺寸的引入而识别率急剧下降。主分量的方法使得变换后的表达能力最佳,次分量的方法考虑了高频的人脸区分能力,但是由于外在因素带来图像差异和人脸本身带来的差异对K-L变换而言是不加任何区分的,因此,如何选择正交基并不根本解决问题。改进的一个思路是针对干扰所在,对输入图像作规范化处理,包括输入图像的均值方差归一化,人脸尺寸归一化。另一种改进是考虑到局部人脸图像受到外在干扰相对较小的情况,除了计算特征脸之外,还利用K-L变换计算出特征眼、特征嘴等。将局部特征向量加权进行匹配得到一些好的效果。

5.代码

(1)%用pca方法进行降维矩阵,得到特征脸 function y = pca(mixedsig) if nargin == 0

error('You must supply the mixed data as input argument.'); end

if length(size(mixedsig))>2

error('Input data can not have more than two dimensions. '); end

if any(any(isnan(mixedsig)))

error('Input data contains NaN''s.'); end

meanValue = mean(mixedsig')'; [m,n] = size(mixedsig); for s = 1:m for t = 1:n

mixedsig(s,t) = mixedsig(s,t) - meanValue(s); end end

[Dim,NumofSampl] = size(mixedsig); oldDimension = Dim;

fprintf('Number of signals: %d\n',Dim);

fprintf('Number of samples: %d\n',NumofSampl); fprintf('Calculate PCA...'); firstEig = 1; lastEig = Dim;

covarianceMatrix = cov(mixedsig',1); [E,D] = eig(covarianceMatrix);

rankTolerance = 1e-5;

maxLastEig = sum(diag(D)) >= rankTolerance; lastEig = maxLastEig; lastEig = 10;

eigenvalues = flipud(sort(diag(D))); if lastEig

lowerLimitValue = (eigenvalues(lastEig) + eigenvalues(lastEig + 1))/2; else

lowerLimitValue = eigenvalues(oldDimension) - 1; end

lowerColumns = diag(D) > lowerLimitValue; if firstEig > 1

higherLimitValue = (eigenvalues(firstEig - 1) + eigenvalues(firstEig))/2; else

higherLimitValue = eigenvalues(1) + 1; end

higherColumns = diag(D)

fprintf('Selected [%d] dimensions.\n',sum(selectedColumns)); fprintf('Smallest remaining (non-zero)

eigenvalue[ %g ]\n',eigenvalues(lastEig)); fprintf('Largest remaining (non-zero)

eigenvalue[ %g ]\n',eigenvalues(firstEig));

fprintf('Sum of removed eigenvalue[ %g ]\n',sum(diag(D) .* (~selectedColumns)));

E = selcol(E,selectedColumns);

D = selcol(selcol(D,selectedColumns)',selectedColumns); whiteningMatrix = inv(sqrt(D)) * E'; dewhiteningMatrix = E * sqrt(D); y = whiteningMatrix * mixedsig;

function newMatrix = selcol(oldMatrix,maskVector) if size(maskVector,1)~= size(oldMatrix,2)

error('The mask vector and matrix are of uncompatible size.'); end

numTaken = 0;

for i = 1:size(maskVector,1) if maskVector(i,1) == 1

takingMask(1,numTaken + 1) ==i; numTaken = numTaken + 1; end end

newMatrix = oldMatrix(:,takingMask);

(2) %KNN方法计算准确率

function info=KNN(targetimage) temp=0;kind=[0 0 0]; i=0;j=0;temp1=0;i1=0;

s(1)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a1.jpg'));

s(2)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a2.jpg'));

s(3)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a3.jpg'));

s(4)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a4.jpg'));

s(5)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a5.jpg'));

s(6)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b1.jpg'));

s(7)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b2.jpg'));

s(8)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b3.jpg'));

s(9)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b4.jpg'));

s(10)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b5.jpg'));

s(11)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c1.jpg'));

s(12)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c2.jpg'));

s(13)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c3.jpg'));

s(14)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c4.jpg'));

s(15)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c5.jpg'));

sub=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]; for i=1:3

for j=1:15

if(s(i)

s(j)=temp; sub(j)=temp1; end end end

for i1=1:3

if(sub(i1)>=1&&sub(i1)

elseif(sub(i1)>5&&sub(i1)

kind(3)=kind(3)+1; end end

if(kind(1)>kind(2)&&kind(1)>kind(3)) info=1

elseif(kind(2)>kind(1)&&kind(2)>kind(3)) info=2; else

info=3; end

1.人脸识别的具体实现

一个完整的人脸识别系统由以下几个环节组成,人脸检测,特征提取,和分类识别。人脸检测即为从输入的静止图像或序列图像中检测图像是否包含人脸。因为本次实验主要是验证PCA和KNN算法的精度,所以选择的图像都是包含人脸的图像。实验中采用PCA算法对特征进行提取,用KNN算法对实验结果进行检测,测定测试图像属于哪个分类。

在计算机中,一幅数字图像可以看成是一个矩阵或者是一个数组,用B(i,j)表示。其行列下标对应了图像上的一个点,而在矩阵中对应相应元素,则标出了该点的灰度值。一幅nxm大

小的

图像

按行列

相连

构成一

n*m

维向量

x(b11b12b1mb21b22b2mbn1bn2bnm),它被视为n*m空间中的一个点。

人脸图像样本

集可用矩阵X表示,其中,

X[x1x2xp]

,P为样本集中人脸图像的数量。

2.交叉验证

当数据源不充足时,为了保证所建分类器的性能和错误率估计的准确性,交叉验证技术常常被采用.在交叉验证中,先要决定一个固定的重数,或者说折数.一般地,将重数定为k,这就是k 重交叉验证,记为k-CV.

由于本次试验中采集了40组图像,每组10帧,数据源相对不充足,为了充分验证算法的性能,分别采用了3-CV, 4-CV, 5-CV交叉验证法,随机选择训练样例。

3.实验结果分析

实验中采取了40组图像,每组10帧。其中一组图像如下图所示:

图 5-1样本图例

为了保证分类的健壮性,在试验中在训练集上采取交叉验证的方法,分别从每组样本中国随机选取3,4,5张图像作为训练样本,其余的样本作为测试样本。计算训练样本的特征向量。

实验中使用的图像为1024*92大小的图片,通过resize()函数的处理,把图像变为32*32

大小的图像,把此图像重置为1*1023的向量。当每组选择3张训练样本时,训练样本矩阵大小为120*1024.,训练样本的大小为:280*1024。使用PCA方法得到了训练样本矩阵的特征值和特征向量,特征值按从大到小排序。较大特征值对应的一些正交基(也称主分量)能够表达人脸的大体形状。

贡献率表示所定义的主成分在整个数据分析中承担的主要意义占多大的比重,当取前 r 个主成分来代替原来全部变量时,累计贡献率的大小反应了这种取代的可靠性,累计贡献率越大,可靠性越大;反之,则可靠性越小。一般要求累计贡献率达到 70% 以上。实验中的贡献率是通过选择的特征值之和与总的特征值之和的比值来计算的,要求贡献率达到98%以上。实验中计算得到的特征向量即特征脸部分如下图所示。

实验中通过变换不同的参数,统计了参数对实验进度的影响。具体如下。 (1)KNN算法中近邻个数的选择

当每组的训练样本数取5个,近邻数分别为1,2,3时的情况

虽然很多文献中提到,当近邻数位1时,并不足以确定测试样本的类别,因为数据中有噪声和异常值。但在本次实验中,通过结果我们可以看到实验进度不受近邻个数的影响。 (2)交叉验证次数的影响

本次实验中进行了5次交叉验证,为论文测试交叉验证的次数是否对实验进行影响,我们采集了K=5,每组的训练样本为5时,CV变换的进度结果。

表 5-2 交叉次数对进度的影响统计

通过上述实验结果分析可知,在本次实验中

(1)交叉验证中CV的选择和KNN中K的选择对精度的影响不大; (2)训练样本的数量和特征向量的数量与识别精度成正相关;

(3)但为了保证对全局的识别更加稳定,我们需要选择尽量高的CV次数;

(4)为了识别精度和系统的运行速度,我们选择的特征向量的数目为15到50个比较合理,训练数目选择3-5个比较合理。

4.展望

从压缩能量的角度来看,K-L变换是最优的,变换后的低维空间对于人脸有很好的表达能力,然而这并不等同于对不同人脸具有较好的判别能力。选择训练样本的散布矩阵作为K.L变换的生成矩阵,其最大特征向量反映了该样本集合的最大分布的方向,但这是图像统计方

法,而不是人脸统计方法。它查找的是图像之间所有的差异,并根据这些差异来确定不同人脸间的距离,而不管这些差异是由于光线、发型或背景的改变引起的,还是属于人脸本身的内在差异,因此特征脸的方法用于人脸识别存在理论的缺陷。研究表明,特征连的方法随着光线、

角度以及人脸的尺寸的引入而识别率急剧下降。主分量的方法使得变换后的表达能力最佳,次分量的方法考虑了高频的人脸区分能力,但是由于外在因素带来图像差异和人脸本身带来的差异对K-L变换而言是不加任何区分的,因此,如何选择正交基并不根本解决问题。改进的一个思路是针对干扰所在,对输入图像作规范化处理,包括输入图像的均值方差归一化,人脸尺寸归一化。另一种改进是考虑到局部人脸图像受到外在干扰相对较小的情况,除了计算特征脸之外,还利用K-L变换计算出特征眼、特征嘴等。将局部特征向量加权进行匹配得到一些好的效果。

5.代码

(1)%用pca方法进行降维矩阵,得到特征脸 function y = pca(mixedsig) if nargin == 0

error('You must supply the mixed data as input argument.'); end

if length(size(mixedsig))>2

error('Input data can not have more than two dimensions. '); end

if any(any(isnan(mixedsig)))

error('Input data contains NaN''s.'); end

meanValue = mean(mixedsig')'; [m,n] = size(mixedsig); for s = 1:m for t = 1:n

mixedsig(s,t) = mixedsig(s,t) - meanValue(s); end end

[Dim,NumofSampl] = size(mixedsig); oldDimension = Dim;

fprintf('Number of signals: %d\n',Dim);

fprintf('Number of samples: %d\n',NumofSampl); fprintf('Calculate PCA...'); firstEig = 1; lastEig = Dim;

covarianceMatrix = cov(mixedsig',1); [E,D] = eig(covarianceMatrix);

rankTolerance = 1e-5;

maxLastEig = sum(diag(D)) >= rankTolerance; lastEig = maxLastEig; lastEig = 10;

eigenvalues = flipud(sort(diag(D))); if lastEig

lowerLimitValue = (eigenvalues(lastEig) + eigenvalues(lastEig + 1))/2; else

lowerLimitValue = eigenvalues(oldDimension) - 1; end

lowerColumns = diag(D) > lowerLimitValue; if firstEig > 1

higherLimitValue = (eigenvalues(firstEig - 1) + eigenvalues(firstEig))/2; else

higherLimitValue = eigenvalues(1) + 1; end

higherColumns = diag(D)

fprintf('Selected [%d] dimensions.\n',sum(selectedColumns)); fprintf('Smallest remaining (non-zero)

eigenvalue[ %g ]\n',eigenvalues(lastEig)); fprintf('Largest remaining (non-zero)

eigenvalue[ %g ]\n',eigenvalues(firstEig));

fprintf('Sum of removed eigenvalue[ %g ]\n',sum(diag(D) .* (~selectedColumns)));

E = selcol(E,selectedColumns);

D = selcol(selcol(D,selectedColumns)',selectedColumns); whiteningMatrix = inv(sqrt(D)) * E'; dewhiteningMatrix = E * sqrt(D); y = whiteningMatrix * mixedsig;

function newMatrix = selcol(oldMatrix,maskVector) if size(maskVector,1)~= size(oldMatrix,2)

error('The mask vector and matrix are of uncompatible size.'); end

numTaken = 0;

for i = 1:size(maskVector,1) if maskVector(i,1) == 1

takingMask(1,numTaken + 1) ==i; numTaken = numTaken + 1; end end

newMatrix = oldMatrix(:,takingMask);

(2) %KNN方法计算准确率

function info=KNN(targetimage) temp=0;kind=[0 0 0]; i=0;j=0;temp1=0;i1=0;

s(1)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a1.jpg'));

s(2)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a2.jpg'));

s(3)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a3.jpg'));

s(4)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a4.jpg'));

s(5)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('a5.jpg'));

s(6)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b1.jpg'));

s(7)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b2.jpg'));

s(8)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b3.jpg'));

s(9)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b4.jpg'));

s(10)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('b5.jpg'));

s(11)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c1.jpg'));

s(12)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c2.jpg'));

s(13)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c3.jpg'));

s(14)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c4.jpg'));

s(15)=ComputSimilarity(HandGeoExtraction(targetimage),HandGeoExtraction('c5.jpg'));

sub=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]; for i=1:3

for j=1:15

if(s(i)

s(j)=temp; sub(j)=temp1; end end end

for i1=1:3

if(sub(i1)>=1&&sub(i1)

elseif(sub(i1)>5&&sub(i1)

kind(3)=kind(3)+1; end end

if(kind(1)>kind(2)&&kind(1)>kind(3)) info=1

elseif(kind(2)>kind(1)&&kind(2)>kind(3)) info=2; else

info=3; end


相关内容

  • CDIO课程教学的构建与实施
  • 课程教学的构建与实施 成都信息工程学院 杨玲2011年11月30日年月 电子工程学院简况 硕士研究生专业 信号与信息处理 2004 电子工程学院 四川省特色专业 电子信息工程 1978 在校本科生近2000人,硕士生近300人,教师约80人 本科专业 生物医学工程生物医学工程电子信息科学与技术雷电防 ...

  • 建筑学硕士研究生课程安排及培养方案
  • 大学2011级全日制建筑学专业学位 研究生培养方案 一.培养目标 1.拥护党的基本路线和方针政策,热爱祖国,遵纪守法,具有良好的职业道德和敬业精神,具有科学严谨和求真务实的学习态度和工作作风,品行端正.身心健康. 2.基础扎实.素质全面.实践能力强,具有一定创新能力,面向企事业和管理部门服务的应用型 ...

  • 土木专业课程设计实践报告
  • 全面的分析和总结,及时写出实习报告.实习报告能反映出学生对实习内容理解的深度,也能反映出学生分析和归纳问题的能力,实习报告应图文并茂,总字数不宜少于5000字.建议实习报告内容具体要求如下: 1)实习安排.实习工程概况,工程造价.主要工种工程的工程量及施工方法.施工单位的管理机构和组织系统等: 土木 ...

  • 电子信息专业认识实习报告
  • 实 习 报 告 实习名称 专 业 认 识 实 习 专业班级 电子1142 姓 名 学 号 成 绩 评 定 电气与信息工程学院 二0一二年十月 实习纪律要求和成绩考核办法 实习纪律要求和成绩考核办法 1.实习过程必须听从教师和现场工作人员指导,严格遵守安全操作规程.不准违规操作,未经现场工作人员允许不 ...

  • 机械工程学科
  • 机械工程学科 攻读学术型硕士学位研究生培养方案(080200) 一.培养目标 1.进一步学习与掌握马克思主义.毛泽东思想.邓小平理论和"三个代表"重要思想,拥护党的基本路线.方针和政策,热爱祖国,遵纪守法,品行端正,学风严谨,具有高度的社会责任感和良好的职业道德,积极为我国的社会 ...

  • 生物与医学工程学院
  • 生物与医学工程学院 生物医学工程领域(085230) 全日制工程硕士研究生培养方案 一.适用领域 生物医学工程(085230) 二.培养目标 生物医学工程领域培养理论基础扎实.工程实践能力强.综合素质高,并具有一定创新能力的应用型.复合型高层次工程技术和工程管理人才.具体要求为:掌握生物医学工程领域 ...

  • 建筑工程评估基础整体设计
  • <建筑工程评估基础> 课程整体设计介绍 课程历史沿革 资产评估行业作为一个独立的社会中介行业在国外有着上百年的发展历史.我国资产评估行业起步于20世纪80年代末.90年代初,虽然发展时间不长,但我国资产评估行业发展迅猛,已经成为我国社会主义市场经济建设过程中一个不可缺少的社会中介行业.资 ...

  • 土木本社会实践
  • 山东广播电视大学开放教育 土木工程专业本科综合实践环节教学实施方案 综合实践环节是开放教育土木工程(本科)专业规则中所规定的重要教学环节,是中央电大培养高级应用型人才目标的具体体现.综合实践环节包括课程设计.生产实习.毕业实习和毕业设计(土木)四部分.具体内容和要求如下: 第一部分 课程设计 一.课 ...

  • 土木工程专业综合实践实施方案
  • 山东广播电视大学开放教育 土木工程专业本科综合实践环节教学实施方案 综合实践环节是开放教育土木工程(本科)教学计划所规定的重要教学环节,是中央电大培养高级应用型人才目标的具体体现.综合实践环节包括课程设计.生产实习.毕业实习和毕业设计(土木)四部分.具体内容和要求如下: 第一部分 课程设计 一.课程 ...

  • 岩土与基础工程技术
  • 新世纪高等教育教学改革工程 <高职高专教育考试改革的研究与实践> Ⅰ12-1 附件15 岩土与基础工程技术 专业考试改方案及主要课程考核纲要 1. 岩土与基础工程技术专业考试改方案„„„„„„„„„„„„255 (1) 岩土与基础工程技术专业考试改革背景„„„„„„„„„„„„„255 ...