周 瑶 ,周 石
(1.中国移动通信集团湖北有限公司 武汉分公司,武汉 430100;2.武汉纺织大学 机械工程与自动化学院,武汉 430073;3.武汉纺织大学 湖北省数字化纺织装备重点实验室,武汉 430073)
铁路工人佩戴安全帽和穿戴背心,对工作人员的安全至关重要。然而,由于缺乏安全意识,安全帽和背心的重要性往往被忽视[1]。在铁路上普遍采用人工监督方式,但监督范围过大,在实践中不可能及时跟踪和管理所有工作人员[2]。因此,基于图像处理[3]的智能监控下的安全帽佩戴和背心穿戴检测正逐渐成为铁路实施管理的主要手段。图像处理又可分为深度学习算法和传统检测算法。由于基于深度学习的检测方法可以有效避免检测精度和效率低的问题,且泛化性强。因此,基于深度学习的铁路工人安全帽检测方法成为近年来的研究热点。
随着深度学习和检测的结合,基于深度学习的检测算法可以分为两大类,两阶段网络和单阶段网络。最具代表性的两阶段网络包括R-CNN[4]和Faster R-CNN[5],单阶段网络包括SSD[6]和YOLO[7]。同时,无数学者使用深度学习目标检测算法对安全帽“是否正确佩戴”作了大量的研究,并取得了一定的研究成果。陈松波[8]将K-means++算法融入Faster R-CNN中,更好的适配小尺寸头盔,提高准确率,但该方法检测速度较慢,无法满足实时要求。饶诚[9]通过在YOLOv3-Tiny的特征提取网络中添加改进的空间金字塔池(SPP)模块,以提取具有丰富语义信息的局部和全局特征,该方法可以对安全帽佩戴实时性检测,但检测精度较低,漏检率较高无法满足实际铁路上的检测要求。范武[10]利用Densenet在模型参数和技术成本上的优势,替代YOLOv3骨干网络进行特征提取,该方法可以有效检测是否佩戴安全帽,但该方法模型过大,检测速度较慢。陈俊华[11]在YOLOv4的骨干网络3个输出特征层中嵌入坐标注意机制模块以增强特征信息,并设计了改进的特征融合结构来融合目标信息,该方法可以有效检测出是否佩戴安全帽,但检测速度较慢,且检测精度较低。戴斌[12]对SSD模型进行改进,使用了轻量级网络结构,减少了模型的参数量和计算量,该模型检测速度较快,但精度较低。谭石磊[13]等人通过在YOLOv5s的基础上增加一层检测层,该方法可以有效降低小目标漏检率,但该方法模型过大,检测速度较慢。白培瑞等人[14]提出DS-yolov5模型,在YOLOv5s的基础上加入了简化版的Transformer模块,加强对全局语义信息的特征学习能力,并在Neck层引入双向特征金字塔融合多尺度的特征,最后模型在公开数据集SHWD上的到验证,Map达到95.5%,更好适应了工地复杂的生产环境,但该方法模型过大,检测速度较慢。
基于上述相关文献研究成果,为了更好地平衡铁路工人安全帽检测任务的检测精度、检测速度和网络模型体积,在YOLOv5s模型的基础上进行相关改进,提出一种新的网络模型。本文的主要贡献如下:
1)采用GhostNet模块替换原始网络中的卷积Conv,这样可以减少冗余,使参数量变少,更利于模型的实时检测和最终部署。
2)采用更高效简单的多尺度特征融合BiFPN,来对原始FPN进行改进,BiFPN它舍弃了最顶层和底层的两个神经元,同时在中间各特征层加入一条与输入输出特征相连的残差结构,相较于之前的特征融合方式更加简单高效。
3)把原始的CIOU损失函数替换为SIOU损失函数,这样可以充分考虑到所需回归之间的向量角度,提高收敛速度以及检测精度。
YOLOv5算法是由Ultralytics公司于2020年在YOLOv4发布不久后推出的。虽然没有相关的论文,但YOLOv5在前者基础上借鉴了其他算法的创新和改进思路,因此获得了一个更高的检测精度。YOLOv5网络结构可以简单地描述为三大部分:特征提取网络,Neck网络和检测头,其结构如图1所示。该模型根据输入通道数C和模块的复用次数不同可分为4个版本,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,这些不同尺度的模型让算法工程师更好的选择不同的模型,权衡精度和速度,简化了工程的相关落地与部署。一般来说,YOLOv5s模型最小,具有更高的检测速度;YOLOv5x模型最大,具有更高的检测准确率,YOLOv5m和YOLOv51是在检测速度与检测准确率中均衡的结构模型。为了满足对铁路工人实时检测,选用YOLOv5s模型进行检测。
图1 YOLOv5s模型结构图
由于原始的YOLOv5s骨干网络过于复杂,参数量多,不利于模型的实时检测和最终部署,而采用GhostNet[15]模块替换原始网络中的卷积Conv,这样可以减少冗余,使参数量变少,更利于模型的实时检测和最终部署。
GhostNet是华为诺亚方舟实验室于2020年[15]提出的轻量级特征提取网络,它采用端到端神经网络架构,外表为MoblieNetv3[16],GhostNet的核心是Ghost模块,如图2所示显示了Ghost模块之间的卷积过程。Ghost模块引入了线性运算而不是部分卷积,与标准卷积相比,它分为3个步骤:1)使用标准卷积生成少量的本征图;2)在第一步生成的特征图的基础上,使用深度卷积或移位等线性操作,用少量参数获得更多的Ghost特征图;3)将前两步生成的特征映射进行合并,得到Ghost模块的输出特征映射。在输入和输出特征映射大小相同的情况下,Ghost模块的计算量远低于普通卷积,实现了用更少的计算获取更多的特征信息,并且不会对模型的性能产生负面影响。
图2 Ghost模块的卷积过程
基于Ghost模块的轻量级优势,Ghost-BottleNeck由两个Ghost模块堆叠构成。当步长为1时,第一个Ghost模块是扩展层,参考MobileNetV2的结构,在第二个Ghost模块之后没有使用ReLU激活函数,在彼此层之后引入BN和ReLU激活函数。当步长为2时,捷径由下采样层和步长=2的深度可分离卷积组成,其中深度可分离卷积可以减少通道数。
通常,由于铁路工人检测过程中,背景较为复杂,采用原始的YOLOv5s会导致深浅层的信息会互相干扰,对检测的精度会产生影响[17]。因此,对于多尺度的受到影响,对颈部网络进行改进,以提高检测精度。
虽然YOLOv5s中的PANet通过上采样和下采样在多尺度融合方面取得了很好的效果,但其计算量很大[18]。然而,双向特征金字塔网(BiFPN)[19]可以实现简单快速的多尺度特征融合。它采用跨尺度连接去除PANet中对特征融合贡献较小的节点,并在同一级别的输入和输出节点之间添加额外的连接。本次研究我们使用BiFPN对Neck模块进行改进,利用一层结构的BiFPN来提高模型的训练效率,如图3所示。
图3 BiFPN结构图
利用BiFPN改进YOLOv5s的颈部,可以实现更简单、更快的多尺度特征融合。此外,在BiFPN中引入可学习权重,使其能够学习不同输入特征的重要性,并反复应用自顶向下和自底向上的多尺度特征融合。与YOLOv5s的颈部网络PANet相比,BiFPN具有更少参数和FLOPS[20]的性能。因此,它可以更好地实时检测铁路工人。
损失函数在模型性能中起着重要作用[21],它是衡量深度卷积神经网络预测值与真实值之间差异的重要指标,对于目标检测算法尤为重要。因此,损失函数决定了模型参数训练的好坏。
原始的YOLOv5s中的CIOU Loss[22]在之前损失函数的基础上增加了对纵横比的考虑,但是没有考虑需要回归的矢量角度,即所需真实框和预测框之间的方向不匹配。此外,采用CIOU Loss会导致预测框在训练过程中出现游走的问题,降低实验训练速度。文献[23]在CIOU Loss的基础上提出了一种新的损失函数SIOU Loss,它不仅依赖边界框回归指标的聚合,而且在损失函数cost中引入方向性,重新定义惩罚指标。如图4所示,虚线为YOLOv5s-SIOU训练效果,实线为YOLOv5s-CIOU训练效果。实验证明,与CIOU相比,SIOU收敛速度更快,训练效果更好,且精确率更高。
图4 YOLOv5s模型的SIOU和CIOU训练效果对比
SIOU损失包括4个成本:角度、距离、形状和IOU。角度将真实框和预测框之间的角度差表示为一个变量。角度成本对损失函数的贡献为图5,定义如式(1)所示。
(1)
图5 角度成本对损失函数的贡献
(2)
距离成本的定义如式(3)所示。
(3)
ρx和ρy都测量了真实框和预测框之间的距离,它们的定义如等式(4)和(5)所示。更进一步,Λ表示角度代价,将角度代价作为一个变量融入到距离损失中,可以更准确地表达损失。
(4)
(5)
γ=2-Λ
(6)
形状成本的定义如式(7)所示。
(7)
其中:(w,h) 和 (wgt,hgt) 分别表示预测框和真实框的宽度和高度。θ表示控制损失函数对形状成本的关注程度。
IOU表示真实框和预测框之间联合比率的交集,IOU成本的定义如式(8)所示。
(8)
其中:B和Bgt分别代表预测框区域和真实框区域。
SIOU loss的定义如式(9)所示。
(9)
对于方程(9),△表示修改后的距离成本,而Ω和IOU表示形状成本和距离成本。
将融入GhostNet模块、BiFPN、SIOU损失函数的YOLOv5s算法称为YOLOv5s-GhostNet-BiFPN-SIOU算法(简称YOLOv5s-GBS算法),其算法结构如图6所示。
图6 本文改进算法YOLOv5s-GBS结构图
本文采用的操作系统为Windows10,模型训练采用Pytorch深度学习框架,采用GPU加速,型号为NVIDIA GeForce GTX 1070Ti,本文实验所使用的计算机配置具体如表1所示。
表1 实验环境配置
实验步骤如下:1)数据集增强。对铁路工人数据集进行数据增强处理,提高模型泛化能力。2)实验评价指标的确定。确定一系列指标,用来判断模型的好坏。3)模型训练及参数设置。加载模型配置文件以及超参数,将输入的数据进行预处理。4)将数据集数据输入到模型进行训练。随着训练次数的不断增加,将使用SGD进行网络参数的更新优化。5)选出最优的模型权重,通过检测检测脚本,对测试集进行预测。
2.2.1 数据集介绍
本文数据集采用kaggle[24]的铁路工人检测,该数据集一共分为三类,有工人、安全帽、背心。Kaggle成立于2010年,是一个进行数据发掘和预测竞赛的在线平台。将数据集分成训练集、验证集和测试集,其中训练集含有2 609张图片,验证集含有483张图片,测试集含有130张图片。如图7所示为数据集可视化分析图,(a)为目标框位置分布图,横纵坐标代表中心位置;(b)为目标框大小分布图。横纵坐标代表标注的宽和高。
图7 数据集可视化图
从图7(a)可以看出目标框中心位置分布均匀,从图7(b)可以看出目标框大小较小。因此,分析可知数据集中的大部分数据为小目标。
2.2.2 Copy-Pasting数据增强
在对小目标检测过程中,导致小目标漏检率高,除了网络本身可能存在缺陷,还有一大原因就是训练数据中小目标的再现性较差。因此,本文将采用Copy-Pasting[25]数据增强策略,来对数据集中的小目标进行过采样、复制、粘贴,以此来提供足够的小目标来和 anchor 进行匹配,以此实现提高小目标检测的性能。
Copy-Pasting数据增强由Fang等人[25]在2017年提出,该增强方法通过对小目标样本进行 Oversampling(过采样),然后在对样本里的小目标进行 Copy-Pasting(复制粘贴)操作来提高小目标检测的性能。
对小目标的图像进行Oversampling(过采样),来改善小目标图像较少的问题,及将含有小目标的图片通过多次反复训练,采用这种方法不仅简单,还很有效果。其中,复制的次数就是过采样率。
在进行过采样操作之后,然后通过混合粘贴( Copy-Pasting),利用以下公式(10)将两幅图混合在一起。
I1×α+I2×(1-α)
(10)
式中,I1代表粘贴对象图像,I2代表被粘贴对象图像,α代表mask掩模。通俗的意思就是,将I1中的mask部分像素扣出来,然后随机粘贴在I2中。
本文采用Precision、Recall、F1-score和mean Average Precision(mAP)作为评价指标,设置0.5 IOU阈值。具体计算公式如下:
(11)
(12)
(13)
(14)
其中:TP是正确识别铁路工人,FP是误检铁路工人,FN是漏检铁路工人的数量。c是代表种类数;M和N表示IOU阈值和IOU阈值的数量;P(k)和R(k)是准确率和召回率。F1是Precision和Recall之间的权衡,用来表示模型的性能,mAP是不同置信度阈值下的总体性能。参数和浮点运算(FLOPs)用于测量模型的网络复杂性,较小的值表示模型的网络复杂度较低。
模型训练过程中,对超参数进行设置,超参数的设置好坏会对模型的好坏产生一定的影响,具体设置参数如表2所示。
表2 超参数设置
2.5.1 本文YOLOv5s-GBS算法与原YOLOv5s算法的p、r对比
本文提出的YOLOv5s-GBS算法是基于YOLOv5s进行改进的,因此为了更好的看到改进前后算法性能之间的差异,将YOLOv5s算法和本文改进YOLOv5s-GBS算法在训练过程中的P、R进行比较,如图8所示。
图8 改进算法YOLOv5s-GBS与原始YOLOv5s算法P、R对比图
从图8(a)、(b)可以看出YOLOv5s-GBS与YOLOv5s算法收敛速度相差不大,但精确率P、召回率R的值更高。因此,说明本文提出的YOLOv5s-GBS算法在保证收敛速度的情况下,且精确率P、召回率R更高。
2.5.2 消融实验
为了分析每个模块的作用和有效性,采用铁路工人数据集进行消融实验。通过设计三组实验对不同的改进进行分析,每组实验均在相同训练参数,不同算法内容上进行测试。消融实验的具体结果如表3所示。“√”是指使用相应的策略来改进模型,以及“-“意思是不使用相应的策略。原始YOLOv5s模型大小为13.7 MB,当采用GhostNet模块后及YOLOv5s-G算法,虽然F1和mAP略微有所降低,但是YOLOv5s-G模型大小减小将近一半,且网络的参数和浮点数也有大幅度降低,训练速度和检测速度都有一定上升。当在YOLOv5s-G模型的基础上,融入BiFPN模块对Neck模块进行改进及YOLOv5s-G-B算法,其模型大小基本持平,F1提升了0.9%,mAP提升了0.5%,训练速度提升了0.012 s·张-1,检测速度提升了4 fps。当在YOLOv5s-G-B模型的基础上,将CIOU损失函数替换为SIOU损失函数及YOLOv5s-GBS算法,其模型大小、训练速度和检测速度一致,但F1提升了5.1%,mAP提升了6%。综上所述,本文提出YOLOv5s-GBS算法与原始的YOLOv5s相比,各项性能都有大幅提升。
表3 消融实验对比结果
2.5.3 不同算法性能对比
为验证所提算法具有更好的效果,在相同配置条件下采用相同数量的训练集,并使用现阶段流行的几种目标检测网络进行对比实验:Faster RCNN、SSD、YOLOv3、YOLOv5s、文献[26]、文献[27]、YOLOv5s-GBS算法。其中,SSD、YOLOv3、YOLOv5s、文献[26]、文献[27]、YOLOv5s-GBS算法均属于单阶段检测算法,Faster RCNN属于两阶段检测算法。使用mAP、F1、训练速度和检测速度4个评价指标对实验结果进行评价,实验结果如表4所示。
表4 不同算法性能对比结果
1)多种不同的算法在相同的数据集下,YOLOv5s-GBS算法最优权重大小最小为7.57 M,其余的按从小到大的顺序进行排列分别是文献[27]、YOLOv5s、文献[26]、SSD、YOLOv3、Faster RCNN,它们权重大小分别为:7.7、13.7、41.9、90.1、240、625 M。由此可知,本文的改进算法YOLOv5s-GBS的复杂度最低,可以很好的部署。Faster RCNN算法模型复杂度最高,需要较高算力的计算机来运行。
2)YOLOv5s-GBS算法与Faster RCNN算法相比,F1提升了32.8%,mAP提升了31.4%,且Faster R-CNN检测速度FPS、训练速度过慢,无法满足实时要求。SSD算法精度过低,无法满足精度要求。相比YOLOv3算法,F1提升了25.7%,mAP提升了21.5%,训练速度提升了0.054 s·张-1,检测速度提升了15 fps。相比YOLOv5s,F1提升了3.6%,mAP提升了4.5%,训练速度提升了0.022 s·张-1,检测速度提升了10 fps。相比文献[26],F1提升了7%,mAP提升了5.7%,检测速度提升了9.8 fps。相比文献[27],F1提升了3.3%,mAP提升了2.2%,检测速度提升了8 fps。通过这些结果可以看出,本文提出的改进算法YOLOv5s-GBS相比其他主流算法来说,在性能上均有较大的提升,更加满足实际检测要求。
为了更直观地看出YOLOv5s-GBS算法与原YOLOv5s算法的检测差距,将测试集对改进算法进行测试。使用YOLOv5s-GBS算法和YOLOv5s算法分别进行测试,部分检测结果如下图9原YOLOv5s检测结果、图10 YOLOv5s-GBS算法检测结果所示。
图9 原YOLOv5s检测结果
图10 本文YOLOv5s-GBS算法检测结果
通过图10(a)与图9(a)对比可知,YOLOv5s-GBS算法检测精度相比YOLOv5s有所提升。图10(b)与图9(b)对比可知,YOLOv5s-GBS算法检测精度相比YOLOv5s有所提升,且对小目标检测更好。图10(c)与图9(c)对比可知,YOLOv5s-GBS算法检测精度相比YOLOv5s有所提升。图10(d)与图9(d)对比可知,YOLOv5s-GBS算法检测精度相比YOLOv5s有所提升,且图9(d)A位置处,出现了漏检,而图10(d)图上A位置处未出现漏检。实验表明,本文改进算法YOLOv5s-GBS相比原始YOLOv5s算法,在检测精度上有明显提升,对实际场景中工人检测效果更好。
本文提出的基于融入GhostNet模块、BiFPN、SIOU的改进YOLOv5s铁路工人佩戴安全帽和穿戴背心检测算法及(YOLOv5s-GBS算法)。针对原YOLOv5s算法网络过于复杂,参数量多,不利于模型的实时检测和最终部署等问题,首先采用GhostNet模块替换原始网络中的卷积Conv,这样可以减少冗余,使参数量变少,更利于模型的实时检测和最终部署。其次采用更高效简单的多尺度特征融合BiFPN,来对原始FPN进行改进,BiFPN它舍弃了最顶层和底层的两个神经元,同时在中间各特征层加入一条与输入输出特征相连的残差结构,相较于之前的特征融合方式更加简单高效。最后把原始的CIOU损失函数替换为SIOU损失函数,这样可以充分考虑到所需回归之间的向量角度,提高收敛速度以及检测精度。研究表明,本文提出的YOLOv5s-GBS算法的调和平均数F1、均值平均精度mAP均有较为显著的提升,同时模型大小相比原YOLOv5s减少了一半,更利于模型的实时检测和最终部署,更适合对铁路工人佩戴安全帽和穿戴背心进行检测。