陈志琳,齐华,王相超
(西安工业大学电子信息工程学院,陕西西安 710021)
新冠疫情在全球范围内蔓延,对人们的生命安全造成了极大的威胁。新型冠状病毒主要利用空气中的飞沫、气溶胶等载体进行传播,所以在公共场合等人群密集的场所佩戴口罩可以起到很好的预防作用。由于人们对于佩戴口罩有着不同的理解,所以在公共场合佩戴口罩不仅需要人们自觉遵守,还需要采取相应手段进行监督管理。目前针对口罩佩戴情况的检查主要采用人工方式,这样的方式耗费人力,且容易产生漏检情况。
近年来,随着深度学习的快速发展,以RCNN[1-2]、Fast-RCNN[3-5]、SSD[6-8]、YOLO[9-12]等为主的深度学习算法在目标检测等多个领域都大放异彩[13]。该文通过研究相关目标检测算法,发现很多深度学习模型可以胜任口罩佩戴检测工作。文献[14]通过改进RetinaFace 算法来实现口罩佩戴检测,将改进的注意力机制引入特征提取网络中,取得了不错的效果,平均精度均值达到87.7%,帧率为18.3 帧/s;文献[15]通过优化FC 层来改进VGG-19网络模型,克服了多目标场景下重检、漏检、错检等不足;文献[16]以YOLOv3 算法为基础,引入了空间金字塔池化结构,利用特征融合策略实现了特征增强,进而提高了检测精度。
该文以深度学习算法YOLOv5为基础,对YOLOv5s模型增加了检测层,提高了对小目标的检测率,并将模型部署至Jetson nano 人工智能开发板,在口罩佩戴检测方面取得了较好的效果。
YOLOv5 是一种单阶段目标检测算法,相较于YOLOv4 提出了一些改进思路[17-20]。YOLOv5 系列拥有s、m、l、x 四种网络模型,它们除层深与宽度控制有所区别外,拥有着相同的配置文件,而YOLOv5s 是其中最为简洁的网络,其结构与YOLOv4 具有很多相似之处,总体上可分为Input、Backbone、Neck 和Head四部分。其网络结构如图1 所示。
首先,在输入输出部分,输入端采用了Mosaic 数据增强方式,同时还加入了自适应锚框计算功能,其不再需要每次单独计算初始锚框值,而是在每次训练时会自适应地计算最佳锚框值。输出端部分选取了GIOU_Loss 作为Bounding box 的损失函数,在后续对目标框筛选时采用了加权nms 方式,以此来获得最优目标框。
骨干网络部分加入了Focus 结构,Focus 结构的关键是进行切片操作,从高分辨率图像中周期性地抽出像素点重构到低分辨率图像中,将图像相邻的四个位置进行堆叠,聚焦图像的宽、高维度信息到通道空间,即将输入通道扩充了4 倍,拼接起来的图片相对于原先的RGB 三通道模式变成了12 个通道,最后,将新得到的图片再经过卷积操作,最终得到新的采样特征图。这样的设计在减少计算量的同时加快了处理速度。此外,还构建了两种CSP 结构,CSP1_X结构主要应用于Backbone 网络中,CSP2_X 结构主要应用于Neck 结构中。Neck 中采用了FPN+PAN 的结构,加强了网络特征的融合能力。
对YOLO 算法而言,初始锚框的长宽设置会根据不同类型的数据集而做出相应的改变。在网络训练中,初始锚框的设置是其中非常重要的一环,预测框的输出主要依据于初始锚框,输出的结果会与真实框groundtruth 进行比对,从而计算得出二者之间的差距,再反向进行更新,最终替换网络中的参数。对于YOLOv5s 原始模型而言,其网络结构中只有三个检测层,分别对应三组初始化Anchor 值。为了改善对较小目标的检测,减少漏检情况,在此基础上又增加了一组Anchor 值,如表1 所示。
表1 改进锚框尺寸
在网络结构的Head 部分,增加几个操作层,继续对特征图进行上采样等处理,使得特征图继续扩大,同时将获取到的特征图与骨干网络中第二层特征图进行Concat 融合,以此获取更大的特征图来进行小目标检测。在检测层部分增加一个小检测层,一共使用四层进行检测。
在目标检测的后处理过程中,对于许多目标框的筛选通常需要非极大值抑制(Non-Maximum Suppression,NMS)操作。在相同参数的条件下,将NMS 中的交并比(Intersection-over-Union,IoU)修改成DIOU_nms,对一些被遮挡的重叠目标进行检测,将会具有一定的优化和改善效果。
在数据集的制作方面,实验通过从网上搜取了部分公开图片,并在公开人脸数据集WIDER FACE中抽取一部分从而组成了共12 659 张图片的数据集。数据集共分为两个标签:其中,no mask 表示未佩戴口罩,mask 表示人员已佩戴口罩。该实验采用可视化标注工具labelImg 来对图片进行标注,数据集遵循Pascal_VOC 格式,标注完成将自动生成相应的xml格式的标注文件,具体图片标注如图2 所示。
该实验使用Ubuntu18.04 操作系统,采用Tensor Flow 深度学习框架,GPU 加速工具为CUDA 11.0。训练环境具体配置如表2 所示。
在对YOLOv5 网络进行训练时,将训练集与测试集自动按9∶1 进行划分,该训练使用随机梯度下降算法来实现网络模型训练的优化。训练参数设置如表3 所示。
作为评估一个模型性能的重要指标,其查准率(Precision)、损失函数(GIOU_Loss)、召回率(Recall)以及平均精度值(mAP)如图3 所示。
查准率是指所预测的正样本中,预测正确的正样本占总预测为正样本的比例;而召回率则是所预测的正样本中预测正确的正样本占实际总正样本的比例,分别如式(1)、(2)所示,其中TP、FP 和FN 分别代表正样本预测为正样本的数量、负样本被预测为正样本的数量以及正样本被预测为负样本的数量。实验中查准率与召回率均趋近于0.9。
损失函数采用GIOU_Loss 作为Bounding Box 的损失,GIOU_Loss 函数增加了方法来应对相交尺度的衡量问题,有利于解决边界框有时出现不重合的问题。从图3 中可以看出,迭代到400 次时,损失函数达到了0.01 左右,并逐渐趋于稳定。mAP 及所有类别平均精度的平均值计算方法如式(3)所示:
式中,K表示类别数。从图中的性能评估曲线可以看出,整体的训练效果比较理想。
P-R 曲线即是表示查准率与召回率关系的曲线,是评估模型性能的重要指标之一,可以更直观地看出模型的性能。图4 分别为改进前后的P-R 曲线,横、纵轴分别代表了召回率Recall与查准率Precision。
P-R 曲线与其横、纵轴之间所围成的面积大小常被用来作为比较模型性能强弱的重要依据之一,如果其中一条P-R 曲线被另一条曲线完全分割并被包住,则可以准确地断言后者的模型性能远优于前者;如果二者之间存在交叉的情况,还可以利用平衡点(BEF)进行判断。平衡点是P=R 这条直线与曲线的交点,正如图中虚线与曲线的交点,如果这个值较大,则说明性能较好。显而易见,无论是从面积还是平衡点的取值来看,改进后的YOLOv5 模型的性能都强于改进前的模型。
改进前后模型的实际测试效果对比如图5 所示。测试共分为三组,自上而下分别从大、中、小三种目标的检测进行对比测试,其中左侧为改进前的模型测试效果,右侧为改进后的模型测试效果。
如图5 所示,将改进前后的检测效果进行了对比。在对第一组的大目标进行测试时,改进前后的模型并没有较为明显的差异,二者均取得了较好的检测效果;而在第二、三组图片中,在对中小目标进行检测时,改进后的模型测试结果相较于改进前的准确率均有较为明显的提升,并检测到了改进前模型所漏检的目标。由此可以看出,对于包含较小尺度目标的检查,改进算法的效果已经有了比较明显的改善。
实验最终通过准确率来衡量测试效果,模型准确率的计算如式(4)所示,即检测正确的样本数在样本总数中所占的比例。
经过在测试集上面的测试,改进后的模型准确率达到了93.5%,相较于改进前提高了2.9%。改进前后的数据对比如表4 所示。
表4 实验数据对比
YOLOv5s 作为一个轻量化模型,非常适合在移动端部署,该文在NIVDIA 的Jetson Nano 开发板上部署测试。Jetson Nano 是一款由英伟达公司推出的小型人工智能计算机,虽然有着酷似树莓派的精致小巧的外观,但却拥有更为强大的性能。它的计算性能可达472 GFLOPS,并且其功耗仅有5~10 W。
作为一个小型但功能强大的AI 系统,NVIDIA Jetson Nano 可以同时并行运行多个神经网络,包含许多原生的机器学习框架,如PyTorch、Keras、TensorFlow、Caffe/Caffe2、MXNet等。这些神经网络可广泛应用于设计及实现强大的图形分析功能,如图像分类、对象检测和定位、姿态估计、视频增强,语义分割和智能分析等,还可用于构建自主机器人和复杂的人工智能系统。Jetson Nano 硬件设备的具体配置如表5 所示。
表5 Jetson Nano配置
文中部署使用TensorRT 来加速推理过程,部署成功后对其进行测试,图6 为截取的其中一帧图像,图7 为测试过程中的实时帧率,可以看到帧率基本稳定在14FPS 左右。因为人眼舒适放松时可视帧数是24 帧/s,所以这个帧率还难以达到实时流畅的状态。为了解决这个问题,在训练时对图片进行了相应的裁剪,裁剪后的实时帧率如图8 所示,可以稳定在27 FPS 左右,完全能够满足实时性要求。
该文提出了一种基于YOLOv5s 的口罩佩戴检测方法,并通过增加检测层对原有模型进行了改进,改善了对较小目标的检测效果,减少了漏检率,准确率提高了2.9%。文中将模型成功部署至NVIDIA Jetson Nano 开发板,经实验测试,模型的准确率高且能够满足实时性要求,说明该文方法具有一定的优势。YOLOv5 本身作为轻量化模型,还能否对其进行模型剪枝和量化,进而提高推理速度,是今后的一个研究方向。