Iterative Quantization: A Procrustean Approach to Learning Binary Codes 論文理解及代碼講解

原文:http://blog.csdn.net/liuheng0111/article/details/52242491

IterativeQuantization: A Procrustean Approach to Learning Binary Codes 論文理解及代碼講解

這篇文章發(fā)表在2011年CVRP上,一作是Yunchao Gong,師從Sanjiv Kumar,關(guān)于Sanjiv Kumar可以到她的HomePage上了解。

文章目的:學(xué)習(xí)保留相似度的二值碼彰阴,以用于高效的在大規(guī)模數(shù)據(jù)集中做圖像檢索。本文介紹了在無監(jiān)督的數(shù)據(jù)集中用PCA來學(xué)習(xí)ITQ锈麸,在有監(jiān)督的數(shù)據(jù)集中用CCA來學(xué)習(xí)ITQ讼育。

首先介紹學(xué)習(xí)二值碼的重要性:

計算機視覺越來越重視學(xué)習(xí)相似性保存的二進制代碼來代表大規(guī)模的圖像集合手形。它主要有三個優(yōu)點:

(1)?????用短的二值碼來代圖像啥供,可以在內(nèi)存中存儲大量的圖像。

(2)?????比較兩幅圖像相似性库糠,用二值碼來計算hamming距離滤灯,非常快速曼玩,高校鳞骤。

(3)?????用這個方法可以代替大規(guī)模圖像索引方法。

學(xué)習(xí)二值碼有三個重要的特性:

(1)?????編碼要短黍判。(16G的內(nèi)存豫尽,存儲250million圖像在內(nèi)存里的話,對于每圖像只能使用64bits)

(2)?????圖像映射到二值碼后顷帖,兩個編碼要盡可能的相似美旧,也就是原來兩幅圖像距離大,映射到二值碼后贬墩,hamming距離也很大榴嗅。

(3)?????用來學(xué)習(xí)二值碼的算法要足夠的高效,并且對新的圖像編碼成二值碼要efficient陶舞。

ITQ的思想:

(1)?????用PCA對原始數(shù)據(jù)進行降維(如果有監(jiān)督則用CCA來降維)

(2)?????然后把把原始數(shù)據(jù)分別映射到超立方體的頂點嗽测,因為超立方體的頂點是二值碼,求解量化誤差最小的映射方式。量化二值碼的方法是:hk(x) = sgn(xwk)唠粥,用sgn函數(shù)來量化疏魏。

(3)?????本文的創(chuàng)新點是對這個超立方體在空間中旋轉(zhuǎn),然后求解初旋轉(zhuǎn)矩陣就可以得到最好的映射方式晤愧。

(注意:文章不是直接對超立方體進行旋轉(zhuǎn)大莫,而是對數(shù)據(jù)進行旋轉(zhuǎn)后,再映射到立方體上官份,相當(dāng)于物理上運動的相對性只厘,數(shù)據(jù)旋轉(zhuǎn),立方體不動舅巷,可以看成數(shù)據(jù)不動羔味,立方體在旋轉(zhuǎn),一樣的道理悄谐,文章為了方便求解旋轉(zhuǎn)矩陣介评,對數(shù)據(jù)進行旋轉(zhuǎn)库北。)

對于unsupervised code learning

ITQ 步驟可以簡答的概括為(將原始d維向量映射到c維的二值碼):

(1)假設(shè)數(shù)據(jù)是centralized爬舰,如果不是,用程序進行centralized寒瓦。X是原始數(shù)據(jù)(n*d維矩陣)情屹,中心化的matlab代碼:

sample_mean = mean(X, 1);

X = bsxfun(@minus, X,sample_mean);

(2)將原始數(shù)據(jù)做一個PCA投影,這一步主要是為了降維杂腰。具體PCA降維過程不做過多贅述垃你。

covX = X' * X / size(X,1);?

OPTS.disp = 0;

[eigVec, eigVal] =eigs(double(covX), num_bits, 'LM', OPTS);

X = X * eigVec;

(求解離散度矩陣的特征值,選出前C個最大特征值對應(yīng)的特征向量做為投影矩陣喂很,這樣就把原始數(shù)據(jù)降維到c維)

(3)二值量化

假設(shè)第二步求得降維矩陣維W惜颇,然后將數(shù)據(jù)映射到了空間中的一個一個點,現(xiàn)在就是要將空間中的點映射到一個邊長為1的超立方體中少辣,以原點為空心凌摄,方方正正的放在空間中的超立方體是二值碼的(為方面記這個超立方體為Q0)。但如果我們對數(shù)據(jù)進行一個旋轉(zhuǎn)再映射到這個空間中漓帅,會得到更小的量化誤差锨亏。這個想法類似于如果我們只是要將數(shù)據(jù)映射到邊長為1的立方體中,而不需要固定超立方體的具體位置忙干,這就等同于對數(shù)據(jù)進行旋轉(zhuǎn)器予,再映射到以Q0。

降維后的數(shù)據(jù):V=XW

