CN111274288A - 分布式检索方法、装置、系统、计算机设备及存储介质 - Google Patents

分布式检索方法、装置、系统、计算机设备及存储介质 Download PDF

Info

Publication number
CN111274288A
CN111274288A CN202010051528.7A CN202010051528A CN111274288A CN 111274288 A CN111274288 A CN 111274288A CN 202010051528 A CN202010051528 A CN 202010051528A CN 111274288 A CN111274288 A CN 111274288A
Authority
CN
China
Prior art keywords
retrieval
feature
node
display
features
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
Application number
CN202010051528.7A
Other languages
English (en)
Other versions
CN111274288B (zh
Inventor
徐松林
杨彦斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Cloud Computing Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Cloud Computing Beijing Co Ltd filed Critical Tencent Cloud Computing Beijing Co Ltd
Priority to CN202010051528.7A priority Critical patent/CN111274288B/zh
Publication of CN111274288A publication Critical patent/CN111274288A/zh
Priority to PCT/CN2020/130248 priority patent/WO2021143351A1/zh
Priority to US17/665,404 priority patent/US20220157043A1/en
Application granted granted Critical
Publication of CN111274288B publication Critical patent/CN111274288B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/751Comparing pixel values or logical combinations thereof, or feature values having positional relevance, e.g. template matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/761Proximity, similarity or dissimilarity measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种分布式检索方法、装置、系统、计算机设备及存储介质,属于分布式技术领域,本申请实施例能够接收接入节点转发的检索请求,在至少两个显存块中查找与待检测特征相匹配的匹配特征,该显存块是具有固定长度的物理存储单元,向接入节点返回检索结果,该检索结果用于指示与待检测特征匹配的特征。由于本申请实施例中的检索节点中包括至少两个显存块,至少两个显存块之间采用块链式结构分配缓存空间,则特征在显存块中能够连续存储,克服了相关技术中由于删除造成的存储空洞带来的数据离散的问题,在特征进行并行比对时,提高了匹配与待检测特征的效率,提高了分布式检索系统的性能。

Description

分布式检索方法、装置、系统、计算机设备及存储介质
技术领域
本申请实施例涉及分布式技术领域,特别涉及一种分布式检索方法、装置、系统、计算机设备及存储介质。
背景技术
随着社交应用的用户上传的大量图像,众多的图像数据需要存储在云端。在一种应用场景中,图像数据需要提取特征,并将图像特征予以保存。
相关技术中,图像检索技术能够从众多图像特征中获取与待检测特征相匹配的匹配特征。在该技术中,待检测特征将与众多图像特征进行批量的逐一比对,直至获取与该特征匹配的检索结果。
由于相关技术中使用数组的结构存储图像特征,因此,当数组中的特征被删除时,数组将出现数据空洞,造成待检测特征与图像特征比对的效率下降。
发明内容
本申请实施例提供了一种分布式检索方法、装置、计算机设备及存储介质,可以用于解决当数组中的特征被删除时,数组将出现数据空洞,造成待检测特征与图像特征比对的效率下降的问题。所述技术方案如下:
根据本申请的一方面内容,提供了一种分布式检索方法,应用于检索节点中,所述检索节点中包括至少两个显存块,至少两个所述显存块之间采用块链式结构分配缓存空间,所述方法包括:
接收接入节点转发的所述检索请求,所述检索请求用于指示待检测特征;
在至少两个所述显存块中查找与所述待检测特征相匹配的匹配特征,所述显存块是具有固定长度的物理存储单元,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应;
向所述接入节点返回检索结果,所述检索结果用于指示与所述匹配特征。
根据本申请的另一方面内容,提供了一种分布式检索方法,应用于接入节点中,所述方法包括:
接收分布式检索的系统外部的检索请求,所述检索请求用于指示待检测特征;
向检索节点转发所述检索请求;
接收所述检索节点返回的检索结果,所述检索结果用于指示与所述待检测特征匹配的特征,所述检索结果是所述检索节点在至少两个显存块中查找到与所述待检测特征相匹配的匹配特征,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应,所述显存块与所述检索节点中的其它所述显存块用块链式结构分配缓存空间;
向发起所述检索请求的对象提供所述检索结果。
根据本申请的另一方面内容,提供了一种分布式检索的系统,所述系统包括:
接入节点,用于接收系统外部的检索请求,所述检索请求用于指示待检测特征;
检索节点,用于接收所述接入节点转发的所述检索请求;
所述检索节点,用于在至少两个显存块中查找与所述待检测特征相匹配的匹配特征,所述显存块是具有固定长度的物理存储单元,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应,所述显存块与所述检索节点中的其它所述显存块用块链式结构分配缓存空间;
所述检索节点,用于向所述接入节点返回检索结果,所述检索结果用于指示与所述待检测特征匹配的特征;
所述接入节点,用于提供所述检索结果。
根据本申请的另一方面内容,提供了一种分布式检索装置,应用于检索节点中,所述检索节点中包括至少两个显存块,至少两个所述显存块之间采用块链式结构分配缓存空间,所述装置包括:
第一接收单元,用于接收接入节点转发的所述检索请求,所述检索请求用于指示待检测特征;
特征查找单元,用于在至少两个显存块中查找与待检测特征相匹配的匹配特征,所述显存块是具有固定长度的物理存储单元,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应;
结果返回单元,用于向所述接入节点返回检索结果,所述检索结果用于指示所述匹配特征。
根据本申请的另一方面内容,提供了一种分布式检索装置,应用于接入节点中,所述装置包括:
第三接收单元,用于接收分布式检索的系统外部的检索请求,所述检索请求用于指示待检测特征;
特征转发单元,用于向检索节点转发所述检索请求;
结果接收单元,用于接收所述检索节点返回的检索结果,所述检索结果用于指示与所述待检测特征相匹配的匹配特征,所述检索结果是所述检索节点在至少两个显存块中查找到所述匹配特征,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应,所述显存块与所述检索节点中的其它所述显存块用块链式结构分配缓存空间;
结果转发单元,用于向发起所述检索请求的对象提供所述检索结果。
根据本申请的另一方面内容,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如本申请实施提供的分布式检索方法。
根据本申请的另一方面内容,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本申请实施提供的分布式检索方法。
本申请实施例提供的技术方案带来的有益效果可以包括:
由于本申请实施例能够接收接入节点转发的检索请求,在至少两个显存块中查找与待检测特征相匹配的匹配特征,该显存块是具有固定长度的物理存储单元,向接入节点返回检索结果,该检索结果用于指示与待检测特征匹配的特征。由于本申请实施例中的检索节点中包括至少两个显存块,至少两个显存块之间采用块链式结构分配缓存空间,则特征在显存块中能够连续存储,克服了相关技术中由于删除造成的存储空洞带来的数据离散的问题,在特征进行并行比对时,提高了匹配与待检测特征的效率,提高了分布式检索系统的性能。
附图说明
为了更清楚地介绍本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例提供的一种分布式缓存系统的架构示意图;
图2是根据本申请实施例示出的一种私有化分布式特征库系统的结构示意图;
图3是基于图2所示私有化分布式特征库系统提供的一种节点拓扑图;
图4是本申请实施例提供的一种私有化分布式特征库系统的框架图;
图5是本申请实施例提供的另一种私有化分布式特征库系统的框架图;
图6是本申请实施例提供的一种私有化分布式特征库系统的路由策略的示意图;
图7是本申请实施例提供的一种私有化分布式特征库系统的主备同步流程所涉及的实施环境图;
图8是本申请实施例提供的一种私有化分布式特征库系统的缓存管理模式的示意图;
图9是本申请实施例提供的一种私有化分布式特征库系统的特征检索流程的示意图;
图10是基于图9所示实施例提供的一种检索请求合并的示意图;
图11是本申请实施例提供的一种私有化分布式特征库系统支撑的场景示意图;
图12是本申请一个示例性实施例提供的一种分布式检索方法的流程图;
图13是本申请另一个示例性实施例提供的分布式检索方法流程图;
图14是是本申请另一个示例性实施例提供的分布式检索方法流程图;
图15是本申请一个示意性实施例提供的一种分布式检索方法的流程图;
图16是本申请一个示例性实施例提供的分布式检索装置的结构框图;
图17是本申请另一个示例性实施例提供的分布式检索装置的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了本申请实施例所示方案易于理解,下面对本申请实施例中出现的若干名词进行介绍。
特征:用于唯一标识图片中的对象。示意性的,特征是具有固定长度的字符串,该字符串是数值型字符串。在本申请的一种应用场景中,特征服务可以用于人脸的特征提取、机动车的特征提取、人体的特征提取或非机动车的特征提取中的至少一种场景。需要说明的是,本申请实施例不对特征提取场景进行限定,本申请的特征提取场景可以应用在任意指定类型的可视物体的特征提取场景中。
检索:用于确定与给定图片最相关的结果图片的操作。其中,给定图片中包含目标对象,结果图片中包含与该目标图像相似度高的对象。例如,目标对象可以是人脸。检索的过程可以是从目标对象中提取特征,根据特征在指定的特征库执行1:N的特征比对。检索得到的结果可以按照相似度进行倒序排列,从而获得与目标对象相似度最高的多个对象信息。
可选地,检索所基于的特征库是通过导入包含目标对象的信息的图片预先建立的库。示意性的,检索可以采用余弦距离或欧氏距离来计算目标对象的特征和特征库中的特征之间的相似度。
CAP理论:用于指示一个分布式系统中,一致性(英文:Consistency)、可用性(英文:Availability)和分区容错性(英文:Partition tolerance)不能同时成立。分布式系统至多同时满足上述三项指标中的两项。
分布式锁:是用于控制分布式系统中不同进程同步访问共享资源的一种机制。若不同的进程需要互斥地访问共享资源时,该不同的进程可以通过互斥的方式防止互相干扰。由此可见,分布式锁能够提高分布式系统的一致性。
接入节点:用于在分布式系统中对系统外处理请求的参数校验、鉴权和拦截过滤等操作。可选地,接入节点对分布式系统外还可以执行均摊流量的操作,从而提高分布式系统的性能、可用性和安全性。示意性的,接入节点用于对系统内根据指定的路由策略,将从外部接收的请求路由到指定的检索节点上,从而实现最大化利用每个检索节点的计算能力。
检索节点:在分布式检索系统中,检索节点提供局部的1:N的检索功能。示意性的,检索节点表现为单独的进程。一种检索节点的功能性表现中,检索节点具备向分布式检索系统外提供单机版的简单服务的功能。检索节点拥有归属于自身的一组硬件资源,例如CPU、GPU和磁盘等。对于分布式检索系统中的多个检索节点而言,检索节点可以包括主检索节点和从检索节点。
随着当今图像采集设备和社交媒体的广泛应用,由此产生的图像数据在云端进行存储。在图像检索技术的广泛发展中,上述图像数据可以被提取特征,作为特征库为图像检索服务。由于特征库的数据量巨大,分布式缓存系统随之被设计出来,用于存储特征库。
在一种应用方式中,Codis是一种常用的分布式缓存系统。Codis是一种分布式Redis的解决方案,具备把多个Redis实例的CPU计算能力整合在一起,从而应对高并发量的读写操作。请参见图1,图1是本申请实施例提供的一种分布式缓存系统的架构示意图。在图1中,包括客户端(英文:Client)110、中间代理系统120、缓存实例131、缓存实例132和缓存实例133。示意性的,中间代理系统120可以是Codis,缓存实例可以是Redis实例。需要说明的是,缓存实例可以有多个。
在图1所示的分布式缓存系统中,中间代理系统120可以采用一致性hash的路由策略,将所有的key分成1024个槽(英文:Slot)。可选的,key还能够被配置为2048个槽或者4096个槽。其中,槽与缓存实例之间存在映射关系。作为一种可能的映射关系,hash(CRC32(key))%1024可以得到key对应的缓存实例。
针对分布式缓存系统的扩容场景,槽与缓存实例之间的映射关系存在变化,所有的key都需要按照新的槽位信息决定是否迁移数据。一种可能的方式中,当key的槽位信息没有发生变化时,key无需迁移数据。另一种可能的方式中,当key的槽位信息发生变化时,key将数据迁移到新的槽位中。
然而,Codis通过Redis实例本身的Replication(中文:拷贝)机制实现多个Redis实例之间的主从同步。例如,在图1所示的缓存实例131、缓存实例132和缓存实例133中,若缓存实例131是主检索节点,缓存实例132是从检索节点,则缓存实例131和缓存实例132之间通过Replication机制实现主从同步。在一种可能的突发场景中,若在主从拷贝过程中,主检索节点缓存实例131出现宕机,且缓存实例132尚未完成同步操作,则主检索节点缓存实例131中的数据会发生永久性丢失,导致分布式缓存系统出现数据一致性的问题。
在上述图1所示的分布式缓存系统中,由于Redis节点采用一致性Hash的路由策略。因此,缓存实例在系统扩容或者缩容时,将会发生缓存实例之间的数据迁移。其中,数据迁移中会存在数据不一致,到至迁移成本高,且存在雪崩效应的风险。
另一方面,图1所示的分布式缓存系统中,基于一致性Hash的小规模特征库数据分布呈离散状态,无法形成充分连续,存在计算资源的浪费。
又一方面,图1所示的分布式缓存系统依赖Redis节点的同步机制实现一个主节点,多个从节点的同步机制。当该主节点出现宕机,且该主节点对应的从节点未完成数据同步时,分布式缓存系统存在永久丢失主节点中的数据的风险。
请参考图2,图2是根据本申请实施例示出的一种私有化分布式特征库系统的结构示意图。该系统包括:若干个终端220和服务器集群240。
终端220可以是手机、平板电脑、电子书阅读器、智能眼镜、智能手表、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器等等。需要说明的是,终端220可以作为使用私有化分布式特征库系统的用户设备,利用服务器集群240中部署的私有化分布式特征库系统进行图像检索。
终端220之间可以通过短距离无线通信技术进行通信,比如,终端220之间可以通过Wi-Fi技术、蓝牙技术以及NFC技术中的至少一种短距离无线通信技术进行通信。
终端220中可以安装有支持虚拟场景的应用程序,相应的,服务器集群240可以是支持虚拟场景的应用程序对应的服务器。
终端220与服务器集群240之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。
服务器集群240是一台服务器,或者由若干台服务器,或者是一个虚拟化平台,或者是一个云计算服务中心。由于本申请实施例中提供一种私有化分布式特征库系统。因此,服务器集群240中可以包括若干台服务器,并在服务器集群240中部署私有化分布式特征库系统。
示意性的,请参见图3。图3是基于图2所示私有化分布式特征库系统提供的一种节点拓扑图。
在图3中,服务器集群240可以包括接入节点241和检索节点(英文:Node)242。终端220上可以运行客户端221。其中,检索节点可以包括检索节点242a、检索节点242b和检索节点242c。每一个检索节点中可以包括缓存(英文:cache)模块和检索(英文:retrieve)模块。示意性的,缓存模块提供缓存功能,支持特征库的基础数据库操作,基础数据库操作包括增删改查。读取服务提供特征检索功能,该特征检索功能用于在特征库中进行特征检索,特征库是私有化分布式特征库系统中缓存的包含图片的特征的数据库。
在一种可能的方式中,接入节点241可以是Proxy(中文:代理)节点。示意性的,该Proxy节点可以通过GO语言开发。一种可能的部署方式中,Proxy节点能够无状态多副本部署。针对该接入节点241的功能,其主要负责私有化分布式特征库系统中的请求鉴权和参数校验等工作。当接入节点241接收到客户端221发送的检索请求时,接入节点241通过第一路由策略分发该检索请求。接入节点241还可以调用私有化分布式特征库系统中的特征服务(英文:Hades Feature),从缓存图片中提取特征,并通过第二路由策略将特征数据缓存到对应的检索节点中的缓存上。
一种可能的方式中,检索节点可以采用rpc(英文:Remote Procedure Call,中文:远程过程调用)框架开发。可选地,rpc框架可以采用brpc框架。一种可能的部署方式中,检索节点执行有状态部署。针对检索节点的硬件配置,一个检索节点可以对应一个GPU(英文:Graphics Processing Unit,中文:图形处理器)显卡或一台CPU(英文:centralprocessing unit,中文:中央处理器)机器。并且,检索节点可以独占其对应的硬件资源。
可选的,图2所示的私有化分布式特征库系统还可以包括管理设备260,该管理设备260与服务器集群240之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible MarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet ProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
基于本申请实施例提供的私有化分布式特征库系统,本申请实施例还可以提供一种私有化分布式特征库系统的设计框架。请参见图4,图4是本申请实施例提供的一种私有化分布式特征库系统的框架图。
在图4中,私有化分布式特征库系统包括接入节点(英文:Hades Access)410、特征服务节点(英文:Hades Feature)420、检索节点(英文:Hades Node)430、监控服务节点(英文:Hades Meta)440、配置中心(英文:Hades Config)450和数据库(英文:Data Base)460。
接入节点410用于代理特征库的增删改查操作以及检索特征的请求。根据指定的路由策略,调度多个检索节点,实现分布式缓存特征和分布式检索特征的功能。其中,接入节点410与特征服务节点420相连,用于在记录图片的特征时,调用特征服务节点420提取图片中的对象的特征。示意性的,对象包括人脸、车辆和人体。
特征服务节点420用于提供特征提取服务。一种可能的方式中,特征服务节点420提供人脸特征服务,该人脸特征服务包括人脸检测操作、配准操作和提取特征服务。另一种可能的方式中,特征服务节点420提供车辆特征服务,该车辆特征服务包括车辆检测操作和提取特征服务。又一种可能的方式中,特征服务节点420提供人体特征服务,该人体特征服务包括人体检测操作和提取特征服务。
检索节点430与接入节点410相连,用于提供针对特征库的增删改查,以及基于特征库的检索操作。在本申请实施例中,检索用于指示利用处理器的并行计算能力,将对象的特征向量与特征库内的库内特征矩形计算相似度,然后将在检索结果中按照相似度从高到低降序排列,命中的特征。一种可能的方式中,检索结果可以显示相似度最高的128个特征。需要说明的是,检索结果显示的个数可以进行调整,本申请实施例对此不作限定。
监控服务节点440与检索节点430相连,监控服务节点440用于监控检索节点430的状态。检索节点430的状态包括在线状态和离线状态。当检索节点430处于离线状态时,检索节点430出现宕机(又称故障)。在一种应用方式中,当同属于一个检索节点标识的检索节点不存在主(英文:Master)检索节点时,监控服务节点440进行选举主检索节点的流程。示意性的,当检索节点430中的检索节点组431中包括检索节点431a和检索节点431b时,检索节点431a和检索节点431b对应的检索节点标识均为431。在此情况下,监控服务节点440从检索节点431a和检索节点431b中确定出一个主检索节点,其余的检索节点是从(英文:slave)检索节点。示意性的,若检索节点431a被确定为主检索节点,则检索节点431b是相应的从检索节点。
需要说明的是,监控服务节点440可以是多实例部署。监控服务节点440也可以包括主监控服务节点441和从监控服务节点442。监控服务节点440中的选主流程可以通过Etcd分布式锁实现选举主监控服务节点的过程。
配置中心450与监控服务节点440相连,用于获取监控服务节点440上报的主检索节点信息列表。需要说明的是,该主检索节点信息列表用于记录本私有化分布式特征库系统中全部的主检索节点的信息。一种可能的方式中,该主检索节点的信息包括节点标识(英文:node_id)、节点类型(英文:node_type)、节点存储容量(英文:node_cap)和特征库信息。其中,特征库信息包括特征库标识(英文:lib_id)、特征库存储容量(英文:lib_cap)和特征库缓存量(英文:lib_size)。
可选地,本申请实施例提供的检索节点430支持相关的相似度度量。在一种可能的方式中,相似度度量可以包括检索类型、特征维度、特征类型和计算方式。其中,(1)检索类型可以包括调度CPU检索和调度GPU检索。(2)特征维度可以是256、512、768、1024和1536等数据。(3)特征类型可以是INT7、INT8或者FP32。(4)计算方式可以包括余弦(英文:COSINE)距离和欧式(英文:EUCLIDEAN)距离。
请参见表一,其示出了本申请实施例提供的一种相似度度量的内容。
表一
Figure BDA0002371348280000111
在图4所示的私有化分布式特征库系统的架构中,数据库460与接入节点410直接相连,为整个系统提供数据库服务。
在本申请实施例所示的方案中,该私有化分布式特征库系统的架构可以称作基于数据库的方案。
在另一种可能的方式中,私有化分布式特征库系统的数据库还可以为分布式的数据库,每一个检索节点本地部署有数据库。请参见图5,图5是本申请实施例提供的另一种私有化分布式特征库系统的框架图。
在图5中,私有化分布式特征库系统包括接入节点510、特征服务节点520、检索节点530、监控服务节点540、配置中心550和数据库560。与图4所示的私有化分布式特征库系统的架构的系统不同的是,图5所示的架构将数据库设置为分布式的数据库,每一个检索节点包括一个本地的数据库。一种可能的方式中,数据库可以是LevelDB。
在图5所示实施例中,接入节点510、特征服务节点520、检索节点530、监控服务节点540和配置中心550的相关功能和配置,可以参照接入节点410、特征服务节点420、检索节点430、监控服务节点440和配置中心450的介绍,本处不再赘述。
在一种可能的实现方式中,图5所示的私有化分布式特征库系统的架构可以称为基于文件的方案。
通过上述介绍,本申请所示的私有化分布式特征库系统既可以按照图4所示的架构进行部署,也可以按照图5所示的架构进行部署。在此基础上,下面将介绍该私有化分布式特征库系统的路由策略、主备同步流程、缓存管理模式和特征检索流程。
下面将通过图6所示的实施例来介绍私有化分布式特征库系统的路由策略。
请参考图6,图6是本申请实施例提供的一种私有化分布式特征库系统的路由策略的示意图。在图6中,私有化分布式特征库系统包括接入节点610、检索节点620和配置中心630。其中,检索节点620包括检索节点621和检索节点622。其中,检索节点621包括存有特征库1的数据的显存块6211,和,存有特征库3的数据的显存块6212。显存块6211中包括缓存空间6211a和特征库6211b;显存块6212中包括缓存空间6212a和特征库6212b。检索节点622中包括存有特征库3的数据的显存块6221。显存块6221中包括缓存空间6221a和特征库6221b。
在图6所示的系统中,能够对外提供图片的特征检索服务。在本系统中,需要预先建立特征库。系统外界能够批量导入图片。一种可能的方式中,图片的数量可以是海量的。接入节点调用相应的特征服务提取图片中的对象的对象特征。随后,系统能够通过一定的路由策略将对象特征缓存到相应的节点缓存上,从而建立分布式特征库。
在本申请实施例中,终端根据配置中心上报的主检索节点信息列表,按照顺序分配原则,从前到后扫描列表。其中,主检索节点信息列表可参见图4中相关的内容,此处不再赘述。
在本申请实施例中,私有化分布式特征库系统可以按照以下规则向检索节点中存储特征。
规则(1),在当前检索节点的缓存空间未满时,向该检索节点分配特征,以存入新的特征。
规则(2),在当前检索节点的缓存空间已满,但当前检索节点的特征库未满时,向该检索节点分配特征,以存入新的特征。
规则(3),在当前检索节点的缓存空间已满,且当前检索节点的特征库已满时,判断主检索节点信息列表中当前检索节点的后一个检索节点是否可以写入特征。
下面将通过图7所示的实施例来介绍私有化分布式特征库系统的主备同步流程。
请参见图7,图7是本申请实施例提供的一种私有化分布式特征库系统的主备同步流程所涉及的实施环境图。在图7中,包括接入节点710、主检索节点721、从检索节点722和数据库730。
在主检索节点721中,包括显存池721a和同步线程721b。
在从检索节点722中,包括显存池722a和同步线程722b。
示意性的,私有化分布式特征库系统中每个服务模块都是多实例部署。因此,具备通过主动冗余或被动冗余方式,保障服务模块的可用性。由于主检索节点721和从检索节点722均是有状态的检索节点,并且,该检索节点中缓存有重要的特征数据。因此,本申请实施例提供一种主备同步的方法,来提高主检索节点和从检索节点之间的数据的一致性。
在本申请实施例中,数据库730中可以创建操作流水表731和特征数据表732。其中,操作流水表731用于记录特征库的增删改查操作。当系统外界为建立特征库而导入海量的图片时,系统采用穿透写(英文:Write-Through)模式将特征写入数据库730。
需要说明的是,针对特征库的特征数据的增删改查操作,将由接入节点导入系统,先对数据库中的特征数据进行相关操作。操作流水表731保存有操作的流水记录。特征数据表732保存有特征数据。
在本申请实施例中,本私有化分布式特征库系统中的接入节点710能够通过路由策略,将特征数据写到主检索节点721的缓存空间中,保证数据库730中的特征数据与主检索节点721的缓存空间中的特征数据一致。
随后,从检索节点722将通过同步线程722b从数据库730中拉取串行化操作流水,该串行化操作流水是操作流水表731中的全部或者部分数据。一种可能的方式中,该串行化操作流水对应主检索节点721的缓存空间中存储特征数据的操作。由于,从检索节点722能够根据串行化操作流水得到特征数据。因此,从检索节点722在通过同步线程722b从数据库730中拉取串行化操作流水后,从检索节点722和主检索节点721之间完成了数据一致。
下面将通过图8所示的实施例来介绍私有化分布式特征库系统的缓存管理模式。
请参见图8,图8是本申请实施例提供的一种私有化分布式特征库系统的缓存管理模式的示意图。在图8中,包括检索节点800。在检索节点800中,包括特征库810和特征库820。特征库810中包括已释放数据列表811、显存块列表812和已占用数据字典813。
在图8所示的显存块列表812中,包括显存块8121和显存块8122。其中,显存块8121包括第一存储单元8121a、第二存储单元8121b和第三存储单元8121c。显存块8122包括第四存储单元8122a、第五存储单元8122b和第六存储单元8122c。
在一种可能的实施方式中,本申请中的特征数据将按照显存块列表812中设置的显存块进行块链式的数据缓存。在该设计中,一个显存块中数据具有具备连续性,该显存块中的特征数据能够充分利用处理器的并行计算能力。由此,显存块内的特征数据能够保证连续分布,显存块外的数据可以动态增长而不影响显存块中的数据。
在图8中的已释放数据列表811中,记录有k个已释放的数据存储地址。其中,已释放数据块8111的数据存储地址是第二存储单元8121b,已释放数据块8112的数据存储地址是第四存储单元8122a。
在图8中的已占用数据字典813中,记录有q个已占用的数据存储地址。其中,已占用数据块8131的数据存储地址是第三存储单元8121c,已占用数据块8132的数据存储地址是第五存储单元8122b。
可选地,以特征库执行增删改操作为例,说明本申请中的检索节点相应的功能。
(1)当特征库执行删除特征的操作时,特征占用的显存信息将存在到已释放数据列表811中。并将显存信息的内容置0。比如,原本第二存储单元8121b中存有特征,将该特征删除后,第二存储单元8121b中的数据位都置0,并将第二存储单元8121b的显存信息存储在已释放数据列表811中。
(2)当特征库执行更新或查询特征的操作时,检索节点可以直接已占用数据字典813,通过已占用数据字典813确定所要更新或者查询的特征。
(3)当特征库执行插入特征时,检索节点能够复用已释放数据列表811中指示的数据存储地址。在此基础上,若已释放数据列表811中指示的显存块中的存储单元已存满特征,则令检索单元确定是否存在有空闲的存储单元的显存块。在此基础上,若已被使用的显存块均已存满特征,则向检索节点申请新的显存块。
下面将通过图9介绍私有化分布式特征库系统的特征检索流程。
请参考图9,图9是本申请实施例提供的一种私有化分布式特征库系统的特征检索流程的示意图。在图9中,包括增删改层级的操作9A和特征检测层级的操作9B。
在增删改层级的操作9A中,海量人脸库911在路由策略912的作用下,被接入节点调用特征服务节点,提取出特征,并缓存到各个检索节点中,形成检索节点913和检索节点914。
其中,检索节点913包括底库1、底库2和底库3中的特征数据,检索节点914包括底库2、底库3和底库4中的特征数据。需要说明的是,检索节点913中存储的底库2的数据与检索节点914中存储的底库2的数据不同。例如,底库2中包括10万个特征,检索节点913中存储的底库2存储有前5万个特征,检索节点914中存储的底库2存储有后5万个特征。
在特征检测层级的操作9B中,接入节点921接收到包含外部人脸922的图像检索请求。接入节点921将检索请求转发至检索节点,检索节点可以按照请求针对的底库拆分检索请求。例如,检索请求是针对底库2的请求的,则接入节点将检索请求分别转发至检索节点913和检索节点914,分别获取检索节点913和检索节点914中的底库2的特征。随后,检索节点913或检索节点914将底库2中的特征合并在一起,组成一个库内特征矩阵。其中,检索节点将计算库内特征矩阵和人脸特征向量之间的相似度。需要说明的是,该计算过程可以参照图10中的10A流程。计算方法可以参照本申请实施例的表一中所示的方法。随后,检索节点可以输出底库中与人脸特征向量最相似的前100个特征。示意性的,显示该100个特征可以按照相似度从高到低的顺序排列。
可选的,当接入节点还可以获取其它底库中的检索结果,并将各个底库中的检索结果合并。接入节点还可以设置一相似度阈值,截取高于该相似度阈值的特征作为最终的识别结果,随后,接入节点输出识别结果。
在一种可能的实施的方式中,终端还能够通过batch加速的方式,将多个检索请求合并,请参见图10,图10是基于图9所示实施例提供的一种检索请求合并的示意图。在图10中,流程10A中,人脸特征向量A1将和库内特征矩阵B1进行一次相似度计算。在流程10B中,人脸特征向量A1、人脸特征向量A2和人脸特征向量A3将和库内特征矩阵B1进行一次相似度计算。本申请实施例提供的检索请求的合并方式,在库内特征矩阵B1数量庞大的情况下,能够有效提供检索效率。
本申请实施例公开的私有化分布式特征库系统能够应用在多种对象的检索中。例如,对象可以包括人脸、车辆和人体。示意性的,本申请实施例能够支持超大库场景和金融业场景。
一种实现方式中,超大库场景可以包括上亿规模的特征库。该场景中使用的私有化分布式特征库系统,可以采用本申请提供的基于文件的分布式检索方案。
另一种实现方式中,金融业场景需求服务具有高可用性。其中的数据能够中心化存储与加密,可以采用本申请提供的基于数据库的分布式检索方案。
由于本申请实施例中的检索节点采用块链式的存储结构存储特征。因此,检索节点中的显存块能够根据特征库的大小,适应性地调整显存块的大小,以平衡性能与缓存属性。
一种应用场景中,若私有化分布式特征库系统应用在小库场景中,则私有化分布式特征库系统将在检索反馈时长允许的前提下,将显存块的大小调小,从而减少缓存成本,实现通过延长检索耗时换取减少缓存占用空间的效果。
例如,当1个显存块的大小是100MB,且特征大小是101MB,则该特征将占用私有化分布式特征库系统2个显存块,也即占用200MB的缓存容量。若1个缓存块的大小是10MB,则特征将占用私有化分布式特征库系统11个显存块,也即占用110MB的缓存容量。后者占用的缓存空间小于前者,同时由于数据的连续性前者较好。因此,本申请在小库场景中,本身检索耗时足够块的前提下,降低了缓存空间的占用。
另一种应用场景中,若私有化分布式特征库系统应用在大库场景中,则私有化分布式特征库系统将在缓存空间允许的前提下,将显存块的大小调大,从而增大特征库的数据连续性,使得特征检索能够在较短的时间中得到检索结果。
请参见图11,图11是本申请实施例提供的一种私有化分布式特征库系统支撑的场景示意图。在图11中,应用的场景包括人脸特征检索场景1111,机动车特征检索场景1112和非机动车特征检索1113。图11还包括协议层1120、逻辑层1130和计算层1140。
请参考图12,图12是本申请一个示例性实施例提供的一种分布式检索方法的流程图。该分布式检索方法可以应用在上述所示的检索节点中。其中,检索节点中包括至少两个显存块,至少两个显存块之间采用块链式结构分配缓存空间。在图12中,分布式检索方法包括:
步骤1210,接收接入节点转发的检索请求,检索请求用于指示待检测特征。
在本申请实施例中,检索节点能够接收接入节点转发的检索请求。
步骤1220,在至少两个显存块中查找与待检测特征相匹配的匹配特征,显存块是具有固定长度的物理存储单元,显存块包括指定个数的存储单元,存储单元与已存特征对应。
在一种可能的实现方式中,检索节点将在自身缓存的特征中检索与检索请求中的待检测特征匹配的特征。其中,检索节点中可以包含若干个显存块。
示意性的,为了防止木桶效应,本申请实施例可以将显存块的大小设置为相同的大小。其中,显存块包括指定个数的存储单元。可选地,一个存储单元用于存储一个已存特征。
步骤1230,向接入节点返回检索结果,检索结果用于指示与待检测特征匹配的特征。
示意性地,检索节点能够向接入节点返回检索结果。检索结果中指示与待检测特征匹配的特征,该特征是检索节点中缓存的特征。
在本申请实施例中,检索节点执行分布式检索方法的过程可以参照本申请实施例在上文中执行相关操作,此处不再赘述。
综上所述,本实施例提供的分布式检索方法,由于本申请实施例能够接收接入节点转发的检索请求,在显存块中查找与待检测特征匹配的特征,该显存块是具有固定长度的物理存储单元,显存块包括指定个数的存储单元,存储单元与已存特征对应,向接入节点返回检索结果,该检索结果用于指示与待检测特征匹配的特征。由于本申请实施例中的显存块时具有固定长度的存储单元,则特征在显存块中能够连续存储,检索节点中多个显存块之间采用块链式结构分配存储空间,克服了相关技术中由于删除造成的存储空洞带来的数据离散的问题,在特征进行并行比对时,提高了匹配与待检测特征的效率,提高了分布式检索系统的性能。
请参见图13,图13是本申请另一个示例性实施例提供的分布式检索方法流程图。该分布式检索方法可以应用在上述所示的检索节点中。其中,检索节点中包括至少两个显存块,至少两个显存块之间采用块链式结构分配缓存空间。在图13中,该分布式检索方法包括:
步骤1310,接收接入节点转发的检索请求。
步骤1310的执行过程和步骤1210的执行过程相同,此处不再赘述。
步骤1321,获取待检测特征对应的特征库标识。
步骤1322,获取特征库标识对应的显存块中的特征。
步骤1323,计算特征库标识对应的显存块中的特征,与,待检测特征之间的相似度。
作为一种可能的替换方式,检索节点可以计算特征库标识对应的显存块中的特征,与,待检测特征之间的欧式距离。
或者,检索节点也可以计算特征库标识对应的显存块中的特征,与,待检测特征之间的余弦距离。
步骤1324,将计算结果中的相似度最大的前m个特征确定为匹配特征,m为正整数。
步骤1331,接收接入节点发送的特征插入请求,特征插入请求用于请求将第一特征插入到检索节点中。
步骤1332,响应于特征插入请求,获取显存块中的已释放存储单元,已释放存储单元是显存块中数据位置零的存储单元。
步骤1333,在已释放存储单元中插入第一特征。
步骤1341,接收接入节点发送的特征删除请求,特征删除请求用于请求将第二特征从检索节点中删除。
步骤1342,响应于特征删除请求,获取存储第二特征的存储单元,存储单元属于显存块。
步骤1343,将存储第二特征的存储单元的数据位置零。
步骤1344,将存储第二特征的存储单元标记为已释放存储单元。
在本申请实施例中,检索节点执行分布式检索方法的过程可以参照本申请实施例在上文中执行相关操作,此处不再赘述。
综上所述,本实施例提供的分布式检索方法,能够根据接收接入节点发送的特征插入请求,特征插入请求用于请求将第一特征插入到检索节点中,响应于特征插入请求,获取显存块中的已释放存储单元,已释放存储单元是显存块中数据位置零的存储单元,在已释放存储单元中插入第一特征,使得检索节点能够复用存储单元,在检索节点中存在删除的特征时,不必调整已存好的特征的存储位置,减少了分布式特征库的迁移问题和雪崩效应,提高了特征库的存储性能。
本实施例提供的分布式检索方法,还能够接收接入节点发送的特征删除请求,特征删除请求用于请求将第二特征从检索节点中删除;响应于特征删除请求,获取存储第二特征的存储单元,存储单元属于显存块;将存储第二特征的存储单元的数据位置零;将存储第二特征的存储单元标记为已释放存储单元。由于检索节点不将删除后的节点所占的储存单元释放,而是进行了标记,提高了后续特征插入时对于存储单元的复用效果,提高了特征库的存储性能。
请参见图14,图14是是本申请另一个示例性实施例提供的分布式检索方法流程图。该分布式检索方法可以应用在上述所示的接入节点中。在图13中,该分布式检索方法包括:
步骤1410,接收分布式检索的系统外部的检索请求,检索请求用于指示待检测特征。
本申请中,接入节点作为分布式检索的系统中与外部交互的节点,能够接收系统外部的检索请求,该检索请求用于检测与待检测特征匹配的特征。一种可能的方式中,检索请求所附带的信息包括待检测特征。另一种可能的方式中,检索请求所附带的信息包括待检测图片,接入节点可以调用特征服务从待检测图片中提取特征,并将待检测图片的特征附加到检索请求中。
步骤1420,向检索节点转发检索请求。
在本申请实施例中,接入节点能够将检索请求转发至检索节点。需要说明的是,由于检索节点是分布式检索的系统中的多个节点。因此,接入节点可以按照检索请求所设定的范围选择指定的检索节点进行检索。另一种可能的方式中,当检索请求没有设定指定的范围时,接入节点可以将该检索请求转发至分布式检索的系统中的每一个检索节点中。
步骤1430,接收检索节点返回的检索结果,检索结果用于指示与待检测特征匹配的特征,检索结果是检索节点在至少两个显存块中查找到与待检测特征相匹配的匹配特征,显存块包括指定个数的存储单元,存储单元与已存特征对应,显存块与检索节点中的其它显存块用块链式结构分配缓存空间。
示意性地,分布式检索的系统将收集各个检索节点返回的检索结果。检索结果用于指示在显存块中查找到的与待检测特征相匹配的特征。其中,显存块包括指定个数的存储单元,存储单元与已存特征对应。
由于检索节点中的包括的多个显存块之间采用块链式结构分配存储空间,因此,单个的检索节点能够避免其他分配存储空间的方式带来的数据空洞以及数据重组的问题。在整个分布式检索的系统中,提高了特征的安全性和特征的连续性,从而提高了使用该系统检索特征的效率。
步骤1440,向发起检索请求的对象提供检索结果。
示意性地,接入节点在接收到检索节点返回的检索结果后,还能够向发起检索请求的对象提供检索结果。一种可能的方式中,当检索的速度较快时,接入节点向发起检索请求的对象提供检索结果的速度也快。整个分布式检索的系统的检索效率,将影响发起检索请求的对象获取检索结果的效率。
综上所述,在本申请实施例所提供的分布式检索方法中,接入节点能够接收分布式检索的系统外部的检索请求,向检索节点转发检索请求,接收检索节点返回的检索结果,该检索结果用于指示与待检测特征匹配的特征,检索结果是检索节点在至少两个显存块中查找到与待检测特征匹配的特征,显存块包括指定个数的存储单元,存储单元与已存储特征相对应,向发起检索请求的对象提供检索结果,由于检索结果是通过与存储在显存块中的特征进行匹配得到的结果,因此,在特征分布在显存块中存储单元能够被高效率增加删除或者修改时,提高了特征在存储时的连续性,加快了大特征库查找时的速度。
请参见图15,图15是本申请一个示意性实施例提供的一种分布式检索方法的流程图,该方法可以应用在接入节点中。该方法可以包括:
步骤1511,接收样本图片。
示意性的,接入节点能够在特征库的建立阶段接收样本图片,该样本图片用于提供特征。在后续检索图片时,样本图片的特征将用于与待检测特征比对。可见,接收样本图片的一种可能的目的在于建立特征库。
步骤1512,提取样本图片中的特征。
示意性的,接入节点可以调用分布式检索的系统中的特征服务,从样本图片中提取特征。
步骤1513,将特征存储在检索节点中,检索节点与接入节点同属分布式检索的系统。
可选地,接入节点能够将特征存储在检索节点中,检索节点与接入节点同属一个分布式检索的系统。由于分布式检索的系统具有多个检索节点,接入节点可以按照一定的规则将特征分配至各个检索节点中。
示意性的,接入节点还可以通过执行步骤(1)、步骤(2)、步骤(3)和步骤(4)来实现将特征存储在检索节点中。
步骤(1),接收特征缓存请求,特征缓存请求用于将对应的特征存储在分布式检索的系统的接入节点中。
示意性的,特征缓存请求可以是接入节点完成样本图片的特征提取后激发的请求,特征缓存请求也可以是接入节点从分布式检索的系统的外部接收到的请求。
步骤(2),响应于特征缓存请求,获取第一检索节点的缓存空间剩余量和特征库剩余量。
示意性的,在一种可能的场景中,接入节点将获取第一检索节点的缓存空间剩余量和特征库剩余量。其中,缓存空间用于暂时存储特征,特征库用于长时间保存特征。
步骤(3),响应于缓存空间剩余量大于零或特征库剩余量大于零,向第一检索节点分配特征缓存请求对应的特征。
示意性的,当缓存空间剩余量大于零时,说明该第一检索节点具有存储特征的缓存空间,可以继续对特征进行存储。另一种可能的方式中,当特征库剩余量大于零时,说明该第一检索节点具有长期存储特征的空间,该第一检索节点中仍可以继续存储特征。
因此,无论缓存空间剩余量大于零还是特征库剩余量大于零,检索节点中均还有能够存储特征的存储空间。在此情况下,接入节点能够向第一检索节点继续分配特征缓存请求对应的特征。
步骤(4),响应于缓存空间剩余量等于零且特征库剩余量等于零,向第二检索节点分配特征缓存请求对应的特征,第二检索节点和第一检索节点同属分布式检索的系统。
示意性的,响应于缓存空间剩余量等于零且特征库剩余量等于零,接入节点可以判断第一检索节点中的全部存储空间已耗尽。在此情况下,接入节点将向其它的检索节点分配特征。例如,接入节点向第二检索节点分配特征,使得特征能够在同一检索节点连续存储,保证特征在检索时也能够连续匹配,提高检索的效率。
步骤1520,接收分布式检索的系统外部的检索请求。
步骤1530,向检索节点转发检索请求。
步骤1540,接收检索节点返回的检索结果。
步骤1550,向发起检索请求的对象提供检索结果。
示意性的,步骤1520至步骤1550的执行方式可以参照步骤1410至步骤1440的执行方式,此处不再赘述。
综上所述,本申请实施例提供的分布式检索方法,能够令接入节点按照检索节点中的实际剩余存储空间分配特征。一种可能的方式中,当第一检索节点中的缓存空间剩余量大于零或者特征库剩余量大于零时,接入节点确定该第一检索节点中仍有可存储特征的存储空间,因此,接入节点将特征分配至第一检索节点中。另一种可能的方式中,当第一检索节点中的缓存空间剩余量等于零并且特征库剩余量等于零时,第一检索节点中全部的存储空间已耗尽,接入节点将特征分配至另一个检索节点,如第二检索节点中,由于特征在检索节点中被安排为尽可能的连续存储,因此,特征在本分布式检索的系统中检索时能够以较高的检索效率得到检索结果,提高了分布式检索的系统的工作效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图16,图16是本申请一个示例性实施例提供的分布式检索装置的结构框图。该分布式检索装置可以通过软件、硬件或者两者的结合实现成为检索节点的全部或一部分,检索节点中包括至少两个显存块,至少两个显存块之间采用块链式结构分配缓存空间。该装置包括:
第一接收单元1610,用于接收接入节点转发的所述检索请求,所述检索请求用于指示待检测特征;
特征查找单元1620,用于在至少两个所述显存块中查找与所述待检测特征相匹配的匹配特征,所述显存块是具有固定长度的物理存储单元,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应;
结果返回单元1630,用于向所述接入节点返回检索结果,所述检索结果用于指示与所述待检测特征匹配的特征。
在一个可选的实施例中,所述特征查找单元1620包括:标识获取子单元,用于获取所述待检测特征对应的特征库标识;特征获取子单元,用于获取所述特征库标识对应的所述显存块中的特征;计算子单元,用于计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的相似度;特征确定子单元,用于将计算结果中的所述相似度最大的前m个特征确定为所述待匹配特征,m为正整数。
在一个可选的实施例中,所述计算子单元,用于计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的欧式距离;或,计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的余弦距离。
在一个可选的实施例中,所述装置还包括:第二接收单元,用于接收所述接入节点发送的特征插入请求,所述特征插入请求用于请求将第一特征插入到所述检索节点中;第一获取单元,用于响应于所述特征插入请求,获取所述显存块中的已释放存储单元,所述已释放存储单元是所述显存块中数据位置零的存储单元;特征插入单元,用于在所述已释放存储单元中插入所述第一特征。
综上所述,本实施例提供的分布式检索装置,能够根据接收接入节点发送的特征插入请求,特征插入请求用于请求将第一特征插入到检索节点中,响应于特征插入请求,获取显存块中的已释放存储单元,已释放存储单元是显存块中数据位置零的存储单元,在已释放存储单元中插入第一特征,使得检索节点能够复用存储单元,在检索节点中存在删除的特征时,不必调整已存好的特征的存储位置,减少了分布式特征库的迁移问题和雪崩效应,提高了特征库的存储性能。
本实施例提供的分布式检索装置,还能够接收接入节点发送的特征删除请求,特征删除请求用于请求将第二特征从检索节点中删除;响应于特征删除请求,获取存储第二特征的存储单元,存储单元属于显存块;将存储第二特征的存储单元的数据位置零;将存储第二特征的存储单元标记为已释放存储单元。由于检索节点不将删除后的节点所占的储存单元释放,而是进行了标记,提高了后续特征插入时对于存储单元的复用效果,提高了特征库的存储性能。
请参考图17,图17是本申请另一个示例性实施例提供的分布式检索装置的结构框图。该分布式检索装置可以通过软件、硬件或者两者的结合实现成为接入节点的全部或一部分,该装置包括:
第三接收单元1710,用于接收分布式检索的系统外部的检索请求,所述检索请求用于指示待检测特征;
特征转发单元1720,用于向检索节点转发所述检索请求;
结果接收单元1730,用于接收所述检索节点返回的检索结果,所述检索结果用于指示与所述待检测特征匹配的特征,所述检索结果是所述检索节点在至少两个显存块中查找到与所述待检测特征相匹配的匹配特征,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应,所述显存块与所述检索节点中的其它所述显存块用块链式结构分配缓存空间;
结果转发单元1740,用于向发起所述检索请求的对象提供所述检索结果。
一种可能的方式中,所述装置还包括图片接收单元、特征提取单元和特征存储单元。所述图片接收单元,用于接收样本图片;所述特征提取单元,用于提取所述样本图片中的特征;所述特征存储单元,用于将所述特征存储在检索节点中,所述检索节点与所述接入节点同属分布式检索的系统。
一种可能的方式中,所述征存储单元,用于接收特征缓存请求,所述特征缓存请求用于将对应的特征存储在所述分布式检索的系统的所述接入节点中;响应于特征缓存请求,获取第一检索节点的缓存空间剩余量和特征库剩余量;响应于所述缓存空间剩余量大于零或所述特征库剩余量大于零,向所述第一检索节点分配所述特征缓存请求对应的特征;响应于所述缓存空间剩余量等于零且所述特征库剩余量等于零,向第二检索节点分配所述特征缓存请求对应的特征,所述第二检索节点和所述第一检索节点同属所述分布式检索的系统。
综上所述,本申请实施例提供的分布式检索装置,能够令接入节点按照检索节点中的实际剩余存储空间分配特征。一种可能的方式中,当第一检索节点中的缓存空间剩余量大于零或者特征库剩余量大于零时,接入节点确定该第一检索节点中仍有可存储特征的存储空间,因此,接入节点将特征分配至第一检索节点中。另一种可能的方式中,当第一检索节点中的缓存空间剩余量等于零并且特征库剩余量等于零时,第一检索节点中全部的存储空间已耗尽,接入节点将特征分配至另一个检索节点,如第二检索节点中,由于特征在检索节点中被安排为尽可能的连续存储,因此,特征在本分布式检索的系统中检索时能够以较高的检索效率得到检索结果,提高了分布式检索的系统的工作效率。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的分布式检索方法。
需要说明的是:上述实施例提供的分布式检索装置在执行分布式检索方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式检索装置与分布式检索方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的能够实现的示例性的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (15)

1.一种分布式检索方法,其特征在于,应用于检索节点中,所述检索节点中包括至少两个显存块,至少两个所述显存块之间采用块链式结构分配缓存空间,所述方法包括:
接收接入节点转发的检索请求,所述检索请求用于指示待检测特征;
在至少两个所述显存块中查找与所述待检测特征相匹配的匹配特征,所述显存块是具有固定长度的物理存储单元,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应;
向所述接入节点返回检索结果,所述检索结果用于指示所述匹配特征。
2.根据权利要求1所述的方法,其特征在于,所述在至少两个所述显存块中查找与所述待检测特征相匹配的匹配特征,包括:
获取所述待检测特征对应的特征库标识;
获取所述特征库标识对应的所述显存块中的特征;
计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的相似度;
将计算结果中的所述相似度最大的前m个特征确定为所述匹配特征,m为正整数。
3.根据权利要求2所述的方法,其特征在于,所述计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的相似度,包括:
计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的欧式距离;
或,
计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的余弦距离。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
接收所述接入节点发送的特征插入请求,所述特征插入请求用于请求将第一特征插入到所述检索节点中;
响应于所述特征插入请求,获取所述显存块中的已释放存储单元,所述已释放存储单元是所述显存块中数据位置零的存储单元;
在所述已释放存储单元中插入所述第一特征。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
接收所述接入节点发送的特征删除请求,所述特征删除请求用于请求将第二特征从所述检索节点中删除;
响应于所述特征删除请求,获取存储所述第二特征的存储单元,所述存储单元属于所述显存块;
将存储所述第二特征的存储单元的数据位置零;
将所述存储所述第二特征的存储单元标记为所述已释放存储单元。
6.一种分布式检索方法,其特征在于,应用于接入节点中,所述方法包括:
接收分布式检索的系统外部的检索请求,所述检索请求用于指示待检测特征;
向检索节点转发所述检索请求;
接收所述检索节点返回的检索结果,所述检索结果用于指示匹配特征,所述检索结果是所述检索节点在至少两个显存块中查找到的所述匹配特征,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应,所述显存块与所述检索节点中的其它所述显存块用块链式结构分配缓存空间;
向发起所述检索请求的对象提供所述检索结果。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
接收样本图片;
提取所述样本图片中的特征;
将所述特征存储在检索节点中,所述检索节点与所述接入节点同属分布式检索的系统。
8.根据权利要求7所述的方法,其特征在于,所述将所述特征存储在检索节点中,包括:
接收特征缓存请求,所述特征缓存请求用于将对应的特征存储在所述分布式检索的系统的所述接入节点中;
响应于特征缓存请求,获取第一检索节点的缓存空间剩余量和特征库剩余量;
响应于所述缓存空间剩余量大于零或所述特征库剩余量大于零,向所述第一检索节点分配所述特征缓存请求对应的特征;
响应于所述缓存空间剩余量等于零且所述特征库剩余量等于零,向第二检索节点分配所述特征缓存请求对应的特征,所述第二检索节点和所述第一检索节点同属所述分布式检索的系统。
9.一种分布式检索的系统,其特征在于,所述系统包括:
接入节点,用于接收系统外部的检索请求,所述检索请求用于指示待检测特征;
检索节点,用于接收所述接入节点转发的所述检索请求;
所述检索节点,用于在至少两个显存块中查找与所述待检测特征相匹配的匹配特征,所述显存块是具有固定长度的物理存储单元,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应,所述显存块与所述检索节点中的其它所述显存块用块链式结构分配缓存空间;
所述检索节点,用于向所述接入节点返回检索结果,所述检索结果用于指示与所述待检测特征匹配的特征;
所述接入节点,用于提供所述检索结果。
10.一种分布式检索装置,其特征在于,应用于检索节点中,所述检索节点中包括至少两个显存块,至少两个所述显存块之间采用块链式结构分配缓存空间,所述装置包括:
第一接收单元,用于接收接入节点转发的检索请求,所述检索请求用于指示待检测特征;
特征查找单元,用于在至少两个所述显存块中查找与所述待检测特征相匹配的匹配特征,所述显存块是具有固定长度的物理存储单元,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应;
结果返回单元,用于向所述接入节点返回检索结果,所述检索结果用于指示与所述待检测特征匹配的特征。
11.根据权利要求10所述的装置,其特征在于,所述特征查找单元包括:
标识获取子单元,用于获取所述待检测特征对应的特征库标识;
特征获取子单元,用于获取所述特征库标识对应的所述显存块中的特征;
计算子单元,用于计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的相似度;
特征确定子单元,用于将计算结果中的所述相似度最大的前m个特征确定为所述匹配特征,m为正整数。
12.根据权利要求11所述的装置,其特征在于,所述计算子单元,用于
计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的欧式距离;
或,
计算所述特征库标识对应的所述显存块中的特征,与,所述待检测特征之间的余弦距离。
13.一种分布式检索装置,其特征在于,应用于接入节点中,所述装置包括:
第三接收单元,用于接收分布式检索的系统外部的检索请求,所述检索请求用于指示待检测特征;
特征转发单元,用于向检索节点转发所述检索请求;
结果接收单元,用于接收所述检索节点返回的检索结果,所述检索结果用于指示与所述待检测特征匹配的特征,所述检索结果是所述检索节点在至少两个显存块中查找到与所述待检测特征相匹配的匹配特征,所述显存块包括指定个数的存储单元,所述存储单元与已存特征对应,所述显存块与所述检索节点中的其它所述显存块用块链式结构分配缓存空间;
结果转发单元,用于向发起所述检索请求的对象提供所述检索结果。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器、和与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如权利要求1至8任一所述的分布式检索方法。
15.一种计算机可读存储介质,所述存储介质中存储有程序指令,其特征在于,所述程序指令被处理器执行时实现如权利要求1至8任一所述的分布式检索方法。
CN202010051528.7A 2020-01-17 2020-01-17 分布式检索方法、装置、系统、计算机设备及存储介质 Active CN111274288B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010051528.7A CN111274288B (zh) 2020-01-17 2020-01-17 分布式检索方法、装置、系统、计算机设备及存储介质
PCT/CN2020/130248 WO2021143351A1 (zh) 2020-01-17 2020-11-19 分布式检索方法、装置、系统、计算机设备及存储介质
US17/665,404 US20220157043A1 (en) 2020-01-17 2022-02-04 Distributed retrieval method, apparatus, and system, computer device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010051528.7A CN111274288B (zh) 2020-01-17 2020-01-17 分布式检索方法、装置、系统、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN111274288A true CN111274288A (zh) 2020-06-12
CN111274288B CN111274288B (zh) 2023-03-17

Family

ID=70998793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010051528.7A Active CN111274288B (zh) 2020-01-17 2020-01-17 分布式检索方法、装置、系统、计算机设备及存储介质

Country Status (3)

Country Link
US (1) US20220157043A1 (zh)
CN (1) CN111274288B (zh)
WO (1) WO2021143351A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112446816A (zh) * 2021-02-01 2021-03-05 成都点泽智能科技有限公司 显存动态数据存储方法、装置及服务器
CN112698926A (zh) * 2021-03-25 2021-04-23 成都新希望金融信息有限公司 数据处理方法、装置、设备、存储介质及系统
WO2021143351A1 (zh) * 2020-01-17 2021-07-22 腾讯科技(深圳)有限公司 分布式检索方法、装置、系统、计算机设备及存储介质
CN113919412A (zh) * 2021-09-02 2022-01-11 中国电子科技集团公司第二十九研究所 一种数据分发方法、设备及存储介质
CN114153518A (zh) * 2021-10-25 2022-03-08 国网江苏省电力有限公司信息通信分公司 一种云原生MySQL集群自主扩容缩容的方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080065644A1 (en) * 2006-09-08 2008-03-13 Sybase, Inc. System and Methods For Optimizing Data Transfer Among Various Resources In A Distributed Environment
CN105160039A (zh) * 2015-10-13 2015-12-16 四川携创信息技术服务有限公司 一种基于大数据的查询方法
US20160266932A1 (en) * 2015-03-10 2016-09-15 Bluedata Software, Inc. Allocation of large scale processing job processes to host computing systems
CN108228709A (zh) * 2017-11-29 2018-06-29 北京市商汤科技开发有限公司 数据存储方法和系统、电子设备、程序和介质
CN108363764A (zh) * 2018-02-05 2018-08-03 山东地主网络科技创新有限公司 一种分布式缓存管理系统及方法
US20190179758A1 (en) * 2017-12-12 2019-06-13 Advanced Micro Devices, Inc. Cache to cache data transfer acceleration techniques
CN110321448A (zh) * 2019-06-27 2019-10-11 腾讯科技(深圳)有限公司 一种图像检索方法、装置和存储介质
CN110493347A (zh) * 2019-08-26 2019-11-22 重庆邮电大学 基于区块链的大规模云存储中数据访问控制方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101315628B (zh) * 2007-06-01 2011-01-05 华为技术有限公司 内存数据库系统及实现内存数据库的方法和装置
US10437820B2 (en) * 2015-08-06 2019-10-08 Red Hat, Inc. Asymmetric distributed cache with data chains
CN108304431B (zh) * 2017-06-14 2021-11-09 腾讯科技(深圳)有限公司 一种图像检索方法及装置、设备、存储介质
CN109885589B (zh) * 2017-12-06 2022-09-16 腾讯科技(深圳)有限公司 数据查询方法、装置、计算机设备及存储介质
CN111274288B (zh) * 2020-01-17 2023-03-17 腾讯云计算(北京)有限责任公司 分布式检索方法、装置、系统、计算机设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080065644A1 (en) * 2006-09-08 2008-03-13 Sybase, Inc. System and Methods For Optimizing Data Transfer Among Various Resources In A Distributed Environment
US20160266932A1 (en) * 2015-03-10 2016-09-15 Bluedata Software, Inc. Allocation of large scale processing job processes to host computing systems
CN105160039A (zh) * 2015-10-13 2015-12-16 四川携创信息技术服务有限公司 一种基于大数据的查询方法
CN108228709A (zh) * 2017-11-29 2018-06-29 北京市商汤科技开发有限公司 数据存储方法和系统、电子设备、程序和介质
US20190179758A1 (en) * 2017-12-12 2019-06-13 Advanced Micro Devices, Inc. Cache to cache data transfer acceleration techniques
CN108363764A (zh) * 2018-02-05 2018-08-03 山东地主网络科技创新有限公司 一种分布式缓存管理系统及方法
CN110321448A (zh) * 2019-06-27 2019-10-11 腾讯科技(深圳)有限公司 一种图像检索方法、装置和存储介质
CN110493347A (zh) * 2019-08-26 2019-11-22 重庆邮电大学 基于区块链的大规模云存储中数据访问控制方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SONG BAI 等: ""GIFT: Towards Scalable 3D Shape Retrieval"" *
苏丽 等: ""一种基于Hadoop实现相关器的方法"" *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021143351A1 (zh) * 2020-01-17 2021-07-22 腾讯科技(深圳)有限公司 分布式检索方法、装置、系统、计算机设备及存储介质
CN112446816A (zh) * 2021-02-01 2021-03-05 成都点泽智能科技有限公司 显存动态数据存储方法、装置及服务器
CN112698926A (zh) * 2021-03-25 2021-04-23 成都新希望金融信息有限公司 数据处理方法、装置、设备、存储介质及系统
CN113919412A (zh) * 2021-09-02 2022-01-11 中国电子科技集团公司第二十九研究所 一种数据分发方法、设备及存储介质
CN113919412B (zh) * 2021-09-02 2023-07-25 中国电子科技集团公司第二十九研究所 一种数据分发方法、设备及存储介质
CN114153518A (zh) * 2021-10-25 2022-03-08 国网江苏省电力有限公司信息通信分公司 一种云原生MySQL集群自主扩容缩容的方法

Also Published As

Publication number Publication date
US20220157043A1 (en) 2022-05-19
WO2021143351A1 (zh) 2021-07-22
CN111274288B (zh) 2023-03-17

Similar Documents

Publication Publication Date Title
CN111274288B (zh) 分布式检索方法、装置、系统、计算机设备及存储介质
US20230109969A1 (en) Data processing method and apparatus based on node internal memory, device and medium
CN106775446B (zh) 基于固态硬盘加速的分布式文件系统小文件访问方法
CN109379432A (zh) 数据处理方法、装置、服务器及计算机可读存储介质
CN107251040B (zh) 用于自动创建和访问偏好个人云数据的机制
JP7397094B2 (ja) リソース構成方法、リソース構成装置、コンピューター機器、及びコンピュータープログラム
CN106407463A (zh) 一种基于Hadoop的图像处理方法及系统
CN105512053A (zh) 移动透明计算系统服务器端多用户访问的镜像缓存方法
CN103533058A (zh) 面向HDFS/Hadoop存储集群的资源监控系统及方法
EP4310691A1 (en) Blockchain-based data processing method, apparatus, and device, and storage medium
US20230305724A1 (en) Data management method and apparatus, computer device, and storage medium
CN113792885A (zh) 一种深度学习训练的执行方法及相关装置
CN113687964A (zh) 数据处理方法、装置、电子设备、存储介质及程序产品
CN113704361B (zh) 事务执行方法、装置、计算设备及存储介质
CN117473011A (zh) 数据同步方法、装置以及混合缓存系统
CN117171108A (zh) 一种虚拟模型映射方法和系统
CN111857979A (zh) 一种分布式系统的信息管理方法、系统、存储介质及设备
US10572486B2 (en) Data communication in a distributed data grid
KR20120073799A (ko) 클라우드 스토리지 기반의 데이터 동기화 및 서비스 제공 장치와 방법
CN115238006A (zh) 检索数据同步方法、装置、设备及计算机存储介质
CN116701452A (zh) 数据处理方法、相关设备、存储介质及程序产品
CN112019343A (zh) 一种OpenStack令牌优化方法及系统
CN111552740A (zh) 数据处理方法及装置
CN114422538B (zh) 多云存储系统、多云数据读写方法及电子设备
Vaidyanathan et al. DDSS: A Low-Overhead D istributed D ata S haring S ubstrate for Cluster-Based Data-Centers over Modern Interconnects

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40024376

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant