matlab怎么提取特征,matlab – 了解提取特征的编码
我關(guān)注的編碼是fisher編碼,因為我已經(jīng)證明我的工作效果最好.所以我想在我提取的(SIFT)功能上測試Fisher編碼,并測試系統(tǒng)的性能,無論是否編碼.
而不是重新開始我發(fā)現(xiàn)vl_feat有一個用于fisher編碼的內(nèi)置庫,他們有一個教程,以及鏈接here
現(xiàn)在我已經(jīng)完成了所需的大部分工作,但實際上編碼的內(nèi)容讓我很困惑,例如教程清楚地表明使用GMM獲得的參數(shù)執(zhí)行Fisher編碼,例如[均值,協(xié)方差,先驗]和SIFT根據(jù)教程,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);
一旦我執(zhí)行了這一步,我將編碼另一個數(shù)據(jù)集?這讓我很困惑.我已經(jīng)使用我提取的SIFT功能生成GMM的參數(shù).
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);
所以這里編碼是最終結(jié)果,但它編碼了什么?我想要從我的圖像中提取的SIFT功能進(jìn)行編碼,但是如果我按照GMM中使用的教程進(jìn)行編碼.如果是這種情況那么什么是datatoBeEncoded?我是否再次使用SIFT專長?
謝謝
更新:
@Shai
謝謝,但我相信我一定做錯了.我不太明白你的意思是“將圖像與自己比較”.我有4個班,每班1000個圖像.所以我使用了第1類中的前600個圖像來學(xué)習(xí)gmm參數(shù),然后使用這些參數(shù)來編碼fisher矢量
numClusters = 128 ;
[means, covariances, priors] = vl_gmm(data, numClusters);
因此,每個均值,協(xié)方差大小為128 x 128,大小為1 x 128
現(xiàn)在,當(dāng)我使用這些函數(shù)來對400幅圖像上的fisher矢量進(jìn)行編碼時
encoding = vl_fisher(datatoBeEncoded, means, covariances, priors);
編碼的大小非常不同,大小為12000 x 1.這些無法與生成的模型進(jìn)行比較.
我已經(jīng)有一個系統(tǒng)正在處理數(shù)據(jù)集的非編碼版本,它運行良好,但我想看看編碼將如何產(chǎn)生影響,理論上應(yīng)該改進(jìn)結(jié)果.
如果需要,我可以在這里添加代碼,但它適用于UBM-GMM,我感到困惑的原因是因為你提到的訓(xùn)練方法是我用于UBM的.
如果我只編碼測試圖像,由于尺寸不匹配,我不能在分類器中使用它們.
也許我沒有正確地選擇這個或者犯了一些愚蠢的錯誤,是否有可能得到一個簡單的例子,我可以通過它來理解工作.
非常感謝
總結(jié)
以上是生活随笔為你收集整理的matlab怎么提取特征,matlab – 了解提取特征的编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab查找替换指令,使用matla
- 下一篇: matlab 形态学 颗粒_数字图像处理