CN114595350A - 一种百亿级图像快速搜索的方法 - Google Patents
一种百亿级图像快速搜索的方法 Download PDFInfo
- Publication number
- CN114595350A CN114595350A CN202111489763.3A CN202111489763A CN114595350A CN 114595350 A CN114595350 A CN 114595350A CN 202111489763 A CN202111489763 A CN 202111489763A CN 114595350 A CN114595350 A CN 114595350A
- Authority
- CN
- China
- Prior art keywords
- level
- code
- sample
- gemfield
- stage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 239000013598 vector Substances 0.000 claims abstract description 122
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 33
- 238000004364 calculation method Methods 0.000 claims abstract description 26
- 230000011218 segmentation Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 7
- 238000013528 artificial neural network Methods 0.000 claims abstract description 6
- 230000009467 reduction Effects 0.000 claims abstract description 5
- 238000013461 design Methods 0.000 claims description 18
- 230000000694 effects Effects 0.000 claims description 11
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 238000013139 quantization Methods 0.000 claims description 4
- 230000004927 fusion Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000001514 detection method Methods 0.000 description 5
- 238000000513 principal component analysis Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
Landscapes
- Engineering & Computer Science (AREA)
- Library & Information Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机软件技术领域,涉及信息搜索技术领域,具体涉及一种百亿级图像快速搜索的方法。包括:图像样本数据的处理,利用深度神经网络对百亿级图像样本数据进行图像特征提取,经PCA降维后,形成了图像的特征向量库;利用IVPQ算法构建至少两级PQ组,每一级PQ组至少包含3个PQ,保证特征向量的切分数量两两互质,从而形成特征向量索引库;基于该特征像索引库,可以在检索时获得最优候选集并对最优候选集进行相似度计算和排序,最后输出最终的排序TOPN。本发明比FAISS有更高的准确性,在单服务器运行中,Top10的召回率达61.8%,运行稳定性更好,支撑220真实并发,吞吐率高达10000次且平均响应时间在30ms,检索效率更高。
Description
技术领域
本发明涉及计算机软件技术领域,涉及信息搜索技术领域,具体涉及一种百亿级图像快速搜索的方法。
背景技术
随着互联网计算机的快速发展,网络资源的进入喷发阶段,尤其是图像资源往往已经超出百亿级的范围,这给实际应用中的图像检索带来一定的挑战。
最初的图像检索的方式是传统是基于文本的,即通过图片的名称、文字信息和索引关系来实现查询功能。然而这种方式具有很大的局限性。取而代之的是基于内容的图像检索,即CBIR(Content-based image retrieval),是计算机视觉领域中关注大规模数字图像内容检索的研究分支。最典型的CBIR系统,允许用户输入一张图片,以查找具有相同或相似内容的其他图片。而这一概念于1992年由T.Kato提出的。他在论文中构建了一个基于色彩与形状的图像数据库,并提供了一定的检索功能进行实验。此后,基于图像特征提取以实现图像检索的过程以及CBIR这一概念,被广泛应用于各种研究领域,如统计学、模式识别、信号处理和计算机视觉。相关研究已发展近20年,传统的搜索引擎公司包括Google、百度、Bing都已提供一定的基于内容的图像搜索产品。如:Google Similar Images,百度识图。
在目前的图像检索领域,图像检索大体分成三块:特征提取、存储和检索。首先需要提取图像的特征信息,如用特征向量来表达原始图像,然后将量化后的样本存储到数据库中,检索就是将待查询的向量从样本库中寻找相似向量。
如暴力搜索,检索本质上是一个向量匹配的过程,可以通过比较向量的欧氏距离或曼哈顿距离等来比较它们之间的相似度。以欧式距离为例,比较的过程就是对于一个输入的查询向量,遍历数据库中的样本,计算查询向量和每个样本的欧式距离,返回最接近的k个样本。虽然是精确匹配,但存在三个弊端:实际应用中样本向量巨大,可能是百亿或千亿级别,存储开销很大;逐个遍历时间在O(n)量级,遍历时间耗费很大;计算向量之间的欧式距离开销很大。
为了解决上述这些问题,PQ(product quantization)算法应用而生。PQ算法属于一种经典的ANN(approximate nearest neighbor,近似最近邻算法)算法,PQ系列的算法大致的套路分三个阶段:训练、量化、查询;虽然,相对于暴力检索来说,节约了存储空间,减少了运算量。但是由于不是寻找最近邻向量,而是退而求其次寻找近似最近邻向量,所以必然会带来一些误差。
例如,2017年,Facebook AI Research(FAIR)开源了一个名为Faiss的库,主要用于有效的相似性搜索(Similarity Search)和稠密矢量聚类(Clustering of densevectors)。通过Faiss 进行相似性搜索时,10亿图像数据集上的一次查询仅耗时17.7微秒,速度较之前提升了8.5 倍,且准确度也有所提升。Faiss的主要索引算法是PQ算法,于2011年,Herve Jegou等学者发表的论文《Product Quantization for Nearest NeighborSearch》中首次提出,主要用于解决近邻搜索问题。
FAISS中PQ(Product Quantizer)思路,是为了在内存和效率之间求得一个平衡,既保证图像索引结构需要的内存足够,又使得检索质量和速度比较好。核心思想是利用聚类中心的 ID(centroid)来替代实际特征值,从而大大降低存储开销。在执行一次检索的时候,需要计算得到8组256个L2距离,这些距离是一个256x8的表,称之为Gemfield表,附图8中的每一条从sub-vector0到sub-vector7的路径称之为Gemfield表的一个code,实际上就对应了8 个centroid,也就是压缩后的特征。
上述的Gemfield表可以表达256^8个值,这是一个很大的数值。100亿/256^8=5.4e-10,每个路径上存在有效记录的概率已经小到极致。这表明已经不可能从路径出发去寻找最小距离了。
FAISS提供了一个IVF(倒排索引)的思路,也就是在计算最小距离之前,先利用聚类算法计算一个候选集,假定这个候选集占数据总量的1%。然后只把1%的候选集去Gemfield表中查找距离并累加,最后计算出TOPN,如附图9所示。
由于IVF计算量很小,可以忽略,只考虑查表过程中的浮点加的情况下,100亿x8x1%=8 亿次,单线程预计耗时在2s以上。另外,IVF和唯一Gemfield表带来的边缘效应会降低检索准确性。实际上Faiss的检索结果,R@10=0.376,也就是说,检索的结果TOP10与实际重合率只有37.6%。
可见,在实际应用中针对百亿级图像的样本来进行检索,亟需一种快速准确的检索方法,并满足一定的并发数和准确性的要求。
发明内容
为更有效的解决上述面临的问题,本发明基于目前FAISS中的问题,提出了一种百亿级图像快速搜索的方法,减少了IVF和Gemfield的边缘效应,设计互质切分方案,提高了效率,减少候选集的数量,实现了快速、准确性的要求。
本发明请求保护以下技术方案:
本发明提供一种百亿级图像快速搜索的方法,其特征在于,包括以下步骤:
第一步,图像样本数据的处理,利用深度神经网络对百亿级图像样本数据进行图像特征提取,经PCA(PCA(Principal Component Analysis)是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。)降维后,形成了图像的特征向量库;
第二步,基于所述特征向量库,利用倒排索引的乘积量化IVPQ算法构建至少两级PQ;每一级PQ组至少包含3个PQ,保证特征向量的切分数量两两互质,从而形成特征向量索引库;
第三步,基于所述特征像索引库,可以在检索时获得最优候选集并对最优候选集进行相似度计算和排序,最后输出最终的排序TOPN。
优选的,本发明的方法中构建两级PQ,即第一级PQ、第二级PQ;利用所述第一级PQ输出一定数量的最优候选集,以样本ID的方式传到第二级PQ;利用所述第二级PQ对最优候选集进行相似度计算和排序。
优选的,所述第一级PQ设计的Gemfield表的code数目较少设计,每一个code对应大约100~1000个样本,每一个code会均指向一定数量的图像,所述第一级PQ通过code去索引ID列表;
所述第二级PQ设计的Gemfield表的code数目较大,使得每个code上存在有效记录的概率极小,所述第二级PQ通过ID去映射一个code。
进一步的,所述第一级PQ或第二级PQ的组成为:聚类中心向量和对应的PQ字典。
其中,所述聚类中心向量是指:
在总样本中随机抽取一定数量的样本向量,然后将其平分为n份,并对平分后的每一份所述样本向量用k-means算法进行聚类,并记录相应的聚类中心向量Vij(0≤i≤a1-1,0≤ j≤a2-1);其中a1、a2,代表所述PQ是a1x a2结构;
将总样本中的每一个样本平分为n份后,记为Ei(0≤i≤a1-1),每一个Ei与对应的a2个聚类中心向量计算L2距离,并经过比较得到最近的一个聚类中心ID;连续n次可以得到n个聚类中心ID,每个ID都是0~a2-1的数值,将这n个ID拼接在一起,得到该样本在该PQ 上对应的code。
所述对应的PQ字典是指:
所述第一级PQ通过code索引样本ID列表,构建第一级PQ字典,所述第一级PQ字典的作用是通过code得到一系列的样本ID列表;
所述第二级PQ通过样本ID映射一个code,构建第二级PQ字典,所述第二级PQ字典的作用是通过样本ID得到相应的code,从而可以在Gemfield表中查询并累计相似距离。
优选的,在本发明的方法中,针对百亿样本,所述搜索方法包含的两级PQ具体包括:3 个第一级PQ和3个第二级PQ,即共有6个PQ。
进一步的,所述第一级PQ输出一定数量的最优候选集的过程包括:3个第一级PQ是PQ-A、PQ-A和PQ-C;
(1)计算PQ-A、PQ-A和PQ-C对应的Gemfield表,记为Gemfield-A、Gemfield-C和Gemfield-C;
(2)分别从三个Gemfield表中取出TopN条最小路径,N取500即可;
(3)每一条路径对应的一个code编码,读取code编码字典,然后将相应的样本ID放到对应的候选最优集合中,当从该PQ中取得的样本数大于10万,则终止;否则继续该步骤;
(4)将PQ-A、PQ-A和PQ-C取出来的对应的最优候选集取并集即可得到最终的第一级 PQ的最优候选集。
进一步的,所述Gemfield的计算方法是:
在PQ-A中,PQ-A是3x256结构,聚类算法是把向量分成3段,每段聚类出256个类别,对应256个聚类中心向量,每个聚类中心向量:Vij(0≤i≤2,0≤j≤255)表示第i段的j个向量;
将输入向量V分成3段,记为Ei(0≤i≤2),每一个Ei(0≤i≤2)与对应的256个聚类中心向量计算L2距离,将3x256个距离组合后即为Gemfield表,是3行256列的二维数组。
进一步的,所述取TopN条最小路径的计算方法是:
(1)将得到的所述PQ-A中对应的Gemfield表,即3行256列的二维数组,初始化一个空的路径列表,即code列表;
(2)对于每一行256个数值进行从小到大排序,得到3个排序结果,Gij(0≤i≤2,0≤j≤ 255),并记录每个数值在原来Gemfield表中的位置;
(3)设计3个标记T0,T1和T2,初始化为零,表示当前每行的标记;
(4)取T0,T1和T2对应的数值对应的code,并将这条路径添加到路径列表中;
(5)判断路径列表的数量是否达到要求,当路径列表的数量没有达到要求时,则比较Δd0=G0(T0+1)-G0T0、Δd1=G1(T1+1)-G1T1和Δd2=G2(T2+1)-G2T2,取最小的Δd,并设定当Δd1最小时,则T1=T1+1,并返回到第(4)步;当路径列表的数量达标时,则终止计算。
进一步的,所述第二级PQ对最优候选集进行相似度计算和排序,使得特征向量切分的数量两两互质,最大限度避免边缘效应,最后给出最终的排序TOPN,具体包括:
(1)对于每一个候选样本ID,计算每一个PQ对应的相似距离:通过查询所述第二级PQ 字典,得到相应的code,所述第二级PQ对应的code是一个8字节的整型数值;按照构建字典时的拼接方式对这个code数值进行反解码,就可以得到一个Gemfield路径;对Gemfield路径上的数值进行相加得到的数值即为相似距离;
(2)对每个PQ得到的距离的加权融合,得到最终的相似距离:
(3)根据每一个样本按照相似距离从小到大排序,得到最终的检索结果,最终的排序 TOPN。
与现有技术相比,本发明的优点在于:减少了IVF和Gemfield的边缘效应,设计互质切分方案,提高了效率,减少候选集的数量,实现了快速、准确性的要求。本发明比FAISS有更高的准确性,TOP10的召回率达到了61.8%;同时在运行时稳定性更好,可支撑220真实并发,吞吐率高达10000次以及有较高的检索效率,平均检索响应时间在30ms左右。
附图说明
图1.本发明提供的一种百亿级图像快速搜索的方法步骤示意图。
图2.本发明提供的另一种百亿级图像快速搜索的方法总体流程图,其中,主要采用两级 PQ。
图3.本发明提供的另一种百亿级图像快速搜索的方法中的第一级PQ设计的Gemfield 表的展示图,其中A代表的是256x3的Gemfield表,B代表的是64x4的Gemfield表,C代表的是32x5的Gemfield表。
图4.本发明提供的另一种百亿级图像快速搜索的方法中第一级PQ字典的设计图。
图5.本发明提供的另一种百亿级图像快速搜索的方法中的第二级PQ设计的Gemfield 表的展示图,其中D代表的是512x7的Gemfield表,E代表的是256x8的Gemfield表,F代表的是128x9的Gemfield表。
图6.本发明提供的另一种百亿级图像快速搜索的方法中的第二级PQ字典的设计图。
图7.采用本发明提供的另一种百亿级图像快速搜索的方法的检索流程图。
图8.一种PQ中的一个路径(code)示例图。
图9.IVF(倒排索引)的思路的示例图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆益不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统,产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
现有技术公开的PQ算法的基本思想:
(1)利用样本的code代替特征向量,减少了存储开销(一个2048维的特征向量的存储开销是8k,而一个code的开销最多是8字节,缩减到千分之一)。
(2)用与向量中心的距离代替与实际向量的距离,减少计算量。以输入一个2048维的向量在100亿的向量库中利用L2相似距离算法来检索为例,比较暴力计算算法和PQ算法的计算次数,L2计算中的一轮“减法>乘法>加法”记为一次计算量。
(3)暴力计算:100亿x2048=2.048e+13
(4)PQ算法:256x2048=5.24e+5。
相对于暴力检索来说,PQ算法节约了存储空间,减少了运算量。
与现有技术不同的是,本发明主要是构建多级PQ组,让每一有不同的分工,每一级的 PQ组有多个PQ,通过向量切分数量的两两互质,减少漏检的概率。
本发明提供了一种百亿级图像快速搜索的方法,如图1所示,其中包括以下步骤:
S1,图像样本数据的处理,利用深度神经网络对百亿级图像样本数据进行图像特征提取,经PCA降维后,形成了图像的特征向量库.
S2,基于所述特征向量库,在Faiss框架下利用倒排索引的乘积量化IVPQ算法构建至少两级PQ;每一级PQ组至少包含3个PQ,保证特征向量的切分数量两两互质,从而形成特征向量索引库。
S3,基于所述特征像索引库,可以在检索时获得最优候选集并对最优候选集进行相似度计算和排序,最后输出最终的排序TOPN。
由于单个PQ算法存在的边缘效应:通过聚类的方式取得候选级,从而减少计算范围的方式,可能会丢失最相似的检索结果。本发明采用多个互质PQ方案,通过将特征向量多次切分,每次的切分数量互质,来控制和影响聚类结果,从而减少这种边缘效应。
互质数为数学中的一种概念,即两个或多个整数的公因数只有1的非零自然数。公因数只有1的两个非零自然数,叫做互质数。
第一个PQ-A,256x3结构,它将2048维的特征向量分成3份,每一份分别进行256聚类;第二个PQ-B,64x4结构,它将2048维的特征向量分成4份,每一份分别进行128聚类;第三个PQ-C,32x5结构,它将2048维的特征向量分成5份,每一份分别进行32聚类。
这里假设每个PQ,相同相近似的特征向量聚类到不同的类中的概率是P(P<1),我们取得候选集的漏检概率就是P;但是,经过3次PQ后,取得候选集的漏检概率就变成了P^3。假设一个PQ的漏检概率是30%的话,三个PQ的漏检概率就变成了2.7%。因此,设计互质切分的PQ思路,减少IVF和Gemfield的边缘效应,改善了PQ算法检索准确性的问题。
同时,本发明设计至少两级PQ,如第一级PQ专注于产生候选集,第二级PQ专注于候选集排序,大大提高了检索效率。
本发明旨在设计一种有限资源下解决大规模图像检索的算法和框架。虽然现有技术中的多服务器暴力堆砌也能解决百亿图像的检索,但是本发明提供的方法单服务器的状态下即可实现百亿级图像的准确快速的搜索,这里需要注意的是,在本发明提供的算法和框架下再使用多服务器,那解决问题的规模上限就会更高。
因此,下面的实施例主要基于本发明提供的方法在单服务器中的应用。
本实施例中是在下述单服务器的硬件配置中执行,其中:
(1)256线程x2.0GHZ的CPU;
(2)1024G的内存;
(3)10TB的磁盘空间/NAS。
在本实施例中,提供的一种百亿级图像快速搜索的方法,如图2所示,本发明提供的另一种百亿级图像快速搜索的方法总体流程图,其中,主要采用两级PQ,具体包括以下过程:
S1图像样本数据的处理,即初始化百亿样本库,利用深度神经网络对百亿级图像样本数据进行图像特征提取,经PCA降维后,形成了图像的特征向量库。
在本实施例中,图像样本数据的处理(初始化百亿样本库)包括两个部分:第一部分,图像特征向量抽取,采用深度神经网络(Google InceptionV3)分类训练过程中的某一级 (nceptionV3/AuxLogits/Conv2d_2a_5x5/Relu:0)输出,经PCA降维后得到的图像特征向量;第二部分,百亿级样本图像的特征向量库,本实施例中直接在百亿图像特征向量中进行索引架构设计和构建。
S2基于所述特征向量库,利用倒排索引的乘积量化IVPQ算法构建两级PQ;其中,构建两级PQ,即第一级PQ、第二级PQ。其中每一级PQ组包含3个PQ,保证特征向量的切分数量两两互质,从而形成特征向量索引库。
S3基于所述特征像索引库,可以在检索时获得最优候选集并对最优候选集进行相似度计算和排序,最后输出最终的排序TOPN;其中,利用所述第一级PQ输出一定数量的最优候选集,以样本ID的方式传到第二级PQ;利用所述第二级PQ对最优候选集进行相似度计算和排序,最后输出最终的排序TOPN。
在本实施例中,所述第一级PQ的设计与所述第二级PQ是不同的,其中:
优选的,所述第一级PQ设计的Gemfield表的code数目较少设计,每一个code对应大约100~1000个样本,优选的,PQ-A和PQ-B都是600,PQ-C是300,每一个code会均指向一定数量的图像,所述第一级PQ通过code去索引ID列表。
如图3所示,其中的第一级PQ,包含三个PQ,即PQ-A,PQ-B,PQ-C,对应的code 数目为256^3,64^4和32^5,相对于百亿来说,均为一个比较小的数量级,每一个code会均指向一定数量的图像,这个量级是300~600。其中,PQ-A将vector拆分为3个sub-vector, code数为256^3,约1677万,平均每code样本数为100亿/1677万,约600个,每个code 占位数24,设计字节数为4。PQ-B将vector拆分为4个sub-vector,code数为64^4,约1677 万,平均每code样本数为100亿/1677万,约600个,每个code占位数24,设计字节数为4。 PQ-C将vector拆分为3个sub-vector,code数为32^5,约3355万,平均每code样本数为100 亿/3355万,约300个,每个code占位数25,设计字节数为4,详见下表1。
表1本发明提供的另一种百亿级图像快速搜索的方法中的第一级PQ
PQ名称 | 拆分情况 | code数 | 每code样本数 | 每Code设计字节数 |
PQ-A | 3x256 | 1677万 | 600 | 4 |
PQ-B | 4x64 | 1677万 | 600 | 4 |
PQ-C | 5x32 | 3355万 | 300 | 4 |
优选的,所述第二级PQ设计的Gemfield表的code数目较大,优选的PQ-E(8x256),256^8=1.8447e+19,使得每个code上存在有效记录的概率小到极致优选的PQ-E(8x256),100 亿/256^8=5.4e-10,所述第二级PQ通过ID去映射一个code。
如图5所示,其中的第二级PQ设计的Gemfield表的code数目较大,以PQ-E为例,对应的code数目code数256^8极大,100亿/256^8=5.4e-10,每个code上存在有效记录的概率已经小到极致。其中D代表的是(PQ-D)512x7的Gemfield表,E代表的是(PQ-E)256x8 的Gemfield表,F代表的是(PQ-F)128x9的Gemfield表。PQ-D将vector拆分为7个sub-vector,code数512^7极大,平均每code样本数极小,占位数为63,设计字节数为8。PQ-E将vector 拆分为8个sub-vector,code数256^8极大,平均每code样本数极小,占位数为64,设计字节数为8。PQ-F将vector拆分为9个sub-vector,code数128^9极大,平均每code样本数极小,占位数为63,设计字节数为8。详见下表2。
表2本发明提供的另一种百亿级图像快速搜索的方法中的第二级PQ
PQ名称 | 拆分情况 | 每Code设计字节数 |
PQ-D | 7x512 | 8 |
PQ-E | 8x256 | 8 |
PQ-F | 9x128 | 8 |
在本实施例中,还包括所述第一级PQ或第二级PQ的组成为:聚类中心向量和对应的PQ字典,也就是构建的百亿特征向量的索引库。
其中,所述聚类中心向量是指:首先,对于每一个样本,计算对应PQ的code编码。然后,在总样本中随机抽取一定数量的样本向量,然后将其平分为n份,并对平分后的每一份所述样本向量用k-means算法进行聚类,并记录相应的聚类中心向量Vij(0≤i≤a1-1,0≤ j≤a2-1);其中a1、a2,代表所述PQ是a1x a2结构。将总样本中的每一个样本平分为n 份后,记为Ei(0≤i≤a1-1),每一个Ei与对应的a2个聚类中心向量计算L2距离,并经过比较得到最近的一个聚类中心ID;连续n次可以得到n个聚类中心ID,每个ID都是0~a2-1 的数值,将这n个ID拼接在一起,得到该样本在该PQ上对应的code。
这里以PQ-A为例,PQ-A是3x256结构,聚类算法是把向量分成3段,每段聚类出256个类别,对应256个聚类中心向量,每个聚类中心向量:Vij(0≤i≤2,0≤j≤255)表示第 i段的j个向量。在总样本中随机抽取50万样本,然后将这50万的向量平均分成3份(如果无法平均,最后一份得到剩余部分)。对于每一份的50万子样本用k-means算法进行聚类,并记录相应的聚类中心向量Vij(0≤i≤2,0≤j≤255)。对于百亿样本中的每一个样本,将样本按照第一步的方法分成3份,记为Ei(0≤i≤2),每一个Ei(0≤i≤2)与对应的256 个聚类中心向量计算L2距离,并经过比较得到最近的一个聚类中心ID。连续3次可以得到 3个聚类中心ID,每个ID都是0~255的数值,将这三个ID拼接在一起,用一个4字节整型数值表示,这就是该样本在该PQ上对应的code。所述第二级的code需要用一个8字节的整数数值表示。
在本实施例中,所述对应的PQ字典是指:
优选的,如图4所示,本发明提供的另一种百亿级图像快速搜索的方法中第一级PQ字典的设计图。第一级PQ字典(从code索引到样本ID),所述第一级PQ通过code索引样本 ID列表,构建第一级PQ字典,所述第一级PQ字典的作用是通过code得到一系列的样本ID 列表。
优选的,如图6所示,本发明提供的另一种百亿级图像快速搜索的方法中的第二级PQ 字典的设计图。第二级PQ字典(从样本ID索引到code),所述第二级PQ通过样本ID映射一个code,构建第二级PQ字典,所述第二级PQ字典的作用是通过样本ID得到相应的code,从而可以在Gemfield表中查询并累计相似距离。
综上,本实施例中的两级PQ的组成为:聚类中心向量和对应的Q字典;因此,最终百亿样本检索库的就转化成设计的两级PQ,如附图3、图5所示,3个第一级PQ和3个第二级PQ,共计6个PQ。
这里需要注意的是,考虑到平衡准确性和计算复杂度关系,如果想要更高的准确性,每一级PQ组可以考虑更多的PQ,如每一级PQ设置4个或以上的PQ;因此,本发明应当也包括上述可以在本领域实施的方案。
为了进一步展示本发明,这里列举出采用本发明提供的另一种百亿级图像快速搜索的方法的检索流程,如图7所示,采用本发明提供的另一种百亿级图像快速搜索的方法的检索流程图。
在本实施例中,首先,取一个待检索,输入向量V是一个2048维的向量,记为xq;
输出一定数量的最优候选集:其中,根据所述第一级PQ 3个第一级PQ,PQ-A、PQ-A和PQ-C为例,
(1)计算PQ-A、PQ-A和PQ-C对应的Gemfield表,记为Gemfield-A、Gemfield-C和Gemfield-C;
(2)分别从三个Gemfield表中取出TopN条最小路径,N取500即可;这里需要说明的是,每一条路径大约300~600样本ID,考虑提取10万候选样本,需要10万/300=333条,考虑一些冗余量,取500。如果500条路经也没有取出10万样本ID,则直接输出样本ID即可。
(3)每一条路径对应的一个code编码,读取code编码字典,然后将相应的样本ID放到对应的候选最优集合中,如果从该PQ中取得的样本数大于10万,则终止;否则继续该步骤;
(4)将PQ-A、PQ-A和PQ-C取出来的对应的最优候选集取并集即可得到最终的第一级 PQ的最优候选集,即一个候选样本ID的列表。
关于上述样本数大于10,这里需要注意的是,对于候选集的数量一般不纠结少和多的概念,暴力计算候选集就是样本数即100亿,但是可以达到100%准确性;候选集到底多少才能满足也是平衡准确性和性能后的一种选择。本发明的样本数量取10万也是综合考虑性能和准确性后给出的一个经验值。
根据上述方式,分别计算出第一级PQ及第二级PQ中的6个Gemfield表,记为:Gemfield-A,Gemfield-B,…Gemfield-F。
优选的,在所述(1)步骤中,所述Gemfield的计算方法是:
在PQ-A中,PQ-A是3x256结构,聚类算法是把向量分成3段,每段聚类出256个类别,对应256个聚类中心向量,每个聚类中心向量:Vij(0≤i≤2,0≤j≤255)表示第i段的j 个向量;将输入向量V分成3段,记为Ei(0≤i≤2),每一个Ei(0≤i≤2)与对应的256 个聚类中心向量计算L2距离,将3x256个距离组合后即为Gemfield表,是3行256列的二维数组。这里的输入向量就是需要检索的向量(2048维),Vij向量的维度是2048/3维(682, 682,684)。
优选的,在所述(2)步骤中,所述取TopN条最小路径的计算方法是:
a.初始化一个空的路径列表(code列表),将得到的所述PQ-A中对应的Gemfield表,即3行256列的二维数组,初始化一个空的路径列表,即code列表;
b.对于每一行256个数值进行从小到大排序,得到3个排序结果,Gij(0≤i≤2,0≤j≤ 255),并记录每个数值在原来Gemfield表中的位置;
c.设计3个标记T0,T1和T2,初始化为零,表示当前每行的标记;
d.取T0,T1和T2对应的数值对应的code,并将这条路径添加到路径列表中;
e.判断路径列表的数量是否达到要求,当路径列表的数量没有达到要求时,则比较Δd0=G0(T0+1)-G0T0、Δd1=G1(T1+1)-G1T1和Δd2=G2(T2+1)-G2T2,取最小的Δd,并设定当Δd1最小时,则T1=T1+1,并返回到第(4)步;当路径列表的数量达标时,则终止计算。
进一步的,在本实施例中,所述第二级PQ对最优候选集进行相似度计算和排序,使得特征向量切分的数量两两互质,即特征向量切分:PQ-D是7,PQ-E是8,PQ-F是9,最大限度避免边缘效应,最后给出最终的排序TOPN,具体包括:
对于前述第(4)步骤中给出的每一个候选样本ID,计算每一个PQ对应的相似距离:通过查询所述第二级PQ字典,得到相应的code,所述第二级PQ对应的code是一个8字节的整型数值;按照构建字典时的拼接方式对这个code数值进行反解码,就可以得到一个Gemfield 路径;对Gemfield路径上的数值进行相加得到的数值即为相似距离。根据上述方式,分别在 PQ-D、PQ-E和PQ-F中计算相似距离。
对每个PQ得到的距离的加权融合,得到最终的相似距离:将PQ-D、PQ-E和PQ-F中计算出来的相似距离进行加权融合,得到最终的相似距离,本实施例中,取这3者的平均值。将样本的相似距离进行排序,输出最相似的样本,即根据每一个样本按照相似距离从小到大排序,得到最终的检索结果,也就是输出TOPN。
综上,本发明利用互斥分割的思想解决边缘效应问题,从而降低漏掉相似样本的概率,最终的结果是提高了检索的准确性。在本实施例中,通过第一级PQ直接得到相似候选集。通过第二级的多个PQ得到相似距离进行融合,从而得到一个更加可靠的相似距离,最终的结果是提高了检索的准确性。分别为两级PQ设计了不同的字典,大大降低了检索的计算量,最终的结果是检索效率的提升。
还需要说明的是,关于本发明提供的方法中,涉及两级PQ,还是扩展到三级甚至多级的说明:
本实施例提及的二级PQ中,第一级采用较粗的颗粒进行样本划分,主要输出候选样本,第二级采用较细的颗粒进行样本划分,主要计算样本与输入向量的相似距离;
如果需要更加精准的排序(更加接近正确排序),可以设计第三级PQ,设计更细的颗粒样本划分方式,设计由23x256、24x256、25x256这三个PQ组成第三级PQ;这样,第一级的定位是粗筛候选,第二级的定位是粗排序,第三级的定位是精细排序。一般情况下,对于一个TOP100的检索需求,设计第一级向第二级传输10~20万的候选样本ID;第二级向第三级传输排序后的TOP500样本ID,第三级完成TOP500样本的精细排序,输出最终最相似的TOP100检索结果;
对于正确排序的解释,正确排序是指输入向量与样本直接进行L2距离计算(或者其他算法,本发明采用L2距离算法),然后把相似距离进行从小到大排序,这个排序称之为正确排序。本发明的排序的宗旨之一就是接近这个正确排序。因此,本发明还应当包括本领域技术人员所知的其他可行的距离算法。
因此,可以按照划分颗粒从大到小的原则,按照需要设计四级甚至更多级别的架构。
为了进一步展示本发明的优势,本实施例中进一步对内存空间、性能等的影响进行了分析。具体如下:
1、内存的分析
在实际应用中,为了减少存储开销和增加命中速度,优选的可以将样本ID序列化,从0 开始编号。
1.1常驻内存分析
(1)计算Gemfield表所需的centroid(质心ID)和centrovector(质心向量),20MB左右(可忽略);
(2)100亿样本,每个样本6个PQ码:100亿x(4+4+4+8+8+8)=335GB;
(3)第一级PQ的3个字典:100亿x8x3=223GB。
上述可说明,基于百亿样的搜索使用本发明能在一台服务器中实现检索。
1.2单任务运行内存分析
(1)存储6个Gemfield表:64KB
(2)计算20万候选集以及相似距离:20万x(8+8)=3MB
(3)保留TOP1000及相似距离:1000x(8+8)=16KB
因此单任务内存消耗不超过4MB,200并发的情况下,内存占用不到1GB。
2、准确性及性能分析
由于样本划分数量两两互质,在第一级PQ中最大限度避免了边缘效应,价降低了漏掉正确检索结果的概率;在第二级PQ计算相似距离的过程中,多个PQ融合的相似距离比单个 PQ计算出的相似距离也更加准确。
试验1:为了同FAISS比较准确性,本实施例构造1B(10亿)的特征,实测Top10的召回率达到了61.8%(R@10=0.618),大大超过FAISS的37.6%(R@10=0.376)。
试验2:为了满足设计需求,本实施例还构造10B(100亿)的特征,测算运行稳定性、并发情况以及检索效率。
(1)稳定性:200并发的情况下,检索服务的内存稳定在600GB左右;CPU占用率在70%左右;试运行24H无异常。
(2)并发情况:最高可支撑220真实并发,吞吐率(每秒完成最高检索次数)10000次。
(3)检索效率:平均检索响应时间在30ms左右。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种百亿级图像快速搜索的方法,其特征在于,包括以下步骤:
第一步,图像样本数据的处理,利用深度神经网络对百亿级图像样本数据进行图像特征提取,经PCA降维后,形成了图像的特征向量库;
第二步,基于所述特征向量库,利用倒排索引的乘积量化IVPQ算法构建至少两级PQ;每一级PQ组至少包含3个PQ,保证特征向量的切分数量两两互质,从而形成特征向量索引库;
第三步,基于所述特征像索引库,可以在检索时获得最优候选集并对最优候选集进行相似度计算和排序,最后输出最终的排序TOPN。
2.根据权利要求1中所述的搜索的方法,其特征在于,构建两级PQ,即第一级PQ、第二级PQ;
利用所述第一级PQ输出一定数量的最优候选集,以样本ID的方式传到第二级PQ;
利用所述第二级PQ对最优候选集进行相似度计算和排序。
3.根据权利要求2所述的搜索的方法,其特征还在于,所述第一级PQ设计的Gemfield表的code数目较少设计,每一个code对应大约100~1000个样本,每一个code会均指向一定数量的图像,所述第一级PQ通过code去索引ID列表;
所述第二级PQ设计的Gemfield表的code数目较大,使得每个code上存在有效记录的概率极小,所述第二级PQ通过ID去映射一个code。
4.根据权利要求3所述的搜索的方法,其特征还在于,所述第一级PQ或第二级PQ的组成为:聚类中心向量和对应的PQ字典。
5.根据权利要求4所述的搜索的方法,其特征还在于,
所述聚类中心向量是指:
在总样本中随机抽取一定数量的样本向量,然后将其平分为n份,并对平分后的每一份所述样本向量用k-means算法进行聚类,并记录相应的聚类中心向量Vij(0≤i≤a1-1,0≤j≤a2-1);其中a1、a2,代表所述PQ是a1xa2结构;
将总样本中的每一个样本平分为n份后,记为Ei(0≤i≤a1-1),每一个Ei与对应的a2个聚类中心向量计算L2距离,并经过比较得到最近的一个聚类中心ID;连续n次可以得到n个聚类中心ID,每个ID都是0~a2-1的数值,将这n个ID拼接在一起,得到该样本在该PQ上对应的code。
所述对应的PQ字典是指:
所述第一级pQ通过code索引样本ID列表,构建第一级PQ字典,所述第一级PQ字典的作用是通过code得到一系列的样本ID列表;
所述第二级PQ通过样本ID映射一个code,构建第二级PQ字典,所述第二级PQ字典的作用是通过样本ID得到相应的code,从而可以在Gemfield表中查询并累计相似距离。
6.根据权利要求2-5任一项所述的搜索的方法,其特征还在于,针对百亿样本,所述搜索方法包含的两级PQ具体包括:3个第一级PQ和3个第二级PQ,即共有6个PQ。
7.根据权利要求2或3所述的搜索的方法,其特征还在于,所述第一级PQ输出一定数量的最优候选集的过程包括:3个第一级PQ是PQ-A、PQ-A和PQ-C;
(1)计算PQ-A、PQ-A和PQ-C对应的Gemfield表,记为Gemfield-A、Gemfield-C和Gemfield-C;
(2)分别从三个Gemfield表中取出TopN条最小路径,N取500即可;
(3)每一条路径对应的一个code编码,读取code编码字典,然后将相应的样本ID放到对应的候选最优集合中,当从该PQ中取得的样本数大于10万,则终止;否则继续该步骤;
(4)将PQ-A、PQ-A和PQ-C取出来的对应的最优候选集取并集即可得到最终的第一级PQ的最优候选集。
8.根据权利要求7所述的搜索的方法,其特征还在于,所述Gemfield的计算方法是:
在PQ-A中,PQ-A是3x256结构,聚类算法是把向量分成3段,每段聚类出256个类别,对应256个聚类中心向量,每个聚类中心向量:Vij(0≤i≤2,0≤j≤255)表示第i段的j个向量;
将输入向量V分成3段,记为Ei(0≤i≤2),每一个Ei(0≤i≤2)与对应的256个聚类中心向量计算L2距离,将3x256个距离组合后即为Gemfield表,是3行256列的二维数组。
9.根据权利要求7或8所述的搜索的方法,其特征还在于,所述取TopN条最小路径的计算方法是:
(1)将得到的所述PQ-A中对应的Gemfield表,即3行256列的二维数组,初始化一个空的路径列表,即code列表;
(2)对于每一行256个数值进行从小到大排序,得到3个排序结果,Gij(0≤i≤2,0≤j≤255),并记录每个数值在原来Gemfield表中的位置;
(3)设计3个标记T0,T1和T2,初始化为零,表示当前每行的标记;
(4)取T0,T1和T2对应的数值对应的code,并将这条路径添加到路径列表中;
(5)判断路径列表的数量是否达到要求,当路径列表的数量没有达到要求时,则比较Δd0=G0(T0+1)-G0T0、Δd1=G1(T1+1)-G1T1和Δd2=G2(T2+1)-G2T2,取最小的Δd,并设定当Δd1最小时,则T1=T1+1,并返回到第(4)步;当路径列表的数量达标时,则终止计算。
10.根据权利要求2或3所述的搜索的方法,其特征还在于,所述第二级PQ对最优候选集进行相似度计算和排序,使得特征向量切分的数量两两互质,最大限度避免边缘效应,最后给出最终的排序TOPN,具体包括:
(1)对于每一个候选样本ID,计算每一个PQ对应的相似距离:通过查询所述第二级PQ字典,得到相应的code,所述第二级PQ对应的code是一个8字节的整型数值;按照构建字典时的拼接方式对这个code数值进行反解码,就可以得到一个Gemfield路径;对Gemfield路径上的数值进行相加得到的数值即为相似距离;
(2)对每个PQ得到的距离的加权融合,得到最终的相似距离:
(3)根据每一个样本按照相似距离从小到大排序,得到最终的检索结果,最终的排序TOPN。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111489763.3A CN114595350B (zh) | 2021-12-08 | 2021-12-08 | 一种百亿级图像快速搜索的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111489763.3A CN114595350B (zh) | 2021-12-08 | 2021-12-08 | 一种百亿级图像快速搜索的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114595350A true CN114595350A (zh) | 2022-06-07 |
CN114595350B CN114595350B (zh) | 2024-04-26 |
Family
ID=81814433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111489763.3A Active CN114595350B (zh) | 2021-12-08 | 2021-12-08 | 一种百亿级图像快速搜索的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595350B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015022383A (ja) * | 2013-07-16 | 2015-02-02 | Kddi株式会社 | 画像に基づくバイナリ局所特徴ベクトルを用いた検索装置、システム、プログラム及び方法 |
CN105117407A (zh) * | 2015-07-27 | 2015-12-02 | 电子科技大学 | 一种基于聚类的距离方向直方图的图像检索方法 |
US20180349735A1 (en) * | 2015-07-23 | 2018-12-06 | Beijing Jingdong Shangke Information Technology Co Ltd. | Method and Device for Comparing Similarities of High Dimensional Features of Images |
CN111177435A (zh) * | 2019-12-31 | 2020-05-19 | 重庆邮电大学 | 一种基于改进pq算法的cbir方法 |
CN112100412A (zh) * | 2020-09-01 | 2020-12-18 | 深圳市欢太科技有限公司 | 图片检索方法、装置、计算机设备和存储介质 |
CN113225300A (zh) * | 2020-09-10 | 2021-08-06 | 深圳信息职业技术学院 | 一种基于图像的大数据分析方法 |
-
2021
- 2021-12-08 CN CN202111489763.3A patent/CN114595350B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015022383A (ja) * | 2013-07-16 | 2015-02-02 | Kddi株式会社 | 画像に基づくバイナリ局所特徴ベクトルを用いた検索装置、システム、プログラム及び方法 |
US20180349735A1 (en) * | 2015-07-23 | 2018-12-06 | Beijing Jingdong Shangke Information Technology Co Ltd. | Method and Device for Comparing Similarities of High Dimensional Features of Images |
CN105117407A (zh) * | 2015-07-27 | 2015-12-02 | 电子科技大学 | 一种基于聚类的距离方向直方图的图像检索方法 |
CN111177435A (zh) * | 2019-12-31 | 2020-05-19 | 重庆邮电大学 | 一种基于改进pq算法的cbir方法 |
CN112100412A (zh) * | 2020-09-01 | 2020-12-18 | 深圳市欢太科技有限公司 | 图片检索方法、装置、计算机设备和存储介质 |
CN113225300A (zh) * | 2020-09-10 | 2021-08-06 | 深圳信息职业技术学院 | 一种基于图像的大数据分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114595350B (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108920720B (zh) | 基于深度哈希和gpu加速的大规模图像检索方法 | |
JP5294342B2 (ja) | 物体認識用画像データベースの作成方法、処理装置および処理用プログラム | |
CN110188223B (zh) | 图像处理方法、装置及计算机设备 | |
KR102305568B1 (ko) | 일정한 처리 시간 내에 k개의 극값을 찾는 방법 | |
CN113918753B (zh) | 基于人工智能的图像检索方法及相关设备 | |
EP3020203A1 (en) | Compact and robust signature for large scale visual search, retrieval and classification | |
JP2002109536A (ja) | データクラスタリング方法とアプリケーション | |
Riba et al. | Handwritten word spotting by inexact matching of grapheme graphs | |
WO2001046858A1 (fr) | Creation d'un indice vectoriel, recherche de vecteurs similaires et dispositifs correspondants | |
JP6055391B2 (ja) | 関連性判定装置、関連性判定プログラム、及び関連性判定方法 | |
JP5598925B2 (ja) | 高次元の特徴ベクトルを高精度で検索する検索装置及びプログラム | |
Ferdowsi et al. | Fast content identification in high-dimensional feature spaces using sparse ternary codes | |
CN110674328A (zh) | 一种商标图像检索方法、系统、介质及设备 | |
JP6235414B2 (ja) | 特徴量演算装置、特徴量演算方法、及び特徴量演算プログラム | |
CN103020321B (zh) | 近邻搜索方法与系统 | |
CN105760875B (zh) | 基于随机森林算法的判别二进制图像特征相似实现方法 | |
CN111324760A (zh) | 一种图像检索方法及装置 | |
JPH11203415A (ja) | 類似パターンカテゴリ識別辞書作成装置および方法 | |
CN113657504A (zh) | 图像检索方法、装置、计算机设备和存储介质 | |
CN111949789A (zh) | 文本分类方法和文本分类系统 | |
JP6259671B2 (ja) | 関連性判定装置、関連性判定プログラム、及び関連性判定方法 | |
Takahashi et al. | Mixture of subspaces image representation and compact coding for large-scale image retrieval | |
CN108536772B (zh) | 一种基于多特征融合和扩散过程重排序的图像检索方法 | |
CN114595350A (zh) | 一种百亿级图像快速搜索的方法 | |
JP2017040972A (ja) | 特徴量生成装置、方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |