欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

matlab怎么提取特征,matlab – 了解提取特征的编码

发布时间:2023/12/2 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 matlab怎么提取特征,matlab – 了解提取特征的编码 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我关注的编码是fisher编码,因为我已经证明我的工作效果最好.所以我想在我提取的(SIFT)功能上测试Fisher编码,并测试系统的性能,无论是否编码.

而不是重新开始我发现vl_feat有一个用于fisher编码的内置库,他们有一个教程,以及链接here

现在我已经完成了所需的大部分工作,但实际上编码的内容让我很困惑,例如教程清楚地表明使用GMM获得的参数执行Fisher编码,例如[均值,协方差,先验]和SIFT根据教程,GMM中将使用提取的特征:

The Fisher encoding uses GMM to construct a visual word dictionary. To

exemplify constructing a GMM, consider a number of 2 dimensional data

points. In practice, these points would be a collection of SIFT or

other local image features.

numFeatures = 5000 ;

dimension = 2 ;

data = rand(dimension,numFeatures) ;

numClusters = 30 ;

[means, covariances, priors] = vl_gmm(data, numClusters);

一旦我执行了这一步,我将编码另一个数据集?这让我很困惑.我已经使用我提取的SIFT功能生成GMM的参数.

Next, we create another random set of vectors, which should be encoded

using the Fisher Vector representation and the GMM just obtained:

encoding = vl_fisher(datatoBeEncoded, means, covariances, priors);

所以这里编码是最终结果,但它编码了什么?我想要从我的图像中提取的SIFT功能进行编码,但是如果我按照GMM中使用的教程进行编码.如果是这种情况那么什么是datatoBeEncoded?我是否再次使用SIFT专长?

谢谢

更新:

@Shai

谢谢,但我相信我一定做错了.我不太明白你的意思是“将图像与自己比较”.我有4个班,每班1000个图像.所以我使用了第1类中的前600个图像来学习gmm参数,然后使用这些参数来编码fisher矢量

numClusters = 128 ;

[means, covariances, priors] = vl_gmm(data, numClusters);

因此,每个均值,协方差大小为128 x 128,大小为1 x 128

现在,当我使用这些函数来对400幅图像上的fisher矢量进行编码时

encoding = vl_fisher(datatoBeEncoded, means, covariances, priors);

编码的大小非常不同,大小为12000 x 1.这些无法与生成的模型进行比较.

我已经有一个系统正在处理数据集的非编码版本,它运行良好,但我想看看编码将如何产生影响,理论上应该改进结果.

如果需要,我可以在这里添加代码,但它适用于UBM-GMM,我感到困惑的原因是因为你提到的训练方法是我用于UBM的.

如果我只编码测试图像,由于尺寸不匹配,我不能在分类器中使用它们.

也许我没有正确地选择这个或者犯了一些愚蠢的错误,是否有可能得到一个简单的例子,我可以通过它来理解工作.

非常感谢

总结

以上是生活随笔为你收集整理的matlab怎么提取特征,matlab – 了解提取特征的编码的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。