ITQ(Iterative Quantization)迭代量化方法詳解 hash 哈希算法

看過的文章,不做記錄,即便當時理解透了,過一段時間後,知識總會模糊不清。所以從現在開始,對一些自己閱讀過的一些精彩的文章,悉心記錄,方便自己查閱溫故,當然如果對同行有所裨益的話,亦是一件開心的事。
好了,迴歸正題。這篇文章發表在2011年CVRP上,一作是Yunchao Gong,師從Sanjiv Kumar,關於Sanjiv Kumar可以到她的HomePage上了解。

 

這篇文章的主要思路是先對原始空間的數據集 XRn×d 用PCA進行降維處理,設經過PCA降維後的數據集爲 VRn×c ,該問題就可以轉化爲將該數據集中的數據點映射到一個二進制超立方體的頂點上,使得對應的量化誤差最小,從而而已得到對應該數據集優良的二進制編碼。

 

對於PCA降維部分,不做詳解,具體可以參閱該文[1]。設 vRc 爲原特徵空間中某一數據點經過PCA降維後的表示形式,對應在超立方體中的頂點用 sgn(v){1,1}c 來表示,要使量化誤差最小,即 vRc 與 sgn(v){1,1}c的歐式距離最小,即 min||sgn(v)v)||2 ,對於所有的數據點進行二進制編碼後用B表示,PCA降維後 V=X×W,對整個數據集爲 min||BV||2 。由於對矩陣進行旋轉可以降低量化誤差,如下圖示:


從圖1可以看出,對投影后的矩陣V進行隨機旋轉後,量化誤差降低至0.93,對於找到的最優的旋轉矩陣,量化誤差降低至0.88(矩陣與正交矩陣相乘實際上就是對矩陣做旋轉)。基於這樣一個事實,考慮將投影后的數據集V進行旋轉變換, min||BV||2 便變換爲 min||BVR||2 ,R爲旋轉矩陣。整個問題域就變成了 min||BVR||2 的優化問題,即找出最優的旋轉矩陣R和與之對應的編碼B。該式的優化可以採用交替跌倒的求解方法:先生成隨機矩陣並對其進行SVD分解得到對應的正交矩陣作爲R的初始值,然後固定R求B, B=sgn(V×D) (注意這裏截距 b=0 ,因爲在原空間已對數據中心化,非常重要),B求出來再通過對 B×V 進行SVD更新R,交替迭代若干次即可,文中選用的是50次。

 

通過上面過程便可經過PCA降維後的數據完成編碼過程,後面的相似性採用漢明距離進行度量,這裏不贅述。

 

總結一下,整個過程可以概括爲:先對數據集進行PCA降維,然後尋找量化誤差最小的旋轉矩陣即可得到對應該最優旋轉矩陣下的特徵向量的二進制編碼。

 

論文給出了檢索飛機的一個實例效果:


Matlab源代碼:Yunchao Gong Homepage上公開了源碼,不過並提供數據庫,直接運行不了,我已經對源碼進行了modify,有需要的可以看LSH、ITQ、SKLSH圖像檢索實驗實現(Code)這篇文章,在這篇文章中提供了modified後的代碼,也可以直接到我的GitHub主頁上下載modified後的代碼。

Github: https://github.com/willard-yuan/ITQ_ImageRetrieval

[1]. Yunchao Gong and S. Lazebnik. Iterative Quantization: A Procrustean Approach to Learning Binary Codes. In: IEEE International Conference on Computer Vision and Pattern Recognition (CVPR), 2011.


發佈了11 篇原創文章 · 獲贊 25 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章