共计 3336 个字符,预计需要花费 9 分钟才能阅读完成。
全文链接:http://tecdat.cn/?p=28031
作者:Yuling Zhang
使用 Python 3.8.1 版本,爬取网络数据,基于卷积神经网络(CNN)的图像处理原理,搭建口罩辨认技术训练集,构建人脸识别零碎,最终建设高校师生行踪查问管理系统。
数据起源及环境筹备
通过网络收集,失去 3073 张不同性别、年龄以及不同场景中的人佩戴口罩的照片,而未佩戴口罩的人脸图片从中选取了 3249 张图片。以此作为本次钻研的数据集,通过对数据集进行预处理,来训练人脸口罩检测的模型。
二、确定 人脸及口罩辨认整体操作流程
图 1
具体流程
(1)对数据集中的人脸进行检测和对齐
因为有的照片中脸和口罩的比例比拟小,其余部位比方手、肩膀等占据了很大的空间,这些对于模型来说都是乐音,会减少 CPU 的计算量并且会烦扰模型。所以咱们须要对获取到的照片进行解决,将人脸裁剪进去。咱们利用 OpenCv 和 dlib 对数据集进行了人脸的检测和对齐,以便后续对模型进行训练。人脸检测是指将一张图片中的人脸圈进去,即找到人脸所处的地位,人脸对齐则是基于曾经检测到的人脸,主动找到脸轮廓和眼睛鼻子嘴等标志性特色地位。咱们应用 dlib 对数据集进行了人脸 68 个特色点的检测,并将人脸进行对齐,最初将每张照片上的人脸数和对齐的人脸数打印进去。
图 2 检测人脸 68 个特色点
图 3 人脸数及对齐人脸数
因为辨认有肯定的误差,所以须要对裁剪后的照片进行筛选,将极少数对齐不精确的照片手动删除,并将数据集的照片进行重命名,便于后续数据集门路的创立。最初失去戴口罩的照片 1010 张,作为该模型的正样本,未戴口罩的照片 3030 张,作为该模型的负样本,正负样本的比例为 1:3。
图 4 裁剪后的正负样本集
(2)正负样本数据集灰度解决及像素解决
对数据集进行灰度解决能够加强图像对比度,增大图片的动静范畴,让图像更清晰,特色更显著,可能更好的对模型进行训练。除此之外,还须要将正负样本各自的照片像素设为雷同的值,正样本数据集的像素最佳设为 20×20,这样的模型训练精度更高,而负样本数据集像素则应不低于 50×50,如此能够放慢模型训练的速度,此处咱们将负样本的数据集像素调节为 80 x80。最初通过 cmd 命令别离生成佩戴有口罩和未佩戴口罩的图片门路的 txt 文件。
图 5 灰度、像素解决后的正负样本
(3)训练人脸口罩数据集模型
训练级联分类器时应用的是 opencv3.4.1 版中的 opencv\_createsamples.exe 和 opencv\_traincascade.exe 两个程序。opencv\_traincascade 反对不仅反对 Haar 特色也反对 LBP 特色,同时还能够加强其余的特色。在检测时上述两种特色的准确率都依赖于训练时的训练参数以及训练数据的品质。此次咱们在训练口罩辨认模型时提取了 Haar 特色,其最次要的劣势在于它的计算较为迅速。能够用 opencv\_createsamples 来筹备用于训练的测试数据和正样本数据,这些数据可能被 opencv_traincascade 程序反对。
在测试时,咱们还退出了对人脸鼻子的辨认,即当辨认到人脸时若还辨认到鼻子,则显示为未佩戴口罩,可能更加无效地对口罩佩戴是否标准。
图 6 口罩识别系统实际效果图
(4)口罩辨认训练模型评估
训练集运行后果如下:
===== TRAINING 4-stage =====
<BEGIN
POS count : consumed 800 : 813
NEG count : acceptanceRatio 2600 : 0.00584079
Precalculation time: 25.945
如图所示,执行该命令时,一些参数信息被终端首先输入。而后输入级联分类器中每级强分类器的训练信息,咱们设置的 numStages 为 10,于是一共有 10 个强分类器:0-stage 至 9 -stage。图中是第 4 级强分类器的信息。咱们别离剖析这些信息如下所示:
===== TRAINING 4-stage =====
<BEGIN
示意开始训练第 4 级强分类器。
【POS count : consumed800: 813】
在训练本级强分类器时,可能应用的 800 个正样本图像是从 813 个正样本图像集中选取进去的,阐明此时没有被辨认进去的正样本有 13 个。此时的识别率为 98.4%(800/813=0.984).
【NEG count : acceptanceRatio 2600 : 0.00584079】
可用 2600 个负样本图像训练本级强分类器,该数是 opencv_traincascade.exe 命令中参数 numNeg 指定的数量,前面的 0.00584079 示意以后级联分类器预测的这些被预测为正样本而理论为负样本的 2600 幅图像是从多少个负样本图像中失去的。以后已失去了 4 个强分类器:O-stage、1-stage、2-stage、3-stage。当即将训练的第 5 个强分类器 4 -stage 运行完结后,这 5 个强分类器形成的级联分类器的最大错误率为:0.25×0.25×0.25×0.25=0.000976,曾经满足了要求,无需持续训练,零碎会进行运行。
【Precalculation time: 25.945】
这示意,在没有构建强分类器之前,咱们计算好了一部分特征值,这时事后计算的特征值所耗费的工夫。该值由 opencv_traincascade.exe 命令中的参数 precalcValBufSize 和 precalcldxBufSize 决定,如果咱们在此设置了更大的内存,就能存储更多特征值,与此同时所破费的工夫就越长。
示意此时该级的强分类器曾经失去,因为识别率和错误率都满足了要求,所以此级强分类器的训练完结。
【Training until now has taken 0 days 0 hours 39 minutes 53 seconds】
示意到目前为止,训练级联分类器共用时 39 分 53 秒。此时,就训练失去了咱们须要的级联分类器数据,咱们利用它就能够辨认出人脸。
本我的项目的次要工作能够概括为以下几点:
一、基于卷积神经网络的人脸识别。达到以下成果:
1、从视频中辨认人脸,并实时标出面部特色点。2、建 cv2 摄像头对象,咱们应用电脑自带摄像头(若装置内部摄像头,则主动切换到内部摄像头)。3、针对高清视频的多帧间断对照辨认、对监控设施的视频数据进行解码,并拆散数据帧、造成每帧视频的图像数据,从而将人脸识别率呈指数级大幅晋升。4、设置每帧数据延时为 1ms,应用人脸检测器检测每一帧图像中的人脸做灰度解决,并输入人脸数。5、对每个人脸定位画出方框,显示辨认后果。6、增加快捷性能并在辨认页面增加按键阐明:按下 s 键截图保留,按下 q 键退出。
二、口罩辨认
基于卷积神经网络的口罩辨认。对于检测到的三类状况:①戴口罩(捂住口鼻)②戴口罩(未捂住口鼻)③未戴口罩做出了 no mask ;no mask; have mask 的判断。
三、搭建了师生端疫情防控平台,实时查问集体进出校内公共场所及进出校内外状况。提供了一个核查与监督的平台。
对于作者
在此对 Yuling Zhang 对本文所作的奉献示意诚挚感激,她特长深度学习、数据采集、回归预测。
最受欢迎的见解
1.R 语言实现 CNN(卷积神经网络)模型进行回归
2.r 语言实现拟合神经网络预测和后果可视化
3.python 用遗传算法 - 神经网络 - 含糊逻辑控制算法对乐透剖析
4.R 语言联合新冠疫情 COVID-19 股票价格预测:ARIMA,KNN 和神经网络工夫序列剖析
5.Python TensorFlow 循环神经网络 RNN-LSTM 神经网络预测股票市场价格工夫序列和 MSE 评估准确性
6.Matlab 用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
7. 用于 NLP 的 seq2seq 模型实例用 Keras 实现神经机器翻译
8. R 语言用 FNN-LSTM 假近邻长短期记忆人工神经网络模型进行工夫序列深度学习预测
9.Python 用 RNN 循环神经网络:LSTM 长期记忆、GRU 门循环单元、回归和 ARIMA 对 COVID-19 新冠疫情新增人数工夫序列预测