(一)边缘AI:口罩检测

目录

介绍

AI口罩检测技术

结合Keras,MobileNet V2和OpenCV实现模型

YOLOv5

下一步


在本系列文章中,我们将学习如何轻松训练口罩检测器,以及(可选)将其部署在Raspberry Pi Board+ Coral USB加速器上。在这里,我们将讨论创建口罩检测器可以采用的不同方法。

介绍

在本系列文章中,我将带您完成大多数机器学习(ML)专家在职业生涯中必须处理的一项关键任务:计算机视觉。即使听起来像火箭科学,但不是!此外,即使我们将重点放在口罩检测器上,也可以将相同的过程应用于任何其他类似的任务。

您需要具备一些PythonLinux CLIML知识。在指导您完成项目本身的过程中,我将堆叠概念层。在某些时候它可能变得很沉重,但是作为开发人员,我们可以解决所有问题!

即使即将出现COVID-19疫苗,大流行仍然是一个严重的问题。我们需要处理它,特别是当某些人不遵守避免传染的最低要求时,例如保持社交距离或戴口罩。人工智能(AI)可以极大地确保人们至少戴着口罩。人工智能可以为我们完成这项任务吗?此外,是否可以在Raspberry Pi或类似的廉价便携式计算机上部署AI口罩检测器?

(一)边缘AI:口罩检测_第1张图片

答案是肯定的。

要使该解决方案有效,您需要做两件事:大量数据和大量计算能力。幸运的是,得益于人工神经网络和深度学习的重要进步以及计算能力的巨大提高,我们可以训练所需的深度学习模型。此外,我们将需要的培训数据随时可用。

如果您的计算机具有中等的硬件功能,请不要担心。我将继续专注于对该项目进行编码,以使您可以在普通计算机上实现该项目。我们将在托管于云的Jupyter笔记本上工作,并将仅使用本地计算机执行轻型任务。话虽如此,让我们开始吧!

AI口罩检测技术

如今,有多种方法可以获取功能齐全的最新对象检测器,从针对极端特定要求进行的非常复杂的开发到更通用但仍很好的模型实现。您可以从头开始设计由多个复杂层组成的整个体系结构,或者只使用预先训练的模型,该模型在项目结束时也将获得非常相似的结果。

在大多数现实生活中,构建AI解决方案的时间有限。我将一次提出几个不同的解决方案,为您简要介绍这两种方法,并解释它们的工作原理,即使我只保留其中一个。如果您想进一步探索,我将为您提供有关另一项的足够信息。

我会用一个通用的解决方案,很多开发人员使用,因为它的推理速度、通用性和良好的文档:Keras + MobileNet V2 + OpenCV

结合KerasMobileNet V2OpenCV实现模型

这是这种混合的简要总结。您可能知道,Keras是一个用户友好且功能强大的深度学习框架,使用TensorFlow作为其后端引擎(通常称为TensorFlow抽象API)。它易于使用和部署、轻巧,并且可以在机器学习行业中的几乎所有任务中实现。如果您想使事情简单,请将Keras添加到您的技能中。就我们而言,这将帮助我们为对象检测器本身奠定坚实的基础。

MobileNet将承担繁重的工作。这是Google开发的模型。它的第一个版本可以追溯到2017年,为计算机视觉的发展做出了巨大贡献。

MobileNet体系结构相当复杂。我需要整篇文章来解释它的内幕。V2仍在一些应用程序中使用,并且比MobileNet V1和经典的ConvNets更好。这是因为它使用了比MobileNet更高版本便宜的计算卷积,但仍包含对较旧网络的重要体系结构改进。

在实现MobileNet V2体系结构时,预处理步骤类似于经典的图像分类管道:

  1. 收集每个图像仅包含一个对象(在这种情况下,每个图像仅包含一张脸)。这是因为该体系结构无法理解例如YOLO使用的坐标。
  2. 使所有图像大小相同。
  3. 使用Keras ImageDataGenerator(或任何类似方法)增强数据集。
  4. 将所有图像转换为NumPy数组,并以二进制符号(至少在这种情况下为二进制分类)表示标签。

让我们使用常规的ConvNet架构来构建此网络,并用MobileNet堆栈替换卷积层堆栈:

(一)边缘AI:口罩检测_第2张图片

基本的卷积神经网络(CNN)具有四个主要组成部分:卷积层、最大合并层、密集连接层以及最后一个输出层。紧密连接的对象执行实际的分类任务,并在输出层中激活与预测值相对应的感知器。

Conv2D(卷积任务)和MaxPooling2D(最大池任务)图层可以完美地协同工作,以完成简单的图像分类任务。但是,当需要实时检测时,卷积操作非常昂贵,并且使该过程非常烦人,特别是在边缘设备上。解决方案?用更快的堆栈替换Conv2D层:MobileNet V2模型。与CNN相比,它非常有效,使用的参数较少,但缺点是准确性较低。对于我们的项目,使用MobileNew V2获得的结果应该足够准确。但是,这是一个权衡;您仍然必须处理超参数调整、激活功能、优化程序、损失函数以及用于处理网络摄像头实时检测的脚本。

当处理图像、视频和相机时,OpenCV将提供巨大的帮助。为什么我不采用这种方法?在这种特定情况下,我们需要在同一图像/视频上同时运行的两个模型:一个检测面部的模型(那里有多种选择)和一个​​确定该面部是否戴着口罩的模型(在这种情况下为MobileNet)。在普通计算机上,推理速度不会有问题。但是,如果尝试在边缘设备上运行它,则性能会非常低。如果您不需要在小型设备上运行模型,我的建议是采用上述方法。

话虽如此,让我们看看最聪明的解决方案。

YOLOv5

现在该讨论当今可用的最强大、最易于使用的对象检测模型之一。我将指导您完成如何为其生成培训数据,对其进行培训,对其进行测试以及对其进行部署的方法指南。您可以在这里找到整个笔记本。我将在稍后解释它的组织方式。

如您所知,YOLOv5模型已经发售了几个月,并且由于其先前的版本而获得了很大的欢迎。这些工具速度更快、效率更高,但是它们的文档非常棒,它们非常容易训练和部署,并且为它们的训练标记数据的方法非常简单。

如果使用其最新,最轻的模型(YOLOv5s),您将以较低的计算成本获得高检测速度。如果我仍然不愿意接受这种想法,这是另一个原因:您将不需要像使用MobileNet时那样的两种模型。使用YOLOv5,您只能使用单个模型。您不会相信获得经过全面培训且可以完全部署的对象检测模型有多么简单!

下一步

在本系列的下一篇文章中,我将向您展示如何收集、预处理和扩充模型训练所需的数据。敬请关注!

https://www.codeproject.com/Articles/5293068/AI-on-the-Edge-Face-Mask-Detection

你可能感兴趣的:(python,人工智能)