全文链接: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)正负样本数据集灰度解决及像素解决
对数据集进行灰度解决能够加强图像对比度,增大图片的动静范畴,让图像更清晰,特色更显著,可能更好的对模型进行训练。除此之外,还须要将正负样本各自的照片像素设为雷同的值,正样本数据集的像素最佳设为20x20,这样的模型训练精度更高,而负样本数据集像素则应不低于50x50,如此能够放慢模型训练的速度,此处咱们将负样本的数据集像素调节为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 =====<BEGINPOS count : consumed 800 : 813NEG count : acceptanceRatio 2600 : 0.00584079Precalculation 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.25x0.25x0.25x0.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新冠疫情新增人数工夫序列预测