The Inverted Multi-Index

Artem Babenko and Victor Lempitsky,CVPR2012,被引用次数:43。发现V. Lempitsky是“Learning to Count Objects in Images”的作者,传说这是一篇行人计数必读文章。行人计数的文章是V. Lempitsky在Oxford VGG组做的,本文是在Yandex(俄罗斯的Google)。
阅读时间:2015-04-23

ANN,文章follow了PQ方法(见我另一篇博文),大致意思是对原始数据进行维度划分,在各子空间上分别做k-means,将database中的每个数据映射到各子空间的centroid上,query时通过计算数据与database的centroid距离进行排序,子空间距离度量用欧式公式,总维度上的距离采用子空间距离的第二范式。文章介绍了一种新的数据结构,称之为inverted multi-index,能产生更加精细的子空间划分,且与inverted index相比并不增加检索和预处理的耗时。本文的区别主要体现在两个方面:

  1. 维度划分时仅划分为2个子空间,计算总维度的距离采用第一范式;
  2. rank时并不排序,而是用基于优先队列multi-sequence算法,高效输出top-k检索结果。

inverted index VS inverted multi-index

这里写图片描述

文章上手讨论了普通倒查表与多项倒查表的区别。普通ANN,用KMeans在全维度上聚类,query时计算向量与centroids距离,然后再计算centroids内database与query的距离,从而避免O(N)的搜索规模。但对散列database,没有明显簇的数据,强行KMeans将导致样本划分很糟糕(簇内数据方差很大),从而在query时丢失实际很近的数据点,如上图。这里可能会想到用Multiple Assignment减少误差,但该方法也有自身的缺点(超出论文)。然后文章提出可以分别对各维度做KMeans,图中交错的网格是分对横向、纵向进行低维KMeans划分。query时,各维度计算centroids,检索multiple inverted,能获得准确的邻近点。

Inverted Multi-Index

这里写图片描述

上图展示了文章算法的整个过程:query时,将数据的维度均分成两个子空间,分别进行量化,形成向量 [p1

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值