一种基于CPU和加速卡的1:N人脸检索方法及系统与流程

文档序号:29128530发布日期:2022-03-05 00:52阅读:186来源:国知局
一种基于CPU和加速卡的1:N人脸检索方法及系统与流程
一种基于cpu和加速卡的1:n人脸检索方法及系统
技术领域
1.本发明公开一种基于cpu和加速卡的1:n人脸检索方法及系统,涉及人脸识别技术领域。


背景技术:

2.随着信息技术的发展,人脸识别技术在最近几年得到了长足进步,目前在人脸识别领域业界领先的厂家识别准确率均达到了99%以上,因此大量人脸相关的应用场景开始逐步落地,例如人脸支付、人员布控、寻找失踪人口等,此外,结合人脸的追踪技术,也开始出现了分析人流走向、分析景点旅客行走规律、人员行为偏好分析等。这些应用虽然表现形式多样,但最终都是基于人脸特征检索这一技术实现的。
3.当需要确认两张人脸照片是否同一个人时,可以通过公式计算这两张人脸的特征矩阵之间的相似度,以此作为两个人脸的相似度,当相似度超过一定阈值时,就认为是同一个人,该阈值是经验值,不同厂家的特征提取算法不同,得到的经验值也会不同。提高阈值,会提高准确率(认为是同一个人的情况下判断正确的占比),但会降低查全率(能匹配到的人脸在人脸库中全部匹配人脸的占比)。因此在不同的应用场景下,由于准确率和查全率的权重不同,导致了阈值也会不同。如在寻找失踪人口的场景,是宁可找错也不应放过的,阈值就会相应调低,让更多相似的人脸能被看到;在人脸支付场景,准确率是最重要的,那么阈值相应就会较高,当然也会导致匹配失败的次数增多。
4.把大量人脸特征集中存储可形成特征库,若要判断一个人在不在这个特征库中,只需要拿这个人的人脸照片对应的人脸特征,跟特征库里每个特征计算相似度,把相似度超过阈值的特征对应的照片找出即可。通过一个特征来比对一个特征库的场景,往往称为人脸1:n比对。
5.而近些年来,随着各种新技术的发展,基于计算机、网络传输以及图像处理等技术的视频监控系统被广泛应用于城市安防监控网络的建设中。一些视频处理技术,如人脸识别、车牌识别等的使用,使视频监控逐渐走向自动化、智能化,摆脱了传统视频监控中仅凭人肉眼观察不可靠的缺陷。针对目前监控视频人脸识别系统存在两大问题:
6.(1)当人脸数据库存在大量人脸数据时,人脸识别速度也会非常慢;
7.(2)当监控视频资源库中视频数据增多时,检索某一目标人物在摄像头出现的相关信息的速度会越来越慢。
8.对于这两个问题,虽然能够通过优化算法和采用高性能的服务器来做出一定的缓解,但是,算法优化难度大、耗时,且高性能服务器价格高昂,这与人脸和监控视频数据会持续增多形成矛盾。
9.故现发明一种基于cpu和加速卡的1:n人脸检索方法及系统,解决当人脸数据库存在大量人脸数据时,人脸识别速度特别慢的问题。


技术实现要素:

