APP下载

基于改进YOLOv3的口罩佩戴检测算法

2022-09-07徐泽昊

信息记录材料 2022年7期
关键词:卷积损失口罩

徐泽昊,刘 川

(巢湖学院信息工程学院 安徽 合肥 238014)

0 引言

目前防控工作中行人佩戴口罩检测无法实现高精度识别。因此针对口罩佩戴的检测成为研究热点。朱亚茹等[1]采用特征脸算法,通过面部区域特征来判断行人是否佩戴口罩,但是此算法的检测准确性不高。相比传统算法,基于深度学习的目标检测算法可以获取到更深层次的特征,适用于背景复杂的情况并能够捕捉到目标物体的泛化特性,从而使准确率得到了提高。

目前,针对目标检测的深度学习方法有两大类。一种是基于候选区的两阶段检测算法,例如:Fast R-CNN、Faster R-CNN、Mask R-CNN等。它代替了传统的滑动窗口,通过神经网络等方式来进行候选区域的生成。该方法可以很好地解决滑动窗出现的目标不明确的问题。刘攀等[2]利用Faster-RCNN算法实现了口罩佩戴检测,但这类算法检测速度较慢、时效性低,不利于进行实时监测人流量大的地方。另一类是基于回归的一阶段的目标检测算法,例如:RetinaNet、SSD、YOLOv2、YOLOv3等。它们运用卷积神经网络来完成检测流程,选用了预定义候选框,直接在图像中回归出目标检测框和类型。这类算法更容易优化训练并且检测速率快,便于进行实时监测人流量大的地方。

本文提出一种基于Draknet-53为主干网络,进行优化改进后的口罩佩戴识别检测算法。首先,在原有的YOLOv3基础上添加了SPP(spatial pyramid pooling)结构,解决了输入神经网络图像尺寸差异的问题,使模型适应不同尺度物体。其次决定使用CIOU Loss作为模型的损失函数。由于CIOU损失函数中包含了重叠面积,中心点距离以及长宽比这三个主要因素,从而使得预测框更加符合真实框,尽而提高口罩佩戴检测效果。再使用爬虫工具来获取大量样本图片,经过Labelimg标记以及人工筛选自建样本集。最后再对样本集采用K-Means算法进行重新聚类得到新的锚框。经过自建样本集模型进行训练及其验证可得,改进后的口罩检测佩戴算法相比较原始YOLOv3,mAP提高了1.8%,FPS提高了1.3%。

1 YOLOV3算法简介

在2018年,Joseph Redmon等[3]在基于YOLOv2算法的基础之上提出了YOLOv3算法。YOLOv3将YOLOv2中的网络结构中Darknet-19换成了Darknet-53,取消了YOLOv2中的最大池化层,并引入了残差层结构。其次YOLOv3通过聚类方法得到9个锚框取代了YOLOv2中的5个锚框,并用多尺度预测替代了YOLOv2中的单一预测。YOLOv3最终会输出三种不同规模的特征图来对进行预测,它们的尺寸分别为13×13,26×26以及52×52[4]。这些优化使YOLOv3相比较YOLOv2具有更高的检测精度以及检测速度。Darknet-53结构如图1所示。

YOLOv3的网络架构可以分为DarkNet53主干网络和多尺度预测模块两部分。DarkNet53主干网络由53个卷积层组成,前52层卷积层主要由5组残差结构组成,最后一层为全连接层用来提取图片特征并进行分类[5]。YOLOv3结构中使用了卷积、BN和Leaky ReLU激活函数,这三部分构成了模型的最小组件也就是DarknetConv2D结构每一次卷积后都进行L2正则化,是为防止模型过拟合并且使求解更稳定快速。在多尺度预测中,YOLOv3模型中可以产生三种不同的特征层,分别用于检测不同大小物体的口罩佩戴情况[6-7]。这三个特征层采用上取样、特征融合、多次卷积处理后,最终通过DarknetConv2D和一次3×3卷积所获得。最后形成三种不同特征层分别用来预测不同大小目标的口罩佩戴情况。模型使用多尺度预测后,对于小目标检测的效果明显提高。

