深度学习在现代人脸识别中的应用

在过去的十年中,深度学习(DL)在许多领域取得了巨大的成功,尤其是在人脸识别方面。最先进的人脸识别系统可以在图像和视频中以与人类相同甚至更高的精度识别人脸。本系列文章分为两部分:人脸检测和人脸识别。人脸检测是在客户端应用程序中实现的,它检测图像或视频流中的人类面孔,对检测到的面孔图片进行对齐,并将它们提交给服务器。而人脸识别则是在服务器端应用程序中进行的。假设熟悉深度神经网络(DNN)、Python、Keras和TensorFlow,并欢迎下载本项目的代码以跟随实践。

深度神经网络的困境

正如在中所述,典型的AI人脸识别算法包括四个步骤:人脸检测、人脸对齐、特征提取和特征匹配。其中第一和第三步是使用专门开发的DNN实现的。人脸对齐和特征匹配算法依赖于DNN提供的面部标志和特征。开发和训练用于人脸识别的DNN是非常耗时和费力的任务。在开始这样的开发之前,必须确定没有其他方法可以达到目标。评估人脸识别系统的两个主要参数是:准确性和性能(速度)。如果现有模型的一个或两个参数不符合要求,可能会决定开发自己的DNN。

例如,使用的MTCNN模型在Raspberry Pi 3上不支持真正的实时模式,所以可能会决定开发一个新的人脸检测DNN。然而,可以通过几种替代方案使DNN更快。第一种选择是通过减少其参数数量并重新训练优化后的模型来优化MTCNN模型。训练MTCNN类模型并不容易,因为该模型包括四个阶段:缩放、人脸分类、边界框回归和标志定位。可以在和找到如何实现和训练MTCNN模型的示例。

第二种选择是选择另一个用于人脸检测的DNN模型。例如,可以训练一个具有紧凑结构的SSD模型,如MobileNet或SqueezeNet,以获得更好的性能。这是一个。请注意,SSD模型不提供面部标志,只提供边界框。

可用的预训练模型可以比人类更好地识别面孔。然而,如果人脸识别系统将要工作的特定条件下没有现有的模型被优化,可能需要开发自己的DNN。例如,从户外IP摄像机的视频识别面孔,而模型主要是在室内使用各种照相机拍摄的图片上训练的。所以可能想要使用从户外条件的摄像机拍摄的面部图像重新训练DNN模型。为了收集训练用的面部图像,可以遵循在创建数据库时使用的相同方法:在视频上运行人脸检测器和对齐器,并将提取的面孔与不同的已知人员关联起来。这是。

在本系列中,向展示了如何创建一个用于人脸识别的混合边缘AI系统。考虑了一个基于现代DL方法的常见人脸识别算法:人脸检测、人脸对齐、特征提取和特征匹配。开发了一个基于预训练MTCNN模型的人脸检测器,并在Raspberry Pi设备上对其进行了测试。建议了人脸对齐算法,并编写了创建对齐面孔数据库的代码。解释了如何使用预训练的FaceNet模型进行面部识别。开发了一个简单的Web API来封装面部识别模型,设计了一个基于此API的客户端-服务器应用程序,并一起测试了模型和API。使用Docker对服务器应用程序进行了容器化,以简化系统的开发、测试和部署。还展示了如何通过在Kubernetes上运行服务器应用程序来将其扩展到与多个客户端应用程序一起工作。最后,讨论了从头开始开发AI人脸识别系统。

边缘设备上的人脸识别主题对于一系列文章来说非常广泛。只实现了概念性的人脸识别流程,对于商业用途,系统中有很多可以改进的地方以提高性能(速度和准确性)。在这里,将为提供一些如何改进系统部分以获得更好性能的想法。

MTCNN检测器的速度直接取决于帧大小。运动检测器允许选择视频帧上的兴趣区域,并在帧的较小部分上运行MTCNN检测器,从而提高处理速度。

在检测面部时,可以使用适当的跟踪算法来跟踪它们。使用跟踪的主要思想是获取额外的信息。当跟踪一个面孔时,知道在几个帧上是同一个人,可以使用这些信息通过几个探针图像来识别这个人。这种多重识别方法可以提高系统的准确性。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485