一种基于YOLOv5的口罩佩戴实时检测方法

文档序号:27266388发布日期:2021-11-06 01:20阅读:1799来源:国知局
一种基于YOLOv5的口罩佩戴实时检测方法
一种基于yolov5的口罩佩戴实时检测方法
技术领域
1.本发明涉及机器学习领域,尤其是一种基于yolov5的口罩佩戴实时检测方法。


背景技术:

2.自新冠肺炎疫情爆发后,在车站、商场等公共场所佩戴口罩成为预防疫情的有效手段。因此,需要在公共场所检测人员是否佩戴口罩,如果单纯的依靠人眼来进行观察,不仅需要消耗大量的人力,而且在人员密集处很容易出现漏检情况。因此,实现口罩佩戴的实时检测变得具有很大的现实意义。
3.近年来,传统的图像处理技术在目标检测应用上,速度慢、稳定性差且当环境变化时准确率会下降,随着深度学习和机器视觉的快速发展,基于深度学习的目标检测算法得到了广泛的应用。口罩佩戴的实时检测具有实时性强、目标物体小、容易被遮挡等难题,因此需要一种快速、针对被遮挡的小目标准确度高的目标检测算法。yolov5于2020年5月提出的一种单阶段的目标检测算法,具有很快的推理速度和小巧的网络结构,yolov5的模型结构主要分为四个部分,即input输入端、backbone基础网络、neck网络和prediction输出层。但对口罩这种容易被遮挡的小目标,容易出现漏检的现象。因此本发明在yolov5的基础上进行改进优化,提出了一种新型yolov5的口罩佩戴实时检测。


技术实现要素:

4.针对上述的所有问题,本发明提供一种新型yolov5的口罩佩戴实时检测方法,来客服现有的检测方法在速度和准确度上的问题。
5.一种基于yolov5的口罩佩戴实时检测方法,其特征在于,具体按照如下步骤进行:
6.步骤1:制作用于口罩佩戴检测的数据集;
7.步骤2:搭建yolov5网络框架;
8.步骤3:将口罩佩戴检测的数据集用yolov5网络进行训练;
9.步骤4:将训练的新型yolov5模型用于口罩佩戴实时检测中。
10.优选的,步骤1具体包括:
11.步骤1.1:首先搜集两千多张正确佩戴口罩和未佩戴口罩的照片;
12.步骤1.2:在原数据集的基础上上利用旋转、裁剪等数据增强方法对数据集进行增强,将数据集扩展到5000张照片;
13.步骤1.3:用labeling对5000张图片进行标注。
14.优选的,步骤2具体包括:
15.步骤2.1:采用ciou_loss作为bounding box的损失函数,定义为:
[0016][0017]
ciou_loss考虑到了覆盖面积、中心点距离和长宽比。其中α是权重系数,v表示检测框和真实框的长宽比的距离,b和b
gt
分别表示类别是佩戴口罩的预测框和未佩戴口罩的
预测框的中心点,ρ表示欧氏距离,c表示目标最小外接矩形的对角线距离。α和v的表达式为:
[0018][0019][0020]
步骤2.2:新型yolov5的非极大值抑制方法采用diou_loss,diou_loss不仅仅回考虑iou还会考虑两个中心点之间的距离,当两个框的中心点距离比较大时,会被认为是两个物体的框而不会因为遮挡被过滤掉。
[0021]
优选的,步骤3具体包括:
[0022]
步骤3.1:对步骤1所标注的数据集采用k

