聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> Matlab PCA+SVM人脸识别(一)

Matlab PCA+SVM人脸识别(一)

时间:2015-07-09 06:55:45    下载该word文档

 

Matlab PCA+SVM人脸识别()

分类: Matlab 模式识别 计算机视觉2014-05-23 20:12 3260人阅读 评论(20) 收藏 举报

PCA人脸识别SVM主成分分析支持向量机

目录(?)[+]

概述:

编程平台:Matlab

数据:       ORL人脸库。pgm格式的图片。40人,每人10幅图,图像大小为112*92像素。图像本身已经经过处理,不需要进行归一化和校准等工作;下载地址第三段的两个都是下载链接

数据处理:主成分分析法(PCA);有关算法原理可以参考这里

分类器:    支持向量机(SVM)。

人脸识别算法步骤概述:

1、读取训练数据集;

2、主成分分析法降维并去除数据之间的相关性;

3、数据规格化(去除数据单位因素对分类造成的影响,这个对此实验造成的影响不大);

4SVM训练(选取径向基和函数);

5、读取测试数据、降维、规格化;

6、用步骤4产生的分类函数进行分类(多分类问题,采用一对一投票策略,归位得票最多的一类);

7、计算正确率。

准备工作:

下载人脸库

如果你用的不是ORL人脸库,可能还需要先进行人脸检测

Matlab的左上角当前路径(current folder)设置为你的.m的保存的路径,或者用addpath('...... ')设置

编程实现:

读取数据:

ReadFace.m文件,若flag=0,表述读取原文件的前五幅图作为训练数据,若flag=1,表述读取原文件的后五幅图作为测试数据,数据存入f_matrix中,每一行为一个文件,每行为112*92列。

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

31.

32.

主成分分析:

去除原成分各维之间的相关性并进行降维,对降维后维数的选择要看你对最小平方误差的要求,被舍去的协方差矩阵的特征根的平方和与所有特征根的平方和就是最小平方误差。这里选择降至20维。下面是fastPCA.m

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

数据规范化:

scaling.m

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

SVM分类器训练:

multiSVMtrain.m

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

SVM分类器的径向基核函数:kfun_rbf.m

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

SVM分类器对测试数据进行分类:

multiSVM.m

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

主函数:

face.m

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

31.

32.

33.

34.

35.

36.

37.

38.

39.

40.

41.

42.

43.

44.

45.

46.

47.

48.

49.

50.

51.

52.

53.

54.

55.

56.

57.

补充:

这里的两部分是为了让大家更容易理解主成分分析,而特意做的补充。

显示主分量脸:

在主函数的第21 有一句程序是“visualize(V)%显示主成分脸,这个是吧20个最大特征之对应的特征向量(就是低维空间的基)以图像的形式显示出来,其他所有图片就是这20张图片(主分量)的线性组合,保存为文件visualize.m

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

下面是调用visualize.m显示的主分量人脸:

基于主分量的人脸重构:

这段程序没有特意写成一个单独的函数,可以把它插入在主函数里主成分分析的代码下面

[plain] view plaincopy

1.

2.

3.

4.

5.

6.

7.

8.

下面分别是主成分为20维、50维、100维、150维时重构出来的第一张照片

   

原图为:

可见150维已经可以很好地对原图片进行重构。

附:pgm格式的图片好像是Linux的格式,在Windows上无法直接打开,在这里我是用Matlab的指令打开:imshow(imread('文件路径'))

转载请您尊重作者的劳动,完整保留文章出处以及文章链接,谢谢您的支持!

免费下载 Word文档免费下载: Matlab PCA+SVM人脸识别(一)

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服