1

我試圖執行包含以下步驟的對象檢測模塊:使用的詞語/特徵袋及神經網絡

1)提取與SURF圖像描述符,產生大小的矩陣[X,64] ,其中x取決於圖像中找到的關鍵點的數量;

2)使用bag/features/words方法將描述符大小固定爲[k,64]格式。其中k是使用k-means創建的聚類數量。 3)用一組神經網絡作爲訓練樣本饋給神經網絡。

到目前爲止,我已經實現了步驟1和2,但我不太確定如何格式化NN的輸出向量。在OpenCV CvANN_MLP上,輸出向量中的行數應該與輸入行的數量相同(否則返回what()異常),但輸入行的數量是步驟2中k個聚類的數量,所以I根本不瞭解如何編寫輸出矩陣。

我知道輸出矩陣應該有n個對應於我想要輸出的類的數量的列(例如3個類:cat,dog和bird會在帶有3列的矩陣上產生),但是如何組織這個矩陣的行基於輸入行?我讀了這個相關的post,它使用matlab,它說每個功能應該是一個行,但我不知道如何在OpenCV C++上做到這一點。 如果任何人有任何想法/提示如何處理,將非常感激。

回答

0

你有沒有這樣做:

然而,訓練你的神經網絡之前,當你懷疑,你必須 代表你希望與這個特徵向量來訓練每一個形象。

餵養你的神經網絡之前?我缺乏使用神經網絡的經驗,但是在閱讀this和你的問題之後,似乎你正在試圖向你的神經網絡提供bag-of-words集羣,這是不正確的。

+0

謝謝你的回覆。所以,我不知道我是否正確思考,但對我來說,特徵矢量是從衝浪中提取的矢量(步驟1),這與我用作包的單詞的輸入相同,我只是將它組織在因爲衝浪給出了一個大小各不相同的矢量。我應該在此之後做其他事嗎? – cecelia

+0

所以你有k個集羣嗎?我們稱之爲視覺詞彙。現在您需要將特徵向量轉換爲單詞向量(即計算輸入描述符相對於您的集羣的最近鄰居)。你做到了嗎?該變換的輸出應該是每個輸入圖像的1xN向量(其中N是圖像的總數)。 – NAmorim

+0

Ooooh ok !!!現在我懂了!!!我對如何獲得這個1xN載體感到失望,我現在要這樣做,謝謝! :) – cecelia