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

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

【技术实现步骤摘要】
一种基于内存数据库的分布式人脸识别系统及方法
本专利技术属于人脸识别
,更具体地,涉及一种基于内存数据库的分布式人脸识别系统及方法。
技术介绍
人脸识别是当前人工智能和模式识别的研究热点,最初的应用源于公安部门关于罪犯照片的存档管理和刑侦破案,随着科技的发展,快速高效自动的人脸识别要求日益紧迫。该技术在证件验证、刑侦破案、入口控制、信息安全和视频监控等领域有着很好的应用。人脸识别系统在实际的工程应用过程中经常面临项目工程量变更导致的网络摄像机的动态增减。当增加的摄像机数量超过服务器处理能力上限时就需要更换性能更高的服务器,服务器更换过程中将面临系统重装,用户数据的迁移等诸多维护性问题,且系统支持的网络摄像机数量受服务器处理能力的影响。采用分布式架构的系统则可以支持理论上无上限的网络摄像机数,可以根据增加服务器硬件不断扩容;然而,虽然分布式系统在扩容及维护方面优势很明显,但是实现起来有很多复杂的地方。比如分布式系统使用KAFKA作为分布式的消息队列,KAFKA支持的消息都是字符串类型,进程间要进行图片的传输、特征值的传输,必须转换为Base64,使用者接收到后要从Base64转换为图片或特征值类型,这种方式不仅在转换与逆转换上对于程序的性能上有开销。而且对于网络的开销也非常大。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于内存数据库的分布式人脸识别系统及方法,采用分布式架构,并将图片流、特征值等二值化的数据使用中间键内存数据库进行转发,减少网络开销,提高服务器的处理能力。为实现上述目的,按照本专利技术的一个方面,提供了一种基于内存数据库的分布式人脸识别系统,包括若干网络摄像机、若干人脸检测模块、若干人脸特征提取模块、若干人脸特征对比模块、内存数据库模块(Redis)、分布式发布订阅消息队列模块(KAFKA)、数据库及平台管理模块;其中,平台管理模块接收用户设置的信息,生成布控信息、进行网络摄像机分配、人脸注册以及注册信息存储;网络摄像机模块用于提供实时视频流作为人脸识别的视频源;人脸检测模块用于从实时视频流中获取视频帧进行人脸检测,检测出具有人像的视频帧;以及对人脸注册图片进行人脸检测;人脸特征提取模块用于对具有人像的视频帧进行的特征提取,以及对具有人像的人脸注册图片进行特征提取,形成注册人脸特征值集;人脸特征对比模块用于将提取的人脸特征值与注册人脸特征值集进行对比;数据库用于保存人脸注册信息,注册特征值集;Redis用于保存图片、人脸特征值;KAFKA用于模块间的消息传输,所述消息带有保存在Redis中的图片、人脸特征值的Key值,通过将Key值附加在KAFKA消息中进行传输,收到消息的模块通过KAFKA中的Key值从Redis中获取可直接使用的图片及人脸特征值。优选的,上述基于内存数据库的分布式人脸识别系统,其人脸检测模块将检测到的具有人像的视频帧通过Redis保存,将带有具有人像的视频帧RedisKey值的消息通过人脸检测模块发送到KAFKA队列中,以供多个人脸特征提取模块均衡消费消息。优选的,上述基于内存数据库的分布式人脸识别系统,其人脸检测模块在检测到具有人像的视频帧后,将视频帧中的人脸图像保存到Redis中。优选的,上述基于内存数据库的分布式人脸识别系统,其人脸特征提取模块通过RedisKey值从Redis中获取人脸图片数据并从中提取人脸特征,将提取的特征值保存到Redis中;带有人脸特征值、RedisKey的消息通过人脸特征提取模块发送到KAFKA队列中,以供多个人脸特征对比模块均衡消费消息。优选的,上述基于内存数据库的分布式人脸识别系统,其人脸特征对比模块通过RedisKey从Redis中获取人脸特征值,将人脸特征值与存储在数据库中的注册人脸特征值集对比,将对比结果通过KAFKA发送到平台管理模块。优选的,上述基于内存数据库的分布式人脸识别系统,其平台管理模块具有指定人脸检测模块与网络摄像机匹配关系的功能,用于为网络摄像机分配人脸检测模块,由指定的人脸检测模块从网络摄像机提供的实时视频流中获取视频帧进行人脸检测。优选的,上述基于内存数据库的分布式人脸识别系统,其平台管理模块用于通过人脸特征对比模块的对比结果与布控信息生成布控告警,和/或将布控告警和抓拍信息推送给WEB用户;抓拍信息优选包括人脸图片、抓拍全景图片、抓拍相机以及抓拍时间;布控信息包括对抓拍所指定的摄像机、指定的时间段、指定的数据库、及特征对比阈值。为实现本专利技术目的,按照本专利技术的另一个方面,提供了一种基于内存数据库的人脸识别方法,将包括图片流、特征值的二值化数据使用中间键内存数据库Redis进行转发的方法,将保存在Redis中的Key值附加在KAFKA消息中进行传输,使得收到消息的模块通过KAFKA消息所带的RedisKey值从Redis中获取可直接使用的图片流及特征值;该方法避免直接通过KAFKA传输时所需的从图片或特征值到Base64的转换,以及从Base64到图片或特征值的逆转换,并且图片、特征值这类二值化的数据在中间键内存数据库Redis中的保存与提取速度高于对于KAFKA的保存与读取,因此该方法还可以减少对网络资源的占用,提高服务器的处理能力。优选地,上述基于内存数据库的人脸识别方法,具体包括如下步骤:(1)获取视频流并进行解析,将视频帧转换为图片,对图片进行人脸检测;(2)对检测到人脸的视频帧从原始图像中裁剪出人脸图片,将原始全景图片与人脸图片保存到Redis中;(3)将带有全景图像及人脸图像所对应RedisKey的人脸特征提取请求消息发送到KAFKA人脸特征提取请求消息队列中;(4)特征提取模块从KAFKA人脸特征提取请求消息队列订阅消息,当人脸检测模块产生人脸特征提取请求消息后,特征提取模块就会收到人脸特征提取请求消息;(5)通过人脸特征提取请求消息中Redis所对应的Key从Redis中获取人脸图片;(6)对人脸图片进行人脸特征提取,将提取的人脸特征值保存到Redis中;(7)将带有人脸特征值、人脸图片、全景图片RedisKey的特征提取结果消息发送到KAFKA人脸特征对比请求消息队列中;(8)通过人脸特征对比请求消息中Redis所对应的Key从Redis中获取人脸特征值,将特征值与从数据库中获取的注册人员特征值进行对比,将特征对比结果消息发送到KAFKA人脸特征对比结果消息队列中;(9)从KAFKA人脸特征对比结果消息队列获取人脸特征对比结果。优选地,上述基于内存数据库的人脸识别方法,还包括人脸注册步骤,具体如下:(a)接收用户上传的注册信息,包括人员的信息、人脸图片;(b)将人脸图片保存到数据库;并将上传的人脸图片上传到Redis,将带有人脸图片所对应的Redis的Key的人脸检测请求消息发送到KAFKA人脸检测请求消息队列中;(c)从KAFKA人脸检测请求消息队列中订阅消息,当平台管理模块产生人脸检测请求消息,通过人脸检测请求消息中Redis所对应的Key从Redis中获取人脸图片;(d)对人脸图片中进行人脸检测,将检测到的人脸从图片中裁剪出来保存到Redis中;(e)将带有人脸照片所对应RedisKey的人脸特征提取请求消息发送到KAFKA人脸特征提取请求消息队列中;(本文档来自技高网...

【技术保护点】
1.一种基于内存数据库的分布式人脸识别系统,其特征在于,包括若干网络摄像机、若干人脸检测模块、若干人脸特征提取模块、若干人脸特征对比模块、Redis、KAFKA、数据库及平台管理模块;所述平台管理模块接收用户设置,生成布控信息、进行网络摄像机分配、人脸注册以及注册信息存储;网络摄像机模块用于提供实时视频流作为人脸识别的视频源;人脸检测模块用于从实时视频流中获取视频帧进行人脸检测,检测出具有人像的视频帧;以及对人脸注册图片进行人脸检测;人脸特征提取模块用于对具有人像的视频帧进行的特征提取,以及对具有人像的人脸注册图片进行特征提取,形成注册人脸特征值集;人脸特征对比模块用于将提取的人脸特征值与注册人脸特征值集进行对比;所述数据库用于保存人脸注册信息、注册特征值集;Redis用于保存图片、人脸特征值;KAFKA用于模块间的消息传输,所述消息带有保存在Redis中的图片、人脸特征值的Key值;将Key值附加在KAFKA消息中进行传输,收到消息的模块通过KAFKA消息中的Key值从Redis中获取可直接使用的图片及人脸特征值。

【技术特征摘要】
1.一种基于内存数据库的分布式人脸识别系统,其特征在于,包括若干网络摄像机、若干人脸检测模块、若干人脸特征提取模块、若干人脸特征对比模块、Redis、KAFKA、数据库及平台管理模块;所述平台管理模块接收用户设置,生成布控信息、进行网络摄像机分配、人脸注册以及注册信息存储;网络摄像机模块用于提供实时视频流作为人脸识别的视频源;人脸检测模块用于从实时视频流中获取视频帧进行人脸检测,检测出具有人像的视频帧;以及对人脸注册图片进行人脸检测;人脸特征提取模块用于对具有人像的视频帧进行的特征提取,以及对具有人像的人脸注册图片进行特征提取,形成注册人脸特征值集;人脸特征对比模块用于将提取的人脸特征值与注册人脸特征值集进行对比;所述数据库用于保存人脸注册信息、注册特征值集;Redis用于保存图片、人脸特征值;KAFKA用于模块间的消息传输,所述消息带有保存在Redis中的图片、人脸特征值的Key值;将Key值附加在KAFKA消息中进行传输,收到消息的模块通过KAFKA消息中的Key值从Redis中获取可直接使用的图片及人脸特征值。2.如权利要求1所述的分布式人脸识别系统,其特征在于,所述人脸检测模块将检测到的具有人像的视频帧通过Redis保存,将带有具有人像的视频帧RedisKey值的消息通过人脸检测模块发送到KAFKA队列中,以供多个人脸特征提取模块均衡消费消息。3.如权利要求1或2所述的分布式人脸识别系统,其特征在于,所述人脸检测模块在检测到具有人像的视频帧后,将视频帧中的人脸图像保存到Redis中。4.如权利要求3所述的分布式人脸识别系统,其特征在于,所述人脸特征提取模块通过RedisKey值从Redis中获取人脸图片数据并从中提取人脸特征,将提取的特征值保存到Redis中;带有人脸特征值、RedisKey的消息通过人脸特征提取模块发送到KAFKA队列中,以供多个人脸特征对比模块均衡消费消息。5.如权利要求3或4所述的分布式人脸识别系统,其特征在于,所述人脸特征对比模块通过RedisKey从Redis中获取人脸特征值,将人脸特征值与存储在数据库中的注册人脸特征值集对比,将对比结果通过KAFKA发送到平台管理模块。6.如权利要求1或2所述的分布式人脸识别系统,其特征在于,所述平台管理模块还具有指定检测模块与网络摄像机匹配关系的功能,用于为网络摄像机分配人脸检测模块,由指定的人脸检测模块从网络摄像机提供的实时视频流中获取视频帧进行人脸检测。7.如权利要求1或2所述的分布式人脸识别系统,其特征在于,所述平台管理模块用于通过人脸特征对比模块的对比结果与布控信息生成布控告警,和/或将布控告警和抓拍信息推送给WEB用户。8.一种基于内存数据库的人脸识别方法,其特征在于,将包括图片流、特征值的二值化数据使用中间键内存数据库Redis进行转发的方法,将保存在Redis中的...

【专利技术属性】
技术研发人员:黄晓艳钟卫为石云何华清杨凯张辉许志伟
申请(专利权)人:武汉虹信技术服务有限责任公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1