牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

Posted CVer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测相关的知识,希望对你有一定的参考价值。

重磅干货,第一时间送达

本文转载自:图灵TOPIA
作者:Adrian Rosebrock  |   编译:安然


新冠肺炎疫情的出现,给刷脸支付行业造成重大打击的同时,也会为其提供新的机遇。关于“戴口罩能否人脸识别检测”的问题,引起了众多的疑虑。

近日,微软大神Adrian Rosebrock在新出的一篇教程中讲述了如何使用OpenCV、Keras/TensorFlow和Deep Learning训练口罩检测器。

原文如下:

在本教程中,我们将讨论二阶段口罩检测器,并详细说明如何实现计算机视觉/深度学习管道。
 
查看用于训练自定义口罩检测器的数据集,展示如何在数据集使用Keras和TensorFlow上实现Python脚本训练口罩检测器,使用此Python脚本来训练口罩检测器并查看结果。
 
鉴于训练有素的口罩检测器,将另外两个Python脚本用于:
 
  • 检测图像中的口罩

 
  • 检测实时视频流中的口罩

 
  • 查看口罩检测器的应用结果

 
还将提供一些其他建议以进一步改进。
 
二阶段的口罩检测器
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图1:使用Python,OpenCV和TensorFlow / Keras构建具有计算机视觉和深度学习功能的COVID-19口罩检测器的阶段和步骤。
 
为了训练自定义的口罩检测器,将该项目分为两个阶段,每个阶段都有自己的子步骤(如图1所示):
 
  • 训练:从硬盘中加载口罩检测的数据集,使用Keras/TensorFlow在该数据集上训练一个模型,然后将口罩检测器序列化到硬盘。

 
  • 部署:训练好口罩检测器后,加载口罩检测器,进行人脸检测,然后将每个人脸分类为戴口罩或不戴口罩。

 
口罩检测数据集
 
这里使用的数据集是由PyImageSearch读者Prajna Bhandary创建的。

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
  图2:口罩检测数据集由“带口罩”和“不带口罩”图像组成。使用该数据集构建一个使用Python、OpenCV和TensorFlow/Keras进行计算机视觉和深度学习的口罩检测器。
 
使用的数据集包含1,376张图像,这些图像属于两个类别:

  • with_mask:690张图片


  • without_mask:686张图片

 
我们目标是训练一个自定义的深度学习模型来检测一个人是否佩戴口罩。
 
如何创建口罩数据集?
 
Prajna和我一样,对世界的现状感到沮丧和沮丧——每天都有成千上万的人死去,对许多人来说,能做事情的很少。
 
为了保持精神饱满,Prajna决定通过运用计算机视觉和深度学习来解决现实世界的问题:
 
最好的情况是她可以用这个项目来帮助别人
 
最坏的情况是给她一个精神上的解脱
 
不管怎样,这都是双赢的!
 
程序员、开发人员和计算机视觉/深度学习的实践者,都可以从Prajna的书中有所收获。
 
为了创建这个数据集,Prajna运用了一个巧妙的解决方案:
 
拍摄正常的面部图像
 
然后创建一个自定义的计算机视觉Python脚本,将口罩添加到这些人像的面部,从而创建一个人工(但仍然适用于现实世界)的数据集。
 
这个方法实际上比听起来要简单得多,只要运用面部landmarks即可。
 
面部landmarks可自动推断面部结构位置,包括:
 
  • 眼睛

  • 眉毛

  • 鼻子

  • 下颌的轮廓

 
要使用人脸landmarks来建立一个戴口罩的面部数据集,首先需要从一个未戴口罩的人像开始:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

图3:构建口罩数据集,首先从一张未戴口罩的人像照片开始  
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图4:应用人脸检测,使用深度学习方法来使用OpenCV进行面部检测
 
一旦知道了人脸在图像中的位置,就可提取人脸感兴趣区域(ROI) 
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图5:使用OpenCV和NumPy切片提取人脸ROI
 
然后从那里应用面部landmarks,定位眼睛,鼻子,嘴巴等:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图6:使用dlib检测面部landmarks,检测口罩放置位置
 
接下来,需要一张带有透明背景的口罩图像,如下图所示:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图7:口罩示例。由于已知面部landmark位置,因此将口罩自动覆盖在人像面部ROI上
 
通过使用面部landmarks(即沿着下巴和鼻子的点)来计算口罩的放置位置,旋转、调整口罩的大小,将其自动置于面部。
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图8:在该图中,口罩按原帧放置于人脸,很难看出口罩已通过OpenCV和dlib人脸landmarks应用于计算机视觉
 
