當前位置:編程學習大全網 - 源碼下載 - 如何對SIFT得到的特征向量做k-means聚合

如何對SIFT得到的特征向量做k-means聚合

?關於SIFT之後的K-means聚類的問題?

本人在做bag of words這個模型,選擇的是SIFT+SVM,中間涉及到聚類分析,想用K-means算法做聚類

現在的問題是,假設我用100張學習圖片做SIFT特征提取,每張圖片都是N*128的向量,並且每張圖片的特征點N不同

那麽在做K-means聚類的時候,是每壹張圖片分別作聚類,還是將100張圖片的特征空間整合成(N1+N2+...+N100)*128的矩陣,再做聚類?

因為我用的是matlab自帶的kmeans函數,如果是第二種情況,聚類後假設質點k取300,那麽想分別得到每壹張圖片中屬於各個質點的特征點有多少個要怎麽實現?

另:MATLAB中自帶kmeans函數說明如下:

[IDX,C] = kmeans(X,k) returns the k cluster centroid locations in the k-by-p matrix C.

[IDX,C,sumd] = kmeans(X,k) returns the within-cluster sums of point-to-centroid distances in the 1-by-k vector sumd.?

[IDX,C,sumd,D] = kmeans(X,k) returns distances from each point to every centroid in the n-by-k matrix D.?

本人也是昨天才看到聚類算法,許多不清楚,希望大蝦指點,萬分謝謝~~

這位童鞋,妳顯然沒有實質上的理解BoW Model,更不用說BoF Model了。建議妳先搞清楚BoW ,結合BoW,再去理解BoF 。這樣就很容易理解了。首先,對妳指出妳的兩個問題。第壹,使用100幅圖片來做機器學習是遠遠不夠的,至少要200以上,這樣才能有質的效果;第二,即使是只使用100幅圖片,使用matlab自帶的kmeans函數,如果妳的電腦內存是2G,win7系統,肯定會產生Out of Memeroy的問題。對於妳提出的問題,顯然是應該把妳那100圖片的所有SIFT特征點向量散布於壹個128D的空間中來進行聚類,這樣才能真正的找到每幅圖片中的相似點,妳放在壹幅圖片裏面聚類,那機器能學到啥子哦~~這就是模式識別裏面的機器學習啦,我是西電的,歡迎交流~~

妳可以大概的算壹下那些矩陣的大小,估計都七八百M了,內存也不可能全部分給matlab,系統就占了好多,肯定會有內存溢出的問題

kmeans中idx記錄的是每個點的聚類標號,還要提前記錄每幅圖得到的關鍵點的個數,這樣就可以循環找到每幅圖對應的特征點的個數了

  • 上一篇:默認照片源代碼
  • 下一篇:阿裏巴巴的招聘流程,技術崗位壹般幾輪面試?
  • copyright 2024編程學習大全網