CN114296965A - 特征检索方法、装置、电子设备及计算机存储介质 - Google Patents

特征检索方法、装置、电子设备及计算机存储介质 Download PDF

Info

Publication number
CN114296965A
CN114296965A CN202111640138.4A CN202111640138A CN114296965A CN 114296965 A CN114296965 A CN 114296965A CN 202111640138 A CN202111640138 A CN 202111640138A CN 114296965 A CN114296965 A CN 114296965A
Authority
CN
China
Prior art keywords
retrieval
feature
retrieved
sub
library
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.)
Withdrawn
Application number
CN202111640138.4A
Other languages
English (en)
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.)
Beijing Sensetime Technology Development Co Ltd
Original Assignee
Beijing Sensetime Technology Development 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 Beijing Sensetime Technology Development Co Ltd filed Critical Beijing Sensetime Technology Development Co Ltd
Priority to CN202111640138.4A priority Critical patent/CN114296965A/zh
Publication of CN114296965A publication Critical patent/CN114296965A/zh
Priority to PCT/CN2022/113931 priority patent/WO2023124135A1/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本实施例公开了一种特征检索方法、装置、电子设备及计算机存储介质,所述方法包括:获取待检索请求中待检索特征的至少两个特征分片;基于待检索底库分片后的至少两个底库分片和至少两个特征分片,确定在各底库分片进行检索的检索子任务集合;利用至少一个主进程中的每个主进程创建至少一个子进程;利用每个主进程将已分配给自身的检索子任务再次划分后分配至各个子进程,并接收各个子进程的检索结果;根据各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果。

Description

特征检索方法、装置、电子设备及计算机存储介质
技术领域
本公开涉及计算机视觉技术,涉及但不限于一种特征检索方法、装置、电子设备及计算机存储介质。
背景技术
目前,在人档服务的场景中,需要把前端传回的大量抓拍的图像数据通过聚类、实名化算法形成匿名档和实名档,而聚类与实名化算法都涉及到了大量的针对人员图像的特征检索操作,特征检索的效率直接影响了算法的性能;如何提高针对图像的特征检索效率,是亟待解决的技术问题。
发明内容
本公开实施例提供了特征检索理方法、装置、电子设备及计算机存储介质。
本公开实施例提供了一种特征检索方法,所述方法包括:
获取待检索请求中待检索特征的至少两个特征分片;
基于待检索底库分片后的至少两个底库分片和所述至少两个特征分片,确定在各所述底库分片进行检索的检索子任务集合;
利用至少一个主进程中的每个主进程创建至少一个子进程;
利用每个主进程将已分配给自身的检索子任务再次划分后分配至各个子进程,并接收各个子进程的检索结果;
根据所述各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果。
在本公开的一些实施例中,所述利用至少一个主进程中的每个主进程创建至少一个子进程,包括:
在所述每个主进程中,获取针对所述已分配的检索子任务对应的底库分片的索引文件,创建所述主进程用于向所述至少一个子进程输出数据的输出队列、用于接收所述至少一个子进程的数据的输入队列、以及所述主进程与所述至少一个子进程之间的通信管道;
根据所述索引文件、所述输出队列、所述输入队列和所述通信管道,创建所述至少一个子进程。
可以看出,本公开实施例可以根据用于向多个子进程输出数据的输出队列、用于接收多个子进程的数据的输入队列、以及主进程与所述多个子进程之间的通信管道,创建子进程,从而能够可靠地实现主进程与各个子进程的交互,有利于使子进程基于索引文件实现检索子任务的处理,并有利于主进程根据输入队列接收子进程的检索结果。
在本公开的一些实施例中,所述至少一个子进程中每个子进程的检索结果是基于加速设备处理对应的检索子任务得到的;
所述创建所述主进程用于向所述多个子进程输出数据的输出队列、用于接收所述多个子进程的数据的输入队列、以及所述主进程与所述多个子进程之间的通信管道,包括:
将预先确定的加速设备的数量确定为待创建的子进程的数量;
根据所述待创建的子进程的数量,创建所述输出队列、所述输入队列和所述通信管道。
可以看出,本公开实施例中,由于可以将先确定的加速设备的数量确定为待创建的子进程的数量,因而,可以充分利用多个加速设备实现检索子任务的并行检索,提高了特征检索效率。
在本公开的一些实施例中,所述至少一个子进程中每个子进程的检索结果是将对应的检索子任务中的底库分片量化为量化特征后,基于对应的检索子任务中的特征分片和所述量化特征得到的结果;
所述根据所述各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果,包括:
在所述每个主进程中,确定接收到的检索结果与所述底库中相应的原始特征的相似度;
在所述每个主进程接收到的检索结果中,选取数量为第一预设值的检索结果,将选取的所述数量为第一预设值的检索结果作为主进程的输出检索结果;
根据所述各个主进程的输出检索结果,得出所述待检索特征在所述底库中的检索结果。
可以看出,本公开实施例中可以采用主进程实现特征重排的功能,即,主进程可以确定低维的量化特征与原始的底库分片的相似度,并根据相似度选取检索结果;因此,与相关技术中使用检索引擎实现特征重排的方案相比,主进程的执行可以通过程序管理,在计算原始的底库分片与各个子进程的检索结果的相似度时,无需复制原始的底库分片,降低了资源消耗;并且,可以利用主进程实现检索子任务的任务分片,提高了检索效率。
在本公开的一些实施例中,所述根据所述各个主进程的输出检索结果,得出待检索特征在底库中的检索结果,包括:
在所述各个主进程的输出检索结果中,通过将每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务在所述底库中的检索结果;
得出所述待检索特征在底库中的检索结果,所述待检索特征在底库中的检索结果包括:所述各个检索子任务在所述底库中的检索结果。
可以看出,本公开实施例通过将每个检索子任务在各个底库分片的检索结果进行合并,可以准确全面地得到每个检索子任务在底库中的检索结果。
在本公开的一些实施例中,所述通过将每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务在所述底库中的检索结果,包括:
将所述每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务对应的合并结果;
在所述每个检索子任务对应的合并结果中,选取数量为第二预设值的检索结果,将选取的所述数量为第二预设值的检索结果作为所述每个检索子任务在所述底库中的检索结果。
可以看出,本公开实施例可以根据与相应的原始特征的相似度,在每个检索子任务对应的合并结果进行检索结果的筛选,从而,可以在减少检索数据量的基础上保持较高的特征检索精度。
在本公开的一些实施例中,在对所述底库进行分片之前,所述方法还包括:
确定所述底库中每个特征的属性;
按照所述底库中每个特征的属性,将所述底库中不属于第一预设属性范围的特征滤除;
在获取待检索请求中待检索特征的至少两个特征分片之前,所述方法还包括:
确定所述待检索特征每个特征的属性;
按照所述待检索特征中每个特征的属性,将所述待检索特征中不属于第二预设属性范围的特征滤除。
可以看出,本公开实施例可以按照第一预设属性范围对底库中的特征进行滤除,有利于得到符合要求的特征;并且可以按照第二预设属性范围对待检索特征中的特征进行滤除,有利于得到符合要求的特征。
本公开实施例还提出了一种特征检索装置,所述装置包括获取模块、第一处理模块、第二处理模块、第三处理模块和第四处理模块,其中,
获取模块,用于获取待检索请求中待检索特征的至少两个特征分片;
第一处理模块,用于基于待检索底库分片后的至少两个底库分片和所述至少两个特征分片,确定在各所述底库分片进行检索的检索子任务集合;
第二处理模块,用于利用至少一个主进程中的每个主进程创建至少一个子进程;
第三处理模块,用于利用每个主进程将已分配给自身的检索子任务再次划分后分配至各个子进程,并接收各个子进程的检索结果;
第四处理模块,用于根据所述各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果。
本公开实施例还提供了一种电子设备,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,所述处理器用于运行所述计算机程序以执行上述任意一种特征检索方法。
本公开实施例还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种特征检索方法。
可以看出,本公开实施例可以将各个检索子任务分配至子进程中,在子进程中执行相应的检索子任务,从而,本公开实施例可以通过创建主进程和子进程实现不同检索子任务的并行执行,提升了检索效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1为本公开实施例的一种特征检索方法的流程图;
图2为本公开实施例的另一种特征检索方法的流程图;
图3为本公开实施例中创建多个子进程的流程图;
图4为本公开实施例中创建输出队列、输入队列、以及通信管道的流程图;
图5为本公开实施例中得出待检索特征在底库中的检索结果的一个流程图;
图6为本公开实施例中得出待检索特征在底库中的检索结果的另一个流程图;
图7为本公开实施例中得出每个检索子任务在所述底库中的检索结果的一个流程图;
图8为本公开实施例中对底库的特征进行滤除的流程图;
图9为本公开实施例中对待检索特征进行滤除的流程图;
图10为本公开实施例的特征检索装置的结构示意图;
图11为本公开实施例的电子设备的硬件结构示意图。
具体实施方式
在相关技术中,在人档服务的场景中,会使用聚类和实名化算法,针对人员图像的聚类和实名化算法都涉及到了大量的针对人员图像的特征检索操作。人档服务使用的聚类算法是基于连通图的一种聚类算法,涉及到了大量的建边操作,常见的聚类算法入k-means算法,需要不断查找某一特征点的最近点,然后更新类中心,不断迭代形成最终的类簇;可以看出,如何提高针对图像的特征检索效率,是亟待解决的技术问题。
针对上述技术问题,提出本公开实施例的技术方案。
以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本公开,并不用于限定本公开。另外,以下所提供的实施例是用于实施本公开的部分实施例,而非提供实施本公开的全部实施例,在不冲突的情况下,本公开实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,在本公开实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
例如,本公开实施例提供的特征检索方法包含了一系列的步骤,但是本公开实施例提供的特征检索方法不限于所记载的步骤,同样地,本公开实施例提供的特征检索装置包括了一系列模块,但是本公开实施例提供的装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的模块。
本公开实施例可以应用于终端和/或服务器组成的计算机系统中。这里,终端可以是瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统,等等,服务器可以是服务器计算机系统小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端、服务器等电子设备可以包括用于执行指令的程序模块。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本公开实施例提出了一种特征检索方法,可以应用于智能视频分析、智慧城市或其它图像分析场景。
图1为本公开实施例的特征检索方法的一个流程图,如图1所示,该流程可以包括:
步骤101:获取待检索请求中待检索特征的至少两个特征分片。
本公开实施例中,待检索请求中携带有带检索特征,待检索特征可以是人员图像的特征或其它特征;在接收到待检索请求的情况下,可以将待检索请求中待检索特征划分为至少两个特征分片;在一种实现方式中,可以利用spark计算框架将待检索特征划分至少两个特征分片。
这里,spark计算框架是专为大规模数据处理而设计的快速通用的计算框架,是一种所开源的类Hadoop MapReduce的通用并行框架。
在一些实施例中,参照图2,待检索特征中的每个特征分片都具有相应的身份标识号(identity document,id),在实际应用中,可以spark计算框架对待检索特征划分待检索特征的至少两个分片,图2中,query1至querym表示划分得到的m个特征分片,m为大于1的整数;在得到m个特征分片后,可以将m个特征分片存储至Hadoop分布式文件系统(HadoopDistributed File System,HDFS)中。
可以看出,本发明实施例可以根据待检索请求,启动针对待检索特征的检索任务,从而,可以按照实际需求实现特征检索。
步骤102:基于待检索底库分片后的至少两个底库分片和至少两个特征分片,确定在各底库分片进行检索的检索子任务集合。
本公开实施例中,待检索底库表示存储原始特征的数据库,原始特征可以是人员图像的特征或其它特征。
在一些实施例中,可以利用spark计算框架将待检索底库拆分为至少两个底库分片。
在一些实施例中,参照图2,待检索底库中的每个特征都具有相应的id,在实际应用中,可以利用spark计算框架中的重分区(reparation)接口,将待检索底库中的特征拆分为单位大小的n个底库分片,图2中,db1至dbn表示拆分得到的n个底库分片,n为大于1的整数;在拆分得到n个底库分片后,可以将上述n个底库分片均匀分别到各个计算节点,以便于后续在计算节点进行处理。
在一些实施例中,在得到至少两个底库分片和待检索特征的至少两个特征分片后,可以通过计算至少两个底库分片和至少两个特征分片的笛卡尔积,得出在各个底库分片进行检索的检索子任务集合。图2中,(db1,query1)至(db1,querym)分别表示在db1上分别检索待检索特征的第1个特征分片至第m个特征分片的检索子任务,(dbn,query1)至(dbn,querym)分别表示在dbn上分别检索待检索特征的第1个特征分片至第m个特征分片的检索子任务。
需要说明的是,针对待检索底库只需要进行一次底库分片操作,便可以得到至少两个底库分片;后续每次进行特征检索时,无需再次执行底库分片操作,而是可以根据预先得到的至少两个底库分片确定检索子任务集合。
可以理解地,在大数据量的场景下,底库与待检索特征中特征数量都很大,需要进行合理拆分,在本公开实施例中,可以利用spark计算框架完成了待检索任务的任务拆分,从而使得本公开实施例可以支持在大数据量场景中进行特征检索。
步骤103:利用至少一个主进程中的每个主进程创建至少一个子进程。
本公开实施例中,在创建至少一个主进程后,可以向至少一个主进程的每个主进程分配检索子任务集合中的检索子任务。
参照图2,每个主进程在一个资源集合slot中执行;在每个主进程中,可以创建至少一个子进程,在图2的示例中,子进程1至子进程q表示主进程中创建的q个子进程,q为大于1的整数。
步骤104:利用每个主进程将已分配给自身的检索子任务再次划分后分配至各个子进程,并接收各个子进程的检索结果。
在一些实施例中,参照图2,每个子进程可以通过加速设备处理相应的检索子任务,得到对应的检索结果。
在实际应用中,每个子进程会创建一个检索引擎(SearchEngine),将创建的检索引擎作为一个独立的检索单元,该检索单元可以基于加速设备实现检索子任务的处理。
步骤105:根据各个主进程接收到的检索结果,得出待检索特征在底库中的检索结果。
在一些实施例中,参照图2,可以将各个主进程接收到的检索结果进行合并,得到待检索特征在底库中的检索结果。
在实际应用中,上述步骤101至步骤105可以基于电子设备的处理器实现,上述处理器可以为特定用途集成电路(Application Specific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital SignalProcessing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central ProcessingUnit,CPU)、控制器、微控制器、微处理器中的至少一种。
可以看出,本公开实施例可以将各个检索子任务分配至子进程中,在子进程中执行相应的检索子任务,从而,本公开实施例可以通过创建主进程和子进程实现不同检索子任务的并行执行,提升了检索效率。
进一步地,在每个子进程采用加速设备实现检索子任务的处理的情况下,本公开实施例可以采用多进程调用的方式实现对多个加速设备的调用,提升了检索效率。
进一步地,本公开实施例可以结合spark计算框架和加速设备,提供了一种能在大数据量下同时使用多个加速设备实现高效检索的方法,实现了分布式计算技术与硬件加速的特征检索技术的融合;在实际实施时,可以利用spark计算框架实现机器级别的并行加速,同时对任务进行拆分调度,实现芯片级别的任务并行处理,从而实现了大数据量下检索效率与稳定性的提升。示例性地,在千万级底库检索场景下,高维特征的检索的每秒查询率(Query Per Second,QPS)能达到20000特征/s。
示例性地,在相关技术中,对于人脸聚类算法,由于内存限制,一次最多只能实现两千万特征的聚类,这极大限制了聚类算法的能力,可能会导致出现一人多类的情况;通过采用本公开实施例的技术方案,可以在底库中存储大量的待聚类特征,可以大幅提高聚类算法输入数据量的上限,能在更大的范围内进行聚类,便于更准确高效地提取人员档案。
在一些实施例中,参照图3,利用至少一个主进程中的每个主进程创建至少一个子进程的流程,可以包括:
步骤301:在每个主进程中,获取针对已分配的检索子任务对应的底库分片的索引文件,创建主进程用于向至少一个子进程输出数据的输出队列、用于接收至少一个子进程的数据的输入队列、以及主进程与至少一个子进程之间的通信管道。
在一些实施例中,主进程可以基于已分配的检索子任务对应的底库分片,利用检索引擎训练一个针对已分配的检索子任务对应的底库分片的索引文件,然后,可以将该索引文件进行序列化处理,得到序列化处理后的索引文件。
在一种实现方式中,主进程可以基于共享内存建立用于与子进程通信的管道;参照图2,主进程还可以基于共享内存建立用于与子进程通信的队列;这里,用于与子进程通信的队列可以包括用于向至少一个子进程输出数据的输出队列、用于接收至少一个子进程的数据的输入队列。示例性地,参照图2,进程间队列属于接收至少一个子进程的检索结果的输入队列。
步骤302:根据索引文件、输出队列、输入队列和通信管道,创建至少一个子进程。
本公开实施例中,在创建至少一个子进程后,每个子进程首先进行初始化处理,然后会创建一个线程用于从输入队列中读取一个批次的特征分片,同时,该线程可以监控与主进程的通信管道,以便在满足子进程终止条件的情况下终止子进程;子进程在得到子进程的检索结果后,可以将子进程的检索结果通过进程间队列发送至主进程。
在一种实现方式中,子进程终止条件可以是子进程完成相应的检索子任务并已向主进程发送子进程的检索结果;在另一种实现方式中,子进程终止条件可以是子进程通过上述通信管道接收到终止命令,这里,终止命令可以是根据用户的终止检索请求向主进程下发的命令。
可以看出,本公开实施例可以根据用于向多个子进程输出数据的输出队列、用于接收多个子进程的数据的输入队列、以及主进程与所述多个子进程之间的通信管道,创建子进程,从而能够可靠地实现主进程与各个子进程的交互,有利于使子进程基于索引文件实现检索子任务的处理,并有利于主进程根据输入队列接收子进程的检索结果。
在一些实施例中,参照图4,上述创建输出队列、输入队列、以及通信管道的流程,可以包括:
步骤401:将预先确定的加速设备的数量确定为待创建的子进程的数量。
步骤402:根据待创建的子进程的数量,创建输出队列、输入队列和通信管道。
参照图2,预先确定的加速设备的数量为q,则待创建的子进程的数量为q。
可以看出,本公开实施例中,由于可以将先确定的加速设备的数量确定为待创建的子进程的数量,因而,可以充分利用多个加速设备实现检索子任务的并行检索,提高了特征检索效率。
在一些实施例中,利用spark计算框架对待检索底库和待检索特征进行拆分,可以本公开实施例支持大数据量的特征检索,但是特征检索的性能没有实质提升;对于特征检索任务,检索效率的提升主要依赖于每个检索子任务的执行。在相关技术中,可以使用单个加速设备,并采用倒排索引(Inverted File,IVF)算法和特征量化算法实现对高维特征的加速检索;示例性地,特征量化算法可以基于深码(DeepCode,DC)软件实现。在软件层面,检索引擎可以通过对底库的训练,将底库特征量化为更低维度的量化特征,同时可以使用IVF算法实现检索的加速。在硬件层面,检索引擎可以绑定加速设备,量化特征以及索引可以存放至加速设备的内存中,利用硬件的计算加速,实现快速的检索。
可以看出,由于将高维的底库特征量化为更低维度的量化特征,会导致检索精度的一定损失;因此,在检索引擎中提供了特征重排的调用,用来确定低维的量化特征与原始特征的相似度,但是,为了实现特征重排的调用,需要保存原始的底库特征。而存储原始底库特征的内存是不受调用程序管理的,创建多个检索引擎对象会导致内存中相同特征的复制。
另外,相关技术中,检索引擎虽然提供了绑定多个加速设备的能力,但是没有提供任务分发的能力。
针对上述问题,本公开实施例可以不使用检索引擎提供的特征重排功能,而是可以利用主进程实现特征重排的功能。
在本公开的一些实施例中,每个子进程在将对应的检索子任务中的底库分片量化为量化特征后,可以基于对应的检索子任务中的特征分片和量化特征进行检索,得到该子进程的检索结果。
相应地,参照图5,根据各个主进程接收到的检索结果,得出待检索特征在底库中的检索结果的流程,可以包括:
步骤501:在每个主进程中,确定接收到的检索结果与底库中相应的原始特征的相似度。
步骤502:在每个主进程接收到的检索结果中,选取数量为第一预设值的检索结果,将选取的数量为第一预设值的检索结果作为主进程的输出检索结果。
这里,第一预设值可以根据实际需求设置;示例性地,可以在每个主进程在接收到的检索结果中,选取与底库中相应的原始特征的相似度最高的前k个检索结果,将选取的前k个检索结果作为主进程的输出检索结果,k为大于或等于1的整数,且k为上述第一预设值。
步骤503:根据各个主进程的输出检索结果,得出待检索特征在底库中的检索结果。
可以看出,本公开实施例中可以采用主进程实现特征重排的功能,即,主进程可以确定低维的量化特征与原始的底库分片的相似度,并根据相似度选取检索结果;因此,与相关技术中使用检索引擎实现特征重排的方案相比,主进程的执行可以通过程序管理,在计算原始的底库分片与各个子进程的检索结果的相似度时,无需复制原始的底库分片,降低了资源消耗;并且,可以利用主进程实现检索子任务的任务分片,提高了检索效率。
进一步地,本公开实施例可以选取与底库中相应的原始特征的相似度最高的前k个检索结果,将选取的前k个检索结果作为主进程的输出检索结果,从而,可以在减少检索数据量的基础上保持较高的特征检索精度。
在一些实施例中,参照图6,根据各个主进程的输出检索结果,得出待检索特征在底库中的检索结果的流程,可以包括:
步骤601:在各个主进程的输出检索结果中,通过将每个检索子任务在各个底库分片的检索结果进行合并,得到每个检索子任务在底库中的检索结果。
步骤602:得出待检索特征在底库中的检索结果,待检索特征在底库中的检索结果包括:各个检索子任务在所述底库中的检索结果。
可以看出,本公开实施例通过将每个检索子任务在各个底库分片的检索结果进行合并,可以准确全面地得到每个检索子任务在底库中的检索结果。
在一些实施例中,参照图7,通过将每个检索子任务在各个底库分片的检索结果进行合并,得到每个检索子任务在所述底库中的检索结果的流程,可以包括:
步骤701:将每个检索子任务在各个底库分片的检索结果进行合并,得到每个检索子任务对应的合并结果。
步骤702:在每个检索子任务对应的合并结果中,选取数量为第二预设值的检索结果,将选取的数量为第二预设值的检索结果作为每个检索子任务在所述底库中的检索结果。
这里,第二预设值可以根据实际需求设置;示例性地,可以在每个检索子任务对应的合并结果中,选取与底库中相应的原始特征的相似度最高的前p个检索结果,将选取的前p个检索结果作为每个检索子任务在底库中的检索结果;p为大于或等于1的整数,且p为上述第一预设值。
在一些实施例中,可以利用spark计算框架中的map-reduce算子执行步骤702。
可以看出,本公开实施例可以根据与相应的原始特征的相似度,在每个检索子任务对应的合并结果进行检索结果的筛选,从而,可以在减少检索数据量的基础上保持较高的特征检索精度。
在一些实施例中,在对底库进行分片之前,参照图8,上述特征检索方法还可以包括:
步骤801:确定底库中每个特征的属性。
步骤802:按照底库中每个特征的属性,将底库中不属于第一预设属性范围的特征滤除。
示例性地,底库中每个特征的属性可以是用户指定的任意一种属性;在一种实现方式中,在底库中的特征为采集到的图像的特征的情况下,底库中的特征的属性可以包括以下至少一项:特征对应的图像的采集时间、特征对应的图像的采集地点。相应地,第一预设属性范围可以是时间范围和空间范围中的至少一项。
可以看出,本公开实施例可以按照第一预设属性范围对底库中的特征进行滤除,有利于得到符合要求的特征;例如,可以按照预设时空范围对底库中的特征进行滤除,有利于得到符合时空范围要求的特征。
在一些实施例中,在获取待检索请求中待检索特征的至少两个特征分片之前,参照图9,上述特征检索方法还可以包括:
步骤901:确定待检索特征每个特征的属性。
步骤902:按照待检索特征中每个特征的属性,将待检索特征中不属于第二预设属性范围的特征滤除。
本公开实施例中,第一预设属性范围与第二预设属性范围可以相同,也可以不相同。
示例性地,待检索特征中每个特征的属性可以是用户指定的任意一种属性;在一种实现方式中,在带检索特征中的特征为采集到的图像的特征的情况下,待检索特征中的特征的属性可以包括以下至少一项:特征对应的图像的采集时间、特征对应的图像的采集地点。相应地,第二预设属性范围可以是时间范围和空间范围中的至少一项。
可以看出,本公开实施例可以按照第二预设属性范围对待检索特征中的特征进行滤除,有利于得到符合要求的特征;例如,可以按照预设时空范围对待检索特征中的特征进行滤除,有利于得到符合时空范围要求的特征。
在前述实施例提出的特征检索方法的基础上,本公开实施例还提出了一种特征检索装置。
图10为本公开实施例的特征检索装置的结构示意图,如图11所示,该装置可以包括:获取模块1000、第一处理模块1001、第二处理模块1002、第三处理模块1003和第四处理模块1004,其中
获取模块1000,用于获取待检索请求中待检索特征的至少两个特征分片;
第一处理模块1001,用于基于底库分片后的至少两个底库分片和所述至少两个特征分片,确定在各所述底库分片进行检索的检索子任务集合;
第二处理模块1002,用于利用至少一个主进程中的每个主进程创建至少一个子进程;
第三处理模块1003,用于利用每个主进程将已分配给自身的检索子任务再次划分后分配至各个子进程,并接收各个子进程的检索结果;
第四处理模块1004,用于根据所述各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果。
在一些实施例中,所述第二处理模块1002,用于利用至少一个主进程中的每个主进程创建至少一个子进程,包括:
在所述每个主进程中,获取针对所述已分配的检索子任务对应的底库分片的索引文件,创建所述主进程用于向所述至少一个子进程输出数据的输出队列、用于接收所述至少一个子进程的数据的输入队列、以及所述主进程与所述至少一个子进程之间的通信管道;
根据所述索引文件、所述输出队列、所述输入队列和所述通信管道,创建所述至少一个子进程。
在一些实施例中,所述至少一个子进程中每个子进程的检索结果是基于加速设备处理对应的检索子任务得到的;
所述第二处理模块1002,用于创建所述主进程用于向所述多个子进程输出数据的输出队列、用于接收所述多个子进程的数据的输入队列、以及所述主进程与所述多个子进程之间的通信管道,包括:
将预先确定的加速设备的数量确定为待创建的子进程的数量;
根据所述待创建的子进程的数量,创建所述输出队列、所述输入队列和所述通信管道。
在一些实施例中,所述至少一个子进程中每个子进程的检索结果是将对应的检索子任务中的底库分片量化为量化特征后,基于对应的检索子任务中的特征分片和所述量化特征得到的结果;
所述第四处理模块1004,用于根据所述各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果,包括:
在所述每个主进程中,确定接收到的检索结果与所述底库中相应的原始特征的相似度;
在所述每个主进程接收到的检索结果中,选取数量为第一预设值的检索结果,将选取的所述数量为第一预设值的检索结果作为主进程的输出检索结果;
根据所述各个主进程的输出检索结果,得出所述待检索特征在所述底库中的检索结果。
在一些实施例中,所述第四处理模块1004,用于根据所述各个主进程的输出检索结果,得出待检索特征在底库中的检索结果,包括:
在所述各个主进程的输出检索结果中,通过将每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务在所述底库中的检索结果;
得出所述待检索特征在底库中的检索结果,所述待检索特征在底库中的检索结果包括:所述各个检索子任务在所述底库中的检索结果。
在一些实施例中,所述第四处理模块1004,用于通过将每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务在所述底库中的检索结果,包括:
将所述每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务对应的合并结果;
在所述每个检索子任务对应的合并结果中,选取数量为第二预设值的检索结果,将选取的所述数量为第二预设值的检索结果作为所述每个检索子任务在所述底库中的检索结果。
在一些实施例中,所述获取模块1000,还用于在对所述底库进行分片之前,确定所述底库中每个特征的属性;按照所述底库中每个特征的属性,将所述底库中不属于第一预设属性范围的特征滤除;
所述获取模块1000,还用于在获取待检索请求中待检索特征的至少两个特征分片之前,确定所述待检索特征每个特征的属性;按照所述待检索特征中每个特征的属性,将所述待检索特征中不属于第二预设属性范围的特征滤除。
上述获取模块1000、第一处理模块1001、第二处理模块1002、第三处理模块1003和第四处理模块1004可以基于电子设备的处理器实现。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
具体来讲,本实施例中的一种特征检索方法对应的计算机程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种特征检索方法对应的计算机程序指令被一电子设备读取或被执行时,实现前述实施例的任意一种特征检索方法。
基于前述实施例相同的技术构思,参见图11,其示出了本发明实施例提供的一种电子设备110,可以包括:存储器111、处理器112及存储在存储器111上并可在处理器112上运行的计算机程序;其中,
存储器111,用于存储计算机程序和数据;
处理器112,用于执行所述存储器中存储的计算机程序,以实现前述实施例的任意一种特征检索方法。
在实际应用中,上述存储器111可以是易失性存储器(volatile memory),例如RAM;或者非易失性存储器(non-volatile memory),例如ROM,快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器112提供指令和数据。
上述处理器112可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述
本公开所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本公开所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本公开所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (10)

1.一种特征检索方法,其特征在于,所述方法包括:
获取待检索请求中待检索特征的至少两个特征分片;
基于待检索底库分片后的至少两个底库分片和所述至少两个特征分片,确定在各所述底库分片进行检索的检索子任务集合;
利用至少一个主进程中的每个主进程创建至少一个子进程;
利用每个主进程将已分配给自身的检索子任务再次划分后分配至各个子进程,并接收各个子进程的检索结果;
根据所述各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果。
2.根据权利要求1所述的方法,其特征在于,所述利用至少一个主进程中的每个主进程创建至少一个子进程,包括:
在所述每个主进程中,获取针对所述已分配的检索子任务对应的底库分片的索引文件,创建所述主进程用于向所述至少一个子进程输出数据的输出队列、用于接收所述至少一个子进程的数据的输入队列、以及所述主进程与所述至少一个子进程之间的通信管道;
根据所述索引文件、所述输出队列、所述输入队列和所述通信管道,创建所述至少一个子进程。
3.根据权利要求2所述的方法,其特征在于,所述至少一个子进程中每个子进程的检索结果是基于加速设备处理对应的检索子任务得到的;
所述创建所述主进程用于向所述多个子进程输出数据的输出队列、用于接收所述多个子进程的数据的输入队列、以及所述主进程与所述多个子进程之间的通信管道,包括:
将预先确定的加速设备的数量确定为待创建的子进程的数量;
根据所述待创建的子进程的数量,创建所述输出队列、所述输入队列和所述通信管道。
4.根据权利要求1所述的方法,其特征在于,所述至少一个子进程中每个子进程的检索结果是将对应的检索子任务中的底库分片量化为量化特征后,基于对应的检索子任务中的特征分片和所述量化特征得到的结果;
所述根据所述各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果,包括:
在所述每个主进程中,确定接收到的检索结果与所述底库中相应的原始特征的相似度;
在所述每个主进程接收到的检索结果中,选取数量为第一预设值的检索结果,将选取的所述数量为第一预设值的检索结果作为主进程的输出检索结果;
根据所述各个主进程的输出检索结果,得出所述待检索特征在所述底库中的检索结果。
5.根据权利要求4所述的方法,其特征在于,所述根据所述各个主进程的输出检索结果,得出待检索特征在底库中的检索结果,包括:
在所述各个主进程的输出检索结果中,通过将每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务在所述底库中的检索结果;
得出所述待检索特征在底库中的检索结果,所述待检索特征在底库中的检索结果包括:所述各个检索子任务在所述底库中的检索结果。
6.根据权利要求5所述的方法,其特征在于,所述通过将每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务在所述底库中的检索结果,包括:
将所述每个检索子任务在各个底库分片的检索结果进行合并,得到所述每个检索子任务对应的合并结果;
在所述每个检索子任务对应的合并结果中,选取数量为第二预设值的检索结果,将选取的所述数量为第二预设值的检索结果作为所述每个检索子任务在所述底库中的检索结果。
7.根据权利要求1至6任一项所述的方法,其特征在于,在对所述底库进行分片之前,所述方法还包括:
确定所述底库中每个特征的属性;
按照所述底库中每个特征的属性,将所述底库中不属于第一预设属性范围的特征滤除;
在获取待检索请求中待检索特征的至少两个特征分片之前,所述方法还包括:
确定所述待检索特征每个特征的属性;
按照所述待检索特征中每个特征的属性,将所述待检索特征中不属于第二预设属性范围的特征滤除。
8.一种特征检索装置,其特征在于,所述装置包括获取模块、第一处理模块、第二处理模块、第三处理模块和第四处理模块,其中,
获取模块,用于获取待检索请求中待检索特征的至少两个特征分片;
第一处理模块,用于基于待检索底库分片后的至少两个底库分片和所述至少两个特征分片,确定在各所述底库分片进行检索的检索子任务集合;
第二处理模块,用于利用至少一个主进程中的每个主进程创建至少一个子进程;
第三处理模块,用于利用每个主进程将已分配给自身的检索子任务再次划分后分配至各个子进程,并接收各个子进程的检索结果;
第四处理模块,用于根据所述各个主进程接收到的检索结果,确定待检索特征在底库中的检索结果。
9.一种电子设备,其特征在于,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器用于运行所述计算机程序以执行权利要求1至7任一项所述的特征检索方法。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7任一项所述的特征检索方法。
CN202111640138.4A 2021-12-29 2021-12-29 特征检索方法、装置、电子设备及计算机存储介质 Withdrawn CN114296965A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111640138.4A CN114296965A (zh) 2021-12-29 2021-12-29 特征检索方法、装置、电子设备及计算机存储介质
PCT/CN2022/113931 WO2023124135A1 (zh) 2021-12-29 2022-08-22 特征检索方法、装置、电子设备、计算机存储介质和程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111640138.4A CN114296965A (zh) 2021-12-29 2021-12-29 特征检索方法、装置、电子设备及计算机存储介质

Publications (1)

Publication Number Publication Date
CN114296965A true CN114296965A (zh) 2022-04-08

Family

ID=80971000

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111640138.4A Withdrawn CN114296965A (zh) 2021-12-29 2021-12-29 特征检索方法、装置、电子设备及计算机存储介质

Country Status (2)

Country Link
CN (1) CN114296965A (zh)
WO (1) WO2023124135A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023124135A1 (zh) * 2021-12-29 2023-07-06 上海商汤智能科技有限公司 特征检索方法、装置、电子设备、计算机存储介质和程序

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109062697A (zh) * 2018-08-07 2018-12-21 北京超图软件股份有限公司 一种提供空间分析服务的方法和装置
CN110413386B (zh) * 2019-06-27 2023-06-30 深圳市富途网络科技有限公司 多进程处理方法、装置、终端设备及计算机可读存储介质
WO2021168815A1 (zh) * 2020-02-28 2021-09-02 华为技术有限公司 图像检索方法和图像检索装置
CN111522969A (zh) * 2020-03-31 2020-08-11 北京旷视科技有限公司 图像检索方法、装置、计算机设备和存储介质
CN111488492B (zh) * 2020-04-08 2023-11-17 北京百度网讯科技有限公司 用于检索图数据库的方法和装置
CN114296965A (zh) * 2021-12-29 2022-04-08 北京市商汤科技开发有限公司 特征检索方法、装置、电子设备及计算机存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023124135A1 (zh) * 2021-12-29 2023-07-06 上海商汤智能科技有限公司 特征检索方法、装置、电子设备、计算机存储介质和程序

