我正在使用特征脸实现人脸识别迷你项目。

我已经成功安装了计算机,并将本征面保存到了文件夹中。使用:

  Matrix<-readInImagesAndLinearize()
  avg_face<-as.vector(colMeans(Matrix, na.rm = FALSE, dims = 1))
  A <- t(Matrix) - matrix(avg_face, ncol=dim(Matrix)[1], nrow=dim(Matrix)[2])
  L <- t(A) %*% A
  V <- eigen(L)

  eigenValues <<- V[['values']]
  eigenFaces <<- apply((A %*% V[['vectors']]), 2, function(x) {
  # normalize and scale to 1
  y <- x/sqrt(sum(x^2))
  y <- x - min(x)
  (1/max(y)) * y
  })


然后将它们保存到文件中。

我下一步应该怎么做?我如何精确降低尺寸,以后再使用它来识别给定的面孔是否与另一个相似?

最佳答案

通过删除与最小特征值相对应的特征向量,可以降低维数。您必须决定保留多少个特征向量(例如,您可以决定保留足够的特征向量/特征值,以使保留的特征值之和至少为所有特征值之和的99%)。收到新图像时,可以通过将其投影到保留的特征向量上来减小其维数(即,将图像向量与每个保留的特征向量的点积相乘)。

识别两个面孔是否相似完全是另一个问题。 PCA仅处理降维-它不是分类器。您仍然需要选择一种分类算法,该算法应基于多种考虑因素(图像的大小和特征,是否存在同一个人的多幅图像,是否存在不同的视角/距离等)。

10-07 19:22
查看更多