掌桥专利:专业的专利平台
掌桥专利
首页

一种基于视觉技术的是否正确佩戴口罩检测方法

文献发布时间:2023-06-19 19:28:50



技术领域

本发明属于人工智能中视觉技术领域,具体地说,是一种基于视觉技术的是否正确佩戴口罩检测方法。

背景技术

目前已知新冠病毒传播最主要途径就是飞沫传播,因此在公共场合正确配搭口罩显得尤其重要。近几年国内公共场合也开始逐步重视卫生健康安全,努力确保公共场合下的人们正确佩戴口罩。但就现存的公共场合下口罩安检方案仍存在着很多问题,诸多细节方面存在不足之处,且自动化程度较低。

目前已有的口罩佩戴检测有以下方案:

(1)基于人力的口罩佩戴检测方案

人力安检是指采用传统人工的方式,让安检人员佩戴好口罩等防疫装备处于公共场合的进出口位置。以人眼判别的方式对进出口的人员进行是否佩戴口罩的判断。

(2)基于传统肤色判别的口罩佩戴视觉检测方案

该方案首先需要使用人脸检测器,去捕获目标人脸。然后,使用HSV颜色空间或是YcrCb颜色空间对目标的人脸肤色面积和非肤色面积进行提取计算,通过一定阈值关系判断目标人物是否佩戴口罩。

(3)基于深度学习的口罩佩戴视觉检测方案

通过搭建目标检测神经网络,制作佩戴口罩的数据集,对目标检测网络进行训练,得到对应的目标检测器,直接对目标人物是否佩戴口罩进行检测。

人力安检是否佩戴口罩方案形式简单且操作方便,但是由于人与人彼此接触的关系,很容易导致交叉感染的发生,并且由安检人员去判读目标人物是否正确佩戴口罩太过主观化,容易出现纰漏;基于传统肤色判别的口罩佩戴视觉检测方案,首先依赖于人类检测器优异程度,其次使用单一颜色空间提前肤色对于复杂光照与类似肤色的口罩辨别效果很差,极易影响判别结果,同时,无法判断常态化判断目标是否正确佩戴口罩;基于深度学习的口罩佩戴视觉检测方案是现在比较主流的方法之一,但是目前较多情况下目标检测网络仅可以判断目标人物是否佩戴口罩,不能判断目标是否正确佩戴口罩,基于深度学习的口罩佩戴视觉检测方案十分依赖于训练集中对不规范佩戴口罩标定的质量,由于实际检测时目标人物佩戴口罩的差异,对于这情况这种方案鲁棒性较弱易受干扰、泛化性较弱难以推广。

发明内容

本发明的主要目的在于克服现有视觉检测与标定技术的缺陷,设计了一种基于视觉技术的是否正确佩戴口罩检测方法。本发明基于YOLOv3设计了一种改进的CBAM-YOLOv3-SPPF算法,同时通过对比人脸中人眼,鼻子,嘴巴等关键信息的检测情况判断目标人物是否正确佩戴口罩。本发明所设计的检测方法主要针对正面照的情况进行检测识别,该方法不仅极大提高了检测精度,而且可以有效判断出目标人物是否正确规范佩戴口罩。

本发明采用的具体技术方案如下:

一种基于视觉技术的是否正确佩戴的口罩检测方法,包括以下步骤:

S1:制作检测对象数据集,在现有Large-scale CelebFaces Attributes(CelebA)Dataset人脸属性数据集中随机抽取10000张有效图片,使用LabelImg软件标定出所选10000张图片中的人眼,鼻子和嘴巴,并将其随机划分成训练集8000张以及测试集2000张;

S2:对现有YOLOv3-SPP算法中K-means聚类先验框大小的算法进行改进,使用SPPF模块对YOLOv3-SPP网络模型进行改进,在检测头Head部分额外增加一个大尺寸的特征输出图,并在检测程序模块Head中融合CBAM注意力机制模块,得到改进后的CBAM-YOLOv3-SPPF算法;

S3:利用步骤S1所制作的数据集对CBAM-YOLOv3-SPPF算法进行训练,将训练后得到的最佳权重文件重新回馈至CBAM-YOLOv3-SPPF算法得到目标检测网络;

S4:使用上述目标检测网络检测目标,结合检测到的人眼,鼻子,嘴巴等信息后,采用一种特定位置肤色面积测量的方法判别目标人物是否正确佩戴口罩;

本发明的进一步改进,所述S1的过程包括:

S1.1、获得大量含有人脸五官特征的高清图片:

使用所写的python脚本随机从公开的Large-scale CelebFaces Attributes(CelebA)Dataset人脸属性数据集中抽取10000张不同的有效人脸图片;

S1.2、将所抽取的10000张图片进行目标标定制作成数据集:

使用LabelImg软件对每张人脸图片中的人眼,鼻子,嘴巴区域画目标标记框,目标在图像中的位置信息指目标标记框的宽高信息(可以间接求出),目标标记框的对角点在图像坐标系下的坐标信息。自动生成的.xml文件无法被YOLO网络所训练,使用python脚本voc_yolo将xml文件格式转换为txt文件格式。转换成的txt文件包含:类别ID编号,目标中心点x坐标/图片总宽度,目标中心点y坐标/图片总高度,目标框的宽带/图片总宽度,目标框的高度/图片总高度。转换完成后,将其分为8000个训练集,以及2000个测试集。

本发明的进一步改进,所述S2的过程包括:

S2.1、改进K-means聚类算法,计算YOLOv3-SPP的先验框大小:

该算法首先利用聚类中心距离远近的关系和轮盘赌算法去选取优秀的初始聚类中心,随后采用K-means聚类算法进行迭代更新,最后再对聚类出的12个anchor数值进行变异微调,以寻求最优的anchor数值;

S2.2、YOLOv3-SPP网络模型改进:

改进后得到的CBAM-YOLOv3-SPPF网络模型由Backbone、Neck和Head三部分构成,其中Backbone采用DarkNet53结构,用来进行特征提取,将原先Neck部分的SPP模块替换为SPPF模块,构成SPPF加FPN的组合,增强特征图特征表达能力的同时提高推理速度,在Head检测头部分额外增加一个大尺寸的特征输出图,提高网络对小型目标的检测精度,在四个检测头Head中分别加入CBAM注意力机制模块,提高网络学习能力。

本发明的进一步改进,所述S3的过程包括:

将训练集中的样本图像经过Mosaic数据增强方法处理后,输入到的CBAM-YOLOv3-SPPF算法中,通过不断更新权值直到损失函数趋于稳定且最小时,保留训练得到的权重文件,将其加载到CBAM-YOLOv3-SPPF算法中,制作成目标检测网络。

本发明使用的损失函数为CIOU_Loss函数,该损失函数由三部分构成:目标置信度损失L

L(O,o,C,c,t,g)=λ

其中,λ

上式(7)中,α

其中,目标置信度损失:

目标置信度损失L

目标类别损失:

目标分类损失L

目标定位偏移量损失:

目标定位偏移量损失L

本发明的进一步改进,所述S4的过程包括:

使用训练好的目标检测网络对目标人物进行检测(此处判断测到目标是否为眼睛,鼻子,嘴巴等,均属于调用YOLO算法中判别模块,即检测目标得分大于设定阈值,该步骤仅为应用没有独创,因此不展开详述),当检测到目标同时具备眼睛,鼻子,嘴巴的时候,判断为目标未佩戴口罩;当检测到目标只有眼睛时,进一步确定目标人物是否正确佩戴口罩;取检测到两眼框外接最小矩形的宽与两倍高,在其最小外接矩形的下方再取一个矩形,记此区域为鼻部决策区域,计算其面积,记作S

与现有技术方案相比,本发明具有以下有益效果:

(1)本发明对现有YOLOv3-SPP算法进行了改进,设计了改进K-means聚类算法求解先验锚框大小,提高K-means聚类先验框速度的同时也提高了聚类效果。并对YOLOv3-SPP网络模型结构进行改进优化,提高了对人眼,鼻子,嘴巴检测精度的同时保证了较好的检测速度;

(2)本发明相较于深度学习的口罩佩戴视觉检测方案显得更加灵活多变,不仅可以实现对目标是否佩戴口罩的检测,而且可以高精度地判别出目标人物是否正确佩戴口罩。同时,对目标规范佩戴口罩的判定不再固化,可以通过对决策阈值的调整,动态改变对目标规范佩戴口罩的要求程度;

(3)设计的H-CrCb提取肤色方法,可以在各种复杂环境光下,有效精准地检测出肤色区域。同时,有效克服光照不足时对于白色口罩区域可能出现误检为肤色区域的情况,提高目标是否正确佩戴口罩检测精度;

(4)本发明不采用直接对目标口罩佩戴情况进行检测的方案,而是使用间接方法进行检测判决,此方法将不需要依赖于训练集中对不规范佩戴口罩的标定质量。本发明中的方案在实际检测目标是否正确佩戴口罩时,具有很好的鲁棒性与泛化性。

附图说明

图1为本发明的流程总图。

图2为本发明中改进K-means聚类方法求解anchor的流程图。

图3为本发明中改进后得到的CBAM-YOLOv3-SPPF算法模型的结构框图。

图4为本发明中CBAM-YOLOv3-SPPF网络模型中加入的CBAM模块。

图5为本发明中CBAM-YOLOv3-SPPF算法的网络权重训练流程图。

图6为本发明中使用H-CrCb提色法去间接判断目标人物是否正确佩戴口罩的流程图。

具体实施

为了加深对本发明的理解,下面将结合附图和实施例对本发明做进一步详细描述,该实施例仅用于解释本发明,并不对本发明的保护范围构成限定。

如图1所示,本发明提供的一种基于视觉技术的是否正确佩戴口罩检测方法,包括以下具体步骤:

S1:获取大量含有人脸五官的高清图片,使用LabelImg软件对检测目标进行标定,制作神经网络训练所需的数据集。

S2:对现有YOLOv3-SPP算法中K-means聚类先验框大小的算法进行改进,使用SPPF模块对YOLOv3-SPP网络模型进行改进,额外增加一个大尺寸的检测头Head,并在检测程序模块Head中融合CBAM注意力机制模块,得到改进后的CBAM-YOLOv3-SPPF算法,具体流程如下:

S2.1、基于改进K-means聚类算法计算YOLOv3-SPP的先验框大小:根据本发明改进的YOLOv3-SPP算法中检测头的需要,需成功聚类出12个先验锚框。从最初生成的.xml文件中使用python脚本提取出所有bounding box对角坐标,并利用boundingbox的对角坐标,计算出所有bounding box的宽高(计算方法:宽=右下角横坐标-左上角横坐标、高=右下角纵坐标-左上角纵坐标)。

本发明对K-means聚类算法进行了改进优化,改进K-means聚类算法求解YOLOv3-SPP先验锚框大小的具体步骤如下,其流程图如图2所示。

S2.1.1、从提取的所有boundingbox中随机选取一个bounding box的宽高作为第一个聚类中心;

S2.1.2、计算其余每个boundingbox到该聚类中心的距离D=1-IOU,同时计算出其余每个bounding box被选定为下一个聚类中心的概率,(距离D越大,被选中的概率越大)然后采用轮盘赌算法确定下一个聚类中心;

S2.1.3、循环步骤S2.1.2直到选出12个初始聚类中心;

S2.1.4、计算每个bounding box到最近的聚类中心距离,并将其分配到离它最近的聚类中心所属簇中;

S2.1.5、计算各个簇bounding box宽、高的中值,作为下一轮迭代的聚类中心;

