使用TensorFlow和OpenCV实现口罩检测

重磅干货,第一时间送达

在这段艰难的疫情期间,我们决定建立一个非常简单和基本的卷积神经网络(CNN)模型,使用TensorFlow与Keras库和OpenCV来检测人们是否佩戴口罩。

图片来源于澳门图片社

为了建立这个模型,我们将使用由Prajna Bhandary 提供的口罩数据集。这个数据集包括大约1,376幅图像,其中690幅图像包含戴口罩的人,686幅图像包含没有戴口罩的人。

我们将使用这些图像悬链一个基于TensorFlow框架的CNN模型,之后通过电脑端的网络摄像头来检测人们是否戴着口罩。此外,我们也可以使用手机相机做同样的事情。

数据可视化

首先,我们需要标记数据集中两个类别的全部图像。我们可以看到这里有690张图像在‘yes’类里,也就是戴口罩的一类;有686张图像在‘no’类中,也就是没有带口罩的一类。

The number of images with facemask labelled 'yes': 690The number of images with facemask labelled 'no': 686

数据增强

这里,我们需要增强我们的数据集,为训练提供更多数量的图像。在数据增强时,我们旋转并翻转数据集中的每幅图像。在数据增强后,我们总共有2751幅图像,其中‘yes’类中有1380幅图像,‘no’类中有1371幅图像。

Number of examples: 2751Percentage of positive examples: 50.163576881134134%, number of pos examples: 1380Percentage of negative examples: 49.836423118865866%, number of neg examples: 1371

数据分割

我们将我们的数据分割成训练集和测试集,训练集中包含将要被CNN模型训练的图像,测试集中包含将要被我们模型测试的图像。

在此,我们取split_size=0.8,这意味着80%的图像将进入训练集,其余20%的图像将进入测试集。

The number of images with facemask in the training set labelled 'yes': 1104The number of images with facemask in the test set labelled 'yes': 276The number of images without facemask in the training set labelled 'no': 1096The number of images without facemask in the test set labelled 'no': 275

在分割后,我们看到图像已经按照分割的百分比分配给训练集和测试集。

建立模型

在这一步中,我们将使用Conv2D,MaxPooling2D,Flatten,Dropout和Dense等各种层构建顺序CNN模型。在最后一个Dense层中,我们使用‘softmax’函数输出一个向量,给出两个类中每个类的概率。

model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(100, (3,3), activation='relu', input_shape=(150, 150, 3)), tf.keras.layers.MaxPooling2D(2,2), tf.keras.layers.Conv2D(100, (3,3), activation='relu'), tf.keras.layers.MaxPooling2D(2,2), tf.keras.layers.Flatten(), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(50, activation='relu'), tf.keras.layers.Dense(2, activation='softmax') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['acc'])

在这里,我们使用 ‘adam’ 优化器和‘binary_crossentropy’ 作为我们的损失函数,因为只有两个类。此外,也甚至可以使用MobileNetV2以获得更高的精度。

预训练CNN模型

在构建我们的模型之后,我们创建“train_generator”和“validation_generator”,以便在下一步将它们与我们的模型相匹配。 我们看到训练集中总共有2200张图像,测试集中有551张图像。

Found 2200 images belonging to 2 classes.Found 551 images belonging to 2 classes.

训练CNN模型

这一步是主要的步骤,我们使用训练集中的图像来训练我们的模型,并使用测试集中的数据来测试我们的训练结果,给出准确率。我们进行了30次迭代,我们训练的输出结果在下面给出。同时,我们可以训练更多的迭代,以获得更高的精度,以免发生过拟合。

history = model.fit_generator(train_generator, epochs=30, validation_data=validation_generator, callbacks=[checkpoint])>>Epoch 30/30220/220 [==============================] - 231s 1s/step - loss: 0.0368 - acc: 0.9886 - val_loss: 0.1072 - val_acc: 0.9619

我们看到,在第30个时期之后,我们的模型中训练集的精度为98.86%,测试集的精度为96.19%。 这意味着它是训练结果很好,没有任何过度拟合。

标记信息

在建立模型后,我们为我们的结果标记了两个概率

