一种基于YOLOv5s和图像融合的行人检测方法
2022-07-15陈世权王从庆周勇军
陈世权, 王从庆, 周勇军
(1.南京航空航天大学自动化学院,南京 210000; 2.近地面探测技术重点实验室,江苏 无锡 214000)
0 引言
行人检测是指从图像或视频等视觉数据中识别出行人目标,同时指出它们的位置和大小,其在军事侦察、视频监控、野外救援等领域发挥着越来越重要的作用。传统的行人检测算法,如HOG[1]+SVM[2],DPM(DeformableParts Model)[3]等,大多采用人工特征提取的方法,主观性较强且特征单一,难以适用于低照度等复杂环境下的多尺度行人目标检测。此外,采用滑动窗口进行候选框提取的方法没有针对性,存在大量冗余,因此时间复杂度过高。
近年来,基于深度学习的行人检测算法不断取得突破创新,该算法通过对大规模数据的自主学习,主动提取出具有代表性的特征,从而解决了传统方法需要人工提取特征的问题。深度学习行人检测算法主要分为两阶段算法和一阶段算法两类。前者先产生目标候选框,再对候选框做分类与回归,这类算法主要包括R-CNN[4],Fast R-CNN[5],Faster R-CNN[6]等;后者则不用产生目标候选框,仅使用一个神经网络完成目标检测,这类算法主要包括YOLO[7]系列等。
尽管基于深度学习的行人检测算法在可见光图像上的应用已经十分成熟,但针对低照度等复杂环境,仅利用可见光相机往往无法发挥作用。可见光图像的优势在于其分辨率高、背景细节信息丰富,但其缺点是容易受到外界因素影响,在低照度等复杂环境下甚至不能工作;而红外图像中行人目标高亮,受光照条件的影响较小,但其缺点是分辨率低、包含的背景细节信息较少。而将两者融合为一幅图像,综合两者的优点则可以扬长避短。
因此,本文首先采集低照度环境下多尺度行人目标的可见光和红外数据集,并通过一种基于生成对抗网络的可见光与红外图像融合算法得到融合图像数据集。然后在YOLOv5s算法的基础上,对其网络结构进行优化,加入SENet(Squeeze-and-Excitation Networks)[8]通道注意力模块,删除部分卷积层,修改激活函数。最后利用迁移学习的思想进行训练,这些改进在保持算法实时性的同时,进一步提升了行人检测的准确性。实验结果表明,利用融合图像数据集训练得到的模型进行行人检测的平均精度均值(mAP)高于可见光数据集和红外数据集,改进后的SE-YOLOv5s模型在可见光、红外、融合3种数据集上的mAP均得到有效提升。
1 YOLOv5s网络结构
行人检测对算法准确性和实时性都有较高要求,且行人目标尺度大小不一,而YOLOv5s算法是当前一种实时性与准确性俱佳的行人检测算法,并且适用于多尺度目标检测,所以本文采用YOLOv5s模型,其网络结构如图1所示。
图1 YOLOv5s网络结构Fig.1 Structure of YOLOv5s network
整个网络结构由输入(Input)、主干网络(Backbone)、连接网络(Neck)和检测网络(Detection)4个部分组成,其中重点是Backbone和Neck 部分。Backbone在Darknet- 53的基础上,引入了CSP[9]模块。CSP模块通过将基础层的特征映射分流再合并,有效防止产生过多的重复梯度信息,在减少计算量的同时保持足够的准确性。另外,Backbone中Focus模块的作用是对图片进行切片操作,使得下采样时能够最大程度减少信息损失。SPP模块利用4个卷积核大小不同的最大池化层实现不同尺度的特征融合,可以更有效地增大主干特征的接收范围,有利于多尺度行人检测。
YOLOv5s的Neck部分在FPN(Feature Pyramid Net-works)[10]结构的基础上又参考了PANet[11]网络,实现了FPN+PAN结构的多尺度特征融合网络。待检测图像经过Backbone的多次下采样,高层特征映射的语义信息丰富,而底层特征映射的细节信息丰富。FPN层通过上采样的方式自顶向下传达强语义信息,同时PAN层又通过下采样的方式自底向上传达强定位信息,这样可以实现不同尺度的目标特征信息融合,增强对多尺度行人目标的检测性能。
2 改进YOLOv5s网络
YOLOv5s目标检测算法以其卓越的检测速度和精度在各类目标检测任务中取得了十分优秀的效果,但在针对低照度环境下的多尺度行人检测时,由于光照条件差,可见光图像中的行人目标难以检测,而红外图像中尽管行人目标高亮,易于检测,但背景细节信息较少,且分辨率低。因此,本文制作了红外、可见光融合图像数据集,行人检测的准确率和召回率都得到了显著提升,但是相比于召回率,准确率的指标还不够理想。
所谓准确率,是指被预测为行人目标的样本中真正的行人目标所占的比率,而召回率是指所有的行人目标中被模型正确预测的比率。原始的YOLOv5s之所以召回率较高而准确率不理想,是因为红外图像或者融合图像中的行人目标是高亮目标,容易检测,但图像中还存在其他高亮目标,如路灯、车灯、路标等,将这些背景信息误当成行人目标检测出来,就造成了准确率较低。因此,本文将SENet中的SE模块引入YOLOv5s,通过通道注意力让网络更加关注高亮目标,提取出更多不同的特征来区分行人目标和其他高亮的背景信息,提高检测的准确率。改进后的SE-YOLOv5s的网络结构如图2所示。
图2 改进后的SE-YOLOv5s网络结构Fig.2 Structure of improved SE-YOLOv5s network
图3 SE模块结构Fig.3 Structure of SE module
SE模块包括压缩和激励两个关键步骤。由于卷积只在一个局部空间内进行操作,所以输出的特征映射难以获得足够的信息来提取通道之间的关系,因此,进行压缩可以让输出的特征映射具有整张图片的感受野。压缩采用全局平均池化层来实现,将每个通道上的整个空间特征转换为一个具有全局感受野的全局特征,即将一个二维的通道特征转换为一个实数,输入特征映射的大小也从H×W×C转换为1×1×C。
压缩过程得到了各个通道的全局特征,激励过程则用来学习各个通道之间的相关性,得到不同通道的权重系数。SE模块通过两个全连接层和ReLU激活函数来学习各通道之间的非线性关系,其中,第1个全连接层通过降维起到了减少计算量和增强泛化性能的作用,第2个全连接层恢复原来的维度。之后再通过Sigmoid激活函数进行归一化,同时产生不同通道的权重系数。最后的过程是权重重标定,即将通道权重系数乘以原来的输入特征映射得到输出特征映射,使得模型对于各个特征通道的重要程度更加敏感。
YOLOv5s中Backbone是特征提取的主网络,而添加在网络末端的SE模块对准确率的影响较小,因此,本文在Backbone的每个CSP模块之后添加SE模块,共添加了4个SE模块。同时,因为SE模块中包含2个全连接层,全连接层的计算量较大,所以添加4个SE模块后会增加模型的参数量以及计算量。为了保持原算法的检测速度,本文将原本YOLOv5s中的每个CSP模块删减一个卷积层和一个BN层,删减后的CSP模块命名为NC(New CSP)模块,包括NC1_X和NC2_X两种结构,它们具体的网络结构如图4所示。
图4 NC模块结构Fig.4 Structure of NC module
图4中,CBS模块表示一个卷积层、一个批归一化层和SiLU(Sigmoid-Weighted Linear Units)激活函数的串联模块。通过对比实验发现,使用SiLU激活函数之后行人检测的准确率更高,所以本文采用SiLU激活函数替换所有LeakyReLU激活函数。SiLU激活函数的表达式为
SiLU(x)=x×σ(x)
(1)
(2)
YOLOv5s原始网络结构的总参数量为7 256 120,经过上述改进后的SE-YOLOv5s网络结构的总参数量为7 237 622,比改进前减少了18 498。由此可见,本文对YOLOv5s网络结构的改进不会造成计算量的大幅增加,因此可以保持其卓越的检测速度。
3 实验过程与结果
3.1 数据集制作
本文使用的行人图像采集装置为大疆“御”Mavic2行业双光版无人机,该无人机同时配备了可见光相机和红外相机,其中,可见光相机的分辨率为3840像素×2160像素,红外相机的分辨率为640像素×360像素。采集的图像为低照度环境下的多尺度行人图像,时间为傍晚或夜间,地点在校园内的道路、操场和树林。为了使图像中行人目标的尺度变化不一,无人机飞行高度控制在5~20 m之间。对采集到的可见光图像和红外图像,基于尺度不变特征变换(Scale Invariant Feature Transform,SIFT)[12]算法进行配准,包括特征匹配和仿射变换两个主要步骤,配准后,可见光、红外图像的分辨率均为640像素×360像素,为了消除边缘部分的对齐误差,再对图像进行中心裁剪,最终得到1696组480像素×360像素的可见光图像和红外图像。
然后,利用生成对抗网络(GAN)融合可见光图像和红外图像[13],其结构原理图见图5。
图5 图像融合结构原理图Fig.5 Schematic diagram of image fusion structure
其中,生成器G采用U-Net[14]网络结构,其所具有的编码层和解码层结构可以更好地提取图像特征,而且适用于三通道RGB可见光图像和单通道红外图像的融合;判别器D采用马尔可夫判别器,融合后得到1696幅彩色融合图像。最后,使用标签工具对图像中的行人目标进行标注,得到可见光、红外、融合3种对应的图像数据集。3种数据集的部分图像如图6所示,可以看出融合图像在保持红外图像上行人目标高亮的同时引入了可见光图像中的背景信息。
图6 3种数据集图像示例Fig.6 Image examples of three data sets
3.2 模型训练
实验所采用的计算机硬件设置为:Intel®CoreTMi7-10700K CPU,NVIDIA RTX 3080 10 GiB GPU,32 GiB内存。实验平台操作系统为Linux 18.04 LTS系统,深度学习框架采用PyTorch搭建。可见光、红外、融合数据集均包含1696幅图像,按照9∶3∶1的比例将图像随机划分到训练集、测试集和验证集中,原始图像大小为480像素×360像素,训练时缩放到256像素×256像素。由于YOLOv5s算法本身会进行数据增强,包括最新引入的Mosaic数据增强,所以此次研究未进行单独的数据增强。超参数设置:批大小(batch size)为16张,训练次数(epochs)为300,初始学习率为0.01,权重衰减系数为0.000 5。
3.3 实验结果
本文所采用的性能评价指标包括:准确率P、召回率R、平均精度均值(mean Average Precision,mAP)以及帧率。其中,前3个为衡量算法检测精度的指标,P,R的算式分别为
(3)
(4)
式中:TTP为正例被正确预测数量;FFP为负例被错误预测为正例数量;FFN为正例被错误预测数量;P′为所有正例数量。
mAP是对P和R的一种综合处理指标,表示PR曲线下的面积,针对不同的交并比(Intersection Over Union,IOU)其阈值有所不同,mAP0.5表示IOU为0.5时的mAP,mAP0.5:0.95表示IOU从0.5到0.95,步长为0.05时mAP的平均值。帧率是衡量算法速度的指标,单位为帧/s。针对融合图像,时间计算包括图像融合和行人检测整个过程。
使用SE-YOLOv5s算法和原始YOLOv5s算法分别在3种数据集上进行训练,同时,借鉴迁移学习的思想,利用SE-YOLOv5s算法先在COCO数据集上进行预训练,然后在自建数据集上继续训练,得到SE-YOLOv5s-pt模型。训练完成后,测试集上得到的性能指标对比如表1所示。
表1 性能指标对比表Table 1 Comparison of performance index
由表1可见,在3种不同的数据集上,改进后的SE-YOLOv5s模型相比于改进前,均大幅提升了检测准确率P,由于P和R之间存在一定的相关性,所以难以避免地会使检测召回率R稍有降低。针对目标检测重要的性能指标mAP,改进后的模型在3种数据集上均显著提升了mAP。速度指标方面,改进后模型的帧率相比于改进前略有提升,由此可见,SE-YOLOv5s模型在提升行人检测准确性的同时,保持了原算法的检测速度。同时,实验结果表明,基于迁移学习训练的模型可以进一步提升行人检测的准确性。图7分别给出了在3种数据集上训练时,3个模型在验证集上的mAP 0.5:0.95对比。
图7 3个模型mAP0.5:0.95对比Fig.7 mAP0.5:0.95 comparison of three models
另一方面,从表1可见,融合数据集上的各项精度指标均高于可见光数据集和红外数据集,帧率满足实时性要求。由此可见,融合图像可以进一步增强行人目标与背景信息之间的特征差异,提升行人检测的准确性。图8给出了测试集中部分图像的行人目标检测结果,目标框上的数字表示置信度。由图8可见,红外图像中误将道路指示标当作行人目标,而融合图像中没有;可见光图像由于光照条件差,检测结果很差;红外图像中被球门挡住的行人未检测出,而融合图像中的检测效果更为理想。图9分别给出了采用3个模型进行训练时,3种数据集在验证集上得到的mAP0.5:0.95对比。
图8 3种数据集部分图像检测结果Fig.8 Partial image detection results of three data sets
图9 3种数据集mAP0.5:0.95对比Fig.9 mAP0.5:0.95 comparison of three data sets
4 结论
本文针对YOLOv5s算法在低照度环境下多尺度行人检测时准确率不足的问题,引入SENet通道注意力模块,并对其网络结构进行优化,删除部分卷积层,修改激活函数,得到了准确性和实时性俱佳的SE-YOLOv5s目标检测算法。同时,本文制作了可见光、红外融合图像数据集用于行人检测,进一步提升了检测性能。实验结果表明,利用融合图像数据集训练得到的模型的平均精度均值高于可见光数据集和红外数据集,改进后的SE-YOLOv5s算法在保持原算法高实时性的同时,有效提升了行人检测的平均精度均值。