然后,可以对所有输入的图像重复该过程,从而创建人工口罩数据集:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图9:一组人工合成的口罩图像, 该集合将成为我们的“有口罩” /“无口罩”数据集的一部分,该数据集将用于使用OpenCV,Keras / TensorFlow和深度学习训练口罩检测器。
 
但是,在使用此方法人工创建数据集时,需要注意:如果使用一组图像来创建一个戴口罩的人工数据集,不能在训练集中“重复使用”未戴口罩的人像图,仍然需要收集不同的未带口罩的人像图。
 
如果将用于生成戴口罩的原始图像作为未戴口罩的样本包含在内,模型将会产生严重的偏差,且不能很好地泛化。为了避免这种情况,无论如何都要花时间收集一些未戴口罩的新人像。
 
使用面部landmarks将口罩放置于面部的方法不在讨论范围之内,但是,如果您想了解更多信息,我建议:
 
  • 参考Prajna的GitHub数据库

 
  • 在PyImageSearch博客上阅读本教程,我将在其中讨论如何使用面部landmarks来自动将太阳镜戴在脸上

 
原理与该教程相同,构建一个人工口罩数据集-使用面部landmarks来推断面部结构,旋转并调整口罩大小,然后将其应用于图像。
 
项目结构
 
从“下载”部分获取文件后,将看到以下目录结构:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

数据集/目录包含“口罩检测数据集”中描述的数据。
 
提供了三个图像示例,以便测试静态图像口罩检测器。
 
在本教程中,将查看三个Python脚本:
 
  • train_mask_detector.py:输入数据集并对其进行微调,以创建mask_detector.model。还会生成包含精度/损耗曲线的训练历史图plot.png。

 
  • detect_mask_image.py:在静态图像中进行面部口罩检测。

 
  • detect_mask_video.py:使用网络摄像头将口罩检测应用于流中的每个帧。

 
在接下来的两部分中,将训练口罩检测器。
 
使用Keras和TensorFlow运行口罩检测器训练脚本
 
查看口罩数据集后,学习如何使用Keras和TensorFlow训练分类器来自动检测一个人是否戴着口罩。
 
为了完成此任务,对MobileNet V2架构进行微调,该架构是一种高效的架构,可以应用于计算能力有限的嵌入式设备(例如,Raspberry Pi,Google Coral,NVIDIA Jetson Nano等)。
 
将口罩检测器部署到嵌入式设备可以降低制造此类口罩检测系统的成本,因此这也是选择使用该体系结构的原因。
 
下面开始吧!

在目录结构中打开train_mask_detector.py文件,并插入以下代码:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
tensorflow.keras集允许:
 
  • 数据增强

 
  • 加载MobilNetV2分类器(使用预先训练的ImageNet权值对该模型进行微调)

 
  • 建立一个新的全连接(FC)头

 
  • 预处理

 
  • 加载图像数据

 
使用scikit-learn (sklearn)对类标签进行二值化,对数据集进行分段,并打印分类报告。
 
imutils路径实现将帮助在数据集中查找和列出图像。使用matplotlib来绘制训练曲线。
 
继续分析一些从终端启动脚本所需的命令行参数:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
命令行参数包括:
 
  • 数据集:输入数据集的人像和带口罩的人像的路径


  • plot:输出训练历史图的路径,它将使用matplotlib生成

 
  • model:得到的序列化口罩分类模型的路径

 
我喜欢在一个地方定义深度学习超参数:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
在这里,我指定了超参数常量,包括初始学习率,训练次数和批量大小。稍后将应用学习率衰减时间表,这就是为什么将学习率变量命名为INIT_LR。
 
至此,准备加载和预处理训练数据:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

在此block中:
 
  • 抓取数据集中的所有imagePath(第44行)

 
  • 初始化数据和标签列表(第45和46行)

 
  • 循环遍历imagePaths并加载+预处理图像(第49-60行)。预处理步骤包括将尺寸调整为224×224像素,转换为数组格式以及将输入图像中的像素强度缩放到[-1,1]范围(通过preprocess_input函数)

 
  • 将预处理的图像和相关标签分别添加到数据和标签列表中(第59行和第60行)

 
  • 确保训练数据为NumPy数组格式(第63和64行)

 
上面的代码行是假定数据集适合内存。如果数据集大于可用的内存,则建议使用HDF5,
 
数据准备工作尚未完成。接下来,将对标签进行编码,对数据集进行分区,并为数据扩充做准备:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

第67-69行单行编码类标签,这意味着数据将采用以下格式:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
标签数组的每个元素都由一个数组组成,其中只有一个索引是“hot”(即1)。
 
