【问题标题】:Stuck on Eigenfaces, PCA卡在特征脸上,PCA
【发布时间】:2013-11-18 01:22:48
【问题描述】:

我正在使用 eigenfaces 实现一个人脸识别迷你项目。

我成功地拥有了计算机并将特征脸保存到一个文件夹中。使用:

  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
  })  

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

我的下一步应该是什么?我究竟如何降低维数,然后用它来识别给定的脸是否与另一个相似?

【问题讨论】:

    标签: machine-learning computer-vision face-recognition pca dimensionality-reduction


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢你,我真的需要这样的洞察力:)。
    【解决方案2】:

    给定一张新的人脸图像,您应该将其表示为特征脸的线性组合。线性组合的系数是您的描述符。这就是降低维度的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-21
      • 2016-03-22
      • 2011-08-25
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      相关资源
      最近更新 更多