华工数学实验基于回归模型的增量人脸识别探索性实验.docVIP

  • 107
  • 0
  • 约3.49千字
  • 约 8页
  • 2017-07-21 发布于重庆
  • 举报

华工数学实验基于回归模型的增量人脸识别探索性实验.doc

华工数学实验基于回归模型的增量人脸识别探索性实验

实验六 基于回归模型的增量人脸识别探索性实验 实验目的 了解数字图像的基本概念,了解人脸识别的基本含义; 掌握基于回归模型的人脸识别算法的基本原理; 了解Matlab中基本的文件和图像处理命令。 实验任务 利用各种增量人脸识别算法:基于回归模型的增量人脸识别算法,最远子空间增量分类算法、最近最远子空间增量分类算法或其他快速算法,选择其中的一种或几种算法,对给定的人脸数据库进行识别测试,得出识别正确率和(或)运行时间。并与第5节不采用增量学习的算法进行比较,分析实验结果。在实验过程中,可以察看原始的人脸图片,哪些人脸识别错误?该算法有哪些优缺点?改进方向是什么? 2.1实验原理 在本次实验中选取 增量学习可以利用原有训练样本已得到的计算结果和新增数据来计算新的参数,不再需要原来的样本数据,从而降低学习的开销,提高算法处理数据的运行效率。即主要推导求逆矩阵的增量学习公式,以提高LRC处理较大规模数据的效率。 2.1.1预处理:对训练数据和测试数据对应的图像的像素都映射到[0,1]区间;将一个数据集剖分为训练数据集和测试数据集。 2.1.2读入训练数据,利用LRC算法和逆矩阵的增量学习公式,得到 令 通过推导可得 计算 2.1.3对每一个,计算预测向量 2.1.4测试数据的类别:计算原始图像向量与预测图像向量的距离: 对测试数据集中的每一个数据y,利用残差最小,决定y的类别。 2.1.5识别正确率和运行时间统计:将所有测试数据的预测类别与其真实的类别进行比对,计算识别正确率,同时利用tic、toc命令 clear all %清除所有变量 for datasetsnum = 1: 5 %分别运行相应的几个数据集 Datasetsnum di=[]; error=[]; acc=0; tic datasets = {Yale_32x32,Yale_64x64,YaleB_32x32,ORL_32x32,ORL_64x64}; DataSetName = datasets{ datasetsnum }; for k=1:10;%每个数据集,需要处理10份 %% 数据的导入 train=dlmread([DataSetName,\StTrainFile,num2str(k),.txt]); %打开训练文件放进矩阵A a1=train(:,1:end-1); %去掉训练文件数据最后一列(最末列代表第几个人,即类别) a2=train(:,end); %取出训练文件数据最后一列(类别) test=dlmread([DataSetName,\StTestFile,num2str(k),.txt]); %打开测试文件 b1=test(:,1:end-1); b2=test(:,end); %% 将数据分割 for number=1:size(b1) %测试照片序号从文件第1行到最末行 y=b1(number,:); %取出第number行数据(用于测试) for i=1:max(a2) %第i个人 xi=[]; for j=1:size(a2) %从第一张照片循环到最后一张照片 if (a2(j)==i) %将所有同一个人的面部数据合并成一个矩阵xi xi=[xi,a1(j,:)]; %构造矩阵 end end %增量求逆 Xi=xi(:,1); train=inv(Xi*Xi); %% 求矩阵的增量 for m=2:size(xi,2) aerfa=Xi*xi(:,m); c=xi(:,m)*xi(:,m); t=1/(c-aerfa*train*aerfa); gama=train*aerfa; k1=[train,zeros(size(train,1),1);zeros(1,size(train,2)),0]; k2=[gama;-1]; k3=[gama,-1]; train=k1+t*k2*k3; Xi=[Xi,xi(:,m)]; end %% 计算回归系数和残差 betai=trai

文档评论(0)

1亿VIP精品文档

相关文档