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

博主探讨了如何利用Fisher编码对SIFT特征进行编码,通过vl_feat库实现GMM参数获取,并尝试理解Fisher编码过程。他们在GMM中构建视觉词典,使用SIFT特征训练模型,然后对新的数据集进行编码。然而,对于编码结果的含义以及如何将其应用于图像分类存在困惑。目前,编码后的向量尺寸与预期不匹配,导致无法直接用于分类。博主希望找到一个清晰的示例来理解这一过程。
摘要由CSDN通过智能技术生成

我关注的编码是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的.

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

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

非常感谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值