赞
踩
一、数据集介绍
ORL人脸库(Olivetti Research Laboratory人脸数据库),诞生于英国剑桥Olivetti实验室。
ORL人脸数据库由该实验室从1992年4月到1994年4月期间拍摄的一系列人脸图像组成,共有40个不同年龄、不同性别和不同种族的对象。每个人10幅图像共计400幅灰度图像组成,图像尺寸是92×112,图像背景为黑色。其中人脸部分表情和细节均有变化,例如笑与不笑、眼睛睁着或闭着,戴或不戴眼镜等,人脸姿态也有变化,其深度旋转和平面旋转可达20度,人脸尺寸也有最多10%的变化。该库是目前使用最广泛的标准人脸数据库,特别是刚从事人脸识别研究的学生和初学者,研究ORL人脸库是个很好的开始(见图一)。
图一、ORL人脸识别
二、实验
五种方法实现orl人脸识别
1.bp神经网络(未降维)
从上表可以看出:
(1)尽管采用添加动量相的BP算法,由于学习速率固定,网络的训练速度仍旧很慢。如果盲目的增加学习速率,又会造成网络在某处的波动。因此,训练函数采用AdagradOptimizer学习速率的算法较为合适。
3、BP网络性能参数的设定
上表中,为了缩短运行时间,通过加大截止误差和设定迭代次数的方法来加快程序运行,这样会在一定程度上降低识别率。当采用AdagradOptimizer的训练函数后,网络运行速度加快,将截止误差设定为0,迭代次数仍设定为10000,发现每次促使训练停止的为默认的截止梯度。此时的网络误差已足够小。
3.小波变换+pca+bp
术语(中英对照):
尺度函数 : scaling function (在一些文档中又称为父函数 father wavelet )
小波函数 : wavelet function(在一些文档中又称为母函数 mother wavelet)
连续的小波变换 :CWT
离散的小波变换 :DWT
小波变换的基本知识
不同的小波基函数,是由同一个基本小波函数经缩放和平移生成的。
小波变换是将原始图像与小波基函数以及尺度函数进行内积运算,所以一个尺度函数和一个小波基函数就可以确定一个小波变换
小波变换后低频分量
pywt.wavedec2(data, wavelet, mode=’symmetric’, level=None, axes=(-2, -1))
data: 输入的数据
wavelet:小波基
level: 尺度(要变换多少层)
return: 返回的值要注意,每一层的高频都是包含在一个tuple中,例如三层的话返回为 [cA3, (cH3, cV3, cD3), (cH2, cV2, cD2), (cH1, cV1, cD1)]
(cA, (cH, cV, cD))要注意返回的值,分别为低频分量,水平高频、垂直高频、对角线高频。高频的值包含在一个tuple中。
PCA降维的目的:
1.减少预测变量的个数
2.确保这些变量是相互独立的
3.提供一个框架来解释结果
降维的方法有:主成分分析、因子分析、用户自定义复合等。
PCA(Principal Component Analysis)不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。
PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性
sklearn.decomposition.PCA(n_components=None,copy=True,whiten=False)
n_components: int, float, None 或 string,PCA算法中所要保留的主成分个数,也即保留下来的特征个数,如果 n_components = 1,将把原始数据降到一维;如果赋值为string,如n_components=‘mle’,将自动选取特征个数,使得满足所要求的方差百分比;如果没有赋值,默认为None,特征个数不会改变(特征数据本身会改变)。copy:True 或False,默认为True,即是否需要将原始训练数据复制。whiten:True 或False,默认为False,即是否白化,使得每个特征具有相同的方差
实验过程参数调节,1,3,5,7,9训练,0,2,4,6,8测试。
小波基 Level 主成分比例 输入神经元 隐含层神经元 隐层激活函数 输层激活函数 学习率 识别率 训练函数 误差函数 迭代次数 训练时间
(秒)
db2 3 0.8 15 50 Sigmod Softmax 1 87.50% AdagradOptimizer Cross Entropy 10000 391.498192
haar 3 0.8 13 50 Sigmod Softmax 1 90.50% AdagradOptimizer Cross Entropy 10000 409.169392
haar 20 0.7 17 50 Sigmod Softmax 1 88% AdagradOptimizer Cross Entropy 10000 225.005641
haar 20 0.95 70 100 Sigmod Softmax 1 90.00% AdagradOptimizer Cross Entropy 10000 222.635430
实验完任选5张训练,5张测试,实验截图如下:
小波基 Level 主成分比例 输入神经元 隐含层神经元 隐层激活函数 输层激活函数 学习率 识别率 训练函数 误差函数 迭代次数 训练时间
(秒)
db2 3 0.8 15 50 Sigmod Softmax 1 92.00% AdagradOptimizer Cross Entropy 10000 205.950940
损失曲线
神经网络结构图
权重和偏置分布图
权重和偏置直方图
最后加了一层神经网络,隐含层神经元个数为800
本次识别率如下
三.总结
CNN对电脑性能要求比价高,我在GPU上进行跑的,如果没有很好的电脑性能,小波变换+pca+svm是不错的选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。