一种基于内存数据库的分布式人脸识别系统及方法转让专利

申请号 : CN201810981766.0

文献号 : CN109241111B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄晓艳钟卫为石云何华清杨凯张辉许志伟

申请人 : 武汉虹信技术服务有限责任公司

摘要 :

本发明属人脸识别技术领域,公开了一种基于内存数据库的分布式人脸识别系统及方法,其系统包括若干网络摄像机、若干人脸检测模块、若干人脸特征提取模块、若干人脸特征对比模块、Redis、KAFKA、数据库及平台管理模块,模块间具有网络连接;其方法通过将图片流、人脸特征值等二值化数据使用中间键内存数据库Redis进行转发,将保存在Redis中的Key值附带在KAFKA消息中进行传输,收到消息的模块通过KAFKA消息中Redis Key从Redis中直接获取可用的图片流及特征值;本发明提供的这种方法避免了直接通过KAFKA传输时所需的转换与逆转换减少了对网络资源的占用;且二值化的数据在内存数据库中的保存与提取速度高于对于KAFKA的保存与读取,提高了服务器的处理能力。

权利要求 :

1.一种基于内存数据库的分布式人脸识别系统,其特征在于,包括若干网络摄像机、若干人脸检测模块、若干人脸特征提取模块、若干人脸特征对比模块、Redis、KAFKA、数据库及平台管理模块;

所述平台管理模块接收用户设置,生成布控信息、进行网络摄像机分配、人脸注册以及注册信息存储;

网络摄像机模块用于提供实时视频流作为人脸识别的视频源;

人脸检测模块用于从实时视频流中获取视频帧进行人脸检测,检测出具有人像的视频帧;以及对人脸注册图片进行人脸检测;

人脸特征提取模块用于对具有人像的视频帧进行的特征提取,以及对具有人像的人脸注册图片进行特征提取,形成注册人脸特征值集;

人脸特征对比模块用于将提取的人脸特征值与注册人脸特征值集进行对比;

所述数据库用于保存人脸注册信息、注册特征值集;Redis用于保存图片、人脸特征值;

KAFKA用于模块间的消息传输,所述消息带有保存在Redis中的图片、人脸特征值的Key值;

将Key值附加在KAFKA消息中进行传输,收到消息的模块通过KAFKA消息中的Key值从Redis中获取可直接使用的图片及人脸特征值。

2.如权利要求1所述的分布式人脸识别系统,其特征在于,所述人脸检测模块将检测到的具有人像的视频帧通过Redis保存,将带有具有人像的视频帧Redis Key值的消息通过人脸检测模块发送到KAFKA队列中,以供多个人脸特征提取模块均衡消费消息。

3.如权利要求1或2所述的分布式人脸识别系统,其特征在于,所述人脸检测模块在检测到具有人像的视频帧后,将视频帧中的人脸图像保存到Redis中。

4.如权利要求3所述的分布式人脸识别系统,其特征在于,所述人脸特征提取模块通过Redis Key值从Redis中获取人脸图片数据并从中提取人脸特征,将提取的特征值保存到Redis中;带有人脸特征值、Redis Key的消息通过人脸特征提取模块发送到KAFKA队列中,以供多个人脸特征对比模块均衡消费消息。

5.如权利要求3所述的分布式人脸识别系统,其特征在于,所述人脸特征对比模块通过Redis Key从Redis中获取人脸特征值,将人脸特征值与存储在数据库中的注册人脸特征值集对比,将对比结果通过KAFKA发送到平台管理模块。

6.如权利要求1或2所述的分布式人脸识别系统,其特征在于,所述平台管理模块还具有指定检测模块与网络摄像机匹配关系的功能,用于为网络摄像机分配人脸检测模块,由指定的人脸检测模块从网络摄像机提供的实时视频流中获取视频帧进行人脸检测。

7.如权利要求1或2所述的分布式人脸识别系统,其特征在于,所述平台管理模块用于通过人脸特征对比模块的对比结果与布控信息生成布控告警,和/或将布控告警和抓拍信息推送给WEB用户。

