我用PCA进行人脸识别。得到了每幅图像的特征向量/特征面,这是一个颜色矩阵。我想知道选择前三个特征向量,因为它们对应的特征值占总方差的70%,是否足以进行人脸识别?
发布于 2013-12-24 02:05:49
首先,让我们弄清楚一些事情。特征向量是从整个数据集形成的协方差矩阵中计算出来的,即你把一张人脸的灰度图像整形成一列,并把它当作R^d空间中的一个点,计算协方差矩阵,并计算协方差矩阵的特征向量。这些特征向量为你的面部图像空间提供了一个新的基础。您要做的是,而不是,对于每个图像都有特征向量。相反,通过投影到(可能的子集)上,用特征向量表示每个人脸图像。
特征面的限制
至于在这个新的基础上,你的面部图像的表现是否足够好,以进行人脸识别,取决于许多因素。但是通常情况下,特征面方法对于现实世界中的无约束人脸并不是很好。它只适用于像素方向对齐,面向正面,并且在图像中具有相当均匀的光照条件的人脸。
更多并不一定更好
虽然人们普遍认为(当使用PCA)保持更多的方差要比少的多,但由于两个因素: 1)真实世界数据中的噪声和2)数据的维数,情况要复杂得多。有时,投射到一个较低的维度,并失去方差,实际上可以产生更好的结果。
结论
因此,我的答案是,很难说预先保留一定的差额是否足够。维数(因此保留特征向量的数量和相关的方差保留)应该通过交叉验证来确定。但是,最后,正如我前面提到的,特征脸不是一个很好的人脸识别方法,除非你有一个“很好”的数据集。您可能会更好地使用“渔人脸”,即在人脸图像上使用LDA,或者将这些方法与本地二进制模式(LBP)结合作为特征(而不是原始的人脸像素)。但说真的,人脸识别是一个困难的问题,一般来说,最先进的人脸识别技术还没有达到可以应用于现实世界系统的阶段。
发布于 2013-12-24 03:08:53
这不是不可能的,但对我来说有点罕见,只有3个特征值才能达到70%的方差。你有多少个训练样本(总维度是多少)?确保您正在将数据库中的每幅图像重塑为向量,将向量数据规范化,然后将它们对齐为矩阵。由矩阵的协方差得到特征值/特征向量。
理论上,70%的方差应该足以形成一个具有相应特征向量的可识别人脸。但是,交叉验证得到的最优特征值数更好:每次可以增加一个特征向量,观察人脸的形成情况和识别精度。你甚至可以画出交叉验证精度曲线,在曲线上可能有一个锐角,然后对应的特征向量数有望应用到你的测试中。
https://stackoverflow.com/questions/20753650
复制相似问题