CN105718502B - 用于高效特征匹配的方法和设备 - Google Patents
用于高效特征匹配的方法和设备 Download PDFInfo
- Publication number
- CN105718502B CN105718502B CN201510969306.2A CN201510969306A CN105718502B CN 105718502 B CN105718502 B CN 105718502B CN 201510969306 A CN201510969306 A CN 201510969306A CN 105718502 B CN105718502 B CN 105718502B
- Authority
- CN
- China
- Prior art keywords
- distance
- binary
- data elements
- data
- processors
- 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.)
- Active
Links
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/43—Querying
- G06F16/438—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/44—Browsing; Visualisation therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/48—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9538—Presentation of query results
Abstract
一种搜索系统中的非完全相同特征匹配的方法,所述搜索系统具有数据点的集合。所述方法包括:确定阈值误差,以及通过以下操作扩展所述集合以创建扩展集合:包括所有数据点作为所述扩展集合的数据元素,以及针对所述集合中的每个数据点,找到位于该数据点的误差距离内的所有数据元素,并且将所找到的数据元素添加到所述扩展集合,其中所述误差距离是阈值误差的函数。所述方法包括:通过使用多个散列函数作为Bloom过滤器构建二进制数组,创建所述扩展集合的概要表示。所述方法还可包括:接收查询,以及将所述多个散列函数应用于所述查询,以根据所述二进制数组确定所述查询是否与所述扩展集合中的数据元素之一匹配;如果是,则输出匹配。
Description
技术领域
本申请一般地涉及搜索信息,具体地,涉及搜索大的数据集合中的接近但不完全相同的匹配。
背景技术
搜索与查询匹配的数据会在很多种情况中发生。例如,词语匹配搜索可用来标识关键词在文档、文档数据库或在线上互联网网页搜索中的出现。登录验证可涉及搜索登录证书集合中的匹配。对象识别可涉及在对象数据库或集合中搜索匹配对象。所有这些示例可被一般化为一个两步过程:(1)构建集合S及其表示(通常离线);以及(2)计算f(x),其中x是查询,f(x)是根据下式的结果:
第二步(成员身份测试)一般是“线上”完成的,通常实时完成。
许多现代搜索不必基于完美匹配。例如,图像或视频中的对象或特征识别不能一般地依赖于完美匹配。例如,一些面部识别过程可能希望标识接近匹配,而不是完美匹配。指纹分析是不太可能进行确切匹配的另一个领域。相反地,在这些“不完美”匹配搜索中,可使用基于距离的匹配。术语“基于距离”用于一般意义的标量度量d(x,y)中,其中x是查询,y是S的候选元素。在一些情况中,度量d(x,y)可以是欧氏距离,但也可使用其他更为复杂的度量。
通过使用基于距离的匹配,搜索结果f(x)基于是否存在位于查询x的阈值距离δ之内的集合S的元素。搜索S对象中的最接近元素可描述如下:
在阈值距离的约束下,搜索可表示为:
将理解的是,基于距离的搜索的成本(在计算资源方面)比简单成员身份测试要高得多并且要更加耗时。结果,在实时线上搜索中难以实现不完美匹配搜索,尤其是度量d(x,y)很复杂时更是如此。
附图说明
现在通过示例的方式参考示出了本申请的示例实施例的附图,其中:
图1示出了使用特征扩展的搜索系统的简化框图;
图2以流程图的形式示出了使用特征扩展的搜索的示例过程;
图3示出了使用概要表示的搜索系统的简化框图;
图4以流程图的形式示出了用于使用扩展集合的概要表示进行搜索的示例过程。
在不同附图中,使用相似的附图标记表示相似的组件。
具体实施方式
在一个方面中,本申请描述了一种搜索系统中的非完全相同特征匹配的方法,所述搜索系统具有数据点的集合。所述方法包括:确定阈值误差;通过以下操作扩展所述集合以创建扩展集合:初始化所述扩展集合,以包括来自所述集合的所有数据点作为所述扩展集合的数据元素,以及针对所述集合中的每个数据点,找到位于该数据点的误差距离内的所有数据元素,并且将这些所找到的数据元素添加到所述扩展集合,其中所述误差距离是阈值误差的函数;通过使用多个散列函数作为Bloom过滤器构建二进制数组,创建所述扩展集合的概要表示;接收查询;以及将所述多个散列函数应用于所述查询,以根据所述二进制数组确定所述查询是否与所述扩展集合中的数据元素之一匹配,并且如果是,则输出匹配。
在另一方面中,本申请描述了一种方法,所述方法包括:确定阈值误差;通过以下操作扩展所述集合,以创建扩展集合:初始化所述扩展集合,以包括来自所述集合的所有数据点作为所述扩展集合的数据元素,以及针对所述集合中的每个数据点,找到位于该数据点的误差距离内的所有数据元素,并且将这些所找到的数据元素添加到所述扩展集合,其中所述误差距离是阈值误差的函数;通过使用多个散列函数作为Bloom过滤器构建二进制数组,创建所述扩展集合的概要表示;以及将所述二进制数组发送到远程设备,以用于特征搜索。
在又一方面中,本申请描述了一种用于非完全相同特征匹配的搜索系统。搜索系统包括:一个或多个处理器;存储器,存储数据点的集合和阈值误差;以及处理器可执行搜索指令,所述指令当由所述一个或多个处理器执行时使得所述一个或多个处理器:通过以下操作扩展所述集合以创建扩展集合:初始化所述扩展集合,以包括来自所述集合的所有数据点作为所述扩展集合的数据元素,以及针对所述集合中的每个数据点,找到位于该数据点的误差距离内的所有数据元素,并且将这些所找到的数据元素添加到所述扩展集合,其中所述误差距离是阈值误差的函数;通过使用多个散列函数作为Bloom过滤器构建二进制数组,创建所述扩展集合的概要表示;以及存储概要表示,以用于特征匹配。
在又一方面中,所述搜索系统包括当执行时使得所述一个或多个处理器执行以下操作的指令:接收查询,以及将所述多个散列函数应用于所述查询,以根据所述二进制数组确定所述查询是否与所述扩展集合中的数据元素之一匹配,并且如果是,则输出匹配。
在另一方面中,所述搜索系统包括当执行时使得所述一个或多个处理器执行以下操作的指令:从远程设备接收请求,以及作为响应,将二进制数组发送到所述远程设备,以使得能够在远程设备上进行本地搜索。
在又一方面中,本应用描述了存储有计算机可执行指令的非瞬时计算机可读介质,所述指令当执行时配置处理器执行上述方法。
在结合附图阅读了以下对示例的描述之后,本领域技术人员将理解本申请的其他方面和特征。
在下文的描述中,将结合“基于距离”的搜索进行描述。该搜索也可被称为“非匹配”或“不完美”搜索。术语“基于距离”不必然意味着度量d(x,y)是欧氏距离量度。度量d(x,y)可以在一些示例中包括L1距离、L2距离、编辑距离(针对字符串)、地球移动距离、KL散度和结构相似度(SSIM)或是和具体数据集合的其他相似度量度。对相似度和用于量度相似度的度量的所有可能理解都被认为在术语“基于距离”的搜索和本文所描述的方法的范围内。
如上所述,基于距离的搜索尝试针对给定阈值或误差δ评估函数f(x):
其中,距离量度为:
注意到,即使查询x本身不是S中的成员,f(x)也可以是1(即,S中找到肯定结果)。这意味着用来使用多个散列函数将S缩减到二进制字符串的经典Bloom过滤器方法是不可能的,这是因为必须在成员身份测试阶段评估距离度量。针对该问题的现有方法包括x和S的量化以及诸如针对最近邻搜索的k-d树算法的算法。然而,这些技术均具有一些缺点。
为较大的集合S找到理想的量化器可能是很难的,尤其是对度量d(x,y)评估起来较为复杂的情况中更是如此。即使量化器不是理想的,但能够很好地对距离度量进行近似,其也可能描述和应用起来相当复杂。简单的量化器可能不能足够好地近似所述度量,并且可导致多种假阳(false positive)结果。
k-d树是常用于多维空间搜索的数据结构。虽然k-d树算法提供了执行最近邻搜索的系统方法,但其计算复杂度比Bloom过滤器高得多。此外,由于k-d树算法执行或近似最近邻搜索,所以返回的结果可能不满足距离约束d(x,y)≤δ。如此,可能需要附加检查来拒绝这些结果。
本申请在一个方面中提供了一种基于距离的搜索系统和方法,其使用特征扩展来有效地将基于距离的搜索移动到集合表示操作中,而不是成员身份测试操作中。这使得能够简化成员检测操作为完美匹配操作,由此降低复杂度以及改善评估队列阶段的速度。
现在参见图1,图1中示出了示例搜索系统10的简化框图。搜索系统10包括存储器12,14、特征扩展模块16和匹配搜索单元18。存储器12存储数据点的集合S。特征扩展模块16从存储器12获得数据点的集合并应用下文所述的特征扩展操作,以生成扩展集合S’,然后可将扩展集合S’存储在存储器14中。匹配搜索单元18尝试在扩展集合S’中为查询x标识匹配,其结果示为f(x)。
搜索系统10可实现在适当编程的通用计算设备上,该设备执行用来执行如下特征扩展、存储和匹配操作的软件。在一些情况中,软件可由两个或更多个处理器执行。搜索系统10可完全或部分地在服务器、移动设备、个人计算机、平板计算机或其他处理设备上实现。在一些情况中,存储器12和14是使用同一物理存储器或硬盘实现的,但在一些情况中,它们是不同的逻辑或物理存储器,并可在一些实施例中处于不同设备中。在一些情况中,特征扩展模块16实现在服务器或具有用来执行特征扩展分析的相当的处理能力的其他设备上,并且扩展集合或其表示可被发送到实现匹配搜索单元18的另一设备,比如移动设备、平板计算机或计算机。
特征扩展操作将数据点的原始集合S扩展为扩展集合S’,使得满足f(x)=1的任何x都是S’的成员。所述扩展基于距离度量d(x,y)和阈值误差值δ。扩展集合S’首先初始化为包含集合S的所有元素s。一般地,针对S中的每个元素s,应用距离度量,以找到元素s的阈值误差δ内的所有值v。然后,将所有这些值v附加或添加到扩展集合S’。通过这种方式,扩展集合S’生成,以包括S中的每个元素s的邻域(通过距离度量和阈值误差限定)内的所有元素。
现在参见图2,示例搜索过程100通过流程图的形式示出。搜索过程100开始于建立阈值误差δ,如操作102所示。如上所述,阈值误差δ可以是指示查询及其不完美匹配之间所需的相似程度的标量值。其有效地限定了扩展集合中的每个元素s的邻域的尺寸,从而限定了扩展的范围。在此阶段还知道距离度量d(x,y),并且其是基于S中的数据的性质以及在评估具有该性质的数据的相似度的过程中的度量的适合性。
在操作104中,初始化扩展集合S’,并首先将其填充以S中的所有元素。也就是说,S’被初始地设为等于S。然后,在操作106中,针对S中的一个元素,确定包含元素v的邻域V(s),使得V(s)中的每个元素v满足条件d(v,s)≤δ。V(s)有时被称为s的δ-邻域(通过d来限定)。在操作108中,落入邻域V(s)中的所有元素v被添加到扩展集合S’。如操作110所示,针对S中的所有s重复操作106和108。一旦“扩展”了所有s,则如操作112所示,存储扩展集合S’。在一些实施例中,可“离线地”执行操作102-112。在其他实施例中,可基于在会话初始化期间指定的阈值误差δ“在线”执行操作102-112,在所述会话期间,将处理所有后续查询。
在操作114中,接收查询x。在一些情况中,可通过另一形式接收查询,比如文本字符串或图像或其他输入,并且可被预处理以产生查询x。在操作116中,通过在扩展集合S’中搜索x的匹配来执行查询。在操作118中,输出搜索结果,例如f(x)。搜索结果的输出可包括输出是否找到匹配(即f(x))和/或来自S’的匹配元素、或指向该元素的指针。
在一些实施例中,可在线执行操作114-118。在一些示例中,可实时地或近实时地执行操作114-118。
将理解的是,过程100权衡集合表示阶段中的计算和存储需求,以改善成员身份测试阶段的计算速度。
注意到,不必要求S’中的每个x都满足操作106中的距离约束。可利用约束x中的这一放松来控制构建S’的过程中的复杂度,其代价是假阳。也就是说,如果包括v将简化S’的构建的话,则允许S’包括v,使得d(v,S)>δ,即v不位于S中的任何成员的δ-邻域中。例如,当函数d评估起来复杂或困难时(例如编辑距离函数),仍可能想要通过使用更简单的距离函数(比如L1或L2距离函数)来构建S’。由于用来限定δ-邻域的函数d和用来构建S’的函数之间的差别,S’可包含成员v,使得d(v,S)>δ。
在一些实施例中,存储复杂度并不是最关心的问题,可通过使用散列表表示S’来减少假阳的可能性,而不是使用Bloom过滤器。在这些情况中,假阳是由通过所选择的散列函数计算的散列值的冲突引起的。
在一些实施例中,原始集合S和扩展集合S’都存储在存储器中,并且是可用的,使得可通过针对S的距离计算或通过针对S’的成员身份测试来实现搜索,从而提供对不理解S’的传统设备或选择不使用S’的设备的向后兼容性。
在一些情况中,量化可与特征扩展结合使用。在一种示例中,为了避免存储复杂度由于特征扩展而过度增加,可在特征扩展之前对S以及在S’中的成员身份测试之前对x使用简单的量化器Q。
为了提供示例,考虑从图像提取的八个SIFT描述符的集合。所述集合被表示为S={s0,s1,...,s7}。注意到,每个SIFT描述符是非负实数的长度为128的向量。令x表示查询SIFT描述符。搜索过程将确定x是否接近S中的任何描述符。在这种情况中,“接近度”可通过欧氏距离量度,例如:
在该示例中,当通过将S’初始化为{Q(s0),Q(s1),Q(s2),...,Q(s7)}来初始化S’时,可使用具有步长大小q的统一标量量化器Q。S’的元素可被表示为s′i,其中i=0,..,7。针对每个s′i,邻域V(s′i)可通过下式给出:
在以上表达式中,表示所有非负整数的集合,Q-1表示Q的反函数。针对每个s∈V(s′i),如果d(Q-1(s),si)≤δ并且s并不已经是S’的成员,则将s附加到S’的结尾。令则:
其中α∈[0,1]是常数。
举例来讲,α的可能选择是0.5。
更一般地,在过程100的操作106之前,可选择量化器Q(如果期望的话)。量化器Q可以是标识映射,即针对所有的v,Q(v)=v。一种选择量化器的机制是检查V(s)的势,以及选择一个Q,使得V(s)中的元素的数量不超过给定阈值或限制。当执行操作106时,则邻域V(s)包括满足条件d(Q-1(v),s)≤δ的特征。一种备选(简化)是包括所有v,使得||s-Q-1(v)||∞≤δ。
将理解的是,量化是有损过程。原始信息的损失有可能将使得查询过程中的基于距离的匹配更为复杂。例如,具有步长大小3的标量对称量化器将会把2.5映射到0,把3映射到6。如果阈值δ是2,则在量化后,可能会失去2.5和3之间的匹配(相应的,0和6之间)。相反,基于特征扩展的本方案很好地适于在设计中利用量化。由于特征扩展是在表示步骤期间执行的,所以所有信息是可用的,并且从而能够用于确定应该在扩展集合中包括什么。作为说明性示例,假定阈值δ是2。在上例中,在通过使用上述相同量化器将2.5映射到0之后,可决定将下一值6包括在扩展集合中,这是因为原始2.5接近量化边界。在另一示例中,原始是0.5,可决定不将下一值6包括在扩展集合中,这是因为原始0.5和量化边界之间的距离比阈值δ的值2更大。
将理解的是,在特征扩展操作中,假定对阈值误差δ的知识。当生成了扩展集合S’时,扩展基于特定阈值误差δ,其确定将容忍什么误差/失真以及不容忍什么误差/失真。在一些应用中,比如指纹认证中,阈值误差δ可以是已知固定量。然而,在一些其他应用中,可能希望可选择的或灵活的容忍级别。例如,在一些应用中,查询可能包含指明阈值误差δ的信息。
一种用于适应灵活阈值误差选择的机制是确定与特定查询相关联的级别δ是否大于通过特征扩展构建S’中使用的级别。如果是的话,则执行针对原始特征集合S的常规距离计算;否则,使用针对S’的成员身份测试。
另一机制是生成扩展集合的层级这些集合是通过特征扩展构建的,其中δ(0)<δ(1)<δ(2)…,S(0)=S且δ(0)=0。当接收到的查询具有指定的δ时,满足δ(j)≥δ的最小集合S(j)用于成员身份测试。如果不存在这种集合,则执行针对S的距离计算。
在一些实施例中,在将S扩展到S’之后,为了空间效率和高效的成员身份测试,Bloom过滤器可用来表示S’,其代价是一些假阳错误。Bloom过滤器引入的假阳概率(除了来自扩展过程的任何结果)作为使用的Bloom过滤器的设计参数是可调节的。
为了进一步降低存储复杂度,在一些实施例中,可使用Bloom过滤器的备选,比如压缩Bloom过滤器或Cuckoo过滤器。还可使用Bloom过滤器的其他变形(例如计数Bloom过滤器)来解决应用要求,比如动态S、删除S中的元素、可缩放性等。
在一些实施例中,可通过使用维度减少线性变换来紧凑地表示集合S’。假定S’是作为LxN矩阵写入的,其中N列中的每一列对应于长度为L的S’中成员。令Φ表示KxL矩阵,其中K是比L小的数。可将S’的紧凑表示导出为R=ΦS'。注意到,R是KxN矩阵。假定R来自有限域GF(2M),其中M是正整数。则,R可被认为通过使用线性变换对具有参数(M,K)的Bloom过滤器的实现。令s为S'中的成员,并且令r=Φs。在一些实施例中,可通过使用算数编码、Huffman编码、枚举编码或其他损失较小的编码方法对s的紧凑表示进行编码和发送来编码和发送R。
在一些实施例中,通过使用与上文中对R=ΦS'中的列进行编码和发送相似的方法来对查询x的紧凑表示rx=Φx进行编码和发送,而不是对R进行编码和发送,其中Φ是如上的KxL矩阵。在这些实施例中,针对R对rx进行检查,以验证x在S’中的成员身份。如果rx是R中的列,则x被声明为S’中的成员。此外,可通过使用约束编程从rx和S重新构建x。在距离函数d是L1距离函数的实施例中,可通过使用线性编程来重新构建x,其中d(x,S)≤δ可作为线性约束。在距离函数d是L2距离函数的实施例中,可通过使用平方编程来重新构建x。
此外,为了减少假阳错误或为了在存储复杂度和计算复杂度之间进行平衡,可使用利用用于成员身份测试的Bloom过滤器和用于在成功成员身份测试后进行最近邻搜索(例如,基于k-d树算法)的Bloom过滤器的混合系统。
现在参见图3和4,图3示出了示例搜索系统210的简化框图的框图。搜索系统210包括存储器212,214、特征扩展模块216、散列运算器220和匹配搜索单元218。存储器212存储数据点的集合S。特征扩展模块216从存储器212获得数据点的集合并应用特征扩展操作,以生成扩展集合S’。散列运算器220使用散列函数的集合来生成二进制字符串(通过将散列函数应用于扩展集合S’的元素)。散列运算器输出二进制字符串B,然后可将二进制字符串B存储在存储器214中。
匹配搜索单元218接收查询x。然后,像散列运算器220中所使用的那样,匹配搜索单元218将散列函数的相同集合应用于查询x。匹配搜索单元218然后将x的散列值与二进制字符串B进行比较,以尝试在扩展集合S’中标识针对查询x的匹配。结果示为f(x)。
图4以流程图的形式示出了示例搜索过程300,该示例搜索过程300使用Bloom过滤器来降低针对扩展集合的存储要求。如操作302所示,确定阈值误差δ。在操作304中,初始化扩展集合S’,并首先将其填充以S中的所有元素。然后,在操作306中,针对S中的一个元素,确定包含元素v的邻域V(s),使得V(s)中的每个元素v满足条件d(v,s)≤δ。在操作308中,落入邻域V(s)中的所有元素v被添加到扩展集合S’。如操作310所示,针对S中的所有s重复操作306和308。一旦“扩展”了所有s,则如操作312所示,将散列函数的集合应用于扩展集合S’的每个元素,以生成二进制字符串B。然后,在操作313中,将二进制字符串B存储在存储器中。
在操作314中,接收查询x。在操作316中,将散列函数应用到查询,并将结果与二进制字符串B进行比较,以评估是否很有可能存在针对扩展集合S’中的查询x的匹配(由于对散列函数的依赖,出走出现假阳结果的可能性)。在操作318中,输出搜索结果,例如f(x)。搜索结果的输出可包括输出是否找到匹配(即f(x))和/或来自S’的匹配元素、或指向该元素的指针。
概要表示
在一些实现中,二进制字符串B可被称为“概要表示”。例如,在基于特征的图像视觉搜索情况中,可通过特征的集合来表示图像。为了确定特征x是否在图像中(或在从图像提取的S特征的集合中)出现,可随图像附带特征的“概要表示”。在一种实施例中,概要表示是从图像提取的比特流编码特征的一部分。在另一实施例中,概要表示是表示数据库中的图像的单独记录。
在一种示例中,该概要表示采用长度为m的二进制数组的形式,其通过如Bloom过滤器中的k个散列函数填充以提取特征,并且在使用近似匹配和特征扩展的情况中具有最大可允许距离δ。假定S’中的特征总数是n(扩展后),选择参数(m,k),以满足假阳不超过特定阈值ε这一要求,该要求可被表达为:
(1-e-kn/m)k≤ε.
在一种实施例中,k可被设置为在关于Bloom过滤器的文献中这是合理的。针对图像搜索,可从有限集(例如{2,4,8,16}或{2,3,4,5,6,7,8,...,16})中选择k,以满足目标阈值ε。
为了提供说明性示例,假定在图像X中标识了4个特征{s0,s1,s2}。我们使用长度m为16的二进制数组B和k=3个散列函数来如下所示存储所述4个特征:
步骤1:将B初始化成全为零。
步骤2:假定h0(s0)=1、h1(s0)=2、h2(s0)=7。将B中的相应位置设置为1,以存储s0。
步骤3:假定h0(s1)=9、h1(s1)=2、h2(s1)=D。将B中的相应位置设置为1,以存储s1。
步骤4:假定h0(s2)=F、h1(s2)=7、h2(s2)=0。将B中的相应位置设置为1,以存储s1。
所得到的数组B=1110 0001 0100 0101是X的概要表示。
为了检查X中是否存在特征t,可以简单地计算h0(t)、h1(t)和h2(t)。如果B[h0(t)]、B[h1(t)]和B[h2(t)]都被设为1,则X中存在t(有可能是假阳);否则并非如此(确定的)。
在一些方案中,对N个(N≥2)图片的独立概要表示进行组合(N个二进制向量的二进制OR),以提供对整个集合的单个概要表示。具体地,令S′={x0,...,XN-1}表示N个图片的集合(扩展后),并且令Bi表示基于xi(i=0,...,N-1)的Bloom过滤器的概要表示。基于相同Bloom过滤器的S’的概要表示是:
注意到,这里的求和对于标准二进制Bloom过滤器是逻辑性的,针对计数Bloom过滤器或其变形是算术性的。该特征在特征/描述符数据库是动态的应用中尤其有用。例如,当将具有概要表示BN的新图像添加到集合S’时,可通过简单地将BN添加BS到来高效地更新BS。
分层假阳
在以上示例中,参数(m,k)针对所有n个特征保持恒定,从而假阳概率也是恒定的。然而,在一些实现中,可能能够提供至少两种假阳概率。在一些情况中,可允许的假阳概率针对不同的特征可以不同。例如,假定先验地知道特征x的概率px,并且px不是常量。令εx表示测试x的假阳概率。则对于具有高px的特征,可要求εx相对较低;对于具有低px的特征,εx可相对较高。换言之,将维持pxεx的平衡。
另一可能场景是,特征被分类到变化重要性的多于一个不同类别中。例如,从图片的背景部分提取的一些特征可被认为不如从图片的前景部分提取的特征重要。在这种情况中,可能想要针对不同类别中的特征具有不同的假阳概率。
在一种实施例中,使用两个级联Bloom过滤器来实现两种不同的假阳概率。令ε0表示小于1的第一假阳概率,并且令ε1表示第二假阳概率,其中ε1是小于ε0的正实数。假定将要存储n个特征,其中前n/2个特征预计具有假阳概率ε0,而后n/2个特征预计具有假阳概率ε1。以下两种示例Bloom过滤器可用来实现期望的假阳概率。
具有参数(m0,k0)的第一Bloom过滤器被设计为实现ε0,以使得:
(m0,k0)的一种可能选择是
具有参数(m1,k1)的第二Bloom过滤器被设计为实现ε1,以使得:
(m1,k1)的一种可能选择是
注意到,所有n个特征存储在第一Bloom过滤器中,并且只有后n/2的重要特征存储在第二Bloom过滤器中。
在测试步骤中,首先针对第一Bloom过滤器检查特征x。如果确定第一Bloom过滤器中存在特征x,并且想要知道特征是否是重要特征,则针对第二Bloom过滤器检查x。从而,针对所述n/2重要特征的假阳概率是第一Bloom过滤器的假阳概率和第二Bloom过滤器的假阳概率的乘积,即ε1。
在上例中,可将重要特征的子集一般化为小于n的任意正整数。此外,所述方案可扩展,以适应z个特征类别,这些类别分别与1个不同的假阳概率ε0>ε1>…>εz-1相关联。具体地,所提出的方案的一种实施例级联z个Bloom过滤器,其中第一Bloom过滤器被设计为实现假阳概率ε0,并且第i个Bloom过滤器(1<i≤z)被设计为实现假阳概率
应用-指纹
在一种示例中,在指纹认证中使用特征扩展。
由于在获取过程中,指纹会发生失真,所以难以(如果并非不可能的话)简单地通过检查所录入的指纹的散列值来认证指纹。一般在认证时需要进行量化和距离计算。然而,为了执行距离计算,需要暴露所录入的指纹,如果系统受到攻击的话,这将会带来安全风险:与密码不同,不能对受到攻击的指纹进行简单地替换。通过在录入阶段(集合表示)使用特征扩展,变得能够通过检查输入的指纹的散列值是否与录入的指纹的散列值相匹配。这与散列函数的单纯应用形成对比,散列函数的单纯应用中只存在原始录入指纹的一个散列值,从而不能在不访问所录入的指纹本身的情况下进行近似匹配。注意到,在所提出的方案的一种变形中,使用传统散列表而不是Bloom过滤器,以避免假阳。当事实上使用Bloom过滤器时,可进行处理以便在通过Bloom过滤器验证了成员身份之后能够消除假阳。
在使用了散列表的实施例中,按如下进行录入过程。令F表示将要录入的指纹。将数组T初始化为全为零,然后执行以下过程:
首先,执行上述特征扩展过程,以将S={F}扩展到扩展集合S’中。
第二,针对S’中的每个成员s,计算其散列值h(s),并确定其在数组T中的条目索引index,例如,index=h(s)%n,其中n是T的长度。
第三,在T[index]中存储常数,例如1。可选地,可在T[index]中存储s的校验和c(s)。
当提交指纹G进行认证时,可使用以下过程来认证指纹:
首先,计算散列值力(G),以及确定索引i=h(s)%n。
第二,如果T[i]=1,则声明找到匹配,否则,拒绝G。可选地,如果在T[i]中存储了校验和,则将其与G的校验和c(G)进行比较。如果两个校验和相同,则声明找到匹配;否则拒绝G。
应用-视觉搜索
用于搜索的上述特征扩展过程可通过促进一些本地搜索操作而不是要求在服务器上执行所有搜索来实现更短的响应时间。为了在设备上执行本地搜索,特征(描述符)数据库需要在设备上是可用的,这可带来过度的存储复杂度。虽然数据库的Bloom过滤器表示可解决存储复杂度问题,但是如上文所述,其并不适合距离计算。通过组合特征扩展和Bloom过滤器表示,所提出的方案提出了对于设备上本地搜索的可行方案,例如,使得特征扩展后特征数据库的Bloom过滤器表示而不是数据本身在本地设备上是可用的。
在一种示例实施例中,本地搜索操作如下。设备A向服务器B发送请求,请求用于本地搜索的数据。可选地,来自设备A的请求包括关于指示要容忍的失真级别的δ的信息。一旦接收到来自A的请求,则服务器B进行以下操作:
(a)根据从所述请求解码的级别δ或默认级别(如果请求中不存在δ的话)扩展可用特征;
(b)根据扩展集合的势N和规定的假阳概率阈值ε,确定Bloom过滤器参数m和k;
(c)通过使用k个散列函数,生成长度为m的二进制数组R,作为扩展集合的Bloom过滤器表示(注意到,对k个散列函数的选择遵循设备A和服务器B二者都已知的标准过程);
(d)向设备A发送包含以下信息的响应:数组R和Bloom过滤器参数(m,k)。
一旦接收到所述数组和Bloom过滤器参数,则设备A可执行以下操作:
(e)解码参数(m,k)以及选择相同的k个散列函数(遵循服务器B所使用的相同过程);以及
(f)使用数组R和k个散列函数来本地搜索特征s,即通过使用k个散列函数中的每一个以及检查R中位于通过散列值所标识的位置处的条目是否都被设置,来计算s的散列值。如果答案是“是”,则s在服务器B上是可用的;否则,s在服务器B上不是可用的。
在一些实施例中,服务器B可针对级别范围离线执行操作(a)、(b)和(c),以便更快地对来自远程设备的查询进行响应。
应用-健康记录管理
健康记录的隐私性是首要的,从而期望用于搜索健康记录的数据库的机制。在上述特征扩展过程中,散列值匹配用来在不揭示数据库的原始内容的情况下找到搜索结果,即使内容发生失真也是如此。
一个示例是基于姓名和生日来关联健康记录。如果数据库包含与同一个人有关的记录,则生日应该完全相同,但姓名可有拼写上的差别(例如Erdos和)。从而,传统的基于散列的隐私性保持方法可适用于生日,但不直接适用于姓名。通过使用上述特征扩展,能够通过成员身份测试使用(姓名,生日)对的匹配散列值。
应用-MPEG CDVA
MPEG 7部分13涉及标准化图像描述符(CDVS),其目的是使得能够实现高效且能够互操作的视觉搜索应用。除了CDVS之外,MPEG正在开发针对视频分析的紧凑描述符(CDVS)。CDVS和CDVA中的描述符实质上是从图像和视频数据提取的量化和压缩特征。
CDVS和CDVA两者当前都存储独立的描述符并且不提供高效的成员身份测试机制,即用来检查描述符是否在图片中。注意到,在一些应用中,给定了图片的情况下,可能只对从图片提取的与存储的数据库中的描述符或另一图片中的描述符相匹配的描述符感兴趣。在这些应用中,成员身份测试是足够的。此外,在不需要描述符的单独比较的应用中,成员身份测试仍然在避免对不在数据库中的描述符进行高成本操作(例如,无线链路上的数据传输)方面是有用的。一种将上述方案应用到CDVS和CDVA的直接应用是按如上所述定义图片中的描述符的概要表示。具有标准化的概要表示将便于互操作性:例如,参与方不需要协商Bloom过滤器参数,比如比特数组的尺寸m、散列函数的数量k以及用来填充数组的k个散列函数,以及在使用近似匹配的情况中的最大可允许距离δ。
注意到,如上文所述,可组合两个或多个图片的概要表示。在确定是否应该将新的描述符添加到数据库中时,该特征在CDVS和CDVA中是有用的。例如,通过针对概要表示B1+B2进行验证而不是分别针对B1和B2进行验证,可快速地确定之前是否在具有B1和B2的两个图像中分别看见过描述符。
MPEG格式中的概要表示可被实现为表示图像描述符集合的二进制数组,其中通过将数组中的k个容器(bin)设为1来表示每个描述符,并且k个容器的位置是分别根据描述符的k个散列值选择的。CDVS描述符字段可加入标记,以指示是否存在概要表示,并且如果是的话,则加入散列函数的数量、概要表示的长度和概要表示(数组)本身。
下文是用于在CDVS编码的情况中生成概要表示的示例过程:
首先,可根据ModeID值或使用一些其它机制确定散列函数的数量k和概要表示的长度m(以字节为单位)。
第二,初始化具有长度8xn的全零二进制向量B。使用H表示散列函数的数量,使用m表示概要表示长度,使用N表示本地描述符数量。
第三,标识从原始图像提取的N个本地描述符的集合S。假定该S被排序,即S={s0,s1,...,sN-1}。针对每个k=0,...,N-1,按如下确定集合Vk:
1.初始化Vk={sk},以及(i,j)=(0,0);
2.令ek,i,j表示sk中的第i个单元中的第j个元素。进行以下操作:
a.如果ek,i,j=-1且iQLj(1-∈i,j)<ek,i,j≤iQLj,则通过使用0替换ek,i,j来从sk构建s。
b.如果ek,i,j=+1且iQHj<ek,i,j≤iQHj(1+∈i,j),则通过使用0替换ek,i,j来从sk构建s。
c.如果ek,i,j=0且iQLj<ek,i,j≤iQLj(1+∈i,j),则通过使用-1替换ek,i,j来从sk构建s。
d.如果ek,i,j=0且iQHj(1-∈i,j)<ek,i,j≤iQHj,则通过使用+1替换ek,i,j来从sk构建s。
3.将来自上述步骤2的s插入Vk,并使j递增1。
4.重复步骤2-3,指导处理了sk中的所有元素。
令并且令N′表示S′的势。计算在上文中,iQLj和iQHj是通过MPEG标准定义的,并且∈i,j是(0,1)中的较小数。
从而,按如下来填充向量B。
在上文中,HashFunc(s,j)通过使用第j个散列函数来计算s的散列值。可通过MPEG标准来预定义散列函数。
将理解的是,根据本申请的过程和系统可实现在多个计算设备中,包括但不限于,服务器、适当编程的通用计算机和移动设备。可通过包含指令的软件来实现处理器,所述指令用于配置一个或多个处理器执行这里描述的功能。软件指令可存储在任何合适的非瞬时计算机可读存储器上,包括CD、RAM、ROM、闪存存储器等。
将理解的是,本文描述的设备和实现上述方法/过程的模块、例程、过程、线程或其它软件组件可使用标准计算机编程技术和语言来实现。本申请不限于具体处理器、计算机语言、计算机编程习惯、数据结构、其它这种实现细节、本领域技术人员将认识到所描述的过程可被实现为易失性或非易失性存储器中存储的计算机可执行代码的一部分、作为专用集成电路(ASIC)的一部分等。
可对所描述的实施例进行特定适应和修改。因此,上述实施例被认为是说明性的而非限制性的。
Claims (15)
1.一种搜索系统中的非完全相同特征匹配的方法,所述搜索系统具有数据点的集合,其中,所述数据点的集合包括指纹数据、图像特征描述符和视频特征描述符中之一,所述方法包括:
服务器通过以下操作扩展所述集合以创建扩展集合:
初始化所述扩展集合,以包括通过使用标量量化器来量化数据点集合中的数据点而获得的数据元素,以及
针对所述数据点集合中的每个数据点,找到位于该数据点的误差距离内的所有数据元素,并且将所找到的数据元素添加到所述扩展集合,其中所述误差距离是阈值误差的函数;
所述服务器使用多个散列函数作为Bloom过滤器来构建所述扩展集合的二进制数组;
所述服务器向远程设备发送所述二进制数组以针对所述远程设备的请求作出回复;以及
所述服务器使所述远程设备能够将所述多个散列函数应用于查询,以根据所述二进制数组确定所述查询是否与所述扩展集合中的数据元素之一匹配;如果是,则输出匹配。
2.根据权利要求1所述的方法,还包括:在存储器中存储所述扩展集合,以用于未来搜索。
3.根据权利要求1所述的方法,还包括:在存储器中存储所述二进制数组以用于未来搜索以及丢弃所述扩展集合。
4.根据权利要求1所述的方法,其中,所述误差距离包括以下各项之一:L1距离、L2距离、编辑距离、地球移动距离、KL散度和结构相似度矩阵。
5.根据权利要求1所述的方法,其中,针对不同的阈值误差值执行所述扩展和构建操作至少两次,以产生相应的二进制数组,并且所述方法还包括:基于所请求的阈值误差选择所述至少两个二进制数组之一。
6.根据权利要求5所述的方法,其中,选择所述至少两个二进制数组之一基于选择与大于或等于所请求的阈值误差的阈值误差值相对应的二进制数组。
7.根据权利要求1所述的方法,其中,构建所述二进制数组包括:
将所述扩展集合的数据元素分类到两个类之一中;
将第二Bloom过滤器应用于所述类之一中的数据元素,而不应用于所述类中的另一个中的数据元素,以创建第二二进制数组,
其中所述Bloom过滤器的假阳概率大于第二Bloom过滤器的假阳概率。
8.一种用于非完全相同特征匹配的搜索系统,所述搜索系统包括:
一个或多个处理器;
存储器,存储数据点的集合和阈值误差,其中所述数据点的集合包括指纹数据、图像特征描述符和视频特征描述符中之一;以及
处理器可执行的搜索指令,所述指令当由所述一个或多个处理器执行时使得所述一个或多个处理器:
通过以下操作扩展所述集合以创建扩展集合:
初始化所述扩展集合,以包括通过使用标量量化器来量化来自数据点集合中的数据点而获得的数据元素,以及
针对所述数据点集合中的每个数据点,找到位于该数据点的误差距离内的所有数据元素,并且将所找到的数据元素添加到所述扩展集合,其中所述误差距离是阈值误差的函数;
使用多个散列函数作为Bloom过滤器来构建所述扩展集合的二进制数组;
向远程设备发送所述二进制数组以针对所述远程设备的请求作出回复;以及
使所述远程设备能够将所述多个散列函数应用于查询,以根据所述二进制数组确定所述查询是否与所述扩展集合中的数据元素之一匹配;如果是,则输出匹配。
9.根据权利要求8所述的搜索系统,还包括当由所述一个或多个处理器执行时使得所述一个或多个处理器执行以下操作的指令:在存储器中存储所述扩展集合,以用于未来搜索。
10.根据权利要求8所述的搜索系统,还包括当由所述一个或多个处理器执行时使得所述一个或多个处理器执行以下操作的指令:在存储器中存储所述二进制数组以用于未来搜索以及丢弃所述扩展集合。
11.根据权利要求8所述的搜索系统,其中,所述误差距离包括以下各项之一:L1距离、L2距离、编辑距离、地球移动距离、KL散度和结构相似度矩阵。
12.根据权利要求8所述的搜索系统,其中,针对不同的阈值误差值执行所述扩展和构建操作至少两次,以产生相应的二进制数组,并且其中所述搜索系统还包括当由所述一个或多个处理器执行时使得所述一个或多个处理器执行以下操作的指令:基于所请求的阈值误差选择所述至少两个二进制数组之一。
13.根据权利要求12所述的搜索系统,还包括:其中,选择所述至少两个二进制数组之一基于选择与大于或等于所请求的阈值误差的阈值误差值相对应的二进制数组。
14.根据权利要求8所述的搜索系统,其中,所述指令当由所述一个或多个处理器执行时使得所述一个或多个处理器通过以下操作构建二进制数组:
将所述扩展集合的数据元素分类到两个类之一中;以及
将第二Bloom过滤器应用于所述类之一中的数据元素,而不应用于所述类中的另一个中的数据元素,以创建第二二进制数组,
其中所述Bloom过滤器的假阳概率大于第二Bloom过滤器的假阳概率。
15.一种存储处理器可执行指令的非瞬时处理器可读介质,所述指令当执行时使得一个或多个处理器执行权利要求1-7中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/579,297 | 2014-12-22 | ||
US14/579,297 US9600524B2 (en) | 2014-12-22 | 2014-12-22 | Method and system for efficient feature matching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718502A CN105718502A (zh) | 2016-06-29 |
CN105718502B true CN105718502B (zh) | 2019-12-20 |
Family
ID=54850512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510969306.2A Active CN105718502B (zh) | 2014-12-22 | 2015-12-22 | 用于高效特征匹配的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9600524B2 (zh) |
EP (1) | EP3037990B1 (zh) |
CN (1) | CN105718502B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10510038B2 (en) * | 2015-06-17 | 2019-12-17 | Tata Consultancy Services Limited | Computer implemented system and method for recognizing and counting products within images |
US9842132B2 (en) | 2015-10-23 | 2017-12-12 | International Business Machines Corporation | Bloom filter index for device discovery |
US10222987B2 (en) * | 2016-02-11 | 2019-03-05 | Dell Products L.P. | Data deduplication with augmented cuckoo filters |
US10282438B2 (en) * | 2016-02-12 | 2019-05-07 | International Business Machines Corporation | Locating data in a set with a single index using multiple property values |
US10210195B2 (en) | 2016-02-12 | 2019-02-19 | International Business Machines Corporation | Locating data in a set with a single index using multiple property values |
US10042875B2 (en) | 2016-09-26 | 2018-08-07 | International Business Machines Corporation | Bloom filter index for device discovery |
US11094397B2 (en) | 2017-05-12 | 2021-08-17 | Noblis, Inc. | Secure communication of sensitive genomic information using probabilistic data structures |
US11037654B2 (en) | 2017-05-12 | 2021-06-15 | Noblis, Inc. | Rapid genomic sequence classification using probabilistic data structures |
US11055399B2 (en) * | 2018-01-26 | 2021-07-06 | Noblis, Inc. | Data recovery through reversal of hash values using probabilistic data structures |
CN112088375B (zh) * | 2018-05-08 | 2024-03-08 | 日本电信电话株式会社 | 安全性评价装置,安全性评价方法,以及记录介质 |
CN110097009B (zh) * | 2019-05-05 | 2021-07-06 | 西安电子科技大学 | 基于双相关滤波和隶属度加权决策的深度目标跟踪方法 |
CN110264503B (zh) * | 2019-06-18 | 2023-04-28 | 上海理工大学 | 一种基于cs搜索的图像配准方法 |
CN111460961B (zh) * | 2020-03-27 | 2023-07-18 | 上海大学 | 一种基于cdvs的相似图聚类的静态视频摘要方法 |
CN111506924B (zh) * | 2020-06-08 | 2023-10-13 | Oppo广东移动通信有限公司 | 一种差分隐私保护方法、装置及计算机可读存储介质 |
US11604777B1 (en) * | 2020-09-28 | 2023-03-14 | Amazon Technologies, Inc. | Indexing service for petabyte-scale datasets |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101536035A (zh) * | 2006-08-31 | 2009-09-16 | 公立大学法人大阪府立大学 | 图像识别方法、图像识别装置以及图像识别程序 |
WO2010120457A2 (en) * | 2009-04-01 | 2010-10-21 | Sybase, Inc. | Dynamic hash table for efficient data access in a relational database system |
CN102016918A (zh) * | 2008-04-28 | 2011-04-13 | 公立大学法人大阪府立大学 | 物体识别用图像数据库的制作方法、处理装置以及处理用程序 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5710916A (en) * | 1994-05-24 | 1998-01-20 | Panasonic Technologies, Inc. | Method and apparatus for similarity matching of handwritten data objects |
US20040153444A1 (en) * | 2003-01-30 | 2004-08-05 | Senders Steven L. | Technique for effectively providing search results by an information assistance service |
US7917299B2 (en) * | 2005-03-03 | 2011-03-29 | Washington University | Method and apparatus for performing similarity searching on a data stream with respect to a query string |
US20060282465A1 (en) * | 2005-06-14 | 2006-12-14 | Corescient Ventures, Llc | System and method for searching media content |
US8312023B2 (en) * | 2007-12-21 | 2012-11-13 | Georgetown University | Automated forensic document signatures |
US9037554B2 (en) * | 2009-06-30 | 2015-05-19 | Oracle America, Inc. | Bloom bounders for improved computer system performance |
US8224806B2 (en) * | 2009-07-31 | 2012-07-17 | Hewlett-Packard Development Company, L.P. | Selectivity-based optimized-query-plan caching |
US9009135B2 (en) * | 2010-01-29 | 2015-04-14 | Oracle International Corporation | Method and apparatus for satisfying a search request using multiple search engines |
WO2012137043A1 (en) * | 2011-04-07 | 2012-10-11 | Empire Technology Development Llc | Analyzing communications to determine business entity popularity |
US8639875B1 (en) * | 2011-09-06 | 2014-01-28 | Netlogic Microsystems, Inc. | Content search system having multiple pipelines |
JP2013206387A (ja) * | 2012-03-29 | 2013-10-07 | Ntt Docomo Inc | データ検索システム及びデータ検索方法 |
EP2842088A4 (en) * | 2012-04-27 | 2016-01-20 | Blackberry Ltd | SYSTEMS AND METHOD FOR MANUFACTURE AND USE OF A PERSONAL LINKAGE GRAPH |
US9015269B2 (en) * | 2012-06-19 | 2015-04-21 | Canon Kabushiki Kaisha | Methods and systems for notifying a server with cache information and for serving resources based on it |
US20140372956A1 (en) * | 2013-03-04 | 2014-12-18 | Atigeo Llc | Method and system for searching and analyzing large numbers of electronic documents |
US9344441B2 (en) * | 2014-09-14 | 2016-05-17 | Cisco Technology, Inc. | Detection of malicious network connections |
US9348920B1 (en) * | 2014-12-22 | 2016-05-24 | Palantir Technologies Inc. | Concept indexing among database of documents using machine learning techniques |
US10503764B2 (en) * | 2015-06-01 | 2019-12-10 | Oath Inc. | Location-awareness search assistance system and method |
-
2014
- 2014-12-22 US US14/579,297 patent/US9600524B2/en active Active
-
2015
- 2015-12-21 EP EP15201545.9A patent/EP3037990B1/en active Active
- 2015-12-22 CN CN201510969306.2A patent/CN105718502B/zh active Active
-
2017
- 2017-02-08 US US15/427,177 patent/US10007688B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101536035A (zh) * | 2006-08-31 | 2009-09-16 | 公立大学法人大阪府立大学 | 图像识别方法、图像识别装置以及图像识别程序 |
CN102016918A (zh) * | 2008-04-28 | 2011-04-13 | 公立大学法人大阪府立大学 | 物体识别用图像数据库的制作方法、处理装置以及处理用程序 |
WO2010120457A2 (en) * | 2009-04-01 | 2010-10-21 | Sybase, Inc. | Dynamic hash table for efficient data access in a relational database system |
Non-Patent Citations (1)
Title |
---|
Locality-sensitive bloom filter for approximate membership query;Yu Hua 等;《IEEE Transactions on Computers》;20120630;说明书第[0022]-[0026]段 * |
Also Published As
Publication number | Publication date |
---|---|
US20160179893A1 (en) | 2016-06-23 |
US10007688B2 (en) | 2018-06-26 |
EP3037990A1 (en) | 2016-06-29 |
CN105718502A (zh) | 2016-06-29 |
US20170147620A1 (en) | 2017-05-25 |
EP3037990B1 (en) | 2019-02-20 |
US9600524B2 (en) | 2017-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718502B (zh) | 用于高效特征匹配的方法和设备 | |
US11526799B2 (en) | Identification and application of hyperparameters for machine learning | |
JP6606169B2 (ja) | 情報の暗号化及び復号化 | |
Zhou et al. | Towards codebook-free: Scalable cascaded hashing for mobile image search | |
US8908978B2 (en) | Signature representation of data having high dimensionality | |
US20200175259A1 (en) | Face recognition method and apparatus capable of face search using vector | |
US11714921B2 (en) | Image processing method with ash code on local feature vectors, image processing device and storage medium | |
EP2779520B1 (en) | A process for obtaining candidate data from a remote storage server for comparison to a data to be identified | |
Zhou et al. | Multiple distance-based coding: toward scalable feature matching for large-scale web image search | |
CN106933824B (zh) | 在多个文档中确定与目标文档相似的文档集合的方法和装置 | |
CN115618291A (zh) | 一种基于Transformer的web指纹识别方法、系统、设备以及存储介质 | |
CN113254687B (zh) | 图像检索、图像量化模型训练方法、装置和存储介质 | |
JP6042778B2 (ja) | 画像に基づくバイナリ局所特徴ベクトルを用いた検索装置、システム、プログラム及び方法 | |
CN110597977B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021142072A1 (en) | Peceptual video fingerprinting | |
Duan et al. | Minimizing reconstruction bias hashing via joint projection learning and quantization | |
US20130226941A1 (en) | System and method for classifying signals using the bloom filter | |
Wu et al. | Adaptive dither voting for robust spatial verification | |
Grant et al. | Nearly optimal linear embeddings into very low dimensions | |
CN113722471A (zh) | 一种文本摘要生成方法、系统、电子设备及介质 | |
US11822803B2 (en) | Method, electronic device and computer program product for managing data blocks | |
Ferdowsi et al. | Content identification: binary content fingerprinting versus binary content encoding | |
Reznik et al. | Fast quantization and matching of histogram-based image features | |
CN116846600A (zh) | 文件传输方法、装置、计算机设备、存储介质和程序产品 | |
CN115129713A (zh) | 数据检索方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |