CN110866151B - 一种特征遍历方法及相关设备 - Google Patents
一种特征遍历方法及相关设备 Download PDFInfo
- Publication number
- CN110866151B CN110866151B CN201911096154.4A CN201911096154A CN110866151B CN 110866151 B CN110866151 B CN 110866151B CN 201911096154 A CN201911096154 A CN 201911096154A CN 110866151 B CN110866151 B CN 110866151B
- Authority
- CN
- China
- Prior art keywords
- sub
- bucket
- binary number
- characteristic data
- barrel
- 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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures 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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种特征遍历方法及相关设备,包括:获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据;将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数;根据所述第二二进制数,读取第二分桶内的第二特征数据。采用本申请实施例,不仅减低了特征遍历的重复性,而且保证了特征遍历的完整性。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种特征遍历方法及相关设备。
背景技术
特征表,也称为特征哈希表,是一种根据键码值进行直接访问的数据结构。特征表可以包括人脸特征表,该人脸特征表可以用于存储人脸特征。在现有技术方案中,对特征表进行扩容或者缩容时,采用锁住整个特征表或者锁住单个键值的方式,按序遍历整个特征表,这样导致特征表遍历的重复度较高,而且无法保证遍历特征表的完整性。
发明内容
本申请实施例提供一种特征遍历方法及相关设备。不仅减低了特征遍历的重复性,而且保证了特征遍历的完整性。
本申请实施例提供了一种特征遍历方法,包括:
获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据;
将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数;
根据所述第二二进制数,读取第二分桶内的第二特征数据。
其中,所述对所述第一二进制数进行反转处理得到第二二进制数包括:
对所述第一二进制数进行反转;
将反转后的所述第一二进制数加1;
将反转后的所述第一二进制数加1之和进行反转得到所述第二二进制数。
其中,所述方法还包括:
在一个时刻,锁住所述第一分桶和所述第二分桶中的一个分桶的键值,对所述键值对应的一个分桶进行缩容和扩容。
其中,所述根据所述第二二进制数,读取第二分桶内的第二特征数据包括:
当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶进行扩容得到第三分桶和第四分桶,其中,所述第二特征数据被分配到所述第三分桶和所述第四分桶内,所述第三分桶对应的第三二进制数,所述第四分桶对应第四二进制数;
若所述第三二进制数小于第四二进制数,则根据所述第三二进制数读取所述第三分桶内的所述第二特征数据;
对所述第三二进制数进行反转处理,根据反转后的所述第三二进制数读取所述第四分桶内的所述第二特征数据。
其中,所述根据所述第二二进制数,读取第二分桶内的第二特征数据包括:
当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶和第三分桶进行缩容得到第四分桶,所述第二分桶内的所述第二特征数据和所述第三分桶内的特征数据组合到所述第四分桶内,所述第四分桶对应第五二进制数;
根据所述第三二进制数,读取所述第四分桶内的特征数据;
对所述第三二进制数据进行反转,根据反转后的所述第三二进制数读取其他分桶内的特征数据。
第二方面,本申请实施例提供了一种特征遍历装置,包括:
获取模块,用于获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据;
处理模块,用于将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数;
所述处理模块,还用于根据所述第二二进制数,读取第二分桶内的第二特征数据。
其中,所述处理模块,还用于对所述第一二进制数进行反转;将反转后的所述第一二进制数加1;将反转后的所述第一二进制数加1之和进行反转得到所述第二二进制数。
其中,所述处理模块,还用于在一个时刻,锁住所述第一分桶和所述第二分桶中的一个分桶的键值,对所述键值对应的一个分桶进行缩容和扩容。
其中,所述处理模块,还用于当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶进行扩容得到第三分桶和第四分桶,其中,所述第二特征数据被分配到所述第三分桶和所述第四分桶内,所述第三分桶对应的第三二进制数,所述第四分桶对应第四二进制数;若所述第三二进制数小于第四二进制数,则根据所述第三二进制数读取所述第三分桶内的所述第二特征数据;对所述第三二进制数进行反转处理,根据反转后的所述第三二进制数读取所述第四分桶内的所述第二特征数据。
其中,所述处理模块,还用于当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶和第三分桶进行缩容得到第四分桶,所述第二分桶内的所述第二特征数据和所述第三分桶内的特征数据组合到所述第四分桶内,所述第四分桶对应第五二进制数;根据所述第三二进制数,读取所述第四分桶内的特征数据;对所述第三二进制数据进行反转,根据反转后的所述第三二进制数读取其他分桶内的特征数据。
第三方面,本申请实施例提供了一种移动网点,包括:处理器、存储器和通信总线,其中,通信总线用于实现处理器和存储器之间连接通信,处理器执行存储器中存储的程序用于实现上述第一方面提供的一种特征遍历方法中的步骤。
在一个可能的设计中,本申请提供的移动设备可以包含用于执行上述方法中行为相对应的模块。模块可以是软件和/或硬件。
第四方面,本申请实施例的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载并执行上述各方面所述的方法。
第五方面,本申请实施例的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
实施本申请实施例,获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据;将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数;根据所述第二二进制数,读取第二分桶内的第二特征数据。通过对第一分桶的二进制数进行反转得到需要遍历的下一个分桶的二进制数,然后根据该二进制数遍历下一个分桶,不仅减低了特征遍历的重复性,而且保证了特征遍历的完整性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提出的一种通信系统的结构示意图;
图2是本申请实施例提供的一种特征表的示意图;
图3是本申请实施例提供的一种渐进式扩容方法的示意图;
图4是本申请实施例提供的一种特征表扩容的示意图;
图5是本申请实施例提供的一种特征表缩容的示意图;
图6是本申请实施例提供的一种特征遍历方法的流程示意图;
图7是本申请实施例提供的一种遍历过程中发生扩容的示意图;
图8是本申请实施例提供的一种遍历过程中发生缩容的示意图;
图9是本申请实施例提供的一种特征检索的示意图;
图10是本申请实施例提供的一种特征遍历装置的结构示意图;
图11是本申请实施例提出的一种云服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1是本申请实施例提供的一种通信系统的结构示意图。如图所示,本申请实施例中系统包括终端设备101和云服务器102,终端设备101可以指提供到用户的语音和/或数据连接的设备,也可以被连接到诸如膝上型计算机或台式计算机等的计算设备,或者其可以是诸如个人数字助理(Personal Digital Assistant,PDA)等的独立设备。终端设备101还可以为站点(Station,STA)、系统、用户单元、用户站、移动站、移动台、远程站、接入点、远程终端、接入终端、用户终端、用户代理或用户装置。云服务器102可以用于存储数据、读取数据或写入数据。在本申请实施例中,云服务器102主要用于人脸特征表。
本申请实施例中的特征表可以包括多个分桶(bucket),每个分桶内可以存储多个特征数据,多个特征数据采用链表形式串联。例如,如图2所示,图2是本申请实施例提供的一种特征表的示意图。该特征表包括4个分桶,按照从小到大的顺序依次对4个分桶进行编号,4个分桶的编号依次为0、1、2和3,对应二进制数分别为00、01、10和11。每个分桶内的特征数据采用链表形式串联。在特征表的数据量很大的情况下,如果锁住整个特征表,势必会影响特征表的性能。
为了保障访问性能,可以采用一种渐进式的方式对特征表进行扩容或者缩容。随着时间推移,依次分别对分桶内的特征数据的重新定位,这样锁粒度可以减小到单一健值层级。如图3所示,图3是本申请实施例提供的一种渐进式扩容方法的示意图。在t0时刻完成了0号分桶的扩容。在t1时刻开始对1号分桶进行扩容。在t1时刻仅仅锁住1号分桶的单一键值,只对1号分桶内的特征数据进行重新定位,扩容单个分桶内的特征数据,因而耗时是可控的。但是,采用锁住单一键值进行渐进式扩缩容,按照0->1->2->3的顺序依次遍历特征数据会产生如下问题:
如果扩容,会存在大量重复访问特征数据的问题。例如,如图4所示,图4是本申请实施例提供的一种特征表扩容的示意图。将4个分桶扩容为8个分桶。当遍历访问0(00)号分桶和1(01)号桶之后,此时0(00)号分桶扩容为0(000)号分桶和4(100)号分桶,1(01)号分桶扩容为1(001)号分桶和5(101)号分桶。扩容前的0号分桶内的数据会均匀的分到扩容后的0号分桶和4号桶内,扩容前的1号分桶内的特征数据会分到扩容后的1号分桶和5号桶内。如果仍然按照顺序依次读取分桶内的特征数据,那么就会读取扩容后的4号分桶内的特征数据和扩容后的5号分桶内的特征数据,由于4号分桶内的特征数据和扩容后的5号分桶内的特征数据已经在扩容前已经访问过,因此造成4号分桶内的特征数据和扩容后的5号分桶内的特征数据重复访问。
如果缩容,会存在数据丢失的问题。例如,如图5所示,图5是本申请实施例提供的一种特征表缩容的示意图。当遍历访问完成0(00)号分桶内的特征数据之后,此时将4个分桶缩容为2个分桶,0(00)号分桶和2(10)号分桶缩容为0(0)号分桶,1(01)号分桶和3(11)号分桶缩容为1(1)号分桶。缩容前的2(10)号分桶内的特征数据组合到了缩容后的0(0)号分桶中,由于已经遍历了0(00)号分桶,缩容后不会再遍历0(0)号分桶,因此无法遍历缩容前的2(10)号分桶内的特征数据,导致数据丢失。
为了解决上述技术问题,本申请实施例提供了如下解决方案。
如图6所示,图6是本申请实施例提供的一种特征遍历方法的流程示意图。本申请实施例中的步骤至少包括:
S601,获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据。
具体实现中,终端设备可以向云服务器发送请求信息,云服务器接收到请求信息之后,开始按照序号从小到大的顺序依次遍历多个分桶。首先获取第一个分桶的序号,即序号0,根据序号0查找到第一个分桶,开始遍历第一个分桶,读取第一个分桶内的特征数据或者向第一个分桶内写入特征数据。
S602,将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数。
具体实现中,可以对遍历的上一个分桶的序号对应的第一二进制数进行反转;将反转后的所述第一二进制数加1;将反转后的所述第一二进制数加1之和进行反转得到所述第二二进制数。
例如,如果特征表包括4个分桶,4个分桶的序号依次为0、1、2、3,首先读取第一个分桶的序号1(00),将第一个分桶的序号的二进制数进行反转,即前后比特位上的数据互换,比特位最高位上的0变更到比特位最低位上,比特位最低位的0变更到比特位最高位上。第一个分桶的序号对应的二进制数00反转后变成二进制数00,反转后得到的二进制数00加1等于二进制数01,二进制数01再经过反转后得到10,即下一个需要遍历的分桶的序号对应的二进制数为10。
S603,根据所述第二二进制数,读取第二分桶内的第二特征数据。
在本申请实施例中,可以采用一种渐进式扩容或缩容方法,即在一个时刻,锁住所述第一分桶和所述第二分桶中的一个分桶的键值,对所述键值对应的一个分桶进行缩容和扩容。例如,如果特征表包括4个分桶,可以按照分桶的序号从小到大的顺序依次对4个分桶进行扩容。
在遍历过程中发生扩容的情况下。当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶进行扩容得到第三分桶和第四分桶。其中,所述第二特征数据被分配到所述第三分桶和所述第四分桶内,所述第三分桶对应的第三二进制数,所述第四分桶对应第四二进制数;若所述第三二进制数小于第四二进制数,则根据所述第三二进制数读取所述第三分桶内的所述第二特征数据;对所述第三二进制数进行反转处理,根据反转后的所述第三二进制数读取所述第四分桶内的所述第二特征数据。
例如,如图7所示,图7是本申请实施例提供的一种遍历过程中发生扩容的示意图。在扩容前,特征表包括4个分桶,4个分桶的序号依次为0(00)、1(01)、2(10)、3(11)。首先遍历0(00)号分桶,在遍历完成0(00)号分桶之后,即将遍历2(10)分桶时发生扩容,0(00)号分桶扩容为0(000)号分桶和4(100)号分桶,1(01)号分桶扩容为1(001)号分桶和5(101)号分桶,2(10)号分桶扩容为2(010)号分桶和6(110)号分桶,3(11)号分桶扩容为3(011)号分桶和7(111)号分桶。扩容前的0号分桶内的数据会均匀的分配到扩容后的0号分桶和4号桶内,扩容前的1号分桶内的特征数据会分配到扩容后的1号分桶和5号桶内。此时,由于2(10)号分桶扩容为2(010)号分桶和6(110)号分桶,可以选取扩容后的两个分桶的序号中的较小的一个进行遍历,也即选取扩容后的2(010)号分桶开始遍历,读取扩容后的2(010)号分桶内的特征数据,然后对2号分桶对应的二进制数010进行反转,前后比特位互换位置,反转后得到010,然后将010加1得到011,再对011进行反转得到110。因此开始遍历扩容后的二进制数110对应的6号分桶。在遍历完成6号分桶之后,对6号分桶对应二进制数110进行反转,得到下一个需要遍历的分桶的序号。以此类推,遍历完成所有分桶,遍历过程如图7中加粗的线条所示。
在遍历过程中发生缩容的情况下。当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶和第三分桶进行缩容得到第四分桶,所述第二分桶内的所述第二特征数据和所述第三分桶内的特征数据组合到所述第四分桶内,所述第四分桶对应第五二进制数;根据所述第三二进制数,读取所述第四分桶内的特征数据;对所述第三二进制数据进行反转,根据反转后的所述第三二进制数读取其他分桶内的特征数据。
例如,如图8所示,图8是本申请实施例提供的一种遍历过程中发生缩容的示意图。在缩容前,特征表包括8个分桶,8个分桶的序号依次为0(000)、1(001)、2(010)、3(011)、4(100)、5(101)、6(110)、7(111)。在遍历完成0(000)号分桶和4(100)号分桶之后,即将遍历2(010)号分桶时发生缩容,0(000)号分桶内的特征数据和4(100)号分桶内的特征数据组合到0(00)分桶中,1(001)号分桶内的特征数据和5(101)号分桶内的特征数据组合到1(01)分桶中,2(010)号分桶内的特征数据和6(110)号分桶内的特征数据组合到2(10)分桶中,3(011)号分桶内的特征数据和7(111)号分桶内的特征数据组合到3(11)分桶中。在缩容后,0(00)号分桶内的特征数据已经遍历完成,根据二进制数00进行反转得到00,然后00加1得到01,在进行反转得到10,因此缩容后首先遍历二进制数10对应的2号分桶内的特征数据。遍历完成2号分桶之后,按照相同的方法遍历下一个分桶,直到遍历完成3号分桶。由于按照此遍历方法在缩容前已经遍历完成4(100)号分桶内的特征数据,因此不存在数据丢失的情况。
本申请实施例可以应用于人脸识别云服务系统,在云服务器上存储大量人脸特征数据时,在内存中构建特征表。在检索特征表时,可以遍历特征表中的全部特征或者取出部分特征。例如,如图9所示,图9是本申请实施例提供的一种特征检索的示意图。在t0时刻,正在扩容特征表,如果检索需要0号分桶内的特征数据,按照序号大小依次遍历只能拿到0(000)桶内特征数据(特征1和特征2),但实际上还需要4(100)号分桶内的特征数据(特征3、特征4和特征5)。采用本申请提供的反转迭代的方法,可以在遍历完0号分桶之后,紧接着遍历4号分桶,其中,0号分桶和4号分桶为同一个分桶扩容出来的。这样遍历特征表发生扩容或者缩容时,数据都不会发生丢失。
在本申请实施例中,获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据;将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数;根据所述第二二进制数,读取第二分桶内的第二特征数据。通过对第一分桶的二进制数进行反转得到需要遍历的下一个分桶的二进制数,然后根据该二进制数遍历下一个分桶,不仅减低了特征遍历的重复性,而且保证了特征遍历的完整性。
如图10所示,图10是本申请实施例提供的一种特征遍历装置的结构示意图。本申请实施例中的装置包括:
获取模块1001,用于获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据。
具体实现中,终端设备可以向云服务器发送请求信息,云服务器接收到请求信息之后,开始按照序号从小到大的顺序依次遍历多个分桶。首先获取第一个分桶的序号,即序号0,根据序号0查找到第一个分桶,开始遍历第一个分桶,读取第一个分桶内的特征数据或者向第一个分桶内写入特征数据。
处理模块1002,用于将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数。
具体实现中,可以对遍历的上一个分桶的序号对应的第一二进制数进行反转;将反转后的所述第一二进制数加1;将反转后的所述第一二进制数加1之和进行反转得到所述第二二进制数。
例如,如果特征表包括4个分桶,4个分桶的序号依次为0、1、2、3,首先读取第一个分桶的序号1(00),将第一个分桶的序号的二进制数进行反转,即前后比特位上的数据互换,比特位最高位上的0变为比特位最低位上,比特位最低位的0变更到比特位最高位上。第一个分桶的序号对应的二进制数00反转后变成二进制数00,反转后得到的二进制数00加1等于二进制数01,二进制数01再经过反转后得到10,即下一个需要读取的分桶的序号对应的二进制数为10。
处理模块1002,还用于根据所述第二二进制数,读取第二分桶内的第二特征数据。
在本申请实施例中,可以采用一种渐进式扩容或缩容方法,即在一个时刻,锁住所述第一分桶和所述第二分桶中的一个分桶的键值,对所述键值对应的一个分桶进行缩容和扩容。例如,如果特征表包括4个分桶,可以按照分桶的序号从小到大的顺序依次对4个分桶进行扩容。
在遍历过程中发生扩容的情况下。当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶进行扩容得到第三分桶和第四分桶。其中,所述第二特征数据被分配到所述第三分桶和所述第四分桶内,所述第三分桶对应的第三二进制数,所述第四分桶对应第四二进制数;若所述第三二进制数小于第四二进制数,则根据所述第三二进制数读取所述第三分桶内的所述第二特征数据;对所述第三二进制数进行反转处理,根据反转后的所述第三二进制数读取所述第四分桶内的所述第二特征数据。
例如,如图7所示,图7是本申请实施例提供的一种遍历过程中发生扩容的示意图。在扩容前,特征表包括4个分桶,4个分桶的序号依次为0(00)、1(01)、2(10)、3(11)。首先遍历0(00)号分桶,在遍历完成0(00)号分桶之后,即将遍历2(10)分桶时发生扩容,0(00)号分桶扩容为0(000)号分桶和4(100)号分桶,1(01)号分桶扩容为1(001)号分桶和5(101)号分桶,2(10)号分桶扩容为2(010)号分桶和6(110)号分桶,3(11)号分桶扩容为3(011)号分桶和7(111)号分桶。扩容前的0号分桶内的数据会均匀的分配到扩容后的0号分桶和4号桶内,扩容前的1号分桶内的特征数据会分到扩容后的1号分桶和5号桶内。此时,由于2(10)号分桶扩容为2(010)号分桶和6(110)号分桶,可以选取扩容后的两个分桶的序号中的较小的一个进行遍历,也即选取扩容后的2(010)号分桶开始遍历,读取扩容后的2(010)号分桶内的特征数据,然后对2号分桶对应的二进制数010进行反转,前后比特位互换位置,反转后得到010,然后将010加1得到011,再对011进行反转得到110。因此开始遍历扩容后的二进制数110对应的6号分桶。在遍历完成6号分桶之后,对6号分桶对应二进制数110进行反转,得到下一个需要遍历的分桶的序号。以此类推,遍历完成所有分桶,遍历过程如图7中加粗的线条所示。
在遍历过程中发生缩容的情况下。当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶和第三分桶进行缩容得到第四分桶,所述第二分桶内的所述第二特征数据和所述第三分桶内的特征数据组合到所述第四分桶内,所述第四分桶对应第五二进制数;根据所述第三二进制数,读取所述第四分桶内的特征数据;对所述第三二进制数据进行反转,根据反转后的所述第三二进制数读取其他分桶内的特征数据。
例如,如图8所示,图8是本申请实施例提供的一种遍历过程中发生缩容的示意图。在缩容前,特征表包括8个分桶,8个分桶的序号依次为0(000)、1(001)、2(010)、3(011)、4(100)、5(101)、6(110)、7(111)。在遍历完成0(000)号分桶和4(100)号分桶之后,即将遍历2(010)号分桶时发生缩容,0(000)号分桶内的特征数据和4(100)号分桶内的特征数据组合到0(00)分桶中,1(001)号分桶内的特征数据和5(101)号分桶内的特征数据组合到1(01)分桶中,2(010)号分桶内的特征数据和6(110)号分桶内的特征数据组合到2(10)分桶中,3(011)号分桶内的特征数据和7(111)号分桶内的特征数据组合到3(11)分桶中。在缩容后,0(00)号分桶内的特征数据已经遍历完成,根据二进制数00进行反转得到00,然后00加1得到01,在进行反转得到10,因此缩容后首先遍历二进制数10对应的2号分桶内的特征数据。遍历完成2号分桶之后,按照相同的方法遍历下一个分桶,直到遍历完成3号分桶。由于按照此遍历方法在缩容前已经遍历完成4(100)号分桶内的特征数据,因此不存在数据丢失的情况。
本申请实施例可以应用于人脸识别云服务系统,在云服务器上存储大量人脸特征数据时,在内存构建特征表。在检索特征表时,可以遍历特征表中的全部特征或者取出部分特征。例如,如图9所示,图9是本申请实施例提供的一种特征检索的示意图。在t0时刻,正在扩容特征表,如果检索需要0号分桶内的特征数据,按照序号大小依次遍历只能拿到0(000)桶内特征数据(特征1和特征2),但实际上还需要4(100)号分桶内的特征数据(特征3、特征4和特征5)。采用本申请提供的反转迭代的方法,可以在遍历完0号分桶之后,紧接着遍历4号分桶。这样遍历特征表发生扩容或者缩容时,数据都不会发生丢失。
在本申请实施例中,获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据;将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数;根据所述第二二进制数,读取第二分桶内的第二特征数据。通过对第一分桶的二进制数进行反转得到需要读取的下一个分桶的二进制数,然后根据该二进制数遍历下一个分桶,不仅减低了特征遍历的重复性,而且保证了特征遍历的完整性。
请继续参考图11,图11是本申请实施例提出的一种云服务器的结构示意图。如图11所示,该云服务器可以包括:至少一个处理器1101,至少一个通信接口1102,至少一个存储器1103和至少一个通信总线1104。
其中,处理器1101可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线1104可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线1104用于实现这些组件之间的连接通信。其中,本申请实施例中设备的通信接口1102用于与其他节点设备进行信令或数据的通信。存储器1103可以包括易失性存储器,例如非挥发性动态随机存取内存(nonvolatile random access memory,NVRAM)、相变化随机存取内存(phase change RAM,PRAM)、磁阻式随机存取内存(magetoresistive RAM,MRAM)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、闪存器件,例如反或闪存(NOR flash memory)或是反及闪存(NAND flash memory)、半导体器件,例如固态硬盘(solid state disk,SSD)等。存储器1103可选的还可以是至少一个位于远离前述处理器1101的存储装置。存储器1103中可选的还可以存储一组程序代码,且处理器1101可选的还可以执行存储器1103中所执行的程序。
获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据;
将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数;
根据所述第二二进制数,读取第二分桶内的第二特征数据。
可选的,处理器1101还用于执行如下操作:
对所述第一二进制数进行反转;
将反转后的所述第一二进制数加1;
将反转后的所述第一二进制数加1之和进行反转得到所述第二二进制数。
可选的,处理器1101还用于执行如下操作:
在一个时刻,锁住所述第一分桶和所述第二分桶中的一个分桶的键值,对所述键值对应的一个分桶进行缩容和扩容。
可选的,处理器1101还用于执行如下操作:
当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶进行扩容得到第三分桶和第四分桶,其中,所述第二特征数据被分配到所述第三分桶和所述第四分桶内,所述第三分桶对应的第三二进制数,所述第四分桶对应第四二进制数;
若所述第三二进制数小于第四二进制数,则根据所述第三二进制数读取所述第三分桶内的所述第二特征数据;
对所述第三二进制数进行反转处理,根据反转后的所述第三二进制数读取所述第四分桶内的所述第二特征数据。
可选的,处理器1101还用于执行如下操作:
当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶和第三分桶进行缩容得到第四分桶,所述第二分桶内的所述第二特征数据和所述第三分桶内的特征数据组合到所述第四分桶内,所述第四分桶对应第五二进制数;
根据所述第三二进制数,读取所述第四分桶内的特征数据;
对所述第三二进制数据进行反转,根据反转后的所述第三二进制数读取其他分桶内的特征数据。
进一步的,处理器还可以与存储器和通信接口相配合,执行上述申请实施例中特征遍历装置的操作。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种特征遍历方法,其特征在于,应用于人脸识别云服务器,所述人脸识别云服务器存储有多个人脸特征数据,所述人脸识别云服务器在存储所述多个人脸特征数据时,构建所述多个人脸特征数据对应的人脸特征表,所述人脸特征表包括排序的多个分桶,每个分桶内存储至少一个人脸特征数据,所述方法包括:
接收终端设备发送的请求信息,所述请求信息用于触发所述人脸识别云服务器遍历所述多个人脸特征数据;
获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据;
将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数,包括:对所述第一二进制数进行反转,将反转后的所述第一二进制数加1,将反转后的所述第一二进制数加1之和进行反转得到所述第二二进制数;
根据所述第二二进制数,读取第二分桶内的第二特征数据,所述第二二进制数对应的序号为所述第二分桶的序号,所述第二分桶是所述第一分桶的后一个待遍历的分桶。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在一个时刻,锁住所述第一分桶和所述第二分桶中的一个分桶的键值,对所述键值对应的一个分桶进行缩容和扩容。
3.如权利要求2所述的方法,其特征在于,所述根据所述第二二进制数,读取第二分桶内的第二特征数据包括:
当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶进行扩容得到第三分桶和第四分桶,其中,所述第二特征数据被分配到所述第三分桶和所述第四分桶内,所述第三分桶对应第三二进制数,所述第四分桶对应第四二进制数;
若所述第三二进制数小于第四二进制数,则根据所述第三二进制数读取所述第三分桶内的所述第二特征数据;
对所述第三二进制数进行反转处理,根据反转后的所述第三二进制数读取所述第四分桶内的所述第二特征数据。
4.如权利要求2所述的方法,其特征在于,所述根据所述第二二进制数,读取第二分桶内的第二特征数据包括:
当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶和第三分桶进行缩容得到第四分桶,所述第二分桶内的所述第二特征数据和所述第三分桶内的特征数据组合到所述第四分桶内,所述第三分桶对应第三二进制数,所述第四分桶对应第五二进制数;
根据所述第三二进制数,读取所述第四分桶内的特征数据;
对所述第三二进制数据进行反转,根据反转后的所述第三二进制数读取其他分桶内的特征数据。
5.一种特征遍历装置,其特征在于,应用于人脸识别云服务器,所述人脸识别云服务器存储有多个人脸特征数据,所述装置包括:
获取模块,用于从所述人脸识别云服务器在存储所述多个人脸特征数据时构建的与所述多个人脸特征数据对应的人脸特征表中获取第一分桶的第一序号,根据所述第一序号读取所述第一分桶内的第一特征数据,所述人脸特征表包括排序的多个分桶,每个分桶内存储至少一个人脸特征数据;
处理模块,用于将所述第一序号转化为第一二进制数,对所述第一二进制数进行反转处理得到第二二进制数,包括:对所述第一二进制数进行反转,将反转后的所述第一二进制数加1,将反转后的所述第一二进制数加1之和进行反转得到所述第二二进制数;
所述处理模块,还用于根据所述第二二进制数,读取第二分桶内的第二特征数据,所述第二二进制数对应的序号为所述第二分桶的序号,所述第二分桶是所述第一分桶的后一个待遍历的分桶。
6.如权利要求5所述的装置,其特征在于,
所述处理模块,还用于在一个时刻,对所述第一分桶和所述第二分桶内的任意一个进行缩容和扩容。
7.如权利要求6所述的装置,其特征在于,
所述处理模块,还用于当读取所述第二分桶内的所述第二特征数据时,对所述第二分桶进行扩容得到第三分桶和第四分桶,其中,所述第二特征数据被分配到所述第三分桶和所述第四分桶内,所述第三分桶对应第三二进制数,所述第四分桶对应第四二进制数;若所述第三二进制数小于第四二进制数,则根据所述第三二进制数读取所述第三分桶内的所述第二特征数据;对所述第三二进制数进行反转处理,根据反转后的所述第三二进制数读取所述第四分桶内的所述第二特征数据。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911096154.4A CN110866151B (zh) | 2019-11-11 | 2019-11-11 | 一种特征遍历方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911096154.4A CN110866151B (zh) | 2019-11-11 | 2019-11-11 | 一种特征遍历方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110866151A CN110866151A (zh) | 2020-03-06 |
CN110866151B true CN110866151B (zh) | 2023-09-19 |
Family
ID=69654862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911096154.4A Active CN110866151B (zh) | 2019-11-11 | 2019-11-11 | 一种特征遍历方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110866151B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017016423A1 (zh) * | 2015-07-29 | 2017-02-02 | 阿里巴巴集团控股有限公司 | 一种实时新增数据更新方法和装置 |
CN106709001A (zh) * | 2016-12-22 | 2017-05-24 | 西安电子科技大学 | 一种面向流式大数据的基数估计方法 |
CN107704501A (zh) * | 2017-08-28 | 2018-02-16 | 中国科学院信息工程研究所 | 一种识别同源二进制文件的方法及系统 |
CN109815406A (zh) * | 2019-01-31 | 2019-05-28 | 腾讯科技(深圳)有限公司 | 一种数据处理、信息推荐方法及装置 |
CN110008732A (zh) * | 2018-12-29 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 数据的关联方法、装置及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515965B2 (en) * | 2010-05-18 | 2013-08-20 | Lsi Corporation | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors |
-
2019
- 2019-11-11 CN CN201911096154.4A patent/CN110866151B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017016423A1 (zh) * | 2015-07-29 | 2017-02-02 | 阿里巴巴集团控股有限公司 | 一种实时新增数据更新方法和装置 |
CN106709001A (zh) * | 2016-12-22 | 2017-05-24 | 西安电子科技大学 | 一种面向流式大数据的基数估计方法 |
CN107704501A (zh) * | 2017-08-28 | 2018-02-16 | 中国科学院信息工程研究所 | 一种识别同源二进制文件的方法及系统 |
CN110008732A (zh) * | 2018-12-29 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 数据的关联方法、装置及设备 |
CN109815406A (zh) * | 2019-01-31 | 2019-05-28 | 腾讯科技(深圳)有限公司 | 一种数据处理、信息推荐方法及装置 |
Non-Patent Citations (4)
Title |
---|
Yun Chen ; Jignesh M. Patel.Efficient Evaluation of All-Nearest-Neighbor Queries.2007 IEEE 23rd International Conference on Data Engineering.2007,第[1056-1065]页. * |
基于高维稀疏数据的k-分桶高效skyline查询算法;徐妍妍;王宏志;高宏;李建中;;新型工业化;第2卷(第08期);第[41-55]页 * |
大数据平台下的互联网广告点击率预估模型;魏晓航;于重重;田嫦丽;陈秀新;;计算机工程与设计;第38卷(第09期);第[2504-2508]页 * |
股票系统之热门话题发现子系统 的设计与实现;周思华;中国优秀硕士学位论文全文数据库 (信息科技辑);第[I138-2150]页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110866151A (zh) | 2020-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220413706A1 (en) | Data Storage Method, Apparatus and Storage System | |
US4084260A (en) | Best match content addressable memory | |
US20150169467A1 (en) | Systems and Methods for Rapidly Generating Suitable Pairs of Hash Functions | |
CN108829344A (zh) | 数据存储方法、装置及存储介质 | |
US7971114B2 (en) | Method for testing a memory device | |
CN107622020B (zh) | 一种数据存储方法、访问方法及装置 | |
CN112559529B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
KR20210003946A (ko) | 논리적-물리적 데이터 구조 | |
CN110572164B (zh) | Ldpc译码方法、装置、计算机设备及存储介质 | |
CN107451070B (zh) | 一种数据的处理方法和服务器 | |
CN110866151B (zh) | 一种特征遍历方法及相关设备 | |
CN111857600B (zh) | 一种数据读写方法及装置 | |
CN108062289B (zh) | 快速傅里叶变换fft地址换序方法、信号处理方法及装置 | |
CN108647289B (zh) | 基于布谷哈希和布隆过滤器的Hash建表方法 | |
CN111880735A (zh) | 一种存储系统中数据迁移方法、装置、设备及存储介质 | |
CN111625500A (zh) | 文件快照方法及装置、电子设备和存储介质 | |
CN117041256B (zh) | 一种网络数据传输存储方法及系统 | |
CN113434502B (zh) | 异构数据库一致性实现方法、系统、电子设备及存储介质 | |
CN108563960B (zh) | 隐私保护电路、方法及电子设备 | |
CN113986134B (zh) | 存储数据的方法、读取数据的方法和装置 | |
CN115952326B (zh) | 一种链表式数据结构及其数据处理方法、存储介质、电子设备 | |
CN112395244B (zh) | 处理器的访问装置及方法 | |
CN110781100B (zh) | 一种数据检测方法、逻辑芯片及网络设备 | |
WO2024001876A1 (zh) | Rs译码硬件实现方法、电子设备及存储介质 | |
CN111506670B (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: 40022257 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |