lbp 人脸识别 matlab,GitHub - stuhard/LBP-DBN-face-recognition: 使用LBP特征提取算法提取人脸特征,DBN网络来实现人脸识别,测试数据库ORL数据...

LBP-DBN-face-recognition

使用LBP特征提取算法提取人脸特征,DBN网络来实现人脸识别,测试数据库-ORL数据库,识别率可达90%以上

###工程使用方法:

clone下工程,要根据实际情况修改test_example_DBN.m中的文件路径

我们在该文件中,a=imread(strcat('E:\My RBM-DBN matlab\ORL\ORL\s',num2str(i),'_',num2str(j),'.bmp'));

###工程说明:

####英文简称注释:

DBN-深度信念网络、RBM-受限的玻尔兹曼机 、LBP-局部二值模式

####几点说明:

0-这个程序的功能,使用DBN算法来实现人脸识别,数据库使用ORL数据库,在迭代次数达到3000时,识别准确率98%左右

2-此程序还附带了画学习曲线的功能,画正则参数,隐层结点数,训练样本数的学习曲线

3-DBN是有几层RBM构成,我这个程序实现的是4层网络,输入层-隐层1-隐层2-输出层

4-DBN的训练基本上分为两步,先用RBM的训练方法训练网络得到初始值,来初始化整个网络,然后用BP反向传播算法来微调整个网络

5-神经网络参数的更新,使用matlab提供的fmincg函数,前提是我们要先得到网络的代价函数nnCostFunction

####各文件的功能说明:

test_example_DBN:主函数

dbnsetup:初始化DBN网络

dbntrain:训练DBN网络,DBN是由多层RBM组成,训练方法是逐层训练,先训练第一层网络,然后固定第一层网络的参数,将第一层网络的输出作为下一层网络的输入

dbnunfoldtonn:DBN训练得到的参数来初始化神经网络

fmincg:最优化函数,只要我们得到网络的代价函数,和反向传播算法,就可以用此函数求最优解

getmapping,lbp,lbptest:完成lbp算法

hidden_node_learn_curve:关于隐层结点的学习曲线

learningCurve:关于训练样本数目的学习曲线

nnCostFunction:求神经网络的代价函数,和BP反向传播算法

predict:利用网络进行预测

randInitializeWeights:随机初始化网络参数

rbmdown,rbmup,sigm,sigmoid,sigmoidGradient,sigmrnd:训练过程中使用到的计算函数

train_nn:训练神经网络

rbmtrain:训练一个RBM网络

validationCurve:关于正则参数的学习曲线

整个框架就是:

先用LBP算子对人脸图像进行特征提取,然后用RBM算法逐层训练RBM,训练得到的RBM参数来初始化化DBN网络,然后计算出整个网络的代价函数,并使用BP反向传播算法,谨记反向传播算法也是梯度下降算法,并且可以用梯度校验来验证。梯度下降算法,学习率是一个比较关键的参数,但是,在我的程序中,自己不设学习率,只要我们实现了反向传播算法和代价函数,我们使用fmincg函数去得到最优解。

###优点:

神经网络采用的是随机初始化,但容易收敛到局部最小值,用DBN训练得到网络的初始化参数,而不是随机初始化。DBN随机初始化之后,网络的训练方式就跟训练神经网络一样。

###想弄明白这个程序:需要了解LBP,RBM,DBN,BP神经网络的知识

现在,把我实现这个工程,用到的各种资源贴上来,方便学习

我的工程是在别人的代码上改进的,代码见此博客

http://blog.csdn.net/dark_scope/article/details/9447967

####BP神经网络:

神经网络-UFLDL

####视频资源,强烈推荐看一下couresa上吴恩达的视频machine learing ,可以看一下这几节课

1、IX: Neural Networks: Learning (Week 5)

介绍反向传播算法,梯度校验(梯度校验可以检查我们的梯度下降法是否正确,也可以校验我们的反向传播算法是否正确)

2、VII:正则化,我的程序中使用了正则参数

3、X:Advice for Applying Machine Learning (Week 6):讲述过拟合,欠拟合之类的,并教授描绘学习曲线的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值