分享
基于OpenCV的人脸口罩规范佩戴检测_罗奕彬.pdf
下载文档

ID:2367857

大小:1.54MB

页数:6页

格式:PDF

时间:2023-05-10

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 OpenCV 口罩 规范 佩戴 检测 罗奕彬
计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering153规范佩戴口罩是国内外公认的一种预防病毒感染的有效途径,口罩作为阻隔病毒传染的物理方式之一,其能阻断病原体经飞沫传播,同时具有双向隔离保护作用,佩戴口罩对于公众防范病毒感染的风险和维持人体基本健康具有重要意义1。然而,很多人由于防范意识不够,在公共场合并没有正确佩戴口罩甚至不佩戴口罩,给疫情防范带来很大的安全隐患。为对在疫情防范的公共区域不正确佩戴口罩或并不佩戴口的人群进行自动识别判断并发出预警提醒,越来越来多的专家学者投入到基于机器视觉的口罩人脸识别技术研究中来2-3,目前,检测识别用户佩戴口罩的方法有很多,如 SSD算法4、Mask-Det 算法5、基于帧间差分的口罩佩戴检测算法6、基于 YOLOVx7,8,9,10,11的口罩佩戴检测算法、基于迁移学习的 MaskNet12、Anchor free 算法13等。现有的算法中,大部分是以提高识别准确度以及识别速度作为主要核心目标展开的。张欣怡14等设计了基于改进 YOLOv5 的口罩佩戴检测算法,将传统卷积换为结合标准卷积和深度可分离卷积并进行通道混洗的鬼影混洗卷积(GSConv),可以在保证精度的前提下,对网络速度进行提升。在改进的 YOLOv5s 模型 neck 层最后添加自适应空间特征融合(ASFF),对不同尺度的特征可以进行更好的融合,提高网络检测精度。虽然这些算法在识别速度以及识别精度上有着很大的提升,但对于不同的环境下或者佩戴口罩程度不同的用户却很难进行精准识别,且不能做到对用户口罩佩戴是否规范。为快速精确判断口罩佩戴是否规范,本文提出了基于 Haar Adaboost 级联分类器的口罩佩戴检测方案,通过图像特征值之间的差值判断用户是否佩戴口罩,采用 Adaboost级联分类器训练鼻子及嘴巴特征判断口罩佩戴是否正确。1 基于Haar特征的Adaboost级联分类器原理1.1 Haar特征及特征值计算Haar15特征,也称为 Haar-like 特征,是计算机视觉领域一种常用的特征描述算子。人脸的 Haar-like 特征易于区分而且不依赖于外部条件变化,并能将人脸同背景或其他目标区分开来16,因此常用来做人脸检测。Haar 特征的特征值定义为白色矩形像素的和减去黑色矩形像素的和17-18。图 1 为 4 类 9 种形式的部分 Haar特征模板。对于(a)(b)(e)(f)(i)五种特征,特征值 F1的计算公式如式(1)。F1=Sum 白-Sum 黑 (1)对于(c)(d)两种特征,特征值 F2的计算公式如式(2)。F2=Sum 白-2Sum 黑 (2)基于 OpenCV 的人脸口罩规范佩戴检测罗奕彬洪远泉周永伦成雪蕾郭灼豪*(韶关学院 智能工程学院 广东省韶关市 512000)摘要:本文介绍了一种基于 OpenCV 的人脸口罩规范佩戴检测系统,该系统包含摄像头检测与图片检测两种检测方式,可以给公共场合未佩戴口罩或口罩佩戴不规范的人群提出预警。该系统的摄像头检测是基于 Opencv Adaboost 级联分类器的新型算法。本算法的优点在于,即使用户未佩戴口罩,也可通过 PCA 算子训练的“特征脸”数据库,识别用户信息并提醒该用户佩戴口罩,且当用户未规范佩戴口罩时,则会提醒用户规范佩戴口罩。相比于摄像头检测,该系统图片检测增加了 Kmeans 算子进行图像分割,再对分割出的背景进行 GaussianBlur 处理,将前景与背景叠加,输出新的图片,最后进行识别,从而大大提高了系统的识别准确度。关键词:Opencv 级联分类器;PCA 算子;人脸数据库;Kmeans 算子基金项目:国家级大学生创新创业训练计划项目(No.202210576020);“攀登计划”专项资金(No.pdjh2023b 0472)。计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering154式(1)(2)中,Sum 白表示所有白色像素值之和,Sum 黑表示所有黑色像素值之和。式(2)中,之所以将黑色区域像素和乘以 2,是为了使两种矩形区域中像素数目一致。1.2 AdaBoost级联分类器基本原理OpenCV中的Adaboost级联分类器是一个树状结构,它包括若干个强分类器(stage),每一个强分类器又包括若干个弱分类器。弱分类器包括若干个 Haar 特征、与Harr 特征相等数目的阈值、若干个 leftValue 和若干个rightValue,这些值是存在 OpenCV 的 XML 文件中。弱分类器的作用是通过计算出的 Haar 特征值与弱分类器阈值对比,从而选择最终输出 leftValue 和 rightValue 值中的哪一个。强分类器的作用是将其内部所有弱分类器输出值加起来,并与强分类器的阈值比较,当大于强分类器阈值时,认为该检测窗口通过该级强分类器,否则认为非目标。当检测窗口通过所有的强分类器时才被认为是目标,否则拒绝7-10。AdaBoost 级联分类器树状结构如图 2 所示。1.3 人脸口罩检测模型训练为了实现人脸口罩检测,本文采用 Haar+Adaboost级联分类器训练人脸口罩检测模型1.3.1 样本数据准备首先需要收集训练所需要的样本正样本以及负样本,正样本就是满足设计者识别要求的样本,文本算法将佩戴口罩的样本作为正样本;负样本就是不满足识别要求的样本,可以是人物,景物等不佩戴口罩的样本。通常来说,负样本数要大于正样本数,本文使用的正样本数为 1000,负样本数为 1350。当数据样本收集完成后,要对所收集的样本进行数据的处理,创建正负样本的.doc 文件,再通过 opencv_createsamples 将所处理的正样本数据进行操作生成.vec 文件,到此样本数据的准备就完成了。1.3.2 级联分类器的训练用 OpenCV3.41 中自带的 opencv_traincascade.exe 工具输入适当的参数即可进行样本训练,从而生成的.xml文件就是所需要的 AdaBoost 级联分类器了。2 基于Haar级联分类器的口罩佩戴检测以及规范佩戴口罩算法的设计2.1 视频检测 本算法通过调用摄像头,对视频采集的样本进行灰度转换,为了提高对比度我们采取直方图均衡化,然后通过 detectMultiScale 设定识别参数,将所识别的样本放入 face 矩形向量中,最后开启口罩佩戴规范的检测。我们将口罩规范检测分解为以下步骤:(1)首先调用人脸 AdaBoost 级联分类器,对用户的人脸位置进行锁定,方便减少口罩佩戴检测的运算时间以及提高检测的准确度。将人脸识别出的矩形向量分为三个部分:口罩检测部分 FaceROI,鼻子检测部分NoseROI 以及嘴巴检测部分 MouthROI。FaceROI 的识图 2:AdaBoost 级联分类器树状结构图 1:9 种 Haar 特征模板计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering155别位置为 face 矩形向量中整个框架内,NoseROI 的识别位置为 face 矩形向量中 2/3 处,MouthROI 的识别位置为 face 矩形向量中 1/3 处。最后将 FaceROI 在视频显示中抠出,将其背景进行GaussianBlur 处理,从而排除外界因素的干扰,提高识别准确度。(2)调用口罩佩戴识别 AdaBoost 级联分类器,在上一步 GaussianBlur 的基础上进行口罩佩戴识别,将识别范围锁定在FaceROI中。当用户佩戴口罩且佩戴规范,视频中显示”Your have worn mask”,若用户未佩戴口罩则显示”You have not worn mask”。(3)调用 Mouth AdaBoost 级联分类器以及 Nose AdaBoost 级联分类器进行口罩佩戴规范检测,其识别范围在 MouthROI 和 NoseROI 中,当用户口罩佩戴不规范(露出嘴巴或者鼻子)时,视频上显示”Your mouth(nose)is exposed,please worn mask regularly”。算法设计的流程图如图 3 所示。2.2 图片识别图片识别核心算法与视频识别算法相同,其不同点在于提高图片识别率的方法主要是利用 Kmeans 算子。关于 Keams 算法的介绍,首先定义了一个函数来储存 Point 来初始化中心点,如图 4 和图 5 所示。在此基础上设置每个数据点的编号,利用 Kmeans函数来一直迭代计算图片的中心点,直到所有点的距离到中心点的距离小于所定义的 T,完成背景抠图,将图像抠图完成之后创建一个空的图层,作为背景模糊的图层,在定义一个模糊原图后的图层作为背景涂层的填充,然后对每一个像素点竞选分析处理,如果,所以定义的label=cindex 可以判断该数据点为图像的背景,从而利用模糊后的图形作为背景填充,由于图像是 3 通道的图形,所以要对每个通道进行赋值,非背景的地方用白色来填充 mask,虚化后的图层作为背景涂层。其算法流程如图 6 所示。通过 Kmeans 算子的背景模糊后,可大大提高了图片识别的准确度。2.3 Eigen face人脸识别2.3.1 PCA 算子介绍PCA 为主流的一种线性降维算法。将数据样本每一维度的值减去均值,所求出协方差矩阵,再通过协方差矩阵的值求出数据样本的特征值与特征向量,根据特征图 3:视频识别算法流程图图 4:Kmeans 算子计算原理图图 5:Kmeans 算子的数据流程图计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering156值排序保留前 K 个主程序的特征向量作为“主成分”,从而形成新的数据集。其算法模型如下:通过 PCA 算子便可得到人脸的特征向量即特征脸。如图 7 所示。2.3.2 Eigen face 人脸识别的应用关于 Eigen face 人脸识别的原理及其设计方法如下:准备好所需要的人脸数据库,对数据库中的人脸进行训练,计算出数据库中人像的“平均脸”如图 8 所示。计算出其协方差矩阵,从而可算出人像的特征值以及特征矩阵,也就是“特征脸”,如图 9 所示。最后通过 PCA 降维,所形成的子空间模型便是我们所需要的识别库了,当有图像输入时,系统会与识别库进行对照,若满足特征则完成识别。流程图如图10所示。3 基于Haar级联分类器的口罩佩戴检测以及规范佩戴口罩算法的测试3.1 口罩佩戴及其规范性检测实验3.1.1 摄像头口罩佩戴鲁棒性测试本文采用优化前的 Adaboost 级联分类器;优化后的AdaBoost 级联分类器以及 Dnn 算子的对照试验分析优化后 AdaBoost 算子的鲁棒性,通过对 300 张不同条件下的测试图片进行检测实验,从而计算其检测率以及误检率。对比了优化前的 AdaBoost,优化后的 AdaBoost 以及 Dnn 算子,优化前的 AdaBoost 在检测率不及优化后图 6:图片识别算法流程图图 7:PCA 算法流程图图 8:Eigen face 人脸识别平均脸图图 9:Eigen face 人脸识别特征脸图图 10:Eigen face 人脸识别算法流程图图 11:口罩佩戴检测图 12:佩戴帽子口罩检测计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering157的 AdaBoost 以及 Dnn,并且误检率也是最高的,当我们将 Ada

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开