VLAD教程和資料 All about VLAD_VLAD

來源:互聯網
上載者:User

正如標題所示,這裡將記錄VLAD的一切。VLAD本小子雖然也讀過幾篇這方面的paper,不過讀的時候一直理解的很粗糙。所以想藉此機會開個文章,一方面驅動自己去加深對它的理解,另一方面把這些自己對它的理解記錄下來,方便自己查閱。 VLAD初步

在進行理論分析之前,先來看看VLAD長個什麼樣子,這裡本小子分步展開VLAD是怎麼得來的。 提取SIFT特徵。對於一個樣本數為N的資料庫,先對映像庫中的所有映像提取SIFT描述子,假設提取到了所有SIFT描述子數目為n,用X來表示的話,X就是一個n*128的矩陣。 聚類產生詞彙向量。假設要產生K個單詞,對X直接用Kmeans聚成K類,類中心即為單詞(也叫碼字)。 產生VLAD向量。這一步其實如果對BOW的產生過程清楚的話,這一步理解起來就非常簡單了。BOW統計的是描述子落入最近單詞裡的數目,而VLAD統計的則是這些落入最近單詞裡與該單詞的累積殘差。根據Aggregating local image descriptors into compact codes的描述:

By counting the number of occurrences of visual words, BOW encodes the 0-order statistics of the distribution of descriptors. The Fisher vector extends the BOW by encoding high-order statistics (first and, optionally, second order).

BOW做的是描述子的0階統計分布,而FV則是擴充了的BOW的高階統計。這裡引出來的FV是什麼呢。VLAD是FV的特例,這裡我們先不關注FV,我們只要藉此推得VLAD是BOW的高階統計就行。

經過上面三個步驟後,一幅映像可以用一個1*(K*128)維的向量表示。為了初步驗證上面的過程是否正確,來看看上面那篇論文中VLAD的維數是否如這裡所理解的是一個1*(K*128)維的向量,直接看實驗表:

上表中FV和VLAD的D表示維數,我們看到D=K*64,這裡為什麼不是128呢。原因在於作者對SIFT進行了PCA降維處理,將128維降到了64維。

上面VLAD產生過程用文字描述起來不夠簡潔,直接把論文裡計算VLAD的演算法流圖扒過來了,演算法流圖如下:

提取VLAD

在對VLAD有了初步的認識後,接下來我們可以動手提取VLAD,通過實驗來進一步瞭解VLAD。

(待續)

參考: 機器學習筆記——Fisher vector coding Large-scale visual recognition Novel patch aggregation mechanisms VLAD from: http://yongyuan.name/blog/all-about-vlad.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.