(十)用于面部识别的混合边缘人工智能:下一步

目录

介绍

DNN的困境

结论

下一步


在这里,我们陈述了从头开始开发AI人脸识别系统的任务,并在它是更好的解决方案时提出了一些实际示例。然后我们给出基础阶段并提供有关如何开发系统主要成分的资源的参考:检测和识别神经网络。最后,我们对如何改进系统的某些部分提出了一些想法并总结了该系列。

介绍

人脸识别是人工智能(AI)的一个领域,现代深度学习(DL)方法在过去十年中取得了巨大成功。最好的人脸识别系统可以以与人类相同的精度识别图像和视频中的人物,甚至更好。

我们关于这个主题的系列文章分为两个部分:

  • 人脸检测,客户端应用程序检测图像或视频源中的人脸,对齐检测到的人脸图片,并将它们提交给服务器。
  • 人脸识别(这部分),服务器端应用程序进行人脸识别。

我们假设您熟悉DNNPythonKerasTensorFlow

上一篇文章中,我们了解了我们的人脸识别系统的Kubernetes管理实现。在本文(本系列的最后一篇)中,我们将从头开始讨论AI面部识别系统的开发。

DNN的困境

正如介绍文章所述,典型的AI人脸识别算法包括四个步骤:人脸检测、人脸对齐、特征提取和特征匹配。第一步和第三步是用专门开发的DNN实现的。面部对齐和特征匹配算法取决于DNN提供的面部标志和特征。

开发和训练用于面部识别的DNN是一项非常耗时费力的任务。在开始这样的开发之前,我们必须确保没有其他方法可以达到我们的目标。评价面部识别系统的主要参数有两个:准确性和性能(速度)。如果现有模型的一个或两个参数不满足我们的要求,我们可能会决定为面部识别系统开发我们自己的DNN

例如,我们使用的MTCNN模型的性能在Raspberry Pi 3上不支持真正的实时模式,因此我们可以决定开发一个新的人脸检测DNN。但是,我们可以使用几个替代选项使我们的DNN更快。

第一种选择是通过减少其参数数量并重新训练优化模型来优化MTCNN模型。训练一个类似MTCNN的模型并不是一件容易的事,因为该模型由四个阶段组成:缩放、人脸分类、边界框回归和标记定位。可以在此处此处找到如何实现和训练MTCNN模型的示例。

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

可用的预训练模型可以比人类更好地识别人脸。但是,如果现有模型都没有针对您的人脸识别系统将要工作的特定条件进行优化,您可能需要开发自己的DNN

例如,我们识别了来自室外IP摄像机的视频中的人脸,而我们的模型主要是根据在室内使用各种相机拍摄的照片进行训练的。因此,我们可能希望使用从室外条件下的相机拍摄的人脸图像重新训练我们的DNN模型。为了收集用于训练的人脸图像,我们可以遵循创建数据库时使用的相同方法(参考创建数据库部分):在视频上运行对齐的人脸检测器,并将提取的人脸与不同的已知人物相关联。这里是对FaceNet模型训练过程的描述。

结论

在本系列中,我们向您展示了如何创建用于人脸识别的混合边缘AI系统。我们考虑了一种基于现代DL方法的常见人脸识别算法:人脸检测、人脸对齐、特征提取和特征匹配。我们基于预先训练的MTCNN模型开发了一个人脸检测器,然后在Raspberry Pi设备上对其进行了测试。我们建议了人脸对齐算法,并编写了用于创建对齐人脸数据库的代码。

我们解释了如何使用预训练的FaceNet模型进行人脸识别。我们开发了一个简单的Web API来封装人脸识别模型,并基于这个API设计了一个客户端——服务器应用程序,并一起测试了模型和API。我们使用Docker将服务器应用程序容器化,以简化系统的开发、测试和部署。我们还向您展示了如何通过在Kubernetes上运行来扩展服务器应用程序以与多个客户端应用程序一起使用。最后,我们讨论了从头开始开发人工智能人脸识别系统。

下一步

在一系列文章中,边缘设备上的面部识别主题非常广泛。我们只实现了概念性的人脸识别管道,在商业用途的系统中还有很多需要改进的地方。在这里,我们将仅向您提供有关如何改进系统部件以获得更好性能(速度和准确性)的几个想法。

  • 使用运动检测器提高边缘设备上人脸检测的速度。MTCNN检测器的速度直接取决于帧大小。运动检测器允许在视频帧上选择感兴趣的区域并在帧的较小部分运行MTCNN检测器,从而提高处理速度。
  • 使用面部跟踪。在检测人脸时,我们可以使用适当的跟踪算法对其进行跟踪。使用跟踪的主要思想是获取附加信息。当我们跟踪一张脸时,我们知道它在几个帧上是同一个人,我们可以使用这些信息通过几个探测图像来识别这个人。这种多重识别方法可以提高系统的准确性。
  • 使用多面数据库。这样的数据库包含每个人的几个面部样本。该附加信息还允许提高面部识别的准确性。我们在这里应该注意,这会减慢识别服务器的速度,因为它需要将每个探测面部与数据库中的每个面部样本进行比较。这不是什么大问题,因为识别通常在功能强大的服务器上运行。

https://www.codeproject.com/Articles/5305707/Hybrid-Edge-AI-for-Facial-Recognition-Next-Steps

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值