第73行和第74行使用scikit-learn将数据划分为80%的训练数据和20%的测试数据。
 
在训练期间,在图像中应用动态突变,以提高泛化能力。这被称为数据增强,其中在第77-84行建立了随机旋转、缩放、剪切、移位和翻转参数,在训练时使用aug对象。
 
但首先,需要准备MobileNetV2微调:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

微调设置过程分为三个步骤:
 
  • 向MobileNet加载预训练的ImageNet权重,关闭head of network (第88行和第89行)

 
  • 构造一个新的FC head,并将其附加到底座上,以代替旧的head(第93-102行)

 
  • 冻结网络的基本层(第106行和第107行)。在反向传播过程中,这些基础层的权值不会更新,而头层的权值将被调优。

 
为了节省大量时间,建议使用微调来建立基线模型。
 
准备好数据和模型架构进行微调后,就可以编译和训练口罩检测器网络了:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
第111-113行使用Adam优化器,学习率衰减时间表和二进制交叉熵来编译模型。
 
如果使用大于2训练脚本进行构建,请确保使用分类交叉熵。
 
口罩训练是通过117-122行启动的。请注意,数据增强对象(aug)将如何提供批量的突变图像数据。
 
训练完成后,在测试集中评估结果模型:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
第126-130行对测试集进行预测,获取最高概率的类标签索引。然后在终端打印一份分类报告进行检验。
 
第138行将口罩分类模型序列化到硬盘。
 
最后一步是绘制精度和损失曲线:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
准备好图,第152行使用——plot文件路径将图保存到硬盘。
 
使用Keras/TensorFlow对口罩检测器进行训练
 
现在,使用Keras,TensorFlow和Deep Learning训练口罩检测器。
 
确保已使用本教程的“下载”部分来下载源代码和口罩数据集。
 
打开一个终端,然后执行以下命令:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图10:COVID-19口罩检测器的训练精度/损耗曲线显示出高精度,并且在数据上几乎没有过度拟合的迹象。现在,使用Python,OpenCV和TensorFlow / Keras应用计算机视觉和深度学习知识来执行面部口罩检测。
 
测试集的正确率达到了99%。
 
如图10,可以看到有一些过度拟合的迹象,验证损失低于训练损失
 
鉴于这些结果,希望模型能够很好地推广到训练和测试集以外的图像。
 
使用OpenCV实现口罩检测器
 
现在口罩探测器已经训练好了,可以:
 
  • 从硬盘中加载输入图像

 
  • 检测图像中的人脸

 
  • 应用口罩检测器来将脸部分类为戴口罩或未戴口罩

 
打开目录结构中的detect_mask_image.py文件:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

驱动程序脚本需要三个TensorFlow / Keras导入才能加载MaskNet模型和预处理输入图像。
 
显示和图像操作需要OpenCV。
 
下一步是解析命令行参数:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

四个命令行参数包括:
 
  • Image:用于推理的包含人脸的输入图像的路径


  • Face:face detector model目录的路径


  • Model:到口罩检测器模型的路径,——置信度:可选的概率阈值可设置为覆盖50%,以过滤微弱的人脸检测


接下来,将加载人脸检测器和口罩分类器模型:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

有了深度学习模型,下一步就是加载和预处理输入图像:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

从硬盘加载image(第37行)之后,复制并获取帧尺寸,以便将来进行缩放和显示(第38行和第39行)。
 
预处理由OpenCV的blobFromImage函数处理(第42行和第43行)。如参数所示,将大小调整为300×300像素,并执行均值减法。
 
第47行和第48行执行人脸检测,以定位图像中所有人脸的位置。
 
一旦知道图像中脸的预测位置,确保它们在提取面部ROIs之前达到置信阈值:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

在这里,遍历检测结果,并提取置信度以针对置信阈值进行测量(第51-58行)。
 
然后,计算特定面部的边界框值,并确保该框位于图像的边界内(第61-67行)。
 
接下来,通过MaskNet模型运行面部ROI:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
在此block中:
 
  • 通过NumPy切片提取面部ROI(第71行)

 
  • 以与训练期间相同的方式对ROI进行预处理(第72-76行)

 
  • 执行口罩检测以预测戴口罩或未戴口罩(第80行)

 
从这里,注释并显示结果!

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
首先,根据口罩检测器模型返回的概率来确定类标签(第84行),并为注释分配一个关联的颜色(第85行)。
 
戴口罩的颜色为“绿色”,未戴口罩的颜色为“红色”。
 
然后,使用OpenCV绘图函数(第92-94行)绘制标签文本(包括类和概率),以及用于face的包围框矩形。
 