[‘0’ 作为‘without_mask’ 和‘1’作为‘with_mask’]。我们还使用RGB值设置边界矩形颜色。 [‘RED’ 代表 ‘without_mask’ 和‘GREEN’ 代表 ‘with_mask]

labels_dict={0:'without_mask',1:'with_mask'}color_dict={0:(0,0,255),1:(0,255,0)}

导入人脸检测程序

在此之后,我们打算使用PC的网络摄像头来检测我们是否佩戴口罩。为此,首先我们需要实现人脸检测。在此,我们使用基于Haar特征的级联分类器来检测人脸的特征。

face_clsfr=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
(0)

相关推荐

  • 使用迁移学习和 TensorFlow 进行食品分类

    来源|本文经授权转载自深度学习与计算机视觉 摘要 在今天的报告中,我们将分析食品以预测它们是否可以食用.我们应用最先进的 迁移学习方法和 Tensorflow 框架来构建用于食品分类的机器学习模型. ...

  • 使用tensorflow创建一个简单的神经网络

    本文是对tensorflow官方入门教程的学习和翻译,展示了创建一个基础的神经网络模型来解决图像分类问题的过程.具体步骤如下 1.  加载数据 tensorflow集成了keras这个框架,提供了Fa ...

  • 【TensorFlow2.0】以后我们再也离不开Keras了?

    TensorFlow2.0 Alpha版已经发布,在2.0中最重要的API或者说到处都出现的API是谁,那无疑是Keras.因此用过2.0的人都会吐槽全世界都是Keras.今天我们就来说说Keras这 ...

  • (9条消息) 【OpenCV】OpenCV4调用tensorflow pb模型进行目标检测

    先在visual studio 2015新建一个工程并配置好环境. OpenCV调用tensorflow的pb模型,不仅需要一个.pb文件,还需要一个.pbtxt文件. 一些预训练好的pb模型的下载地 ...

  • 民用卫生口罩检测标准与项目

    口罩需求急剧增加,出现了民用口罩企业采标乱.市场监管难.消费者无从辨别等一系列新问题.为了规范民用口罩市场,3月11日,由中国产业用纺织品行业协会牵头起草制定的<民用卫生口罩>团体标准正式 ...

  • 硅胶口罩检测如何辨别真假

    真假硅胶傻傻分不清,认准真的硅胶口罩,别再买假的了 在市面上有很多TPR和TPE冒充硅胶,许多朋友不知道如何区分他们,因为TPR.TPE与硅胶很像,稍不注意就会以为是硅胶,特别是不懂得人,特别容易上当 ...

  • 10分钟学会使用YOLO及Opencv实现目标检测

    来源:新机器视觉 来自:小白学视觉 著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理 计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的 ...

  • 民用口罩检测标准有哪些

    随着人们对PM2.5危害的认识越来越强,对PM2.5的防护也越来越多,口罩的使用越来越多,国家也对<GB2626-2016呼吸防护用品>做了更新.对于商家来说是一个非常大的商机,这里捡证网 ...

  • 关于不同标准下对应的口罩检测项目浅析

    目前我国口罩相关标准已初成体系,标际口罩检测仪器技术人员为大家总结了针对[不同标准对应的口罩检测项目]简介. 项目1:过滤效率 章节号:4.4 测试方法:5.4 标准要求:在气体流量为85L/min下 ...

  • 实战:基于OpenCV的人眼检测

    重磅干货,第一时间送达 一.背景 无论学习什么,实践都非常重要.如果打算学习OpenCV.Numpy等Python库,那么这简单的12行代码很适合实践并体验这些库的实时使用. 二.OpenCV库 Op ...

  • 使用OpenCV进行对象检测

    重磅干货,第一时间送达 目标检测是图像处理的重要组成部分.自动驾驶汽车必须检测车道,路面,其他车辆,人,标志和信号等.我们生活在一个动态的世界中,一切都在不断变化.对象检测的应用无处不在. 我们正在研 ...

  • 如何利用Tensorflow和OpenCV构建实时对象识别程序?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引言 在本文中,将逐步介绍如何使用Tensorflow(TF)的新 ...