首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenImaj教程和EigenFaces

OpenImaj教程和EigenFaces
EN

Stack Overflow用户
提问于 2015-09-17 19:04:43
回答 1查看 802关注 0票数 1

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

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

因为某种原因,对我来说还不够清楚。有些事情我不明白。上面说过,

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

它将编写以下代码:

代码语言:javascript
复制
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的像素值。

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

代码语言:javascript
复制
    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() ->返回一个我可以显示的图像,它看起来像一张正常的脸,但在尺寸上确实很小(这是正常的吗?)

应该这么做吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-19 10:41:46

关于第一个问题

常设仲裁院有两个阶段:

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

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

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

关于第二个问题

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32638131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档