S2.1.6、重复步骤S2.1.4和步骤S2.1.5,直到每个簇中的元素不在发生变化,聚类结束,最终输出12个anchor的数值;

S2.1.7、对得到的12个anchor的宽高进行小幅度变异操作(加减),对变异后的12个anchor表现进行评估(评估方式:计算每个簇中bounding box到变异后聚类中心距离的平均值,若平均值变小,则代表变异效果较好),保留变异后的anchor数值。进行300次变异操作,保留最佳变异anchor数值;

最后成功聚类出本训练集下的12个先验锚框的宽高尺寸,将得到的先验锚框的宽高替换原先YOLOv3算法中默认的先验锚框大小。

S2.2、YOLOv3-SPP网络模型改进:

本发明中CBAM-YOLOv3-SPPF网络模型由Backbone、Neck和Head构成,具体网络模型结构具体如图3所示:其中Backbone采用DarkNet53结构,用来进行特征提取。将原先Neck部分的SPP模块替换为SPPF模块,构成SPPF加FPN的组合,增强特征图特征表达能力的同时提高推理速度。在检测头Head部分额外增加一个大尺寸特征输出图,改进后Head部分为4个不同尺寸的输出特征图,其尺寸分别设置为16×16,32×32,64×64,128×128。并且在四个检测头中分别加入CBAM注意力机制模块,提高网络学习能力。

为了方便描述网络模型,定义CBAM-YOLOv3-SPPF网络模型的基本组件简称为Convolutional,该Convolutional组件由一个Conv2d卷积层,一个Batch Normalization批量归一化层和一个Leaky Relu激活函数组成。定义一个残差单元Residual,其由两条路线组成,主干路经过两个Convolutional,另一条支路为原先输出,相加得到输出。定义残差组件ResX为一个Convolutional和X个残差单元组成。

训练集输入DarkNet53后,依次经过1个Convolutional、Res1、Res2、Res8、Res8、Res4,分别在第一个Res2的输出,第一个Res8的输出和第二个Res8的输出引出3个层次的特征图C1、C2、C3。

经过DarkNet53结构后再经3个Convolutional组件处理后进入SPPF模块。SPPF模块首先经过1×1的最大池化层,输出特征图F1,特征图再经过5×5的最大池化层,输出特征图F2;输出特征图F2,特征图再经过5×5的最大池化层,输出特征图F3;输出特征图F3,特征图再经过5×5的最大池化层,输出特征图F4。再将不同尺度的特征图F1,F2,F3,F4进行Concatenate操作后输出。

经过SPPF模块后,便是CBAM-YOLOv3-SPPF网络模型中的FPN结构。从SPPF模块输出的融合信息特征图经过3个Convolutional组件处理后得到P1,P1经过1个Convolutional和1个上采样与C3通过Concatenate操作联合再经过5个Convolutional组件处理得到P2,P2经过1个Convolutional和1个上采样与C2通过Concatenate操作联合再经过5个Convolutional组件处理得到P3,P3经过1个Convolutional和1个上采样与C1通过Concatenate操作联合再经过5个Convolutional组件处理得到P4。

将P1,P2,P3,P4输入检测头,分别经过1个Convolutional组件,1个CBAM注意力机制模块和1个1×1的卷积层,最后得到各自不同尺寸的输出特征图。其尺寸分别设置为16×16,32×32,64×64,128×128。

其中,CBAM注意力机制模块为通道注意力模块与空间注意力模块的顺序组合,结构如图4所示。通道注意力模块在前,空间注意力模块空间模块在后。

通道注意力模块:将输入的特征图经过两个并行的MaxPool最大池化层和AvgPool平均池化层,将特征图从C×H×W变为C×1×1的大小,然后经过Share MLP模块,在该模块中,它先将通道数压缩为原来的1/r倍,再扩张到原通道数,经过ReLU激活函数后。再将这两个输出结果进行逐元素相加,再通过一个Sigmoid激活函数得到Channel Attention的输出结果,再将这个输出结果乘原图,变回C×H×W的大小。

