模式识别hw3-------常见模式识别算法用于人脸图片性别识别

仍然感谢助教和队友,本文承接http://blog.csdn.net/bizer_csdn/article/details/54755843

实验平台为Matlab,并需要一些开源工具包

本次作业共采用了5种方法,其对应实验结果如下:

vgg+PCA+LDA+SVM

AdaBoost+LBP+LDA

LBP\Fisherface+KNN

SIFT特征点+PCA+SVM

SIFT特征点+随机森林

91.70%

94.80%

89.80%

69.1%

76.30%


目录

一、vgg网络

(1) 加载vgg网络

(2) PCA降维

(3) LDA降维

(4) 训练SVM分类器。

(5) 检验测试集

二、AdaBoost算法

(1) LBP提取特征

(2) PCA、LDA降维

三、LBP\Fisherface+KNN

(1) Fisher准则函数

(2) Fisherface方法

(3) knnRecognition

(4) 实验结果

四、SIFT特征点

(1) SIFT+PCA+LDA+SVM

(2) SIFT+随机森林

五、总结




一、vgg网络

本方法首先运用vgg网络提取人脸特征(4096维),然后在此基础上,用PCA、LDA和SVM的方法,对人脸图片进行识别。

vgg是一个37层用于人脸识别,并且已经训练好的网络,输出为“softmax”,把第36层输出的4096维向量作为输入人脸图片提取的特征,然后在此基础上运用传统模式对图片进行分类。

计算流程:

(1)加载vgg网络

加载vgg网络,vgg网络输入为 224*224*3的彩色图,而本次作业的图片是 灰度图,所以对于每张训练图片,要通过“imresize”后变为 ,然后减去vgg网络训练数据的均值(RGB每个通道都有),至此,输入格式也变为 ;然后通过“vl_simplenn”计算训练集中每个人脸图片的输出的4096维特征(每张人脸在输入网络前,必须进行去均值操作)。相关神经网络在上次作业中已经阐释,这里不再赘述。

load data\\train_data
train_num = size(tr_data,3);
% 用vgg网络提取特征特征(4096维),把特征存储在train_block(600*4096)中
% 读取vgg网络
net_path=fullfile(vl_rootnn, 'data', 'models','vgg-face.mat') ;
net=load(net_path);
train_block=zeros(train_num,4096);
for i=1:train_num/200
    im=single(tr_data(:,:,i));
    %让输入人脸图片符合vgg网络输入大小
    im=imresize(im, net.meta.normalization.imageSize(1:2));
    %去均值
    im= bsxfun(@minus,im,net.meta.normalization.averageImage) ;
    res = vl_simplenn(net, im) ;
    %提取4096维向量
    train_block(i,:)=res(end-2).x;      
end
save data\\train_block;

(2)PCA降维

通过Matlab内置的“pca”函数对所提取的特征进行降维,当协方差所对应的特征值占据总能量的98%以上时候,将所对应的特征向量组成投影矩阵。简单介绍一下“pca”函数,用法如下所示:

[coeff,score,latent] =pca(train_block);

函数输入train_block对应训练样本集合,是一个 的矩阵,其中 是样本个数, 是样本维数;PCA实际上是求取一个投影变换矩阵,使得样本投影后尽可能地保留最大有用信息。

为求得投影矩阵,首先求取train_block的协方差矩阵,Matlab中是自动进行去均值操作的,而协方差矩阵为:



pca返回值coeff是 的特征向量(相对于特征值latent),score是train_block经过投影的矩阵,即

latent是对于特征值(按从大到小排序)。


%pca降维
[coeff,score,latent] = pca(train_block);
dim = 150;
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值