关于PCA+KNN下的人脸识别

来源:互联网 发布:人工智能利大于弊辩论 编辑:程序博客网 时间:2024/06/10 19:08

        这相当于一个工作总结。

        接触机器学习以后,首先感兴趣的就是PCA算法,通过降维将特征空间大大简化。并在matlab中写了下代码,本来想用C++实现,最后发现求特征向量还需要QR迭代法,算法非常麻烦,所以就在matlab中,通过调用已经写好的库函数,实现了一个简单的程序。接着就是后面的模式识别和多媒体课程,让我了解到人脸识别的大致过程。所以就根据所学的只是写了PCA+KNN的人脸识别。比较简单,有界面。

PCA的过程根据书上了解主要有五步:

1,均值化处理

2,求特征空间的协方差矩阵

3,求协方差的特征值和特征向量

4,将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵

5,将样本点投影到选取的特征向量上

         其中,协方差矩阵的求法有两种,第一种就是按部就班的求解,一个一个求。第二种方法:用公式A*A'/N-1);两种方法结果一致,第二种效率更高,时间复杂度更低。

        实验证明,通过以上的五步,得到的识别率只有65.5%,然后发现还需要一个过程“方差归一化”,这样会大大减少误差,效果会更好。原因分析:比如,如果一个特征是汽车速度(0100),一个是汽车的座位数(26),显然第二个的方差比第一个小。因此,如果样本特征中存在这种情况,在第一步之后,求每个特征的标准差a,然后对每个样例在改特征下的数据除以a;实验发现,这样的效果很明显,识别率达到86%

        网上有很多高效的人脸识别系统。比自己的准确率高的许多。自己的程序中还有许多问题可以改进。

        通过人脸识别系统的完成,和模式识别老师给的建议,最大的体会就是语义层次的识别。例如:我们怎么通过人脸图像的信息来识别出此人的表情,是高兴,还是悲伤,还是....。这方面感觉主要问题在于1,高层语义该怎么描述?2,底层的特征怎么才能映射到高层特征。

         最近看到一篇论文《基于层次分析法语义知识的人脸表情识别新方法》,这是通过层次分析法(AHP)对训练集中人脸图像进行高层语义描述,建立语义特征向量;目前正在学习中...

原创粉丝点击