【问题标题】:OpenImaj Tutorial and EigenFacesOpenImaj 教程和 EigenFaces
【发布时间】:2015-09-19 18:41:46
【问题描述】:

我不知道这是否是一个相关的论坛,但我一直在关注这个教程:

http://www.openimaj.org/tutorial/eigenfaces.html

由于某种原因,这对我来说还不够清楚。 有些事情我不明白。它在某一时刻说,

实现特征脸识别器的第一步是使用训练图像来学习 PCA 基础,我们将使用它来将图像投影到可用于识别的特征中。 EigenImages 类需要一个图像列表来学习基础(即每个人的所有训练图像),还需要知道我们希望我们的特征有多少维(即有多少特征向量对应于最大的要保留的特征值):

编写这段代码:

List<FImage> basisImages = DatasetAdaptors.asList(training);
int nEigenvectors = 100;
EigenImages eigen = new EigenImages(nEigenvectors);
eigen.train(basisImages);

所以我不明白。 train() 方法训练究竟是什么?据我所知,它只是应用 PCA 对吗?在我看来,训练总是与感知器或其他神经网络或带参数的算法相关联。

我还需要一些帮助来理解练习 13.1.1,

13.1.1。练习 1:重构人脸

特征脸算法(特别是从 PCA 过程中)提取的特征的一个有趣特性是可以从特征中重建原始图像的估计。尝试通过如上所述构建 PCA 基础来做到这一点,然后从测试集中随机选择人脸的特征。使用 EigenImages#reconstruct() 将特征转换回图像并显示它。您需要对图像进行归一化(FImage#normalise())以确保它正确显示,因为重建可能会给出大于 1 或小于 0 的像素值。

在示例中,有一些代码已经提取了特征:

    Map<String, DoubleFV[]> features = new HashMap<String, DoubleFV[]>();
    for (final String person : training.getGroups()) {
        final DoubleFV[] fvs = new DoubleFV[nTraining];

        for (int i = 0; i < nTraining; i++) {
            final FImage face = training.get(person).get(i);
            fvs[i] = eigen.extractFeature(face);
        }
        features.put(person, fvs);
    }

所以如果我这样称呼:

eigen.reconstruct(fvs[i]).normalise() -> 返回一个我可以显示的图像,它看起来像一张普通的脸,但它的尺寸非常小(这是正常的吗?)。

应该这样做吗?

谢谢。

【问题讨论】:

    标签: java image-processing openimaj


    【解决方案1】:

    第一个问题

    PCA 有两个阶段:

    1. 学习(“训练”)一种将数据投影到低维空间的线性变换。这样做的方式是,变换空间中的第一个轴(主轴)位于“训练”数据中方差最大的方向;第二个轴在最大变化的方向上与第一个轴成直角;等等。
    2. 将学习到的变换应用于数据(“投影”数据)以降低其维度。

    你会发现大多数关于 PCA 的描述都假设你有一些数据并且你只是想减少它的维度。更具体地说,假设两个步骤中的数据相同。然而,情况不一定如此;您可以对具有代表性的数据样本执行第 1 步来学习转换,然后将第 2 步应用于不同的数据(尽管要使结果有意义,这些数据应该来自同一总体)。

    对于特征脸,您可以从部分或全部“训练”人脸数据中学习 PCA 变换,然后使用变换投影所有训练数据并训练监督分类器。当您想测试系统时,您可以使用学习到的 PCA 变换将之前未见过的数据项投影到低维空间中,然后将其传递给分类器。

    第二个问题

    eigen.reconstruct(fvs[i]).normalise() 是正确的方法。重建的图像将具有与用于训练/测试的所有图像相同的尺寸(特征脸方法的一个限制是所有输入必须具有相同的尺寸)。在本教程中,AT&T 人脸数据集由分辨率相对较低的图像(92x112 像素)组成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多