一旦所有的检测都处理完毕,第97行和第98行显示输出图像。
 
使用OpenCV检测图像中的口罩
 
确保已使用本教程的“下载”部分来下载源代码,示例图像和预训练的口罩检测器。
 
然后,打开终端,执行以下命令:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
  图11:此人是否在公共场合戴口罩?是的。使用Python,OpenCV和TensorFlow / Keras的计算机视觉和深度学习方法使自动检测口罩成为可能。
 
口罩检测器已将该图像正确标记为Mask。
 
尝试另一张图片,这个人没有戴口罩:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图12:这张照片中的人没有戴口罩。使用Python,OpenCV和TensorFlow / Keras,系统已正确检测到脸部“无口罩”。
 
口罩检测器已正确预测“无口罩”。
 
尝试最后一张图像:
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
图13:这个结果中发生了什么?为什么前景中的女士没有被检测到戴着口罩?使用Python、OpenCV和TensorFlow/Keras构建的具有计算机视觉和深度学习功能的口罩检测器是否让我们失望了?
 
这里发生了什么?
 
为什么能够检测到背景中两位先生的脸,并为他们正确地分类戴口罩/未戴口罩,但却无法检测到前景中的女人?
 
在本教程后面的“进一步改进的建议”一节中讨论了这个问题的原因,但是要点是过于依赖两阶段过程。
 
请记住,为了区分一个人是否戴着口罩,首先需要进行人脸检测——如果没有找到一张脸(在这张图片中发生了什么),那么就不能使用口罩检测器!
 
无法在前景中检测到人脸的原因是:

  • 它被口罩遮住了


  • 用于训练人脸检测器的数据集不包含戴口罩的人的示例图像


因此,如果面部的大部分被遮挡,口罩检测器很可能无法检测到面部。
 
同样,在本教程的“进一步改进的建议”一节中更详细地讨论这个问题,包括如何提高口罩检测器的精度。
 
使用OpenCV在实时视频流中实现口罩检测器
 
至此,该系统可以对静态图像应用口罩检测了,但是实时视频流又如何呢?
 
口罩检测器是否可以实时运行?
 
在目录结构中打开detect_mask_video.py文件,并插入以下代码:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

这个脚本的算法是相同的,但它是拼凑在一起,以允许处理网络摄像头的每一帧。
 
因此,当涉及到导入时,惟一的区别是需要一个VideoStream类和时间。这两种方法都可以处理流。还将利用imutils的方面感知尺寸调整方法。

人脸检测/口罩预测逻辑是在detect_and_predict_mask函数:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
通过在此处定义此功能,帧处理循环将在以后更易于阅读。
 
此功能可检测面部,然后将口罩分类器应用于每个面部ROI。这样的功能巩固了代码,它甚至可以移动到单独的Python文件中。
 
detect_and_predict_mask函数接受三个参数:
 
  • frame:信息流中的框架

 
  • faceNet:用于检测人脸在图像中的位置的模型

 
  • maskNet:口罩分类器模型

 
在内部,构建一个Blob,检测人脸并初始化列表,其中两个函数设置为返回。这些列表包括面孔(即ROI),位置(面部位置)和preds(口罩/无口罩预测列表)。
 
从这里开始,遍历人脸检测:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
在遍历内部,过滤掉弱检测(第34-38行)并提取边界框,同时确保边界框坐标不会超出图像的边界(第41-47行)。
 
接下来,将面部ROIs添加到两个相应的列表中:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
在提取了面部ROI并进行了预处理(第51-56行)之后,将面部ROI和边界框附加到它们各自的列表中。
 
现在,可以运行口罩检测器了:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

这里的逻辑是为速度而构建的。首先,确保至少检测到一张脸(第64行)——如果没有,将返回空的preds。
 
 其次,要对框架中整个面部进行推理,以使pipeline更快(第68行)。由于内存的原因,编写另一个遍历来分别对每个面孔进行预测是没有意义的。批量执行预测更为有效。
 
第72行将面部边界框位置和相应的口罩/无口罩预测返回给调用者。
 
接下来,定义命令行参数:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

命令行参数包括:
 
  • face:人脸检测器目录的路径

 
  • model:训练有素的口罩分类器的路径

 
  • confidence:过滤弱脸检测的最小概率阈值

 
准备好导入,便捷功能和命令行参数后,在循环遍历帧之前,只需要处理一些初始化工作:

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

这里已经初始化了:
 
  • 面部检测器


  • 口罩检测器


  • 摄像头视频流

 
