首页 > 科技 > 如何建立人脸检测识别系统

如何建立人脸检测识别系统

今天,我想分享一些有关如何使用OpenCV库,DLib和通过摄像机进行实时流传输来开发基于面部识别的生物识别系统的想法。

为了使系统正常运行,有必要执行三个步骤。首先,它必须检测到一张脸。然后,它必须几乎立即识别出那张脸。最后,它必须采取任何所需的进一步措施,例如允许已批准的用户访问。

人脸检测和识别过程

面部识别过程始于相机的应用程序,该应用程序安装在与所述相机通信的任何兼容设备上。该应用程序是使用Golang编程的,并且可以作为本地控制台应用程序与Raspbian和Ubuntu一起使用。首次启动应用程序时,需要使用具有本地相机ID和相机读取器类型的JSON配置文件进行配置。

然后,该应用程序能够使用计算机视觉和深度神经网络,以在其流中找到预期的面孔。有两种主要的有效方法:第一种是TensorFlow对象检测模型,第二种是Caffe人脸跟踪。这两种方法都运行良好,并且是OpenCV库的一部分。

一旦捕获到面部,裁剪的图像将通过HTTP表单数据请求中继到后端。然后,该面部图像由API保存在本地文件系统和检测日志中,并附加一个personID。

在后端,算法会识别“ classified = false”的记录,并使用Dlib函数生成详细描述此面孔属性的128维向量。然后,该算法使用欧几里得距离将此向量与数据库中的所有面部条目进行交叉引用,以发现此新面孔是否与记录中的任何面孔匹配。

下图是Dlib函数代码的表示形式,索引点对应于面部的各个部分。

在计算出欧几里得距离之后,该算法将为未知类型的人生成一个新的personID(如果距离大于0.6),或者将人脸标记为已分类并匹配personID(如果距离小于0.6)。

当脸部变得不确定时,可以通过Messenger程序中的聊天机器人或其他方式将该图像与通知一起中继给经理或主管。从那时起,将向经理或主管提供一系列有关如何处理情况的选项。

实施简单的chatbot警报系统大约需要两到五天,并且可以使用Errbot(基于Python)或Microsoft的Bot Framework等实用程序来创建。

面部记录可通过管理面板进行事后管理。该空间将包含所有记录的图像及其ID号的链接。可以创建所有相关员工面部图像的数据库,可以在系统上线之前将其放入数据库中。

潜在出现的一个问题是缩放问题。在我们的例子中,数据库中大约有200个条目,因此系统可以无缝处理并立即识别人脸。当数据库膨胀到成千上万的条目时,或者如果需要多个摄像机,事情将变得更加复杂。如果不采取任何对策,处理速度将会减慢。

幸运的是,并行化提供了解决方案。可以创建一个负载平衡器和多个可以同时工作的Web Worker。这样可以将数据库分为多个小节,从而显着提高搜索结果的速度。

以下是该面部识别解决方案的实施技术和总体结构的摘要。

解决方案中的API请求使用RESTful API,后端员工数据收集使用MongoDB Collections和Golang。可以使用常规的工作站设置来测试解决方案。

重要的是要注意,支持安全措施可以并且可能应该增强面部识别。面部图像比视网膜扫描或指纹更容易获得。如果安全需求至关重要,则采取额外的反欺骗措施可确保没有人能够用面部照片或图像击败面部识别系统。
您可以在我之前的文章“ 用于面部识别解决方案的反欺骗技术”中了解有关反欺骗技术的更多信息

此解决方案以及其他类似的解决方案可以处理大量数据。假设企业能够满足明确表达的业务需求,那么数据科学模型将能够提供业务见解。

人脸识别只是实现此方法的开始。人脸只是要检测的对象之一。可以以相同方式识别其他对象。例如,如果创建了DS模型并使用对象对数据集进行了训练,则可以是车辆,家具,花卉,动物。

此外,有可能开发出一种多模式生物识别系统,将两个或多个生物识别凭证结合在一起,例如,面部和语音识别。

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/268970.html