means++算法对数据集的目标框的高宽进行聚类,以此来确定模型中的anchor参数的最优值。
[0023]
步骤3.2:将标注的数据集按照9:1划分成训练集和测试集,将步骤3.1所计算出来的anchor参数输入到网络中。
[0024]
优选的,步骤3.3:设置网络训练参数:迭代批量设置为128、衰减系数为0.0005、总迭代次数为500次、初始学习率为0.001,迭代400次学习率降低至0.0001、迭代450次学习率降至0.00001。
[0025]
优选的,在步骤4中对步骤3训练好的新型yolov5模型进行推理测试。
[0026]
对步骤4的检测进行评估和测试,具体公式如下所示。
[0027][0028][0029][0030][0031]
其中tp表示模型预测正确佩戴口罩样本的数量,fp表示把未戴口罩识别成佩戴口罩的样本数量,fn表示将正确佩戴口罩识别成未佩戴口罩的样本数量。m表示类别数量,i∈(1,m)。准确率(precision)、召回率(recall)、平均精度值(map)。准确率和召回率越高,表示该模型对口罩检测效果越好,map是评估模型性能的一个重要指标,map值越高表示模型性能越好。
附图说明
[0032]
图1为本发明的方法流程图
[0033]
图2为本发明的yolov5网络结构图
[0034]
图3为本发明的训练过程各参数变化
[0035]
图4为本发明的部分图像检测结果。
具体实施方式
[0036]
下面结合本发明实例中的附图,对本发明一种新型yolov5的口罩佩戴实时检测方法进行具体地描述。
[0037]
一种新型yolov5的口罩佩戴实时检测方法,具体流程图如图1所示,包括以下具体步骤:
[0038]
步骤1:利用网络爬虫搜集到两千张佩戴口罩和未派戴口罩的图片,针对图片数量较少的问题,利用旋转、裁剪、拼接等方法对图片进行扩充。
[0039]
用labeling对图片进行标注,用矩形框标注图片中人脸的位置,并标注人脸的类别为佩戴口罩和未佩戴口罩,标注成yolo格式。
[0040]
将标注好的文件按照9:1划分成训练集和测试集。
[0041]
完成好以上操作,正确制作用于口罩佩戴检测的数据集。
[0042]
步骤2:对yolov5模型进行分析;
[0043]
yolov5于2020年5月份提出的一种单阶段目标检测算法,该算法是在yolov4的基础上在输入端、backbone基础网络、neck网络和输出层进行了改进,使其有着更快的推理速度和更小巧的网络结构。
[0044]
由图2可以看出来,yolov5的模型结构主要分为四个部分,即input输入端、backbone基础网络、neck网络和prediction输出层。
[0045]
yolov5的输入端包括mosaic数据增强和自适应图片缩放。yolov5输入端的mosaic数据增强算法是对cutmix数据增强算法的改进,由两张图片的拼接改进成四张图片的拼接,并且拼接方式也改进成随机的缩放、排布和裁剪。在目标检测过程中为了避免因为图片的长宽比不同,从而导致图片在放缩的过程中没有用的信息太多,这些过多的信息会导致模型的推理速度变慢。yolov5对此进行修改,采用自适应图片缩放,在图像缩放的过程中尽可能少的添加黑边,会提高模型的推理速度。
[0046]
backbone基础网络包含focus结构和csp结构。其中focus模块在yolov5中是图片进入backbone前,对图片进行切片操作。以yolov5s为例,原始的640*640*3的图像输入focus结构,采用切片操作,先变成320*320*12的特征图,再经过一次卷积操作,变成320*320*32的特征图,最终得到了没有信息丢失情况下的二倍下采样特征图。
[0047]
yolov5中设计了两种csp结构,backbone基础网络中使用的是csp1_x,neck网络中使用的是csp2_x。
[0048]
yolov5的neck网络在yolov4的基础上进行了改进,由csp2_x网络来代替普通的卷积网络,使网络特征融合的能力得到了加强。在yolov5的neck网络中依然使用了fpn+pan的结构,其中fpn是由自上向下,将上面的强语义特征传到下面,但是没有传递定位信息。pan是在fpn之后增加一个由下向上的特征金字塔,将下面的强定位信息传到上面,以此来对fpn进行补充。
[0049]
prediction输出层包括bounding box regression loss和nms。yolov5中采用其中的giou_loss做bounding box的损失函数。在目标检测的后处理过程中,针对很多目标框的筛选,采用加权nms的方式。
[0050]
以上对yolov5的分析,发现yolov5在自然场景下对目标的检测在准确度和速度上都有着较好的表现,但是针对口罩这种小目标,且在人群密集处容易被遮挡的问题准确率
有所下降,容易出现漏检现象。
[0051]
步骤3:对yolov5模型进行改进优化
[0052]
针对以上问题,本发明对yolov5进行改进,使其在口罩佩戴检测上准确度提高,能够更好的检测被遮挡的密集人群是否佩戴口罩。
[0053]
初始候选框的改进
[0054]
在yolo算法中,针对不同的数据集,都会有初始设定长宽的锚框。在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框ground truth进行比对,计算两者差距,再反向更新,迭代网络参数。因此初始候选框的参数值对后面yolov5的训练至关重要。本文算法采用k

means++算法对训练集所标记的目标框的高宽进行聚类,来确定模型中anchor参数的最优值。
[0055]
损失函数的改进
[0056]
yolov5模型使用giou_loss做bounding box的损失函数,如公式(1)所示,giou_loss虽然解决了iou_loss中检测框和真实框不相交时,loss为0的问题,但其收敛速度慢,并且当真实框和检测框相互覆盖时,无论两者的位置在哪,giou_loss都是一个定值。
[0057][0058]
为解决这些问题,本文采用ciou_loss作为bounding box的损失函数,如公式(2)所示,其中α是权重系数,v表示检测框和真实框的长宽比的距离,b和b
gt
分别表示类别是佩戴口罩的预测框和未佩戴口罩的预测框的中心点,ρ表示欧氏距离,c表示目标最小外接矩形的对角线距离,w
gt
是检测框的长,h
gt
了是检测框的宽,w是真实框的长,h是真是框的宽。ciou_loss考虑到了覆盖面积、中心点距离和长宽比。
[0059][0060][0061][0062]
nms的改进
[0063]
yolov5采用的是加权nms,在加权nms算法中iou是唯一考量的因素。但是对于口罩检测,当两个人挨得很近时,口罩容易被遮挡,由于iou值比较大,往往经过nms处理后,只剩下一个检测框,这样导致漏检的错误情况发生。本文对此进行改进,用diou_nms来代替加权nms,diou_nms不仅仅考虑iou还会考虑两个框中心点之间的距离,当两个框的中心距离比较大时,可能会认为这是两个物体的框而不会被过滤掉。
[0064]
步骤4:训练新型yolov5网络
[0065]
本发明一种新型yolov5的口罩佩戴实时检测方法的实验环境配置选用windows10操作系统,使用nvidia geforce rtx 2060显卡,深度学习框架为pytorch。具体配置如表1所示:
[0066]
表1实验环境配置
[0067][0068]
设置网络训练参数:迭代批量设置为128、衰减系数为0.0005、总迭代次数为500次、初始学习率为0.001,迭代400次学习率降低至0.0001、迭代450次学习率降至0.00001。
[0069]
将步骤3中k

means++算法确定的anchor值输入到新型yolov5中,将步骤1制作的数据集用于训练。
[0070]
步骤5:新型yolov5模型评估和测试
[0071]
本文所采取的模型评价指标包括:准确率(precision)、召回率(recall)、平均精度值(map)。准确率和召回率越高,表示该模型对口罩检测效果越好,map是评估模型性能的一个重要指标,map值越高表示模型性能越好。具体公式如下所示。
[0072][0073][0074][0075][0076]
其中tp表示模型预测正确佩戴口罩样本的数量,fp表示把未戴口罩识别成佩戴口罩的样本数量,fn表示将正确佩戴口罩识别成未佩戴口罩的样本数量。m表示类别数量,i∈(1,m)。
[0077]
模型训练过程中各评价指标的变化如图3所示,模型训练完成之后,用测试集进行测试,测试集的准确度达到了96.5%,map达到了93.1%。将本文算法和yolov5进行比较,在准确率上提升4.5%,map提升了1.1%,数据测试对比如表2所示,证实了本发明算法的可行性。
[0078]
表2算法性能对比
[0079][0080]
部分图像测试结果如图4所示,结果表明:对于小目标和人群密集处存在口罩遮挡的情况可以比较好的检测出来,降低了漏检情况。
[0081]
本发明所提出的方法针对yolov5对口罩这种易于被遮挡的小目标检测时准确率
下降,出现漏检的情况,在yolov5的基础上,改进了初始候选框的选择,替换了损失函数和非极大值抑制,通过实验证明了可行性。尽管已经示出和描述了本发明的具体实施方式,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些具体实施方式进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1