# Face Recognization **Repository Path**: funny_QZQ/face-recognization ## Basic Information - **Project Name**: Face Recognization - **Description**: A simple face recognization software - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2017-06-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #简单的人脸识别教程 > ###编程语言 > python 2.7 > ###系统环境 > windows 10 64位 > ###附加包 > [libsvm][1] #1. 图片数据的简单介绍 笔者所使用的图片数据(`orl`文件夹)共有**400(112\*92\*3)**张,这其中共有40个人的人脸图片,每个人分别有对应的10张不同角度的图片,这些图片按照人的不同分别存放在不同的文件夹中,这样就构成了人脸图片数据。 #2. 训练数据以及测试数据的生成 python程序见`face_recognization.py`文件,在这个程序中,笔者只是简单地选取了每个像素点的灰度值作为图像的特征,从每个人的人脸文件夹中选取8张图片作为训练样本,选取2张图片作为测试样本,程序执行完成后会生成`svm_data_train`和`svm_data_test`两个数据样本文件,由于此处笔者并没有使用任何降维算法,所以每张图片的特征向量的维数会达到**112\*92**维,由于样本数不大,所以时间也没有花费很多。(读者可以考虑用PCA或者LDA算法对特征向量进行降维) #3. 对样本数据进行归一化 对数据归一化的时候,可以使用libsvm自带的归一化工具`svm-scale`进行归一化,命令如下: ./svm-scale svm_data_train > svm_data_train_scaled ./svm-scale svm_data_test > svm_data_test_scaled `train`和`test`样本归一化完成后会分别保存在`svm_data_train_scaled`和`svm_data_test_scaled`文件中,当然,此处的文件名读者也可以自己设置 **注:这里执行这两条命令的时候需要将`svm-scale`,`svm_data_train`以及`svm_data_test`放在同一个目录下** #4. 最优参数选择 这里libsvm包为我们提供了现成的程序`grid.py`,该文件位于tools文件夹下,执行命令如下: python grid.py svm_data_train_scaled 这之后程序就会自动地帮我们选择最优的c和g的值,笔者这里程序跑出来的值为:**c = 8.0; g = 0.000122** #5. 模型训练 模型训练的时候需要加上我们用`grid.py`选择的最优参数,命令如下 ./svm-train -c 8.0 -g 0.000122 svm_data_train_scaled 执行完成之后,会自动生成一个模型文件`svm_data_train_scaled.model` #6. 用测试样本来测试模型的准确率 命令如下: ./svm-predict svm_data_test_scaled svm_data_train_scaled.model svm_data_test_scaled.out 执行完成之后会给出一个测试准确度,大概在97%左右,同时还会生成一个`svm_data_test_scaled.out`文件,这个文件中存放的就是用上面的模型预测的类别标签(通过比较类别标签跟初始标签,就可以计算出准确度) 至此,基本完成了简单的人脸识别小程序。 有问题,欢迎随时联系邮箱:qiaozhiqiang1993@163.com [1]: https://www.csie.ntu.edu.tw/~cjlin/libsvm/