索引技术
悟道修炼中
百度资深工程师,擅长图像、文本检索
展开
-
HNSW算法原理(二)之删除结点
本篇文章继之前的一篇文章 HNSW算法原理(一) ,这次讲讲HNSW算法中一个关键问题:HNSW中如何删除元素。一、HNSW中如何删除元素一个理想的索引结构应该支持增删改查操作,由于 HNSW算法原始论文 只给出了增与查的伪代码,并没有给出删的代码,而一些项目中往往需要对已经插入到HNSW索引中的结点进行删除,比如在某些人脸识别任务中,已经1个月没有出现的人脸特征可以删除掉。下面开始分析如...原创 2019-02-24 15:17:19 · 3188 阅读 · 0 评论 -
HNSW算法原理(一)
原文链接:https://blog.csdn.net/CHIERYU/article/details/81989920HNSW算法可类比于skip lists数据结构,对于增和查操作,其与skip lists有很多相同之处,下面讲讲HNSW算法中的2个关键问题,即:如何确定待插入点的层次,如何调参。一、HSNW算法将样本插入到第几层每个样本属于哪个层呢?首先要写一个确定层次的...原创 2019-01-22 11:23:20 · 9614 阅读 · 4 评论 -
无监督图像检索 《Unsupervised Part-based Weighting Aggregation of Deep Convolutional Features...》
基于部件的CNN特征加权聚合的无监督图像检索该文提出了一种利用卷积神经网络中的 filters 作为部件检测器,采用无监督方式选择部件检测器的图像特征提取方法,属于特征聚合方法,用于图像检索领域。代码在:点击打开链接特征聚合方法一般用于具有不同个数的局部特征(如SIFT)的图像特征表示。卷积神经网络的全连接层得到的分类特征维数是固定的,无需进行特征聚合,以及其他特征聚合方法如WoF,VLAD,FV...原创 2018-06-25 21:23:42 · 3652 阅读 · 1 评论 -
VLAD和MultiVLAD
VLAD原理1.原始的VLAD设有一个特征数据集为,每个特征向量xi{x_i}都是dd维的向量。比如提取许多幅图像的SIFT特征,将这些SIFT特征组成上述集合,这里讲的词袋模型并不关心各幅图像中SIFT特征的个数及顺序。 1.聚类(clustering)。首先采用K-means等聚类算法将n个d维的特征聚类成k类,保存得到的类中心向量集合,和每个特征向量${x_i}所在的类别编号assignme原创 2017-03-23 16:22:36 · 4539 阅读 · 0 评论 -
Johnsen-lindenstrauss定理(J-L定理)
前言J-L定理是我在阅读关于汉明嵌入的文章时遇到最多的一次概念,其主要是说“一个dd维空间中的nn个点可以近似等距地嵌入到一个k≈O(logn)k \approx O(logn)维的空间”,所谓等距意思简单地理解就是保持任何两个点之间的相对远近关系。该定理是1984年发现的,在压缩感知、流行学习和降维上被应用。ps:应该是个很牛逼的定理。J-L定理表述对任意常数 0<ε<10 < ε < 1 和任原创 2017-03-23 23:03:01 · 5793 阅读 · 0 评论 -
索引算法概览
索引的定义索引技术是通过有结构、无结构的数据以一定规则存储在相应介质上,并同时提供一种访问方式的技术。从定义中可以看出,索引技术的核心是关于如何存储与访问信息,当在实际问题中面临选择何种索引技术或工具时,首先需要了解数据量的大小、数据的格式,是即时访问还是批量查询等等,有时还需要结合存储介质,比如是否使用缓存或中间缓存文件。分类本文给出的分类参照文献[1],并补充了自己的理解,分类层次结构如图所示。原创 2017-03-29 22:29:40 · 966 阅读 · 0 评论 -
七大查找算法
查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查找和哈希查找会在后续的博文中进行详细介绍。 查找定义:根据给定的某个值,在查找表中确定一个其关键字转载 2017-03-27 19:24:39 · 638 阅读 · 0 评论 -
Product Quantization for Nearest Neighbor Search论文实验
记得大学三时有个老师跟我们说,检验是否深刻理解一篇论文的做法之一就是给你一篇论文,看你能否将论文中的结果重复实验出来,当时觉得老师的说法好厉害、离我们太远,而且一直没有机会这么干过。幸运的是,最近在一大神的指导下进行了一次关于一篇检索论文的PQ实验结果,终于亲身体验了一回老师之前的话,这得感谢感谢大神了。闲话少说,这次PQ实验主要是深刻理解论文,通过实验体会PQ算法是如何将大搜索空间分解为小的搜索空原创 2015-12-25 19:22:14 · 5062 阅读 · 2 评论 -
Cartesian k-means论文理解
1.普通k-means给定nn个pp维数据点,D≡{Xj}nj=1D≡\{X_j\}_{j=1}^n,普通Kmeans算法将它们分成kk个类别,每个类别有个类中心。目标函数是: 其中矩阵CC的第i列是cic_i,分成m个类别,那么矩阵就有m列,b∈{0,1}k,且b的模长为1b ∈ \{0, 1\}^k,且b 的模长为1。K-means算法之所以很难,其中一个原因是存在一个a原创 2016-04-19 16:42:51 · 11461 阅读 · 5 评论 -
K-means hashing: An affinity-preserving quantization method for learning binary compact codes论文理解
本篇论文[1]是微软研究院的何凯明等人提出,何凯明在微软2015年一年参与发表5篇CVPR,还有好多其他高质量论文,这篇论文是其2013年CVPR上发表的一篇。下面进入正题。一、问题提出ANN检索方法中,向量量化和乘积量化方法是基于查找表的,查找表是放在内存中的。基于hamming距离的方法检索速度快,1.5ms内可以扫描完1百万64bit的hamming码,但是检索结果又没有基于查找表的好。于是何原创 2016-01-09 17:18:12 · 2943 阅读 · 6 评论 -
Product Quantization for Nearest Neighbor Search论文理解
本篇文章讲下索引结构和搜索。一、检索和距离的关系—ADC假如做法是以图搜图,那么输入图像为x,要从数据库中找出与x最匹配的图像集{y},首先提取特征,特征向量就代表图像,如果特征向量之间的距离越小,图像之间相似度越大,检索就是要找出,公式中d的选取可以是欧式距离,求x与y各个分量的差的平方和。PQ(乘积量化)中ADC的做法并不是求各个分量差的平方和,而是求x与y量化后的向量之间各个分量差的平方和。用原创 2015-12-17 22:45:23 · 8390 阅读 · 1 评论 -
vlfeat dense sift理解
一、Dense SIFT SamplingDSIFT在寻找显著点时不是尝试使用一个分类器判断是否是显著点,而是为了简化,所有显著点是均匀分布(equally dense across )在图像的各个区域的。在采样时有个涉及不同尺度下采样步长(pixel stride)是否应该相同的问题。窗口移动同样的步长,在更大的尺度下,窗口要大些,这会使得相邻窗口的重叠区域面积比率变大,从而使得采样的冗余较小尺度原创 2016-02-26 21:47:43 · 4304 阅读 · 0 评论 -
Fisher Vextor原理
一、核心Fisher vector本质上是用似然函数的梯度vector来表达一幅图像。二、基础知识的预备1. 高斯分布生活和自然中,很多的事和物的分布都可以近似的看做是高斯分布。比如说:一个班的成绩的优良中差的分布。最优秀的和最差的往往都是少数,一般人是大多数。高斯分布直观的感受是这样的:这是这种分布的概率情况的表示:转载 2016-02-17 10:46:09 · 2275 阅读 · 0 评论 -
yael在CentOS6.5上的安装
简介yael是一款用于图像检索的工具包,它实现了许多计算密集型的函数,比如聚类,最近邻算法,工具包在blas和LAPACK的基础上,向用户提供了C,Python和MATLAB的接口。它支持Fedora10、11,Ubuntu Karmic和Mac OS X,但不支持Windows(早期的版本似乎支持)。安装1.仔细阅读README发现安装yael的先决条件有三个,(1)blas和lapack (2)原创 2015-12-15 09:53:34 · 1450 阅读 · 0 评论 -
图像检索----迭代量化(Iterative Quantization)理解
一.目标数据集为:,每个样本为d维,每个样本为一个行向量。假设所有样本都是0均值的,即满足一下条件: 通过c个函数把每个样本x映射到一个二进制超立方体的一个顶点上,其中是一个列向量。因此得到每个样本x在二进制超立方体上的二进制编码,编码长度c,用矩阵表示描述这个过程就是: 其中sgn函数是对矩阵的元素级操作,得到的是同样大小的矩阵。ITQ的目标就是学习一个编码矩阵:。二.算法推导过程在应原创 2015-12-28 21:18:19 · 7199 阅读 · 3 评论 -
最近邻搜索之乘积量化(Product Quantizer)理解(一)
简介Product Quantizer是由Herv´e J´egou等人2011年在IEEEE上发表的论文《Product Quantization for Nearest Neighbor Search》中提出来的。它的提出是为了在内存和效率之间求得一个平衡,既保证图像索引结构需要的内存足够,又使得检索质量和速度比较好。对于任何基于固定维数特征的事物,它可以应用到其索引结构的建立及检索上。它属于A原创 2015-12-15 22:16:14 · 15595 阅读 · 0 评论