8.一种基于内存数据库的人脸识别方法,其特征在于,将包括图片流、特征值的二值化数据使用中间键内存数据库Redis进行转发的方法,将保存在Redis中的Key值附加在KAFKA消息中进行传输,使得收到消息的模块通过KAFKA消息所带的Redis Key值从Redis中获取可直接使用的图片流及特征值,以避免直接通过KAFKA传输时所需的转换与逆转换。

9.一种基于内存数据库的人脸识别方法,其特征在于,包括如下步骤:

(1)获取视频流并进行解析,将视频帧转换为图片,对图片进行人脸检测;

(2)对检测到人脸的视频帧从原始图像中裁剪出人脸图片,将原始全景图片与人脸图片保存到Redis中;

(3)将带有全景图像及人脸图像所对应Redis Key的人脸特征提取请求消息发送到KAFKA人脸特征提取请求消息队列中;

(4)特征提取模块从KAFKA人脸特征提取请求消息队列订阅消息,当人脸检测模块产生人脸特征提取请求消息后,特征提取模块就会收到人脸特征提取请求消息;

(5)通过人脸特征提取请求消息中Redis所对应的Key从Redis中获取人脸图片;

(6)对人脸图片进行人脸特征提取,将提取的人脸特征值保存到Redis中;

(7)将带有人脸特征值、人脸图片、全景图片Redis Key的特征提取结果消息发送到KAFKA人脸特征对比请求消息队列中;

(8)通过人脸特征对比请求消息中Redis所对应的Key从Redis中获取人脸特征值,将特征值与从数据库中获取的注册人员特征值进行对比,将特征对比结果消息发送到KAFKA人脸特征对比结果消息队列中;

(9)从KAFKA人脸特征对比结果消息队列获取人脸特征对比结果。

10.一种基于内存数据库的人脸识别方法,其特征在于,还包括人脸注册,包括如下步骤:(a)接收用户上传的注册信息,包括人员的信息、人脸图片;

(b)将人脸图片保存到数据库;并将上传的人脸图片上传到Redis,将带有人脸图片所对应的Redis的Key的人脸检测请求消息发送到KAFKA人脸检测请求消息队列中;

(c)从KAFKA人脸检测请求消息队列中订阅消息,当平台管理模块产生人脸检测请求消息,通过人脸检测请求消息中Redis所对应的Key从Redis中获取人脸图片;

(d)对人脸图片中进行人脸检测,将检测到的人脸从图片中裁剪出来保存到Redis中;

(e)将带有人脸照片所对应Redis Key的人脸特征提取请求消息发送到KAFKA人脸特征提取请求消息队列中;

(f)特征提取模块从KAFKA人脸特征提取请求消息队列订阅消息,通过人脸特征提取请求消息中Redis所对应的Key从Redis中获取人脸图片;

(g)对人脸图片进行人脸特征提取;将提取的人脸特征值保存到Redis中;将带有人脸特征值所对应Redis Key及人脸图片所对应Redis Key的特征提取结果消息发送到KAFKA人脸特征提取结果消息队列中;

(h)通过人脸特征提取结果消息中Redis所对应的Key从Redis中获取人脸图片及人脸特征值;

(i)将人脸图片、人像注册信息保存到数据库;向用户返回注册结果信息。

说明书 :

一种基于内存数据库的分布式人脸识别系统及方法

技术领域

[0001] 本发明属于人脸识别技术领域,更具体地,涉及一种基于内存数据库的分布式人脸识别系统及方法。

背景技术