继续循环播放流中的帧:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
从103行开始。在内部,从流中获取一个框架并调整它的大小(第106行和第107行)。
 
第111行检测并预测人们是否戴口罩。
 
后处理口罩检测结果:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
在预测结果中(从第115行开始):
 
  • 打开面部边界框和戴口罩/未戴口罩预测(第117和118行)


  • 确定标签和颜色(122-126行)


  • 注释标签和面边界框(第130-132行)


最后,显示结果并执行清理:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
如果用户按q(退出),将跳出循环并执行清理。
 
用Python,OpenCV和TensorFlow / Keras进行深度学习来实现实时口罩检测器真是太好了!
 
使用OpenCV实时检测是否佩戴口罩
 
要查看运行中的实时口罩检测器,请确保使用本教程的“下载”部分下载源代码和预训练的口罩检测器模型。
 
然后,可以使用以下命令在实时视频流中启动口罩检测器:
 
牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测
 
这里,可以看到口罩检测器能够实时运行(并且其预测也是正确的)。

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测


牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测


改进建议
 
从上面的结果部分可以看到,尽管存在以下情况,口罩检测器仍能很好地工作:
 
  • 训练数据有限

 
  • 人工生成的佩戴口罩类别(请参见上面的“如何创建我们的口罩数据集?”)。

 
为了进一步改善口罩检测模型,应该收集戴口罩的人的真实图像(而不是人工生成的图像)。
 
虽然人工数据集在这种情况下效果很好,但无法代替真实的东西。
 
其次,还应该收集可能使分类器“混淆”认为该人实际上戴着面具的人的图像,包括裹在脸上的衬衫,嘴上的头巾等。
 
所有这些都是口罩检测器可能会将其混淆为口罩的示例。
 
最后,应该考虑训练专用的两类对象检测器,而不是简单的图像分类器。
 
当前的检测人员是否戴着口罩的方法分为两个步骤:
 
  • 步骤1:执行脸部侦测

 
  • 步骤2:将口罩检测器应用于每一张脸

 
这种方法的问题在于,根据定义,口罩会遮盖脸部的一部分。如果遮挡了足够多的脸部,则无法检测到脸部,因此将无法使用口罩检测器。
 
为了避免该问题,应该训练一个两类对象检测器,该对象检测器由戴口罩类和未戴口罩类组成。
 
将对象检测器与专用的戴口罩类结合使用将在两个方面改进模型。
 
首先,物体检测器将能够自然地检测戴着口罩的人,否则由于面部过多被遮盖,检测器将无法检测到这些对象。
 
其次,这种方法将计算机视觉流程简化为一个步骤-而不是应用面部检测,然后再应用口罩检测器模型,我们要做的就是应用对象检测器为网络中的戴口罩和未戴口罩的人提供边界框。
 
总结:
 
在本教程中,讲述了如何使用OpenCV、Keras/TensorFlow和Deep Learning创建口罩检测器。
 
为了创建口罩检测器,训练了两个类:戴口罩的人和不戴口罩的人。
 
在戴口罩和不戴口罩的数据集上对MobileNetV2进行了微调,并获得了一个精度约为99%的分类器。
 
然后将这个口罩分类器应用到图像和实时视频流中:
 
  • 检测图像/视频中的人脸

 
  • 提取每一张面部图像

 
  • 应用口罩分类器

 
口罩检测器是准确的,因为使用了MobileNetV2架构,它的计算效率也很高,使得模型更容易部署到嵌入式系统(Raspberry Pi、谷歌Coral、Jetosn、Nano等)。

原文链接:
https://www.pyimagesearch.com/2020/05/04/covid-19-face-mask-detector-with-opencv-keras-tensorflow-and-deep-learning/  

重磅!CVer-OpenCV&TF 微信交流群已成立


扫码添加CVer助手,可申请加入CVer-OpenCV或者TensorFlow 微信交流群,目前已汇集1300人!涵盖语义分割、实例分割和全景分割等。互相交流,一起进步!


同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、TensorFlow和PyTorch等群。


一定要备注:研究方向+地点+学校/公司+昵称(如OpenCV+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测

▲长按加群


请给CVer一个在看

以上是关于牛逼!大神用OpenCV/Keras/TensorFlow实现口罩检测的主要内容,如果未能解决你的问题,请参考以下文章

python自学攻略:教你如何从零基础小白飞升牛逼大神

比较牛逼的blog

程序员的四个等级:菜鸟普通大牛大神,你属于哪一个?

Fiddler前端页面调试工具简易入门

牛逼,全球首个开源图像识别系统上线了!

翻译系列-- 2019 国外大神收费XSS 技巧