空间注意力模块:将输入的特征图通过MaxPool层和AvgPool层得到两个1×H×W的特征图,然后经过Concat操作对两个特征图进行拼接,通过7×7卷积变为1通道的特征图,再经过一个Sigmoid得到Spatial Attention的特征图,最后将输出结果乘原图变回C×H×W大小。

改进后得到的CBAM-YOLOv3-SPPF算法在VOC数据集上的表现十分优秀,推理计算速度也得到了一定提升。

S3:利用所制作的数据集对CBAM-YOLOv3-SPPF算法进行训练,将训练后得到的最佳权重文件加载至CBAM-YOLOv3-SPPF算法得到目标检测网络;

实施例中,共划分出8000张训练集和2000张测试集。其中训练集输入到CBAM-YOLOv3-SPPF网络中,用来不断训练网络模型,优化网络的权重文件。而测试集则是用来计算出平均精度mAP,从mAP的数值去判断网络模型是否达标。同时,保存mAP最高一次的网络模型权重文件,并将其加载至CBAM-YOLOv3-SPPF算法得到目标检测网络。其训练过程的流程如图5所示。

本实施例在训练时,采用了Mosaic数据增强方法,每次从训练集中随机读取4张图片进行缩放或裁剪,将提取的4张图片合理拼接成一张新图片,并将其标签数据进行相应处理使之与新的图片信息对应。Mosaic数据增强后形成的图片通过resize操作,固定为512×512的尺寸。

数据增强后形成的512×512尺寸的图片输入到CBAM-YOLOv3-SPPF网络模型中,首先经过特征提取网络DarkNet53对输入图片进行特征提取,于DarkNet53中第1个Res2的输出,第1个Res8的输出和第2个Res8的输出引出3个层次的特征图C1、C2和C3,用于后续特征融合。

特征提取网络DarkNet53直接输出的特征图,经过3个Convolutional组件处理后进入SPPF模块,利用SPPF模块的多组合最大池化层进行多尺度的特征融合后输出融合的特征图。

融合的特征图随后进入FPN结构后,进行下一步的特征融合,经过3个Convolutional组件处理后得到尺度为16×16的特征图P1,特征图P1再经过1个Convolutional和1个上采样与DarkNet53输出的一个特征图C3通过Concatenate操作联合再经过5个Convolutional组件处理得到尺度为32×32的特征图P2,特征图P2经过1个Convolutional和1个上采样与DarkNet53输出的一个特征图C2通过Concatenate操作联合再经过5个Convolutional组件处理得到尺度为64×64的特征图P3,特征图P3经过1个Convolutional和1个上采样与DarkNet53输出的一个特征图C1通过Concatenate操作联合再经过5个Convolutional组件处理得到尺度为128×128的特征图P4。

随后将特征图P1、P2、P3、P4输入到YOLO的检测头中,分别经过1个Convolutional组件,1个CBAM注意力机制模块和1个1×1的卷积层,最后得到各自不同尺寸的有效输出特征图。其尺寸分别设置为16×16,32×32,64×64,128×128分别用来检测大目标,较大目标,中等大小目标以及小目标。

本实施例中,最后输出有效特征图的shape分别为(16,16,24),(32,32,24),(64,64,24),(128,128,24)最后一个维度24包含了4+1+3,分别代表了x_offset,y_offset,h和w,置信度,分类结果。(本发明训练集的种类为3)

随后对计算得到的预测结果进行解码,即可在原图上获得预测框。最后取每一类得分大于阈值的框和得分,再利用框的位置和得分进行非极大值抑制,去除冗余的检测框。

训练时,根据预测得到的数据与训练图片真实的数据进行对比计算损失函数,本发明中采用的损失函数为CIOU_Loss函数,该损失函数由三部分构成:目标置信度损失L