[0002] 人脸识别是当前人工智能和模式识别的研究热点,最初的应用源于公安部门关于罪犯照片的存档管理和刑侦破案,随着科技的发展,快速高效自动的人脸识别要求日益紧迫。该技术在证件验证、刑侦破案、入口控制、信息安全和视频监控等领域有着很好的应用。
[0003] 人脸识别系统在实际的工程应用过程中经常面临项目工程量变更导致的网络摄像机的动态增减。当增加的摄像机数量超过服务器处理能力上限时就需要更换性能更高的服务器,服务器更换过程中将面临系统重装,用户数据的迁移等诸多维护性问题,且系统支持的网络摄像机数量受服务器处理能力的影响。
[0004] 采用分布式架构的系统则可以支持理论上无上限的网络摄像机数,可以根据增加服务器硬件不断扩容;然而,虽然分布式系统在扩容及维护方面优势很明显,但是实现起来有很多复杂的地方。比如分布式系统使用KAFKA作为分布式的消息队列,KAFKA支持的消息都是字符串类型,进程间要进行图片的传输、特征值的传输,必须转换为Base64,使用者接收到后要从Base64转换为图片或特征值类型,这种方式不仅在转换与逆转换上对于程序的性能上有开销。而且对于网络的开销也非常大。

发明内容

[0005] 针对现有技术的以上缺陷或改进需求,本发明提供了一种基于内存数据库的分布式人脸识别系统及方法,采用分布式架构,并将图片流、特征值等二值化的数据使用中间键内存数据库进行转发,减少网络开销,提高服务器的处理能力。
[0006] 为实现上述目的,按照本发明的一个方面,提供了一种基于内存数据库的分布式人脸识别系统,包括若干网络摄像机、若干人脸检测模块、若干人脸特征提取模块、若干人脸特征对比模块、内存数据库模块(Redis)、分布式发布订阅消息队列模块(KAFKA)、数据库及平台管理模块;
[0007] 其中,平台管理模块接收用户设置的信息,生成布控信息、进行网络摄像机分配、人脸注册以及注册信息存储;
[0008] 网络摄像机模块用于提供实时视频流作为人脸识别的视频源;
[0009] 人脸检测模块用于从实时视频流中获取视频帧进行人脸检测,检测出具有人像的视频帧;以及对人脸注册图片进行人脸检测;
[0010] 人脸特征提取模块用于对具有人像的视频帧进行的特征提取,以及对具有人像的人脸注册图片进行特征提取,形成注册人脸特征值集;
[0011] 人脸特征对比模块用于将提取的人脸特征值与注册人脸特征值集进行对比;
[0012] 数据库用于保存人脸注册信息,注册特征值集;Redis用于保存图片、人脸特征值;KAFKA用于模块间的消息传输,所述消息带有保存在Redis中的图片、人脸特征值的Key值,通过将Key值附加在KAFKA消息中进行传输,收到消息的模块通过KAFKA中的Key值从Redis中获取可直接使用的图片及人脸特征值。
[0013] 优选的,上述基于内存数据库的分布式人脸识别系统,其人脸检测模块将检测到的具有人像的视频帧通过Redis保存,将带有具有人像的视频帧Redis Key值的消息通过人脸检测模块发送到KAFKA队列中,以供多个人脸特征提取模块均衡消费消息。
[0014] 优选的,上述基于内存数据库的分布式人脸识别系统,其人脸检测模块在检测到具有人像的视频帧后,将视频帧中的人脸图像保存到Redis中。
[0015] 优选的,上述基于内存数据库的分布式人脸识别系统,其人脸特征提取模块通过Redis Key值从Redis中获取人脸图片数据并从中提取人脸特征,将提取的特征值保存到Redis中;带有人脸特征值、Redis Key的消息通过人脸特征提取模块发送到KAFKA队列中,以供多个人脸特征对比模块均衡消费消息。
[0016] 优选的,上述基于内存数据库的分布式人脸识别系统,其人脸特征对比模块通过Redis Key从Redis中获取人脸特征值,将人脸特征值与存储在数据库中的注册人脸特征值集对比,将对比结果通过KAFKA发送到平台管理模块。
[0017] 优选的,上述基于内存数据库的分布式人脸识别系统,其平台管理模块具有指定人脸检测模块与网络摄像机匹配关系的功能,用于为网络摄像机分配人脸检测模块,由指定的人脸检测模块从网络摄像机提供的实时视频流中获取视频帧进行人脸检测。
[0018] 优选的,上述基于内存数据库的分布式人脸识别系统,其平台管理模块用于通过人脸特征对比模块的对比结果与布控信息生成布控告警,和/或将布控告警和抓拍信息推送给WEB用户;抓拍信息优选包括人脸图片、抓拍全景图片、抓拍相机以及抓拍时间;布控信息包括对抓拍所指定的摄像机、指定的时间段、指定的数据库、及特征对比阈值。
[0019] 为实现本发明目的,按照本发明的另一个方面,提供了一种基于内存数据库的人脸识别方法,
[0020] 将包括图片流、特征值的二值化数据使用中间键内存数据库Redis进行转发的方法,将保存在Redis中的Key值附加在KAFKA消息中进行传输,使得收到消息的模块通过KAFKA消息所带的Redis Key值从Redis中获取可直接使用的图片流及特征值;
[0021] 该方法避免直接通过KAFKA传输时所需的从图片或特征值到Base64的转换,以及从Base64到图片或特征值的逆转换,并且图片、特征值这类二值化的数据在中间键内存数据库Redis中的保存与提取速度高于对于KAFKA的保存与读取,因此该方法还可以减少对网络资源的占用,提高服务器的处理能力。
[0022] 优选地,上述基于内存数据库的人脸识别方法,具体包括如下步骤:
[0023] (1)获取视频流并进行解析,将视频帧转换为图片,对图片进行人脸检测;
[0024] (2)对检测到人脸的视频帧从原始图像中裁剪出人脸图片,将原始全景图片与人脸图片保存到Redis中;
[0025] (3)将带有全景图像及人脸图像所对应Redis Key的人脸特征提取请求消息发送到KAFKA人脸特征提取请求消息队列中;
[0026] (4)特征提取模块从KAFKA人脸特征提取请求消息队列订阅消息,当人脸检测模块产生人脸特征提取请求消息后,特征提取模块就会收到人脸特征提取请求消息;
[0027] (5)通过人脸特征提取请求消息中Redis所对应的Key从Redis中获取人脸图片;
[0028] (6)对人脸图片进行人脸特征提取,将提取的人脸特征值保存到Redis中;
[0029] (7)将带有人脸特征值、人脸图片、全景图片Redis Key的特征提取结果消息发送到KAFKA人脸特征对比请求消息队列中;
[0030] (8)通过人脸特征对比请求消息中Redis所对应的Key从Redis中获取人脸特征值,将特征值与从数据库中获取的注册人员特征值进行对比,将特征对比结果消息发送到KAFKA人脸特征对比结果消息队列中;
[0031] (9)从KAFKA人脸特征对比结果消息队列获取人脸特征对比结果。
[0032] 优选地,上述基于内存数据库的人脸识别方法,还包括人脸注册步骤,具体如下:
[0033] (a)接收用户上传的注册信息,包括人员的信息、人脸图片;
[0034] (b)将人脸图片保存到数据库;并将上传的人脸图片上传到Redis,将带有人脸图片所对应的Redis的Key的人脸检测请求消息发送到KAFKA人脸检测请求消息队列中;
[0035] (c)从KAFKA人脸检测请求消息队列中订阅消息,当平台管理模块产生人脸检测请求消息,通过人脸检测请求消息中Redis所对应的Key从Redis中获取人脸图片;
[0036] (d)对人脸图片中进行人脸检测,将检测到的人脸从图片中裁剪出来保存到Redis中;
[0037] (e)将带有人脸照片所对应Redis Key的人脸特征提取请求消息发送到KAFKA人脸特征提取请求消息队列中;
[0038] (f)特征提取模块从KAFKA人脸特征提取请求消息队列订阅消息,通过人脸特征提取请求消息中Redis所对应的Key从Redis中获取人脸图片;
[0039] (g)对人脸图片进行人脸特征提取;将提取的人脸特征值保存到Redis中;将带有人脸特征值所对应Redis Key及人脸图片所对应Redis Key的特征提取结果消息发送到KAFKA人脸特征提取结果消息队列中;
[0040] (h)通过人脸特征提取结果消息中Redis所对应的Key从Redis中获取人脸图片及人脸特征值;
[0041] (i)将人脸图片、人像注册信息保存到数据库;向用户返回注册结果信息。
[0042] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0043] (1)本发明提供的基于内存数据库的分布式人脸识别系统,采用分布式架构,可以根据项目需要进行动态扩展;采用的扩展方式是一种软扩展方式,无需对原有系统进行任务改变,无需重启任何模块,只需根据工程实际需要增加服务器,在新服务器上部署新的模块,修改模块配置文件,启动模块,模块自动加入到分布式系统中;然后通过平台管理模块将新的网络摄像机分析任务添加到新的模块,即动态的完成了网络摄像机的扩展;整个扩展过程非常平滑,操作维护非常方便;由于采用了分布式的架构,系统支持的网络摄像机数据理论上无上限,可以根据增加服务器硬件不断扩容。
[0044] (2)本发明提供的基于内存数据库的分布式人脸识别系统及方法,将二值化的数据譬如图片流、特征值使用中间键内存数据库Redis进行转发,将保存在Redis中的Key值附加在KAFKA消息中进行传输,收到消息的模块通过KAFKA消息中Redis Key值从Redis中获取图片流及特征值;
[0045] 由于KAFKA支持的消息都是字符串类型,进程间进行图片、特征值的传输均需先转换为Base64,使用进程接收到后进行逆转换,从Base64转换为图片或特征值类型;而本发明的方法通过Redis中的Key值进行传输,避免了直接通过KAFKA传输在转换与逆转换所带来的程序上的开销,对网络资源的占用,提高了服务器的处理能力,降低了网络开销;而且二值化的数据在内存数据库中的保存与提取速度高于对KAFKA的保存与读取,因此采用本发明的方法可进一步提高处理速度。

