face_data 文件夹存放feret数据库
feret_data 文件夹存放程序需要读入的人脸数据库
remove_data 文件夹存放从老师提供的feret数据库中移除的几组数据(由于程序运行时对这几组数据报错,且暂未找到原因)
images存放readme.markdown 文档需要用到的图片
face.py是压缩感知人脸识别程序的主体
readme.markdown 是整个项目的说明文档
选用了于宏斌老师提供的feret数据库
在可用的183组数据中随机抽出一张纸片作文检验照片
未被抽取的其余照片作为学习数据集
程序比对检验照片,得出可能的人脸序号,之后判断序号是否正确
最后得出程序预测的准确率
从文件夹中加载人脸图像数据,并将图像展平为一维向量。这里的图像数据存储在指定的数据库路径中。 使用OpenCV加载图像,并将其转为灰度图。
使用sklearn.preprocessing中的normalize函数对数据进行归一化处理。归一化后,每个样本向量的范数为1。
使用PCA(主成分分析)对数据进行降维。这里将原始数据降至1260维。 PCA降维后的数据矩阵为images_pca。
将数据集划分为训练集和测试集。每类中20%的数据作为测试集,剩余的作为训练集。 训练集和测试集的样本分别为train_images和test_images,标签为train_labels和test_labels。
使用Lasso或Orthogonal Matching Pursuit (OMP)模型进行稀疏表示。 Lasso模型通过最小化目标函数的L1范数来实现稀疏表示。 OMP模型通过逐步选择与当前残差最相关的基向量来逼近目标向量。
对于每个测试样本,使用稀疏表示模型拟合训练集数据,得到稀疏系数。 计算每个类别的重建误差,选择重建误差最小的类别作为预测结果。
使用测试集数据进行分类预测,并计算预测的准确率。
经过多次调整alpha参数,识别准确率可以达到百分之70以上