AI口罩检测技术解析

在人工智能(AI)领域,计算机视觉是一个机器学习专家在其职业生涯中迟早会遇到的挑战。尽管听起来像是一门高深的科学,但实际上并非如此。本文将专注于口罩检测器的开发,但相同的过程也可以应用于其他类似的任务。

需要具备一些Python、Linux命令行界面(CLI)和机器学习知识。在引导完成项目的同时,将逐步叠加概念。这个过程可能会在某些时候变得复杂,但作为开发者,可以解决任何问题!

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

答案是肯定的。

要使解决方案工作,需要两样东西:大量的数据和大量的计算能力。幸运的是,由于人工神经网络和深度学习的重要进步,以及计算能力的大幅提高,可以训练所需的深度学习模型。此外,将需要的训练数据是现成的。

如果计算机硬件能力一般,不用担心。将专注于编写这个项目,以便可以用一台普通的计算机来实现。将在云托管的Jupyter Notebook上工作,并仅使用本地计算机进行轻量级任务。话虽如此,让开始吧!

AI口罩检测技术

今天有几种方法可以获得一个完全功能的、最先进的目标检测器,从为非常特定要求而开发的非常复杂的开发,到更通用但仍然很好的模型实现。可能需要从头开始设计一个由几个复杂层组成的整个架构,或者简单地使用一个预训练的模型,该模型在项目结束时将实现非常相似的结果。

在大多数实际应用中,将有有限的时间来构建AI解决方案。将同时提出几种不同的解决方案,给一个简要的介绍,解释它们是如何工作的,尽管只保留其中的一个。将为提供足够的信息,以防想要进一步探索其他的。

将从许多开发者因其推理速度、多功能性和良好的文档而使用的常见解决方案开始:

以下是这种组合的简要概述。可能知道,Keras是一个用户友好且功能强大的深度学习框架,其后端引擎通常是TensorFlow(通常被称为TensorFlow抽象API)。它易于使用和部署,轻量级,并且可以用于机器学习行业的几乎所有任务。如果喜欢保持简单,请将Keras添加到技能集中。在案例中,它将帮助建立对象检测器的坚实基础。

MobileNet将承担重任。这是谷歌开发的一种模型。它的第一版出现在2017年,对计算机视觉的发展做出了很大贡献。

MobileNet架构相当复杂。需要一整篇文章来解释它的内部结构。V2仍然在几个应用程序中使用,并且比MobileNet V1和经典ConvNets工作得更好。这是因为它使用了计算成本更低的卷积,但仍然包含了比旧网络更重要的架构改进。

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

  • 收集每张图像只包含一个对象(在这种情况下,每张图像只有一个面部)。这是因为这种架构不会理解YOLO使用的坐标。
  • 使所有图像大小相同。
  • 使用Keras ImageDataGenerator(或任何类似方法)增强数据集。
  • 将所有图像转换为NumPy数组,并以二进制表示法表示标签(至少在这种情况下,是二元分类)。

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

model = Sequential() model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) # ... model.add(Dense(1, activation='sigmoid'))

基本的卷积神经网络(CNN)有四个主要组成部分:卷积层、最大池化层、密集连接层,最后是输出层。密集连接层执行实际的分类任务,并激活输出层中对应于预测值的感知器。

Conv2D(卷积任务)和MaxPooling2D(最大池化任务)层对于简单的图像分类任务来说非常出色。然而,当需要实时检测时,卷积操作非常昂贵,使得这个过程非常慢,尤其是在边缘设备上。解决方案是什么?用更快的堆栈替换Conv2D层:MobileNet V2模型。与CNN相比,它非常高效,使用更少的参数,但缺点是准确度较低。对于项目来说,使用MobileNet V2所取得的结果应该足够准确。然而,这是一个权衡;仍然需要处理超参数调整、激活函数、优化器、损失函数,以及处理网络摄像头实时检测的脚本。

OpenCV在处理图像、视频和摄像头时会有很大帮助。为什么不采取这种方法?在这种特定情况下,需要在同一图像/视频上同时运行两个模型:一个模型检测面部(有很多选择),一个模型决定该面部是否佩戴口罩(在这种情况下,是MobileNet)。在普通计算机上,推理速度不会是问题。然而,如果试图在边缘设备上运行它,会得到极低的性能。建议是,如果不需要在小型设备上运行模型,就采取上述路径。

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

现在是时候谈论当今可用的最强大、最易于使用的目标检测模型之一了。将向展示如何生成训练数据、训练它、测试它以及部署它的指南。可以在这里找到整个笔记本。稍后会解释它是如何组织的。

可能知道,YOLOv5模型已经出现几个月了,并且由于它们的前几个版本而获得了很多流行。这些模型更快、更高效,而且它们的文档非常好,训练和部署非常简单,为它们训练的数据标签的方式也非常简单。

如果使用它最新、最轻的模型(YOLOv5s),将在低计算成本下获得高检测速度。如果还没有说服,这里还有一个原因:不需要像使用MobileNet那样使用两个模型。使用YOLOv5,只需要一个模型。不会相信获得一个完全训练和完全可部署的目标检测模型有多简单!

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