旋轉(zhuǎn)后的數(shù)據(jù):VR?? (R是旋轉(zhuǎn)矩陣捐迫,必須是c*c維的正交矩陣)

最小化映射誤差:

等價于:

問題等價于最大化:

但是這里R也是未知的乾翔,B也是未知的,對于求解這樣的為題施戴,我們使用迭代求解的方法末融,固定一個钧惧,優(yōu)化另一個。

求解這個問題分兩步:

(1)????固定R,求解B

由于R是正交矩陣勾习,作者使用隨機初始化R為正交矩陣浓瞪。隨機的方法:

R = randn(bit,bit);? // 隨機生成一個矩陣

[U11 S2 V2] = svd(R); //對矩陣做SVD分解,U和V都是正交矩陣

R = U11(:,1:bit);?? //選取U作為隨機初始化的正交矩陣R

R固定了巧婶,求解B相當(dāng)簡單乾颁。最大化

因為這里B的元素只有1和-1(因為是二值碼,作者用-1表示0艺栈,這樣只是為了求解問題簡單)英岭,所以B =sgn(V R)。

?

(2)????? 固定B,求解R

這是一個線性代數(shù)的問題orthogonal Procrustes problem湿右。

這個為題的原型是對A做一個正交投影诅妹,于B盡量相似:

所以本文中,

文章迭代求解50步毅人,即可得到最后二值碼的編碼方式吭狡。

?% ITQ to find optimal rotation

for iter=0:n_iter

??? if mod(iter,10)==0

??????? fprintf('ITQ: iter: %d \n', iter);

??? end

??? Z = V * R;?????

??? UX = ones(size(Z,1),size(Z,2)).*-1;

??? UX(Z>=0) = 1;

??? C = UX' * V;

??? [UB,sigma,UA] = svd(C);???

??? R = UA * UB';

end

% make B binary

B = UX;

B(B<0) = 0;

求得B,R之后,整體的編碼方式是:

BincodeXtrainingITQ =compactbit(bsxfun(@minus, Xtraining, sample_mean) * eigVec * R > 0);

?

利用label信息的ITQ二值碼的映射:

給你一個訓(xùn)練集矩陣X丈莺,n*d維划煮,一共n個向量,每個向量有d維〉薅恚現(xiàn)在額外給你一個帶標簽的矩陣Y弛秋,n*t維,你是訓(xùn)練集矩陣的向量個數(shù)俐载,t是標簽的個數(shù)蟹略,Y(i,j)=1,表示訓(xùn)練集中的第i個向量和第j個標簽有關(guān)系。反之Y(i,j)=0表示訓(xùn)練集中的第i個向量和第j個標簽沒有關(guān)系遏佣。對PCA比較了解的人都知道挖炬,PCA是無監(jiān)督的降維方法。PCA降維出來的矩陣只是最大限度的保留矩陣的能量贼急,但是不能確保選擇的投影pc對于分類是有用的茅茂,比如原來的數(shù)據(jù)是完全可分的,但用PCA降維后完全不可分太抓。所以作者給出了利用帶標簽的降維方法空闲,CCA。

CCA 的英文全稱是Canonical Correlation Analysis走敌,目標是找到特征的投影W矩陣和標簽的投影矩陣U碴倾,是的投影后的XW和YU的相關(guān)性最大。

在本文中,作者使用

如果我們得到了W,就不用得到U跌榔,應(yīng)為我們得到W的作用是對數(shù)據(jù)進行降維异雁,而U在以后的ITQ過程中是無用的。

得到降維矩陣后僧须,其余操作和前面相同纲刀。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市担平,隨后出現(xiàn)的幾起案子示绊,更是在濱河造成了極大的恐慌,老刑警劉巖暂论,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件面褐,死亡現(xiàn)場離奇詭異,居然都是意外死亡取胎,警方通過查閱死者的電腦和手機展哭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闻蛀,“玉大人匪傍,你說我怎么就攤上這事⊙埽” “怎么了析恢?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵墨坚,是天一觀的道長秧饮。 經(jīng)常有香客問我,道長泽篮,這世上最難降的妖魔是什么盗尸? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮帽撑,結(jié)果婚禮上泼各,老公的妹妹穿的比我還像新娘。我一直安慰自己亏拉,他們只是感情好扣蜻,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著及塘,像睡著了一般莽使。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笙僚,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天芳肌,我揣著相機與錄音,去河邊找鬼。 笑死亿笤,一個胖子當(dāng)著我的面吹牛翎迁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播净薛,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼汪榔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肃拜?” 一聲冷哼從身側(cè)響起揍异,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爆班,沒想到半個月后衷掷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡柿菩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年戚嗅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枢舶。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡懦胞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凉泄,到底是詐尸還是另有隱情躏尉,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布后众,位于F島的核電站胀糜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蒂誉。R本人自食惡果不足惜教藻,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望右锨。 院中可真熱鬧括堤,春花似錦、人聲如沸绍移。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹂窖。三九已至轧抗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恼策,已是汗流浹背家卖。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留欺税,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓抗碰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绽乔。 傳聞我的和親對象是個殘疾皇子弧蝇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容