2 优化和改进

2.1 YOLOv3结构优化

YOLOv3在实时检测过程中若遇到遮挡,密集人群以及小目标检测等问题时整体检测效果欠佳。本文对原YOLOv3算法进行了相应的优化,从而使模型更加适合口罩佩戴场景下的检测。

空间金字塔池化(spatial pyramid pooling,SPP)是为解决输入神经网络图象尺寸不一致的问题而提出的一种解决方法。SPP可以将任意尺寸的图像进行多尺度的池化处理,并将其拼接为一段特定长度的特征量,对于图像形变具有较好的抑制。SPP结构如图2所示,SPP层有4条分支,分别是由池化核为5×5,9×9,13×13,步长为1的最大池化下采样这三个分支和由输入直接到输出这4个部分所构成。

由于在卷积神经网络中的全连接层对输入特征尺寸有大小的要求,且存在不同场景得到的数据大小不固定等问题,本文在原始YOLOv3中引入了SPP结构。本文中引入的SPP结构主要用于提取多尺度的局部信息,并将其与全局特征相结合,使其具有更多的特征表达,继而进一步提升了口罩佩戴检测的准确度。

本文在Darknet-53网络中的卷积集(Convolutional Set)模块加入了SPP结构。添加SPP结构后,模型可以进一步获取多尺度局部特征信息。然后,再将获得的局部特征与整体特征相结合,可以得到更为丰富的特征表达,进而让模型适应不同尺度的物体,提升预测精度。改进后的YOLOv3结构如图3所示。

2.2 YOLOv3损失函数优化

模型在进行检测时,会在图像上会生成大量候选框并会对生成的候选框是否含有物体进行预测,因此为计算出候选区域预测的准确性而引入了交并比IOU(intersection over union)[8]。IOU表示预测框和实际框之间的交叉比例,预测框和实际框重叠区域越大,则表明该算法预测效果越好。如公式1所示。其中A和B分别表示预测框和真实框的面积。

IOU虽然考虑到了重叠面积的问题,并且具有良好的尺度不变性,但依然存有缺陷。若当预测框和真实框之间不重叠时,IOU一直为0无法让网络进行调整,并且IOU只与两框之间的重叠面积相关,不能准确地反映出它们之间的一致性。为了解决IOU无法准确反映两框之间的重合程度以及无梯度回传等问题,因此本文引入了CIOU(Complete-IOU)损失函数替换原始IOU损失函数。

CIOU是在DIOU(Distance-IOU)的基础上增加了长宽比这一因素,而增加了这一因素会使损失函数更偏向于朝重叠区域增多的方向加以优化,特别是当IOU为零时,解决了IOU无梯度回传的问题。如公式2所示。

CIOU将损失函数的3个主要因素包括重叠面积(IOU)、中心点距离以及长宽比等都包含在其中。对比IOU,增加了中心点距离以及长宽比的因素,使目标框在回归时具有较好的稳定性,并能很好地解决IOU损失值在训练时产生发散等问题[9]。

3 实验与结果分析

3.1 实验环境

本文实验环境包含为,Intel i7-10700k CPU 3.8 GHz,英伟达RTX 2080 Ti 11G CPU,16 GB DDR4内存。系统的软件部分使用了Windows10操作系统、PyTorch 1.6.0框架,并使用CUDA10.2和CUDNN7.6为GPU训练进行加速。

3.2 数据集

本文所用的数据通过使用爬虫工具,对网络上的大量图片进行了爬取,对爬取下来的照片进行人工筛选,相应的数据清洗,然后整理并存储标记为原始数据集。原始数据集共有图片8 765张,其中未佩戴口罩的图片共有4 657张,佩戴口罩的图片共有4 108张。并按8:2的比例,将8 765幅图像分为训练集,验证集和测试集,训练集验证集共有7 012张,测试集共有1753张,接着对数据集进行裁剪,旋转和翻转等进行数据增加,并使用Labelimg进行标注,如图4所示。

