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 论文理解及代码讲解

这篇文章发表在2011年CVRP上,一作是Yunchao Gong,师从Sanjiv Kumar,关于Sanjiv Kumar可以到她的HomePage上了解。

文章目的:学习保留相似度的二值码,以用于高效的在大规模数据集中做图像检索。本文介绍了在无监督的数据集中用PCA来学习ITQ,在有监督的数据集中用CCA来学习ITQ。

首先介绍学习二值码的重要性:

计算机视觉越来越重视学习相似性保存的二进制代码来代表大规模的图像集合。它主要有三个优点:

(1)     用短的二值码来代图像,可以在内存中存储大量的图像。

(2)     比较两幅图像相似性,用二值码来计算hamming距离,非常快速,高校。

(3)     用这个方法可以代替大规模图像索引方法。

学习二值码有三个重要的特性:

(1)     编码要短。(16G的内存,存储250million图像在内存里的话,对于每图像只能使用64bits)

(2)     图像映射到二值码后,两个编码要尽可能的相似,也就是原来两幅图像距离大,映射到二值码后,hamming距离也很大。

(3)     用来学习二值码的算法要足够的高效,并且对新的图像编码成二值码要efficient。

ITQ的思想:

(1)     用PCA对原始数据进行降维(如果有监督则用CCA来降维)

(2)     然后把把原始数据分别映射到超立方体的顶点,因为超立方体的顶点是二值码,求解量化误差最小的映射方式。量化二值码的方法是:hk(x) = sgn(xwk),用sgn函数来量化。

(3)     本文的创新点是对这个超立方体在空间中旋转,然后求解初旋转矩阵就可以得到最好的映射方式。

(注意:文章不是直接对超立方体进行旋转,而是对数据进行旋转后,再映射到立方体上,相当于物理上运动的相对性,数据旋转,立方体不动,可以看成数据不动,立方体在旋转,一样的道理,文章为了方便求解旋转矩阵,对数据进行旋转。)

对于unsupervised code learning

ITQ 步骤可以简答的概括为(将原始d维向量映射到c维的二值码):

(1)假设数据是centralized,如果不是,用程序进行centralized。X是原始数据(n*d维矩阵),中心化的matlab代码:

sample_mean = mean(X, 1);

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

(2)将原始数据做一个PCA投影,这一步主要是为了降维。具体PCA降维过程不做过多赘述。

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

OPTS.disp = 0;

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

X = X * eigVec;

(求解离散度矩阵的特征值,选出前C个最大特征值对应的特征向量做为投影矩阵,这样就把原始数据降维到c维)

(3)二值量化

假设第二步求得降维矩阵维W,然后将数据映射到了空间中的一个一个点,现在就是要将空间中的点映射到一个边长为1的超立方体中,以原点为空心,方方正正的放在空间中的超立方体是二值码的(为方面记这个超立方体为Q0)。但如果我们对数据进行一个旋转再映射到这个空间中,会得到更小的量化误差。这个想法类似于如果我们只是要将数据映射到边长为1的立方体中,而不需要固定超立方体的具体位置,这就等同于对数据进行旋转,再映射到以Q0。

降维后的数据:V=XW

旋转后的数据:VR   (R是旋转矩阵,必须是c*c维的正交矩阵)

最小化映射误差:

等价于:

问题等价于最大化:

但是这里R也是未知的,B也是未知的,对于求解这样的为题,我们使用迭代求解的方法,固定一个,优化另一个。

求解这个问题分两步:

(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相当简单。最大化

因为这里B的元素只有1和-1(因为是二值码,作者用-1表示0,这样只是为了求解问题简单),所以B =sgn(V R)。

 

(2)      固定B,求解R

这是一个线性代数的问题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*d维,一共n个向量,每个向量有d维。现在额外给你一个带标签的矩阵Y,n*t维,你是训练集矩阵的向量个数,t是标签的个数,Y(i,j)=1,表示训练集中的第i个向量和第j个标签有关系。反之Y(i,j)=0表示训练集中的第i个向量和第j个标签没有关系。对PCA比较了解的人都知道,PCA是无监督的降维方法。PCA降维出来的矩阵只是最大限度的保留矩阵的能量,但是不能确保选择的投影pc对于分类是有用的,比如原来的数据是完全可分的,但用PCA降维后完全不可分。所以作者给出了利用带标签的降维方法,CCA。

CCA 的英文全称是Canonical Correlation Analysis,目标是找到特征的投影W矩阵和标签的投影矩阵U,是的投影后的XW和YU的相关性最大。

在本文中,作者使用

如果我们得到了W,就不用得到U,应为我们得到W的作用是对数据进行降维,而U在以后的ITQ过程中是无用的。

得到降维矩阵后,其余操作和前面相同。



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容