附图说明

[0046] 图1是本发明提供的分布式人脸识别系统的一个实施例的示意图;
[0047] 图2为本发明实施例中的人像注册流程示意图;
[0048] 图3为本发明实施例中的实时视频人脸识别的流程示意图。

具体实施方式

[0049] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0050] 本发明公开的基于内存数据库的分布式人脸识别系统的一个实施例,包括若干网络摄像机、若干人脸检测模块、若干人脸特征提取模块、若干人脸特征对比模块、内存数据库模块(Redis)、分布式发布订阅消息队列模块(KAFKA)、MySql数据库及平台管理模块;全部模块间通过网络连接,采用TCP/IP进行通信;
[0051] 平台管理模块接收用户设置的信息,生成布控信息,进行网络摄像机分配、人脸注册以及注册信息存储,为网络摄像机分配人脸检测模块,由指定的人脸检测模块从网络摄像机中获取实时视频流进行人脸检测;检测到的人脸图片通过Redis保存,将带有人脸图片Redis Key的消息通过人脸检测模块发送到KAFKA队列中,由多个人脸特征提取模块均衡消费消息。
[0052] 人脸特征提取模块通过Redis Key从Redis中获取人脸图片数据并从中提取人脸特征,将提取的特征值保存到Redis中。
[0053] 带有人脸特征值、Redis Key的消息通过人脸特征提取模块发送到KAFKA队列中,由多个人脸特征对比模块均衡消费消息。
[0054] 人脸特征对比模块通过Redis Key从Redis中获取人脸特征值,将人脸特征值与数据库中注册的人脸特征集对比;将对比结果通过KAFKA发送到平台管理模块。
[0055] 在一个优选实施例中,平台管理模块通过用户布控信息信息确认是否产生告警,将告警结果信息和抓拍信息推送给WEB用户;抓拍信息包括人脸图片、抓拍相机的信息、抓拍时间。
[0056] 以下参照图1对上述实施例、实施例中的各模块以及各模块间的信号交互进行具体描述。
[0057] 网络摄像机作为人脸识别系统的前端设备,是结合传统摄像机与网络技术的摄像机,目前用于人脸识别的网络摄像机,一种是基于图片流的网络摄像机,摄像机自带人脸检测的功能;另一种是通用的基于视频流的网络摄像机,摄像机提供实时视频流供人脸检测模块进行人脸检测;实施例中采用的是第二种基于视频流进行人脸检测的摄像机。
[0058] 实施例提供的分布式人脸识别系统中,人脸检测模块一方面用于视频流的人脸检测,另一方面用于人脸注册图片的人脸检测。对于视频流的人脸检测主要是通过标准的RTSP网络视频流、离线视频文件、主流网络摄像机视频流,将视频帧转换为图像数据,使用算法进行图像的人脸检测,检测图像中是否有人脸,反馈人脸在图像中的坐标及眼睛的坐标、嘴巴的坐标、鼻子的坐标,然后将包括人脸信息的图像及人脸信息通过KAFKA及Redis传输到特征提取模块。对于人脸注册图片的人脸检测直接使用算法进行图像的人脸检测,检测图像中是否有人脸,反馈人脸在图像中的坐标及眼睛的坐标、嘴巴的坐标、鼻子的坐标;将有人脸信息的图像及人脸信息通过KAFKA及Redis传输给特征提取模块。
[0059] 特征提取模块从KAFKA及Redis获取视频流检测的人脸信息及人脸注册检测的人脸信息,提取人脸的特征值;将特征值及人脸图片信息通过KAFKA及Redis传输给人脸特征对比模块和平台管理模块。
[0060] 人脸特征对比模块从数据库中加载注册的人脸特征值,通过从KAFKA及Redis获取视频流检测的人脸特征值,将实时视频流检测的人脸特征值与数据库中加载的人脸特征值集进行比对,通过特征值的对比来确定人脸对应的身份信息。
[0061] 平台管理模块用于系统内其他各模块的管理,并用于进行人脸注册,摄像机布控;通过人脸特征对比模块的对比结果与布控信息生成布控告警,,将告警结果信息和抓拍信息推送给WEB用户;抓拍信息优选包括人脸图片、抓拍全景图片、抓拍相机信息以及抓拍时间。;布控信息包括对抓拍所指定的摄像机、指定的时间段、指定的数据库、及特征对比阈值;通过指定的摄像机在指定的时间段内抓拍的人像与指定的数据库存储的注册人脸特征值集进行对比,达到设定的阈值即产生告警信息;布控信息由平台管理模块下发到人脸特征对比模块。
[0062] Redis是内存键值对数据库,在本发明的分布式系统中用作图片信息及特征值信息网络传输中间键。
[0063] KAFKA是分布式发布订阅消息队列模块,用于各模块间的消息接收与分发,实现消息处理的负载均衡;其消息只支持文本格式,对于图片文件、二进制数据传输不便,需要进行Base64转换后才能进行传输。
[0064] MySQL数据库用于保存系统中的配置信息、人脸注册信息以及布控信息。
[0065] 基于实施例提供的基于内存数据库的分布式人脸识别系统进行人脸识别的方法,是将包括图片流、特征值的二值化数据使用中间键内存数据库Redis进行转发,将保存在Redis中的Key值附加在KAFKA消息中进行传输,使得收到消息的模块可通过KAFKA消息所带的Redis Key值从直接从Redis中获取可使用的图片流及特征值。
[0066] 参照图2,通过实施例提供的人脸识别系统进行人脸注册的方法包括以下的步骤:
[0067] (1)接收用户通过平台管理模块上传的注册信息,包括人员的信息、人脸图片;
[0068] (2)平台管理模块将上传的人脸图片保存到MySQL数据库;
[0069] (3)平台管理模块将上传的人脸图片上传到Redis,将带有人脸图片所对应的Redis的Key的人脸检测请求消息发送到KAFKA人脸检测请求消息队列中;
[0070] (4)人脸检测模块从KAFKA人脸检测请求消息队列中订阅消息,当平台管理模块产生人脸检测请求消息,人脸检测模块即会收到人脸检测请求消息;人脸检测模块通过人脸检测请求消息中Redis所对应的Key从Redis中获取人脸图片;
[0071] (5)人脸检测模块通过预置的人脸检测算法对人脸图片进行人脸检测,将检测到的人脸从图片中裁剪出来保存到Redis中;
[0072] (6)人脸检测模块将带有人脸照片所对应Redis Key的人脸特征提取请求消息发送到KAFKA人脸特征提取请求消息队列中;
[0073] (7)特征提取模块从KAFKA人脸特征提取请求消息队列订阅消息,当人脸检测模块产生人脸特征提取请求消息后,特征提取模块即会收到人脸特征提取请求消息;特征提取模块通过人脸特征提取请求消息中Redis所对应的Key从Redis中获取人脸图片;
[0074] (8)特征提取模块通过人脸图片及预置的人脸特征提取算法进行人脸特征提取;将提取的人脸特征值保存到Redis中;将带有人脸特征值所对应Redis Key及人脸图片所对应Redis Key的特征提取结果消息发送到KAFKA人脸特征提取结果消息队列中;
[0075] (9)平台管理模块从KAFKA人脸特征提取结果消息队列订阅消息,当人脸特征提取模块产生人脸特征提取结果消息后,平台管理模块即会收到人脸特征提取结果消息;
[0076] (10)平台管理模块通过人脸特征提取结果消息中Redis所对应的Key从Redis中获取人脸图片及人脸特征值;
[0077] (11)平台管理模块将人脸图片、人像注册信息保存到MySQL数据库;向用户返回注册结果信息。
[0078] 参照图3,实施例中,基于实施例提供的基于内存数据库的分布式人脸识别系统,基于实时抓拍视频进行人脸识别的方法包括如下步骤:
[0079] (1)人像检测模块从网络摄像机获取视频流并进行解析,将视频帧转换为图片,通过预置的人脸识别算法对图像进行人脸检测;
[0080] (2)人像检测模块对没有检测到人脸的视频帧不做任何处理;对检测到人脸的视频帧从原始图像中裁剪出人脸图片,将原始全景图片与人脸图片保存到Redis中;
[0081] (3)人脸检测模块将带有全景图像及人脸图像所对应Redis Key的人脸特征提取请求消息发送到KAFKA人脸特征提取请求消息队列中;
[0082] (4)特征提取模块从KAFKA人脸特征提取请求消息队列订阅消息,当人脸检测模块产生人脸特征提取请求消息后,特征提取模块就会收到人脸特征提取请求消息;
[0083] (5)特征提取模块通过人脸特征提取请求消息中Redis所对应的Key从Redis中获取人脸图片;
[0084] (6)特征提取模块通过人脸图片及人脸特征提取算法进行人脸特征提取;将提取的人脸特征值保存到Redis中;
[0085] (7)人脸特征提取模块将带有人脸特征值、人脸图片、全景图片RedisKey的特征提取结果消息发送到KAFKA人脸特征对比请求消息队列中;
[0086] (8)人脸特征对比模块初始化时从MySQL中获取注册的人员特征值及相关信息;人脸特征对比模块从KAFKA人脸特征对比请求消息队列订阅消息,当人脸特征提取模块生产人脸特征对比请求消息后,特征提取模块就会收到人脸特征对比请求消息;
[0087] (9)人脸特征对比模块通过人脸特征对比请求消息中Redis所对应的Key从Redis中获取人脸特征值,将特征值与注册人员特征值进行对比;将特征对比结果消息发送到KAFKA人脸特征对比结果消息队列中;
[0088] (10)平台管理模块从KAFKA人脸特征对比结果消息队列订阅消息,当人脸特征对比模块生产人脸特征对比结果消息后,平台服务模块就会收到人脸特征对比结果消息。
[0089] 通过本发明提供的系统及方法,将图片流、特征值等二值化的数据使用中间键内存数据库Redis进行转发,避免了直接通过KAFKA传输时所需的转换与逆转换,可以减少对网络资源的占用,提高服务器的处理能力。
[0090] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。