3.3 anchor参数优化

YOLOv3中引入了先验框(anchor box)思想,采用K-Means聚类算法根据标注的目标框(ground truth)选取了对应的9个anchor box,并通过选择合适的anchor box来进一步提高检测的精确度以及加快检测速度。在口罩佩戴检测任务中,通过聚类计算是为了让anchor box更加接近真实框[10]。本文使用自建的样本集,通过对标注的口罩数据集进行聚类计算,经过多次测试,重新计算出9个anchor box。对13×13的特征层使用(235,217),(199,161),(163,207)来检测大型目标口罩佩戴情况。在对26×26的特征层上用(158,145),(104,66),(91,131)来检测中等目标口罩佩戴情况。对52×52的特征层上用(55,69),(40,39),(20,26)来检测较小目标口罩佩戴情况。

3.4 评测指标

为了检验优化之后的YOLOv3算法的性能,本文采取了mAP(mean average precision)平均精度和FPS(Frames Per Second)每秒传输帧数两种指标来对本文优化过后的算法性能进行了评估。如公式3、公式4所示。TP表示对图像进行分类时,把该图像划分为正的样本并正确地进行识别;FP表示将此图像分成正的样本,但是是错误的辨识。FN表示把该图像划分成负样本但识别有误。

3.5 实验结果

本文在对优化过后的模型进行训练,在此基础上,绘制出了训练过程中Ours模型和YOLOv3模型的损失值与Epoch的之间的对应关系曲线,如图5所示。

从图中可以看出,改进后的模型在训练代数为20前损失值迅速下降,训练代数达到80后损失值逐步平稳,当训练代数达到100后,损失值基本不变并且总损失值趋于2。而YOLOv3算法的总损失值整体变化趋势同本文改进后的模型相同,但当训练代数达到100后,总损失值趋向4,高于本文改进后模型的总损失值。

通过与其他算法的性能对比,进一步展示了本文算法的优势,对比结果如表1所示。本文算法输入的是分辨率为416×416的图片。由表1可知,与原YOLOv3模型相比,该模型的精确度提高了1.8%,FPS也提高了1.3%,达到了27.8。相比较一阶段SSD算法,本文优化后的模型mAP提升了5.5%,精确度得到了一定的提升,虽FPS相对降低,但仍然可以达到实时监测的要求。而相比较二阶段Faster-RCNN算法,本文优化后的模型FPS提升了25.5%,在检测速度上有了很大的提高,虽然在精确度上有细微的降低,但不影响最终检测结果的准确性。并且本文优化后的模型在低照度、故意遮挡以及密集场景等复杂情况下也具有较好的检测效果。

表1 整体检测性能对比

4 总结

本文针对在检测口罩佩戴情况时精确度较低,检测效果欠佳以及对于图像形变没有较好的鲁棒性等问题上对原算法进行了优化。基于YOLOv3的基础之上改进了anchor的参数,改进后的YOLOv3模型对于检测口罩佩戴的精确度提高了1.8%左右,并且在YOLOv3网络结构中增加了SPP结构能够产生固定大小的特征表示,使其对于图像的形变具备更好的鲁棒性[11]。最后我们将IOU替换成了CIOU,替换之后的算法将能够更好地反应出框的回归问题,相较于IOU效率更高,使模型更加的容易收敛,在将IOU替换成了CIOU后,FPS能够达到27.8左右,达到实时检测。

在实际检测中我们还发现阴雨、雾霾天气对检测效果会产生一定的影响,后续将考虑改进检测算法的模块以及添加相应的图像增强技术,从而进一步提高检测精确度。

猜你喜欢

卷积损失口罩
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
戴口罩的苦与乐
因为一个口罩,我决定离婚了
两败俱伤
从滤波器理解卷积
雾霾口罩
基于傅里叶域卷积表示的目标跟踪算法
菜烧好了应该尽量马上吃
损失