10.本发明针对现有技术的问题,提供一种基于cpu和加速卡的1:n人脸检索方法及系统,所采用的技术方案为:一种基于cpu和加速卡的1:n人脸检索方法,所述的方法具体步骤如下:
11.s1利用rocksdb建立人脸的分布式特征索引;
12.s2根据检索范围定位节点,将人脸对比结果汇总到接收查询请求的节点;
13.s3基于小特征加速进行人脸比对检索;
14.s4基于加速卡进行优化检索。
15.所述s1利用rocksdb建立人脸的分布式特征索引的具体步骤如下:
16.s101引擎根据时间段和摄像机编号对特征库进行初步过滤;
17.s102将过滤数据作为索引特征数据分块存储;
18.s103利用内存库和rocksdb双写进行数据写入。
19.所述s2根据检索范围定位节点,将人脸对比结果汇总到接收查询请求的节点的具体步骤如下:
20.s201确定检索时间范围、摄像机编号人脸;
21.s202定位到每个节点的红色内存块;
22.s203全部节点并行比对人脸,最终汇总到接收查询请求的节点。
23.所述s3基于小特征加速进行人脸比对检索的步骤如下:
24.s301根据查询条件定位小特征内存块,选定相似度阈值进行人脸比对;
25.s302根据匹配结果从对应的大特征内存块中抽取特征组成大特征库;
26.s303使用客户端传入的阈值进行第二次人脸比对。
27.一种基于cpu和加速卡的1:n人脸检索系统,所述的系统具体包括索引建立模块、节点定位模块、人脸检索模块和优化检索模块:
28.索引建立模块:利用rocksdb建立人脸的分布式特征索引;
29.节点定位模块:根据检索范围定位节点,将人脸对比结果汇总到接收查询请求的节点;
30.人脸检索模块:基于小特征加速进行人脸比对检索;
31.优化检索模块:基于加速卡进行优化检索。
32.所述索引建立模块具体包括特征过滤模块、数据存储模块和数据写入模块:
33.特征过滤模块:引擎根据时间段和摄像机编号对特征库进行初步过滤;
34.数据存储模块:将过滤数据作为索引特征数据分块存储;
35.数据写入模块:利用内存库和rocksdb双写进行数据写入。
36.所述节点定位模块具体包括范围确定模块、内存定位模块和节点比对模块:
37.范围确定模块:确定检索时间范围、摄像机编号人脸;
38.内存定位模块:定位到每个节点的红色内存块;
39.节点比对模块:全部节点并行比对人脸,最终汇总到接收查询请求的节点。
40.所述人脸检索模块具体包括人脸对比模块、特征抽取模块和二次比对模块:
41.人脸对比模块:根据查询条件定位小特征内存块,选定相似度阈值进行人脸比对;
42.特征抽取模块:根据匹配结果从对应的大特征内存块中抽取特征组成大特征库;
43.二次比对模块:使用客户端传入的阈值进行第二次人脸比对。
44.本发明的有益效果为:,本发明使用rocksdb、提供小特征的摄像头、加速卡软硬件,可以减少每次检索和底层设备交互的时间,同时可以使用分布式集群方案,对人脸检索服务进行横向扩展,提高检索效率;脱离cpu而优先使用加速卡进行人脸检索,可以降低服务器通用设备的消耗,使专业的加速卡进行专业的人脸检索服务,降低了人脸检索服务的资源消耗,提升检索服务性能。
附图说明
45.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
46.图1是本发明实施例的整体方案构架图;图2是本发明实施例中rocksdb 实现方案示意图;图3是本发明实施例中小特征实现方案示意图;图4是本发明方法的流程图;图5是本发明系统的结构示意图。
具体实施方式
47.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
48.实施例一:
49.一种基于cpu和加速卡的1:n人脸检索方法,所述的方法具体步骤如下:
50.s1利用rocksdb建立人脸的分布式特征索引;
51.s2根据检索范围定位节点,将人脸对比结果汇总到接收查询请求的节点;
52.s3基于小特征加速进行人脸比对检索;
53.s4基于加速卡进行优化检索;
54.进一步的,所述s1利用rocksdb建立人脸的分布式特征索引的具体步骤如下:
55.s101引擎根据时间段和摄像机编号对特征库进行初步过滤;
56.s102将过滤数据作为索引特征数据分块存储;
57.s103利用内存库和rocksdb双写进行数据写入;
58.进一步的,所述s2根据检索范围定位节点,将人脸对比结果汇总到接收查询请求的节点的具体步骤如下:
59.s201确定检索时间范围、摄像机编号人脸;
60.s202定位到每个节点的红色内存块;
61.s203全部节点并行比对人脸,最终汇总到接收查询请求的节点;
62.再进一步的,所述s3基于小特征加速进行人脸比对检索的步骤如下:
63.s301根据查询条件定位小特征内存块,选定相似度阈值进行人脸比对;
64.s302根据匹配结果从对应的大特征内存块中抽取特征组成大特征库;
65.s303使用客户端传入的阈值进行第二次人脸比对;
66.根据以往的人脸检索方法,最关键的是需要有一个能先根据时间段+摄像机编号
初步过滤特征库的引擎,先进行人脸比对,然后再做条件匹配。结合多种技术方案对比,最终选择使用rocksdb作为持久化存储;在引擎启动后会在内存中缓存一定时间段的全量特征库用于人脸比对,数据以《小时,摄像机编号》 作为为索引对特征数据分块存储,相同索引的数据平均分布在多台机器上(即数据写入时对于相同索引的数据集,按照节点数均分,发往全部的节点上),实时写入时内存库和rocksdb双写,此外还实现了数据副本机制。具体方法如下文图2所示;
67.在本发明方法中由于数据写入是双写,引擎的主要压力在数据写盘, rocksdb采用lsm树存储引擎,数据写入性能较好,提供了索引机制,并且提供了c++访问接口,能大大降低开发难度;
68.下文图2的数据中,假设检索时间范围2018-01-01 06:00:00到 2018-01-01 06:30:00,摄像机编号为4401150002的人脸,则定位到每个节点的红色内存块,全部节点并行比对人脸,最终汇总到接收查询请求的节点;
69.本发明方法可以支持支持横向扩展,任意一个比对请求都会使用全部的服务器的资源进行比对,理论上服务器数量与比对性能成正比关系;同时能有效利用内存资源,在实际实施时,往往能使用80%的内存用于特征库缓存,剩余内存用于超出缓存时间范围之外的临时数据缓存;比对可基于特征库缓存直接进行,实现内存零拷贝;
70.目前绝大多数摄像头厂家都提供约600字节的人脸特征,但部分摄像头厂家还提供了50字节左右的小人脸特征,使用了更少的特征点来描述一张人脸。显然,使用小特征在判别两个人脸是否同一个人时,准确率比大特征低,但小特征库能提供更高的比对性能(因为计算量更小)。因此可以通过小特征库来加速大特征库比对;
71.由于两个特征矩阵的相似度计算主要为浮点运算,按照相似度计算公式,理论上特征长度变为原来的1/n,则单位时间比对次数变为原来的n倍。也就是说,若600字节大特征能做到1.5亿条/秒的比对速度,则50字节的小特征理论上能做到18亿/秒的比对速度;
72.如下图3所示方法,在其中增加了小特征内存块,小特征内存卡与大特征内存卡一一对应,使用相同的索引来标识。在检索人脸时,首先根据查询条件定位小特征内存块,使用更低的相似度阈值进行人脸比对,根据匹配结果从对应的大特征内存块中抽取特征组成大特征库(方法可以是大小特征块按id有序排列,这样记录顺序是相同的,另外可以是每个特征块有单独的id索引,可快速定位行号),进行第二次人脸比对,第二次比对使用客户端传入的阈值;
73.在本发明方法中,第一次比对后从大特征库取的数据量较少,但基本为随机读取,因此可以考虑使用固态硬盘来存储大特征块以节省内存。
74.由于特征的比对主要是浮点运算,可考虑使用浮点运算能力更高的加速卡来实现。在小特征50字节情况下,则8gb显存约可存储1.5亿个特征,按一天 2000万特征计算,则8gb显存可存储7.5天数据,4张加速卡则可存储一个月数据,若n台服务器上都插上4张加速卡,则可以实现n个月特征的加速卡比对提速效果。使用加速卡后,还能带来一个显著的好处:更少的服务器,节省了机房空间;
75.使用本发明方法,可以在加速卡中存储最近一个月的热数据,在内存中存储更旧日期的小特征,当检索条件只落在最近一个月时,只需要加速卡就能完成小特征的比对;若检索条件涉及最近三个月,可在加速卡中比对最近一个月的小特征,同时在cpu中比对第二
三个月的小特征。在实际应用场景中,用户绝大多数时间检索的是最近一个月的数据,该方法能大大提高响应速度。
76.实施例二:
77.一种基于cpu和加速卡的1:n人脸检索系统,所述的系统具体包括索引建立模块、节点定位模块、人脸检索模块和优化检索模块:
78.索引建立模块:利用rocksdb建立人脸的分布式特征索引;
79.节点定位模块:根据检索范围定位节点,将人脸对比结果汇总到接收查询请求的节点;
80.人脸检索模块:基于小特征加速进行人脸比对检索;
81.优化检索模块:基于加速卡进行优化检索;
82.进一步的,所述索引建立模块具体包括特征过滤模块、数据存储模块和数据写入模块:
83.特征过滤模块:引擎根据时间段和摄像机编号对特征库进行初步过滤;
84.数据存储模块:将过滤数据作为索引特征数据分块存储;
85.数据写入模块:利用内存库和rocksdb双写进行数据写入;
86.进一步的,所述节点定位模块具体包括范围确定模块、内存定位模块和节点比对模块:
87.范围确定模块:确定检索时间范围、摄像机编号人脸;
88.内存定位模块:定位到每个节点的红色内存块;
89.节点比对模块:全部节点并行比对人脸,最终汇总到接收查询请求的节点;
90.再进一步的,所述人脸检索模块具体包括人脸对比模块、特征抽取模块和二次比对模块:
91.人脸对比模块:根据查询条件定位小特征内存块,选定相似度阈值进行人脸比对;
92.特征抽取模块:根据匹配结果从对应的大特征内存块中抽取特征组成大特征库;
93.二次比对模块:使用客户端传入的阈值进行第二次人脸比对;
94.同时,随着应用场景的逐渐清晰和对人脸识别到的其他特征准确度的认识,发现实际在使用人脸检索功能时,其实基本只会使用时间段+摄像机编号+人脸照片这三个条件来检索人脸,因此灵活的检索条件这一项变得不那么重要了;假设这样的场景:用户需要检索24小时范围里全部摄像机抓拍的人脸里是否出现了某个性别为男性的人;按照每天2000万特征来算,假设这24小时里性别为男性的记录是1000万,传统的es方法中加载1000万特征需要4秒,1:1000 万需要0.066秒,不算其他耗时则总耗时约为4.066秒;若先不过性别条件,用24小时全部的人脸比对完后,以超过阈值的记录去判断是否男性,则1:2000 万需要0.133秒,超过阈值的几百个人脸再去判断性别假设需要0.5秒,则总耗时约为0.633秒。需要检索的时间范围越长,则性能差异越大。
95.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1