宋 威,谢 豆,石景文,刘文军
(苏州工业职业技术学院,江苏 苏州 215104)
在疫情防控期间需要对流动的人口进行严格把控,尤其要在校园、车站等人流量多的地点,对行人进行体温检测和口罩佩戴检测,确保通行人员体温正常且规范佩戴口罩能有效地控制病毒传播。体温检测中测温方式有接触式测温和非接触式测温。接触式测温虽然价格低廉,但测温速度慢,难以满足快速测温的需求。非接触式测温有辐射温度计和红外线测温仪等,其中红外线测温仪可同时测量多人体温,其非接触式方式降低了病毒进一步传播的可能,在测温速度上也有着明显的优势。文献[4-5]提出一种可用于新冠肺炎防控的红外测温枪,通过红外线对人体进行无接触测温,达到减少人员接触的目的。但这些检测通常需要耗费大量的时间和人力,使用智能系统代替人工检测来减轻人工负担成为一种趋势。
当前市面上的疫情防控系统功能单一且价格昂贵,大多数设备只具有单一的测温检测或口罩佩戴检测功能。为了使人员排查工作更高效,设计并实现了一种口罩佩戴和体温检测系统。系统主要包括口罩佩戴检测和体温检测两部分。在口罩佩戴检测部分,使用了深度学习,得益于近年来深度学习在各种生产环境中的大量应用,许多卷积神经网络也应运而生。口罩佩戴检测需要进行定位和分类两个步骤,选用深度学习中的目标检测模型构建口罩检测模块。目标检测模型分为一阶检测器和二阶检测器。前者包括SSD、YOLO等,后者包括Faster RCNN、Mask RCNN等。一阶检测器与二阶检测器相比检测的速度更快、在精确度上略低。综合实际应用考虑,在口罩检测这种对实时性要求较高的场景下,选用一阶检测器中的YOLOv4模型进行训练。
科技的不断进步促进了人工智能的兴起。人工智能领域的深度学习方面,卷积神经网络表现较为突出,特别是在对图像的判断方面,相比于传统的机器学习,卷积神经网络具有巨大的优势。受人脑启发,卷积神经网络通过构建神经网络层学习大量数据来获得判断能力。基本的卷积神经网络由输入层、卷积层、池化层、全连接层、输出层组成。
卷积神经网络在图像分类、检测、分割等方面都有着成熟的应用。在本系统中口罩检测模块需要对口罩进行定位和判别,因此需要使用目标检测类的神经网络。YOLO是目标检测网络中的一阶检测器。之所以称为一阶检测器是因为YOLO将模型进行目标检测时的定位和分类这两部分合二为一,同时进行,大大提高了检测速度。YOLOv2采用多尺度的输入图像进行训练,在YOLO的基础上提升了精度。YOLO9000使用ImageNet数据集和COCO数据集联合进行训练,使YOLO从只能判别20个类别到可以同时判别9 000个类别。YOLOv3在YOLOv2的基础上对神经网络结构进行了改进,输出3个不同尺度的卷积层进行判断,使网络能够检测不同比例大小的物体。本系统使用的YOLOv4在YOLOv3的基础上进行了激活函数和数据预处理、特征提取网络的优化,精度得到进一步提升。
进行模型训练之前应准备好相应的数据集。如图1所示为数据集中的部分图片。图2展示了数据集的数量分布情况。浅灰色为人员佩戴口罩的图片数量,深灰色为人员未佩戴口罩的图片数量。口罩检测数据集总共包含1 600张图片。训练集有1 200张图片,其中600张图片中人员已佩戴口罩,600张图片中人员未佩戴口罩;测试集有400张图片,其中人员已佩戴口罩的图片有200张,人员未佩戴口罩的图片有200张。人员未戴口罩与戴口罩的图片数量相等,减少了模型存在类别不平衡的可能性。
图1 训练数据集截图
图2 数据集分布情况
在收集好原始的数据图片后,需要对图片进行标注。标注的主要意义是标明图片中每个人脸所在的位置以及是否佩戴口罩。每张图片都有与之所对应的JSON格式的标注文件。标注内容见表1所列。参数folder和filename分别为图片所在的文件夹名称、图片的命名。path为图片在系统中的完整路径。width、height分别为图片的宽、高,单位为像素。depth为图片的颜色通道数,在本数据集中为3通道。name表示图片里检测框中的标签名称,在本系统为Mask(戴口罩)或No Mask(不戴口罩)。xmin和ymin分别表示检测框的左上角横纵坐标数值,xmax和ymax分别表示检测框的右下角横纵坐标数值,通过这四个值可以确定检测框中物体的位置。
表1 数据集标注
进行模型训练需要准备好训练数据集和搭建模型结构。本文在YOLOv4模型的基础上搭建口罩检测的模型结构。如图3所示,本系统模型主要包括四个部分:CSPDarknet53、SPP、PANet和YOLOHead。CSPDarknet53是整个模型的开头部分,本系统接收的输入尺寸为608×608像素。输入尺寸越大,越有利于提高模型检测效果。但输入尺寸越大,训练模型所需的时间越长,对设备的要求也更高。
图3 模型的构建
在接收输入数据后进行卷积,然后进入CSPDarknet53的核心部分Resblock_body。Resblock_body为多层卷积进行堆叠的特征提取块,连续的堆叠能提取出更高维的特征信息。CSPDarknet53部分完成后会输出三个不同尺寸的卷积,这三个卷积部分分别被送入PANet结构和SPP结构。将尺寸最小的卷积部分送入SPP结构中,SPP结构包含不同尺寸的池化层。将经过SPP结构的卷积和另外两个卷积一起送入PANet结构中进行堆叠、卷积、上采样或下采样操作。操作输出到YOLOHead中,尺寸分别为52×52×256、26×26×512、13×13×1 024。在YOLOHead中对三个不同的卷积层进行目标检测和分类,并在最后输出判断结果。
模型训练时采用迁移学习进行训练。迁移学习是在其他预训练模型的基础上进行第二次训练。使用迁移学习不仅可以大大缩短模型训练的时间,还能够提高模型的泛化能力。模型使用的预训练模型为COCO数据集预训练模型。COCO数据集是一个包含大量目标检测和分割图片的数据集,总共有81个类别,数据图片超过33万张。适合在迁移学习中使用,能更好地学习新的目标检测类别。
训练时加载预训练模型,首先冻结模型的一部分,暂停更新这部分模型权重。冻结后训练25轮,每轮的批数为120,训练使用的学习率为1×10。训练完成后,再解冻原先的部分,再次训练25轮,每轮训练的数量为240,训练使用的学习率为1×10。训练使用的激活函数为Mish函数,如式(1)所示:
其中表示输入。在经过卷积或全连接之后使用激活函数可以使模型学习到性能更好的参数。将训练完成的模型保存以便进行后续的优化和评估。
图4给出了模型经过50轮训练的性能曲线。图中曲线为50轮训练中每一轮训练后模型的损失率。横轴为训练的轮次Epoch,纵轴为损失值Loss。模型的Loss(损失率)从28%下降至7.7%。Loss越低,模型的误差越小,准确性越高。
图4 模型损失率评估
图5展示了模型检测到的Mask和No Mask两类标签下的对象数。根据这些对象数,能够算出模型的精确度和召回率。图中True Positive表示预测结果与实际标签相同的数量,False Positive表示预测结果与实际标签不同的数量。本系统共预测了Mask标签下的1 035个样本,其中预测正确的数量为758,预测错误的数量为277;共预测了No Mask标签下的502个样本,其中预测正确的有323个标签,预测错误的数量为179个。
图5 模型检测数量评估
图6中展示了模型Mask类和No Mask类的平均准确率(AP)和Map值。平均准确率可以弥补精确度和召回率的不足,更全面地体现模型的预测能力。AP计算公式为:
式中,为衡量模型准确的指标召回率。将模型的召回率划分成11个区间,每个区间包含多个准确率,并且将同一区间的准确率用集合~表示,接着取出每一份中最大的准确率;最后将得到的11个区间数值求和从而得到AP。本模型中Mask类别的平均准确率为67.77%,No Mask的平均准确率为93.73%。通过平均准确率可以根据类别数求出模型的Map值。Map值的公式为:
式中:AP为平均准确率;为模型的类别数,在本模型中为2。如图6所示,模型的Map值为80.75%,优于大部分目标检测模型。
图6 模型准确率评估
本系统的体温检测模块采用红外测温枪进行体温检测。系统集成流程如图7所示,包含口罩检测和测温两方面功能。摄像头实现人脸数据采集和处理,从鲁棒性考虑增加活体检测功能。人脸识别完成后分别集成口罩佩戴和温度检测两个功能模块,最后通过装置的屏幕和语音提醒提升系统的可交互性。
图7 系统集成流程
本系统中将口罩检测和体温检测相结合部署在终端应用中。采用Python中的PyQt5框架进行搭建。如图8所示,当运行本系统时,摄像头与测温枪同时启动收集信息并传入电脑进行检测。检测完成后的结果将显示在屏幕中,并对是否允许通过给出提示。图8(a)中通行人员未佩戴口罩,虽然体温正常但不允许通过,并在屏幕中给予不允许通过的原因。图8(b)中通行人员正确佩戴口罩且体温正常后才能允许通行。
图8 系统实现展示
针对疫情人员流动防控的实际需求,提出了一种口罩佩戴和体温检测系统的设计与实现。首先介绍了卷积神经网络、目标检测网络YOLO;接着给出了口罩检测算法的详细设计,包括数据集、数据集标注、模型构建、模型训练和模型评估;最后,对各功能模块进行集成和实现。系统能有效快捷地检测是否佩戴口罩和人体体温,较好地满足了实际的应用需求。