我不確定這是否是適合此問題的正確論壇,否則我很抱歉。功能包如何工作?
我對Bag of Features模型很陌生,我試圖實現爲了通過矢量(用於CBIR項目)表示圖像。
從就我的理解,給定一個訓練集n
圖像0,並假定我們想通過大小k
的矢量來表示圖像,這些都爲實現使用BoF步驟:
- 對於每個圖像
i
,計算關鍵點集合並從中計算描述符集合i-D
。 - 把所有圖像中的描述符集合放在一起,所以現在我們有
D
。 - 在
D
上運行k
表示(其中k
定義如上)算法,所以現在我們有k
簇,每個描述符向量完全屬於一個簇。 - 將相對於圖像
i
的結果BoF矢量(尺寸爲k
)定義爲iv
。每個維度被初始化爲0 - 對於每個圖像
i
,和用於屬於i-D
每個描述符d
,找出d
所有k
簇之間所屬羣集。假設d
屬於j
集羣,那麼vi[j]++
。
什麼是我不明白的是如何落實第5點,那麼我們該如何理解到集羣中的描述屬於,特別是如果我們試圖計算轉爐矢量圖像是查詢圖像(不屬於初始數據集)?我們是否應該找到最近鄰居(1-NN)以便了解查詢描述符屬於哪個羣集?
爲什麼我需要這個 - 應用程序:
爲了實現CBIR我實現鍊鋼模型:給定一個查詢圖像q
,找到q
最相似的圖像i
中的數據集圖片。爲了做到這一點,我們需要解決1-近似最近鄰問題,例如使用LSH。問題在於LSH中的每個圖像的輸入都表示爲一個矢量,所以我們需要BoF才能做到這一點!我希望現在它更清楚爲什麼我需要它:)
請讓我知道,如果我在上述程序中犯了一些錯誤。
我太如此如此抱歉,我很愚蠢!這不是第3點(它只是k-均值),而是第5點(我們通過將每個描述符關聯到一個聚類並定義直方圖來定義結果向量)。 – justHelloWorld
因此,仍然不清楚的是「給出圖像查詢,我們如何獲得最終的BoF矢量」?我們必須爲每個描述符找到數據集中的1-NN描述符,並將其與相對集羣關聯起來?告訴我,如果我不清楚 – justHelloWorld
是的,要分配一個描述符,你可以得到最近的鄰居。您可以根據您的訓練數據計算每個聚類的半徑,只有當查詢點位於該半徑範圍內時(如果您開始獲得與訓練數據非常不同的查詢)纔可以分配它。 – Sorin