1.本发明涉及电数字数据处理技术领域,特别是涉及一种基于文档的海量实时特征处理方法及系统。
背景技术:2.行人重识别(person re-identification,简称reid)是利用计算机视觉技术判断图像中是否存在特定行人的技术。基于图像的reid特征可从海量图像中查询到存在特定行人的图像。传统的海量实时特征搜索系统一般都是用键值(key-value)数据库存储reid特征,用关系型数据库存储reid特征元数据;搜索的时候先根据搜索条件从关系型数据库中筛选出所有符合条件的reid特征的key,然后从key-value数据库中读取key对应的reid特征value,建立临时搜索索引,搜索返回结果。然而,key-value数据库的每秒查询率(qps)的上限太低,即使是redis这样的内存key-value数据库,单机qps也不到10万,所以从key-value数据库读取特征速度比较慢,影响了特征处理的速度。如何实现海量实时特征的快速搜索,是亟待解决的技术问题。
技术实现要素:3.本发明目的在于,提供一种基于文档的海量实时特征处理方法及系统,以实现海量实时特征的快速搜索。
4.根据本发明的第一方面,提供了一种基于文档的海量实时特征处理方法,包括以下步骤:
5.s100,根据目标时间段内获取的k个视频,得到doc=(doc1,doc2,
…
,dock),doci为pi对应的文档信息,pi为目标时间段内获取的i个视频,i的取值范围为1到k,k为目标时间段获取的视频的总数量,doci={doc
i,meta
,doc
i,data
},doc
i,meta
为doci中的文档元数据,doc
i,meta
包括doc
i,meta,1
和doc
i,meta,2
,doc
i,meta,1
为pi所属的摄像头唯一标识,doc
i,meta,2
为pi对应的时间范围;doc
i,data
为doci中的文档数据,doc
i,data
={doc
i,data,1
,doc
i,data,2
,doc
i,data,3
},doc
i,data,1
为pi的reid特征的id,doc
i,data,1
=(doc
i,data,1,1
,doc
i,data,1,2
,
…
,doc
i,data,1,mi
),doc
i,data,1,j
为p
i,j
的reid特征的id,p
i,j
为pi中的第j帧视频图像,j的取值范围为1到mi,mi为pi中视频图像的总数量,doc
i,data,2
为pi的reid特征的时间戳,doc
i,data,2
=(doc
i,data,2,1
,doc
i,data,2,2
,
…
,doc
i,data,2,mi
),doc
i,data,2,j
为p
i,j
的reid特征的时间戳,doc
i,data,3
为pi的reid特征,doc
i,data,3
=(doc
i,data,3,1
,doc
i,data,3,2
,
…
,doc
i,data,3,mi
),doc
i,data,3,j
为p
i,j
的reid特征。
6.s200,遍历doc,如果doc
i,meta,1
为用户搜索的摄像头唯一标识,且doc
i,meta,2
为用户搜索的时间范围,则获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
。
7.s300,遍历doc,获取sim
j,0
最大的前n个doc
i,data,1,j
,sim
j,0
为doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
与用户搜索的reid特征的相似度,n为预设数量。
8.s400,遍历doc,将sim
j,0
最大的前n个doc
i,data,1,j
进行聚合,得到用户搜索的reid
特征的id。
9.本发明与现有技术相比具有明显的有益效果,借由上述技术方案,本发明提供的一种基于文档的海量实时特征处理方法可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
10.本发明将一个视频的reid特征存储在一个文档数据中,每个文档数据包括多帧连续的图像的reid特征,每个文档数据对应的文档元数据包括对应视频所属的摄像头唯一标识和对应的时间范围,当某文档元数据包括的摄像头唯一标识和时间范围不是用户搜索的摄像头唯一标识和时间范围时,可直接判定对应的文档数据中包括的所有reid特征不是用户搜索的reid特征,由此本发明可减少判定文档数据中各reid特征是否为用户搜索的reid特征的次数,提高海量实时特征的搜索速度。
11.本发明通过文档方式存储reid特征,可以最大化连续读取reid特征,相较于现有采用key-value数据库进行存储的方式,qps可轻松达到百万级别,实现了海量实时特征的快速搜索。
附图说明
12.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
13.图1为本发明实施例提供的基于文档的海量实时特征处理方法的流程图。
具体实施方式
14.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
15.根据本发明的第一方面,提供了一种基于文档的海量实时特征处理方法,如图1所示,包括以下步骤:
16.s100,根据目标时间段内获取的k个视频,得到doc=(doc1,doc2,
…
,dock),doci为pi对应的文档信息,pi为目标时间段内获取的i个视频,i的取值范围为1到k,k为目标时间段获取的视频的总数量,doci={doc
i,meta
,doc
i,data
},doc
i,meta
为doci中的文档元数据,doc
i,meta
包括doc
i,meta,1
和doc
i,meta,2
,doc
i,meta,1
为pi所属的摄像头唯一标识,doc
i,meta,2
为pi对应的时间范围;doc
i,data
为doci中的文档数据,doc
i,data
={doc
i,data,1
,doc
i,data,2
,doc
i,data,3
},doc
i,data,1
为pi的reid特征的id,doc
i,data,1
=(doc
i,data,1,1
,doc
i,data,1,2
,
…
,doc
i,data,1,mi
),doc
i,data,1,j
为p
i,j
的reid特征的id,p
i,j
为pi中的第j帧视频图像,j的取值范围为1到mi,mi为pi中视频图像的总数量,doc
i,data,2
为pi的reid特征的时间戳,doc
i,data,2
=(doc
i,data,2,1
,doc
i,data,2,2
,
…
,doc
i,data,2,mi
),doc
i,data,2,j
为p
i,j
的reid特征的时间戳,doc
i,data,3
为pi的reid特征,doc
i,data,3
=(doc
i,data,3,1
,doc
i,data,3,2
,
…
,doc
i,data,3,mi
),doc
i,data,3,j
为p
i,j
的reid特征。
17.应当理解的是,k为正整数,mi为正整数。目标时间段内获取的k个视频所属的摄像头唯一标识和对应的时间范围存在差异,视频对应的时间范围指的是视频对应的拍摄时间,例如,p1和p6所属的摄像头唯一标识相同,但是p1和p6对应的时间范围不同,p1对应的时间范围是1:00-2:00,p6对应的时间范围是3:00-3:30;p2和p3对应的时间范围相同,但所属的摄像头唯一标识不同,p2所属的摄像头唯一标识是1,p3所属的摄像头唯一标识是4;p4和p5所属的摄像头唯一标识和对应的时间范围均不相同。
18.优选的,以二进制方式存储doc
i,data
。以二进制方式存储doc
i,data
具有占用空间少和能够提高搜索速度的优点。
19.优选的,利用sqlite存储doc
i,meta
。利用sqlite存储doc
i,meta
具有存储简单和高效的优点。
20.优选的,利用dix文件存储doc
i,data,1
,利用ts文件存储doc
i,data,2
,利用dat文件存储doc
i,data,3
。利用三种文件进行存储具有存储简单、定位方便和存储效率较高的优点。
21.可选的,doc
i,data,1
为数值型或字符串类型,doc
i,data,2
为int64类型,doc
i,data,3
为float数组类型。进一步的,数值型为int64类型。
22.可以理解的是,reid特征是指从行人图片中提取到的一维float数组。作为一个具体实施方式,reid特征是维度为512的一维float数组,那么dix文件会写入8个字节存储doc
i,data,1,j
,ts文件会写入8个字节存储doc
i,data,2,j
,dat文件会写入512*4=2048个字节存储doc
i,data,2,j
。
23.s200,遍历doc,如果doc
i,meta,1
为用户搜索的摄像头唯一标识,且doc
i,meta,2
与用户搜索的时间范围存在交集,则获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
。
24.应当理解的是,doc
i,meta,2
与用户搜索的时间范围存在交集包括以下情况:doc
i,meta,2
等于用户搜索的时间范围、doc
i,data,2
中只有部分doc
i,data,2,j
属于用户搜索的时间范围。只有doc
i,meta,2
与用户搜索的时间范围存在交集的doc
i,data,2
才是后续需要被搜索的文档数据,可根据用户搜索的时间范围确定doc
i,data,2
被搜索的起始和结束偏移量,进而确定doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
。
25.作为一个具体实施方式,用户搜索的时间范围是3:00-4:00,如果doc
i,meta,2
为3:00-4:00,那么doc
i,meta,2
等于用户搜索的时间范围,doc
i,data,2
被搜索的起始偏移量指示的是doc
i,data,2,j
为3:00的doc
i,data,3,j
,结束偏移量指示的是doc
i,data,2,j
为4:00的doc
i,data,3,j
;如果doc
i,meta,2
为3:30-4:30,那么doc
i,data,2
中只有部分doc
i,data,2,j
属于用户搜索的时间范围,doc
i,data,2
被搜索的起始偏移量指示的是doc
i,data,2,j
为3:30的doc
i,data,3,j
,结束偏移量指示的是doc
i,data,2,j
为4:00的doc
i,data,3,j
;如果doc
i,meta,2
为4:30-5:00,那么doc
i,meta,2
与用户搜索的时间范围不存在交集,doc
i,data,2
不是需要被搜索的文档数据。
26.优选的,doc
i,meta
还包括doc
i,meta,3
和doc
i,meta,4
,doc
i,meta,3
为doci包括的reid特征的数量,doc
i,meta,4
为doci是否正在写入的标签,如果mi=doc
i,meta,3
,则doc
i,meta,4
指示doci写入完毕,需创建doc
i+1
继续写入;如果mi《doc
i,meta,3
,则doc
i,meta,4
指示doci正在写入,可继续在doci中写入。
27.优选的,获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
包括:
28.s210,如果doc
i,meta,4
指示doci写入完毕,则执行s221;如果doc
i,meta,4
指示doci正在写入,则执行s222。
29.s221,如果doc
i,data,2
存储在写入完毕的文档数据内存缓存中,则从写入完毕的文档数据内存缓存中获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
;如果doc
i,data,2
未存储在写入完毕的文档数据内存缓存中,则从更新后的写入完毕的文档数据内存缓存中获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
;所述更新后的写入完毕的文档数据内存缓存为将doc
i,data,2
存储后的写入完毕的文档数据内存缓存。
30.s222,如果doc
i,data,2
存储在正在写入的文档数据内存缓存中,则从正在写入的文档数据内存缓存中获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
;如果doc
i,data,2
未存储在正在写入的文档数据内存缓存中,则从更新后的正在写入的文档数据内存缓存中获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
;所述更新后的正在写入的文档数据内存缓存为将doc
i,data,2
存储后的正在写入的文档数据内存缓存。
31.对于正在写入的文档数据,需要不断检查文档数据是否已更新以判断是否需要更新正在写入的文档数据内存缓存,其中会涉及到多线程文档数据内存缓存更新问题;而对于写入完毕的文档数据,无需不断检查文档数据是否已更新,因此写入完毕的文档数据内存缓存中无需再对该写入完毕的文档数据进行更新,其效率相较于正在写入的文档数据内存缓存的效率更高。
32.s221和s222是从内存缓存或更新后的内存缓存中获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
,相较于从硬盘中获取doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
的方式,由于是从内存缓存中读取的doc
i,data,2
,因此读取速度比较快,能够提高对特征的搜索速度。
33.优选的,遍历doc包括:
34.s201,对doc进行划分,得到z个文档信息块,每个文档信息块包括至少1个视频对应的文档信息,z≥2。
35.s202,利用对z个文档信息块同时进行遍历的方式遍历doc。
36.采用上述分文档信息块进行同时遍历的方式可以减少遍历的时间,提高对特征的搜索速度。应当理解的是,z为正整数。
37.作为一个具体实施方式,根据doc
i,meta,1
对doc进行划分,doc
i,meta,1
为1-18,将doc进行划分后可得到3个文档信息块,第一文档信息块对应的是doc
i,meta,1
为1-6的doci,第二文档信息块对应的是doc
i,meta,1
为7-12的doci,第三文档信息块对应的是doc
i,meta,1
为13-18的doci。遍历doc时可同时遍历第一文档信息块、第二文档信息块和第三文档信息块,提高遍历速度,节省遍历时间。
38.s300,遍历doc,获取sim
j,0
最大的前n个doc
i,data,1,j
,sim
j,0
为doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
与用户搜索的reid特征的相似度,n为预设数量。
39.应当理解的是,n为正整数。doc
i,data,2,j
在用户搜索的时间范围内的doc
i,data,3,j
和用户搜索的reid特征均为向量,本领域技术人员知悉,现有技术中使用任意计算向量相似度的方法计算sim
j,0
均落入本发明的保护范围。
40.优选的,利用上述对z个文档信息块同时进行遍历的方式遍历doc,以减少遍历时间,提高对特征的搜索速度。
41.s400,遍历doc,将sim
j,0
最大的前n个doc
i,data,1,j
进行聚合,得到用户搜索的reid特征的id。
42.优选的,利用上述对z个文档信息块同时进行遍历的方式遍历doc,以减少遍历时间,提高对特征的搜索速度。
43.由此,本发明在用户输入想要搜索的时间范围、想要搜索的摄像头唯一标识和想要搜索的图像reid特征后,就可以返回给用户符合用户搜索时间范围和摄像头唯一标识的且与想要搜索的图像reid特征最相似的多个reid特征的id。由于每帧视频图像的reid特征的id具有唯一性,用户便可根据得到的最相似的多个reid特征的id查看对应的最相似的多帧视频图像。
44.本发明实施例还提供了一种基于文档的海量实时特征处理系统,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
45.虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明开的范围由所附权利要求来限定。