基于YOLO-Mask算法的口罩佩戴检测方法 下载: 1569次
1 引言
自2019新型冠状病毒(COVID-19)肺炎疫情暴发以来,社会经济的发展和人们的生产生活都受到不同程度的影响[1]。面对外部环境不断变化的形势,我国进入常态化疫情防控新阶段,疫情防控工作面临新的巨大挑战[2]。疫情期间,正确佩戴口罩是阻止病毒在人与人之间通过飞沫传播的重要举措,但公众主动佩戴口罩的意识还有待增强[3]。因此,在公共场合进行有效的口罩佩戴检测是十分必要的,此举能够及时提醒人们正确佩戴口罩,降低人员交叉感染的风险,保障人员生命安全。相比于行人检测、人脸检测等检测任务,口罩佩戴检测不仅需要识别出人脸目标,还需要对目标正确佩戴口罩和错误佩戴口罩情况进行准确区分,因此对检测算法学习和利用细节特征的能力有更高的要求。口罩佩戴检测的难点在于小目标和被遮挡目标的检测,除此之外,有关口罩佩戴的公开数据集较少且数据不完善,需要重新建立数据集并进行标注。
目前,专门用于口罩佩戴检测任务的算法极少,文献[ 4]通过改进RetinaFace人脸识别算法,实现了口罩佩戴检测。但事实上,通用检测算法具有更好的泛化能力,在通用算法的基础上,面向检测对象进行算法改进,有望取得更好的检测效果。从目标检测领域来看,随着深度学习在领域内应用与发展,先后出现了基于区域建议的R-CNN系列[5-7]和基于回归的SSD[8]、YOLO系列[9-11]等主流通用目标检测方法。比较而言,基于区域建议的目标检测算法在检测精度上表现更好,基于回归的目标检测算法,检测速度更快,但检测精度略有不足。上述算法中,YOLOv3凭借特征金字塔结构进行不同层次的特征信息融合,在小目标检测上较其他几种主流算法有一定的优势。
YOLOv3是一种以Darknet-53为基础网络,通过FPN(Feature Pyramid Networks)[12]进行多尺度特征融合的端对端目标检测算法。YOLOv3具有检测速度快、综合性能强的特点,但直接将其应用于某些特定的检测对象时,由于受到场景复杂性和特征多样化等因素的影响,检测效果不能满足要求,需对其进行针对性改进。文献[ 13]利用空洞卷积对YOLOv3的基础网络进行改进,提高了机场中飞机目标的检测精度。文献[ 14]通过设计新的损失函数替代平方和损失函数,减少模型误差,提高了收敛速度。文献[ 15]采用反残差网络提取特征,使计算复杂度降低,实现了实时车辆的检测。文献[ 16]通过评估卷积核的权重并进行剪枝处理,实现了模型的压缩和加速,满足了工业上对织物缺陷检测的要求。
在实际的口罩佩戴目标检测过程中,由于场景较为复杂,正确佩戴口罩和错误佩戴口罩的差异较小,原始YOLOv3算法表现并不理想,尤其在被遮挡目标和小目标检测上,检测效果较差。本文尝试在YOLOv3算法的基础上进行改进,提出一种针对口罩佩戴检测任务的检测算法。SENet(Squeeze-and-Excitation Networks)[17]是一种注重特征通道关系的网络结构,通过建模卷积特征各个通道之间的作用关系来改善网络模型的表达能力。将其应用在口罩佩戴的检测上,可以增强重要特征的通道权重,从而提高检测的效果。本文将SENet引入YOLOv3基础网络,提出一种以SEDarknet-53为基础网络,以采用路径聚合策略的FPN作为特征融合网络的YOLO-Mask算法。实验结果表明,YOLO-Mask算法提高了对小目标和被遮挡目标的检测率,与SSD、Faster R-CNN、原始YOLOv3等主流算法进行对比,检测效果更好,鲁棒性更强。
2 YOLO-Mask算法相关模型
2.1 YOLOv3算法原理
原始的YOLOv3以去除全连接层的Darknet-53作为其前置网络,用FPN特征金字塔替代全连接层进行特征融合。整体网络结构如
该模型中输入图片尺寸选取416×416,前置网络中Residual block3、Residual block4、Residual block5这三个残差块输出的特征层作为FPN的输入。在FPN中,特征图经过通道和尺寸调整后,进行特征融合,其中Convolutional set包含5层1×1、3×3、1×1、3×3、1×1的卷积层。三个Convolutional set分别输出尺度为52×52、26×26、13×13的特征图,然后通过YOLO head得出预测结果。YOLO head生成的预测结果包括类别、置信度信息和预测框的调整参数。利用置信度阈值和非极大值抑制对预测框进行筛选,得到最终的检测结果。
2.2 SEDarkNet-53主干网络
SEDarkNet-53在原有Darknet-53的基础上,引入了SENet通道注意机制,其目的是通过预测输出通道的权重,对各个通道进行加权,从而关注信息量大的通道特征,抑制对当前任务不太重要的通道特征,进而改善网络性能。SENet主要由压缩(Squeeze)和激励(Excitation)两部分组成。SENet首先对输入的特征图进行压缩操作,即用全局平均池化层将特征图的维度压缩成一维,得到通道级的全局特征,以获得更广的感受区域。然后对全局特征进行激励操作,即通过全连接层学习各个通道间的关系,得到不同通道的权重。接下来通过Sigmoid函数将获得的权重归一化到(0,1)之间;最后通过Scale的操作将归一化后的权重加权到每个通道的特征上。
将SENet引入到Residual残差单元的残差分支中,可得到SE-residual注意力残差单元,二者结构如
2.3 改进的特征融合网络
特征提取过程中,浅层网络和深层网络提取到的特征有所不同。浅层网络旨在学习更多的细节信息,深层网络旨在学习更多的语义信息。特征融合网络将两种特征信息进行融合,实现特征增强,同时避免了使用单一特征信息而造成大量信息丢失的现象。原始YOLOv3算法的特征融合网络为FPN,其通过特征金字塔结构融合不同尺度特征信息,从而实现多尺度检测。在口罩佩戴检测的任务中,为了提高对小目标和遮挡目标的检测能力,网络模型需要利用更多的细节信息,因此需要对FPN进行改进。PANet(Path Aggregation Network)[18]是一种最早应用于图像实例分割任务的路径聚合网络,其通过自下而上的路径聚合策略,利用低层次特征对其他层次特征进行加强,提升了网络对细节的感知能力。将路径聚合策略与FPN结合,可以更有效地利用细节特征信息,改善模型对小目标和被遮挡目标的检测效果。网络结构如
图 3. 改进的特征融合网络结构。 (a)特征金字塔网络;(b)自下而上路径聚合
Fig. 3. Improved feature fusion network structure. (a) FPN; (b) bottom-up path aggregation
3 YOLO-Mask口罩佩戴检测算法
3.1 YOLO-Mask网络结构
本研究用SEDarknet-53作为YOLOv3的基础网络。首层是3×3的卷积层,然后经过5个分别包含有1、2、8、8、4个注意力残差单元的SE-residual block进行残差学习。每个SE-residual block之前是Conv(3×3)+BN+Leaky ReLU的组合,卷积核步长为2,作用是下采样。SEDarknet-53输出3种不同尺度的有效特征层,并传给采用路径聚合策略的FPN网络进行特征融合。SE-residual block5输出的特征层经过Convolutional set1实现通道调整,并在卷积和上采样后,与SE-residual block4输出的张量拼接融合,同样地,融合后的信息经过Convolutional set2、卷积和上采样,然后与SE-residual block3的输出进行融合,此次融合后的信息一方面通过YOLO head3进行尺度为52×52的预测,一方面进行下采样,再次融合Convolutional set2的输出信息,5次卷积处理后,作为YOLO head2的输入,进行尺度为26×26的预测。同理,可得到YOLO head1的输入,进行尺度为13×13的预测。YOLO head包含一层Conv(3×3)+BN+Leaky ReLU卷积和一层普通Conv(3×3)卷积,利用其输出结果对先验框进行调整,可得到实际预测框。网络结构如
与原始的YOLOv3算法相比,YOLO-Mask网络利用对卷积特征各个通道之间的作用关系来建模,使网络具有更强的表达能力,同时能够更充分地利用不同尺度特征层的信息,提升算法的检测精度。
3.2 YOLO-Mask的损失函数
YOLO-Mask的损失函数L包含三部分:目标置信度损失Lconf、目标类别损失Lcla、目标定位损失Lloc。其中,目标定位损失Lloc采用DIoU Loss[19]代替原有的均方误差损失,使损失函数L得到优化。DIoU Loss综合考虑预测框与真实框的重叠程度、中心点距离两个主要几何要素,改善了回归的精度。损失函数的表达式为
式中:S2有3种取值,分别为13×13,26×26,52×52,代表着YOLOv3输出的3种不同尺度特征图上的网格数;B表示先验框个数;
式中:S2、B和
式中:ρ2(b,bgt)代表预测框和真实框中心点的欧氏距离;IIoU表示预测框和真实框面积的交并比;c代表能够同时包含预测框和真实框的最小闭包区域的对角线距离。DIoU Loss的采用,改善了回归精度,降低了预测误差。
4 实验与结果分析
4.1 实验平台
实验环境配置如下:Intel i7-9750H处理器,Nvidia GeForce RTX 2060显卡,16 GB内存,操作系统为Ubuntu 16.04。实验采用Python编程语言,深度学习框架为Keras。
4.2 数据集构建和模型训练
由于目前人脸口罩佩戴图片的数据集还比较少,照片质量不高,因此本文使用WIDER Face、MAFA两个开源的人脸图片数据集部分图片,并通过个人拍摄和互联网搜集,自制了人脸口罩佩戴数据集。数据集包含各种场景下人们佩戴口罩的图片,共3000张。数据集图片包含不同场景下人们口罩佩戴正确、错误和无佩戴口罩三种情况,其中还包括部分遮挡、阴影等情形,如
针对数据集中错误佩戴口罩图片相对较少而产生的样本失衡的问题,利用随机裁剪、旋转、色彩变换等方法对部分数据进行样本增强,将数据集扩展为4500张,使得样本多样性增加,样本质量提高,同时有效缓解了训练过程中的过拟合现象。根据实验要求将数据集转换成VOC2007数据集格式,并用LableImg标注软件进行数据标注,标注类别分别为right_mask、wrong_mask、no_mask三类。
在数据集中随机选取4000张图片作为训练样本,500张图片作为测试样本。使用Adam优化器对网络进行优化,初始学习率(learn rate)设置为0.001,并采用自适应调整策略对学习率进行动态调整,其中调整倍率(factor)为0.5,忍受值(patience)为2,当连续两个Epoch指标不发生变化时,学习率以调整倍率调整当前学习率。为了防止过拟合,当连续6个Epoch评价指标不变化时,训练过程终止。训练时一个批次包含4张图片,共进行120个Epoch的训练,最终loss值收敛到 3 左右。参数设置如
4.3 评价指标
口罩佩戴检测中各个类别的检测精度都很重要,尤其在疫情防控的形势下,误检和漏检都可能会增大疫情传播的风险。因此本文选择平均精度(AP,XAP)和平均精度均值(mAP,XmAP)作为目标检测算法的评价指标。这两种评价指标兼顾了精确率(P)和召回率(R),表达式为
式中:以本文所检测目标中的right_mask类别为例,NTP表示检测模型将正确佩戴口罩目标检测为right_mask的数量,NFP表示误把错误佩戴和无佩戴口罩目标检测为right_mask的数量,NFN表示误把正确佩戴口罩目标检测为wrong_mask或no_mask的数量。分别取召回率和精确率的值作为横坐标和纵坐标,绘制了一条P-R曲线,曲线下的面积即为AP。对所有类别求AP并取均值即为平均精度均值。mAP是评估模型性能的重要指标,可以反映网络模型的整体性能,避免评价过程中出现某些类别性能极端化而弱化其他类别性能的问题。
4.4 结果分析
以数据集中随机选取的500张图片作为测试集进行测试。将实验结果与原始YOLOv3、Faster R-CNN、SSD等主流目标检测算法的检测结果进行对比分析,检测结果如
图 6. 不同算法检测结果对比。(a)(b)(c) SSD检测结果;(d)(e)(f) Faster R-CNN检测结果; (g)(h)(i) YOLOv3检测结果;(j)(k)(l) YOLO-Mask算法检测结果
Fig. 6. Comparison of detection results of different algorithms. (a)(b)(c) SSD detection results; (d)(e)(f) Faster R-CNN detection results; (g)(h)(i) YOLOv3 detection results; (j)(k)(l) YOLO-Mask detection results
从各检测算法的检测结果来看,SSD算法的检测效果不太好,尤其是对小目标的检测效果较差,如
改进YOLOv3算法检测结果的P-R曲线如
图 7. YOLO-Mask算法各类目标P-R曲线。(a) Right_mask; (b) wrong_mask; (c) no_mask
Fig. 7. Single target P-R curves of YOLO-Mask algorithm. (a) Right_mask; (b) wrong_mask; (c) no_mask
表 2. 不同检测算法性能指标对比
Table 2. Comparison of performance indicators of different detection algorithms unit: %
|
从检测算法的性能指标来看:与Faster R-CNN、SSD等算法相比,YOLO-Mask算法具有更高的检测精度。与原始YOLOv3相比,本文算法在3种类别检测目标的平均检测精度上分别提高4.49个百分点、11.16个百分点和7.22个百分点,在mAP上提高了7.62个百分点。综上所述,相比于其他3种算法,YOLO-Mask算法在性能上有一定优势。模型能够更充分地使用低层次特征信息,提高了对小目标的检测率;注意力机制减少了无用特征对模型的干扰,然后通过路径聚合策略的FPN网络实现了特征增强,利用增强后的特征信息进行目标检测,改善了遮挡目标的检测效果,提升了模型性能。实验结果证明了算法的有效性。
5 结论
本文提出一种基于YOLO-Mask算法的口罩佩戴检测方法,用于解决小目标和被遮挡目标检测困难的问题。首先,采用通道注意力机制对YOLOv3的特征提取网络进行改进,从而得到SEDarkNet-53主干网络,提高有用特征的通道权重,抑制无用特征对模型的干扰。然后,利用FPN和路径聚合策略进行特征融合,加强低层特征的使用,改善了网络对小目标和被遮挡目标的检测效果。在损失函数中引入DIoU损失,减少预测框回归的误差,提高了模型性能。最后,本文建立了自然场景下口罩佩戴数据集,并在数据集上进行算法验证和对比实验。实验结果表明,本文提出的YOLO-Mask算法平均精度均值达到93.33%,在小目标和被遮挡目标检测上取得不错的检测效果,相比于其他主流算法,本文算法有较好的准确性和鲁棒性,在防控疫情工作上具有良好的应用前景。
[1] 夏上, 李佼, 倪志良. 新冠肺炎疫情对我国社会经济发展的影响[J]. 财政监督, 2020(10): 5-9.
Xia S, Li J, Ni Z L. The impact of the new crown pneumonia epidemic on my country's social and economic development[J]. Financial Supervision, 2020(10): 5-9.
[2] 虞乔木, 郑东桦. 新冠肺炎疫情防控常态化研究[J]. 中国公共安全(学术版), 2020(1): 65-68.
Yu Q M, Zheng D H. Study on the normalization of epidemic prevention and control of the corona virus disease 2019[J]. China Public Security (Academy Edition), 2020(1): 65-68.
[3] 周艳萍, 姜怡, 饶翮, 等. 新型冠状病毒肺炎疫情期间公众使用口罩现状调查[J]. 护理研究, 2020, 34(11): 2041-2044.
Zhou Y P, Jiang Y, Rao H, et al. Investigation on status quo using masks among the public during the outbreak of COVID-19[J]. Chinese Nursing Research, 2020, 34(11): 2041-2044.
[4] 牛作东, 覃涛, 李捍东, 等. 改进RetinaFace的自然场景口罩佩戴检测算法[J]. 计算机工程与应用, 2020, 56(12): 1-7.
[5] GirshickR, DonahueJ, DarrellT, et al.Rich feature hierarchies for accurate object detection and semantic segmentation[C] //Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, June 23-28, 2014, Columbus, OH, USA.New York: IEEE Press, 2014: 580- 587
[6] GirshickR. Fast R-CNN[C] //2015 IEEE International Conference on Computer Vision (ICCV), December 7-13, 2015, Santiago, Chile.New York: IEEE Press, 2015: 1440- 1448.
[7] Ren S Q, He K M, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149.
[8] LiuW, AnguelovD, ErhanD, et al. SSD: single shot MultiBox detector[M] //Computer Vision-ECCV 2016. Cham: Springer, 2016: 21- 37.
[9] RedmonJ, DivvalaS, GirshickR, et al.You only look once: unified, real-time object detection[C] //2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 27-30, 2016, Las Vegas, NV, USA. New York: IEEE Press, 2016: 779- 788.
[10] RedmonJ, FarhadiA. YOLO9000: better, faster, stronger//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), July 21-26, 2017, Honolulu, HI, USA. New York: IEEE Press, 2017: 6517- 6525.
[11] RedmonJ, FarhadiA. YOLOV3: an incremental improvement[C] //2018 IEEE Conference on Computer Vision and Pattern Recognition. Salt Lake City, UT. New York: IEEE Press, 2018: 1- 6.
[12] Lin TY, DollárP, GirshickR, et al.Feature pyramid networks for object detection[C] //2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), July 21-26, 2017, Honolulu, HI, USA.New York: IEEE Press, 2017: 936- 944.
[13] 郭进祥, 刘立波, 徐峰, 等. 基于YOLOv3的机场场面飞机检测方法[J]. 激光与光电子学进展, 2019, 56(19): 191003.
[14] 吕铄, 蔡烜, 冯瑞. 基于改进损失函数的YOLOv3网络[J]. 计算机系统应用, 2019, 28(2): 1-7.
[15] 李汉冰, 徐春阳, 胡超超. 基于YOLOv3改进的实时车辆检测方法[J]. 激光与光电子学进展, 2020, 57(10): 101507.
[16] 周君, 景军锋, 张缓缓, 等. 基于S-YOLOV3模型的织物实时缺陷检测算法[J]. 激光与光电子学进展, 2020, 57(16): 161001.
[17] HuJ, SunG, Wu EH, et al.Squeeze and excitation networks[C] //2018 IEEE Conference on Computer Vision and Pattern Recognition. Salt Lake City, UT.New York: IEEE Press, 2018: 7132- 7141.
[18] LiuS, QiL, Qin HF, et al.Path aggregation network for instance segmentation[C] //2018 IEEE Conference on Computer Vision and Pattern Recognition. Salt Lake City, UT.New York: IEEE Press, 2018: 8759- 8768.
[19] Zheng ZH, WangP, LiuW, et al.Distance-IoU Loss: faster and better learning for bounding box regression[C] //Proceedings of the 2020 AAAI Conference on Artificial Intelligence, February 7-12, 2020, Hilton Midtown, New York. Menlo Park, CA: AAAI Press, 2020.
Article Outline
曹城硕, 袁杰. 基于YOLO-Mask算法的口罩佩戴检测方法[J]. 激光与光电子学进展, 2021, 58(8): 0810019. Chengshuo Cao, Jie Yuan. Mask-Wearing Detection Method Based on YOLO-Mask[J]. Laser & Optoelectronics Progress, 2021, 58(8): 0810019.