Also Published As

Publication number Publication date
WO2023124135A1 (zh) 2023-07-06

Similar Documents

Publication Publication Date Title
US20230126005A1 (en) Consistent filtering of machine learning data
US10831562B2 (en) Method and system for operating a data center by reducing an amount of data to be processed
US11422853B2 (en) Dynamic tree determination for data processing
US10318882B2 (en) Optimized training of linear machine learning models
US11100420B2 (en) Input processing for machine learning
US10169715B2 (en) Feature processing tradeoff management
US10713589B1 (en) Consistent sort-based record-level shuffling of machine learning data
US20220237184A1 (en) Dynamically assigning queries to secondary query processing resources
US10366053B1 (en) Consistent randomized record-level splitting of machine learning data
US9996593B1 (en) Parallel processing framework
CN109918184B (zh) 图片处理系统、方法及相关装置和设备
US10437470B1 (en) Disk space manager
US11151141B2 (en) Data processing device and data processing method
JP6129290B1 (ja) 分散計算におけるアプリケーションパラメータ設定およびシステム仕様設定を推奨する方法およびシステム
CN111722806A (zh) 云盘分配方法、装置、电子设备及存储介质
CN111427911A (zh) 数据查询方法、装置、计算机设备和存储介质
CN113779060A (zh) 数据查询方法和装置
WO2023124135A1 (zh) 特征检索方法、装置、电子设备、计算机存储介质和程序
CN114817717A (zh) 搜索方法、装置、计算机设备和存储介质
CN113849523A (zh) 一种数据查询方法、设备及介质
CN116132448B (zh) 基于人工智能的数据分流方法及相关设备
MAALA et al. Cluster trace analysis for performance enhancement in cloud computing environments
CN115982230A (zh) 数据库的跨数据源查询方法、系统、设备及存储介质
EP3910499A1 (en) Methods and systems for cloud computing
CN112115194B (zh) 群体对比画像确定方法、服务器、终端、系统及存储介质

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: 40068041

Country of ref document: HK

WW01 Invention patent application withdrawn after publication

Application publication date: 20220408

WW01 Invention patent application withdrawn after publication