L(O,o,C,c,t,g)=λ

其中λ

上式(12)中,α

其训练的本质就是利用计算的误差去不断地更新权值直到损失函数趋于稳定且最小时,保留训练得到的权重文件,将其加载到CBAM-YOLOv3-SPPF算法中,制作成目标检测网络。

本发明为了进一步提高训练效果,还采用了如下方法进行优化:余弦退火调整学习率,学习率整体会先上升,后下降,加快训练速度;含动量的随机梯度下降法。

S4:使用上述目标检测网络检测目标,结合检测到的人眼,鼻子,嘴巴等信息,采用一种基于肤色面积的方法判别目标人物是否正确佩戴口罩。

运用上述目标检测网络对目标人物五官中的人眼,鼻子,嘴巴进行实时检测,根据本发明中设计的间接检测方法去判断目标人物是否正确佩戴口罩,整个检测判断的流程图如图6所示。

S4.1、未佩戴口罩判定:成功识别到目标人物同时具有眼睛,鼻子和嘴巴这些特征信息时,系统认定目标人物未佩戴口罩。

S4.2、未正确佩戴口罩的判定:未正确佩戴口罩分两种情况:

情况一:当目标检测网络成功检测到目标人物具有眼睛和鼻子特征信息,未检测到嘴巴特征信息时,系统认定目标人物未正确佩戴口罩,

情况二:当目标检测网络仅检测到目标具有眼睛特征信息,未检测到鼻子和嘴巴特征信息时,进一步分析判别目标人物是否正确佩戴口罩。

此时读取左眼框左上角坐标(x

为了更好提取肤色,降低复杂光照等因素对提色结果的影响,设计H-CrCb方法进行肤色像素的选取。

H-CrCb提取肤色方法是结合HSV颜色模型与YCrCb颜色模型的混合式提色方案。

其中,从RGB空间转换到HSV空间的计算公式:

HSV颜色空间作为肤色检测时,由于HSV把颜色分离为一个通道,即色调通道,通过此通道作为肤色检测更加稳定。HSV颜色空间分为色调(H),饱和度(S),明度(V),人类肤色的色调范围有文献指出其数值:H∈[9°,29°]。

规则1:在HSV空间,像素点的色调值H∈[9°,29°],即可视为肤色像素点。

考虑实际情况,目前市面上存在蓝白黑三种颜色的口罩。在规则1的条件下,HSV空间对市面上白色口罩与肤色的分辨情况并不是很好,尤其是光照不足时。

针对这种情况,采用H-CrCb提取肤色法中YCrCb颜色空间的可以很好解决。

从RGB空间转换到YCrCb空间的计算公式:

其中,

YCrCb颜色空间的最大特点是将亮度与色度分离开,从而可以更好的适应于图像处理。在YCrCb颜色空间中,忽略亮度的影响,肤色会得到更好的聚类效果。有文献指出,人类肤色的CrCb应该满足:Cr∈[140,175],Cb∈[100,120]。

规则2:在YCrCb空间,如果像素点的红色分量Cr∈[140,175],蓝色分量Cb∈[100,120],即可视为肤色像素点。

H-CrCb提取肤色方法即默认如果一个像素点满足规则1或规则2,则认为该像素点为肤色像素。

之后利用设计的H-CrCb法在鼻部决策区域提取肤色面积,记提取的皮肤肤色面积为S

S4.3、正确佩戴口罩的判定:当仅检测到目标具有眼睛特征信息,未检测到目标存在鼻子和嘴巴特征信息,并且满足S

关于α的取值可根据公共场合的实际疫情安检要求改变,若该场合对疫情安检要求较为严格,可适当缩小α值,提高口罩佩戴要求。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,这些变化和改进都落入要求保护的本发明范围内。

相关技术
  • 基于轻量化特征融合SSD的人员是否佩戴口罩检测方法
  • 一种检测视觉装置组装是否正确的装置及方法
技术分类

06120115928771