APP下载

基于改进YOLOv7的低空飞行物目标检测方法

2024-03-05刘雨涵孟凡华王文林李素康赵昊天

无线电工程 2024年3期
关键词:低空飞行注意力损失

甄 然,刘雨涵,孟凡华,刘 颖,王文林,李素康,赵昊天

(河北科技大学 电气工程学院,河北 石家庄 050018)

0 引言

随着我国低空空域的逐步开放和科技发展,无人机数量不断增多,未来在同一空域内还可能包含无人机、热气球和飞鸟等空中障碍物,对无人机的操控和航迹规划提出了挑战。从无人机管控的角度来看,降低民用飞行器带来的社会治安风险,分析当前空域出现的飞行物及种类是十分有必要的。所以,无人机是否能准确地对障碍物进行目标检测,关乎到无人机的后续避障和路径规划。

从空防安全上讲,通用航空器飞行高度相对比较低、体积小、飞行速度慢,对于低、慢、小飞行目标的探测、识别以及防御,都比较棘手。如果低空空域管理不当,低空航空器或不明飞行物很难控制,则直接危及重要目标安全和国家主权。空中飞行目标的图像来源可分为遥感影像、雷达影像和视觉图像。从遥感影像和雷达影像中提取目标检测,存在成本高、检测流程复杂的问题,且由于空中飞行目标的特性难以实现实时检测。基于可见光信号的视觉图像中目标分辨率高、细节丰富,目标特征更多,视觉图像对于实时性要求较高的飞行物检测领域更加契合。近年来,基于视觉图像的目标检测技术受到广泛关注。

近年来,深度学习由于其强大的特征学习能力,被广泛应用于图像处理和目标检测。基于深度学习的目标检测方法也取得了一定成果, Deepan等[1]借助YOLOv3中可用的多尺度检测和非最大值抑制(NMS)技术,消除了重叠的边界框并检测到了不同尺度的目标。Tan等[2]改进YOLOv4使用超轻量级子空间注意机制(ULSAM)为多尺度特征表示的特征图的每个子空间导出不同的注意特征图。引入软非最大抑制(soft NMS)以最小化由于遮挡而导致的目标丢失的发生。Kumar等[3]改进了YOLOv4的主干网络,增加了一个SPP网络、2个额外的检测层,使用Mish作为激活函数,加快了网络收敛速度。Wang等[4]在YOLOv5的基础上引入CBAM注意力机制,采用多尺度训练来提高网络的训练性能。Bie等[5]使用深度可分离卷积和C3Ghost模块代替多个C3模块,以减少模型参数,提高检测速度。采用双向特征金字塔网络进行多尺度特征融合,以丰富特征信息,提高算法的特征提取能力。

对空中飞行物的检测不同于常见的口罩、安全帽和车辆检测,飞行物图像背景复杂,干扰信息多,需要检测的目标具有角度多变、易遮挡和特征少等特点,使得空中飞行物检测极为困难,极易误检和漏检。在空中飞行物检测领域,赵玥萌等[6]根据多尺度特征融合的思想对原始YOLOv4网络结构进行优化,提出了一种基于优化YOLOv4的低空无人机检测方法,检测平均精度(Average Precision, AP)达到77.2%。刘闪亮等[7]提出通过注意力特征融合结构融合更多的小目标信息至特征图,并使用更浅特征层检测目标,进一步提升原模型针对小目标检测的性能,在无人机和鸟群数据集上实现93.5%的平均精度均值(mean Average Precision, mAP)。当前算法仅检测飞鸟与无人机2类目标,而实际应用场景中情况更为复杂,飞行物种类多种多样,且数据集稀缺,目前仅有较少文献考虑此类问题,现有算法仍存在检测精度低、误检和漏检率高、实时性不足等问题。

基于以上问题提出一种基于YOLOv7[8]模型的空中飞行物目标检测算法,对现有问题进行针对性改进。制作包含多种常见低空飞行物数据集,方便目标检测模型的训练和验证;使用轻量化的注意力机制结合YOLOv7模型;借鉴ConvNeXt网络思想,构建轻量化模块,保证检测精度的同时提高检测速度;使用更精确的损失函数,降低目标漏检。运用本文方法可以显著提高模型检测精度,针对性改进低空飞行物检测任务中现有方法检测精度低、易漏检误检等问题。

1 相关工作

1.1 经典目标检测算法

目前,基于深度学习的目标检测方法可以分为两大类:一种是两阶段方法,通过提取候选区域并进行深度学习来实现检测和分类,这些方法通常比其他方法具有更高的准确率,包括区域卷积神经网络(R-CNN)[9]、Fast R-CNN[10]和Faster R-CNN[11]等;另一种是单阶段方法,包括单次激发检测器(SSD)[12]、YOLO、YOLOv3[13]、YOLOv4[14]、YOLOv5、YOLOv7和其他方法,这些方法直接计算物体的坐标和分类概率,提供了单次检测后的结果,大大提高了检测速度。

1.2 YOLOv7算法

YOLOv7模型是YOLO系列最新的检测模型,在5~160帧/秒,相同模型尺寸下,无论是检测速度还是精度,都超过了已知的所有检测模型。YOLOv7由三部分构成:输入端(Input)、主干网络(Backbone)和预测输出网络(Head)。

送入模型的图片首先进行数据增强等预处理,调整图片尺寸为640 pixel×640 pixel,之后输入到主干网络进行特征提取,然后经过Head网络预测输出3个不同尺寸的预测特征图,最终经过Repconv输出预测结果。YOLOv7在主干网络中加入ELAN结构与MP结构。其中,ELAN结构通过控制最短和最长的梯度路径,使网络能够高效聚合更多的特征;MP结构由Maxpool+1×1卷积和1×1+3×3卷积双通路构成,达到超级下采样效果。Head网络部分引入了SPPCSPC模块和Repconv模块。其中,SPPCSPC模块通过最大池化来获得不同感受野,使算法适应不同尺度目标;Repconv模块在训练与推理时采用不同路径,推理模块由训练模块重参数化转换而来,通过复杂化训练来提升推理速度。

目前YOLOv7模型在可见度良好的条件对中、大型目标的检测效果较好,但对小目标、背景复杂、数据稀缺的低空飞行物目标的检测效果仍然欠佳,急需在提高检测精度和应对复杂背景方面进行改进,以完成实际应用中对小目标飞行物的检测任务。

1.3 注意力机制

神经网络中的注意力机制是一种资源分配方案,它将计算资源分配给更重要的任务,同时解决计算能力有限时的信息过载问题。在神经网络学习中,一般来说,模型的参数越多,模型的表达能力就越强,模型存储的信息量就越大,但这会带来信息过载的问题。通过引入注意力机制,在众多输入信息中关注当前任务的更关键信息,减少对其他信息的关注,过滤掉不相关的信息,缓解信息过载的问题,提高任务处理的效率和准确性。

注意力机制是一种类脑机制,模拟人脑关注更感兴趣的目标进而弱化非重要目标。首先扫描全局图像,获得需要关注的目标区域,然后在该区域投入更多的注意力资源,获得更多与目标相关的细节,忽略其他无关信息。通过这种机制,有限的注意力资源可以用来从大量信息中快速筛选出高价值的信息在深度学习模型中引入注意力机制可以使网络在目标区域倾斜更多计算资源,弱化无效目标的干扰,提取更多目标信息的同时节省计算资源。

2 改进的YOLOv7低空飞行物检测方法

2.1 基于CvNX模块改进的特征提取主干网络

ConvNext网络[15]由18个ConvNeXt Block结构堆叠而成,本文为了进一步轻量化YOLOv7网络,只使用单个ConvNeXt Block结构替换YOLOv7网络中的部分ELAN-A模块,将此结构命名为CvNX模块,模块结构如图1所示。CvNX模块使用类似倒置瓶子的倒三角结构,先使用7×7大卷积核进行Depthwise卷积[16],增大感受野,强化特征提取的同时平衡计算开销,之后先用1×1卷积升维提取更多特征,再用1×1卷积降维保留高维信息同时减少参数量,最后正则化处理后与最初输入拼接输出。

图1 CvNX模块结构Fig.1 CvNX module structure

CvNX模块利用特殊的倒三角结构在降采样过程中保留了更多小目标飞行物的特征信息,且CvNX模块仅由一层Depthwise卷积层和2层1×1卷积层构成,减少了网络参数与计算量。本文在原始YOLOv7主干网络中替换部分ELAN-A模块,进而提出一种更加轻量化的主干网络,网络结构如图2所示,改进后的主干网络在节省计算资源的同时也提升了模型检测精度。

图2 主干网络结构Fig.2 Backbone network structure

2.2 引入SimAM注意力机制的Head网络

考虑到高精度模型的部署代价,在提升精度的同时尽可能轻量化模型,引入SimAM注意力机制[17]。SimAM注意力机制不同于现有1D通道注意力和2D空间注意力,同时关注通道维度或空间维度信息,且在算力资源有限的情况下无需额外参数去推导出3D注意力权重,简单且高效,只需通过一个Energy能量函数来计算注意力权重。图3为SimAM结构。

图3 SimAM结构Fig.3 SimAM attention mechanism structure

其3D权重计算为:

(1)

式中:X为输入的特征。通过sigmoid函数限制E中可能出现的过大值,E为每个通道上的能量函数,其计算过程为:

(2)

式中:t为输入特征的值,t∈X;λ=1×10-4,μ和σ2分别表示X中每个通道上的均值和方差。计算过程如下:

(3)

(4)

式中:M=H×W,表示每个通道上的值的数量。通过以上计算可获得每个点的权重,以此来改善网络的识别效果,同时也不会为网络增加额外的参数。

2.3 坐标损失函数

YOLOv7算法中的坐标损失函数为LCIoU[18],损失函数如式(6)所示:

(5)

LCIoU=1-CIoU,

(6)

(7)

(8)

式中:b为预测框中心点坐标,bgt为真实框中心点坐标,ρ2为预测框与真实框中心点欧氏距离,c为预测框和真实框最小外接框对角线长度,w和h为框的宽和高,v为形状损失,用来衡量预测框和真实框的宽和高之间的比例一致性。LCIoU通过v反映纵横比的差异,而不是宽高分别与真实值的差异,由式(7)可得,当预测框与真实框的宽高比例相同时v=0,此时宽高损失项失效。

现使用LSIoU[19]来代替原模型中的LCIoU,加入角度向量来描述纵横比相同时预测框的坐标损失。重新定义相关损失函数,LSIoU参数示意如图4所示。

图4 SIoU损失函数的计算Fig.4 Calculation of SIoU loss function

2.3.1 角度损失

角度损失定义如式(9)所示:

(9)

式中:ch为真实框和预测框中心点的高度差,σ为真实框和预测框中心点的距离。

2.3.2 距离损失

距离损失定义如式(10)所示:

(10)

式中:

(11)

2.3.3 形状损失

距离损失定义如式(12)所示:

(12)

式中:

(13)

(w,h)和(wgt,hgt)分别为预测框和真实框的宽和高,θ控制对形状损失的关注程度,本文设置为2。

2.3.4 重叠损失

距离损失定义如式(14)所示:

(14)

式中:B和Bgt分别为预测框和真实框的面积。

综上所诉,SIoU损失函数计算如下:

(15)

SIoU通过在损失函数成本中引入方向性,与现有方法CIoU损失相比,在训练阶段实现了更快的收敛,并且在推理方面具有更好的性能。

2.4 非极大值抑制

NMS[20]即非极大值抑制,应用于传统的特征提取和深度学习的目标检测算法中。NMS原理是通过筛选出局部极大值得到最优解,同一个目标模型会预测出许多预测框,以及预测方框的预测得分,NMS会去除得分较低的那个预测框。原始NMS计算如下:

(16)

式中:Si为预测框得分,得分M为最高分预测框,Bi为其他预测框,IoU(M,B)为M框与任一其他框的IoU值,ε为IoU阈值。

本文使用的SIoU-NMS计算如下:

(17)

(18)

在原始的NMS中,IoU指标用于抑制多余的检测框,但由于仅考虑了重叠区域,在小目标检测任务中,常因为多个目标重叠,导致被遮挡目标的预测框得分较低而被删除,最终导致漏检。SIoU完整考虑了真实框与预测框之间的位置关系,有效降低了漏检率,提升了目标检测的精度。

在主干网络中加入CvNX模块,Head网络中引入SimAM注意力机制,采用LSIoU作为损失函数,使用SIoU-NMS后,基于改进YOLOv7算法的低空飞行物小目标检测方法YOLOv7-SC网络结构如图5所示。

图5 YOLOv7-SC网络结构Fig.5 Structure of YOLOv7-SC network

3 实验结果与分析

实验硬件环境为Inter Core i7处理器,主频2.5 GHz,内存16 GB;显卡为NVIDIA GeForce GTX 3060,显存6 GB;操作环境为Windows 11;训练环境为PyTorch框架。

3.1 数据集

本实验所用数据集为自有低空飞行物数据集,在我国低空飞行物主要指飞行高度1 000 m以下,飞行速度低于200 km/h的飞行物。本数据集包含7类常见的低空飞行物:飞鸟、飞艇、滑翔机、气球、三角翼(滑翔伞)、无人机和小型直升机,共3 084张图像,每张图像中至少包含一个目标。数据集按照8∶2划分为训练集和验证集,训练集和验证集数据相互独立,验证集数据由原始数据集随机抽取得到并保证同时包含7类低空飞行物。低空飞行物数据集的具体信息如表1所示,7种低空飞行物典型图像如图6所示。

表1 低空飞行物数据集信息

图6 7种低空飞行物典型图像Fig.6 Typical images of 7 kinds of low altitude flying objects

图7展示了数据集中目标标注框的分布情况。图7(a)中,横坐标x为标注框中心横坐标与整体图像宽度的比值,纵坐标y为标注框中心纵坐标与整体图像高度的比值,图中数据分布反映目标在图像中整体分布情况。从图中可以看出,目标分布广泛,多数集中在图像中部。图7(b)中,横坐标width为标注框宽度与整体图像宽度的比值,纵坐标height为标注框高度与整体图像高度的比值,数值越大,目标在图像中的占比就越大。从图8中可以看出,本数据集中包含各种尺寸比例的目标,符合实际情况。

图7 数据分布情况Fig.7 Data distribution

图8 坐标损失对比Fig.8 Coordinate loss comparison

3.2 评价标准

为了客观评价模型性能,选取准确率(Precision,P)、召回率(Recall, R)、AP和mAP作为评价指标,mAP为所有分类AP的平均值。计算如下:

(19)

(20)

(21)

式中:TP为正样本预测为正样本的数量(预测正确),TP为负样本预测为正样本的数量(误检),TP为正样本预测为负样本的数量(误检)。在P-R曲线中,P-R曲线与坐标轴围成的面积为AP值。

3.3 对比实验与结果分析

3.3.1 与改进前模型对比

将改进的YOLOv7模型命名为YOLOv7-SC,YOLOv7-SC与YOLOv7模型在低空飞行物数据集上的检测结果如表2所示。从表2可以看出,相较于YOLOv7模型,YOLOv7-SC模型在各分类AP与mAP上均有提升,YOLOv7-SC模型在IoU阈值为0.5时的mAP达到97.1%,较YOLOv7模型提升1.7%;2个模型在飞艇、三角翼2个分类上检测结果较好,AP达到98%以上;在YOLOv7检测结果较差的飞鸟与小型直升机分类上,YOLOv7-SC模型的AP均超过96%,明显优于YOLOv7模型;YOLOv7-SC模型仅在小型直升机分类上的AP略低于YOLOv7模型,这主要是因为YOLOv7-SC模型在提高对不易检测目标的特征提取能力的同时,对数据集中其他分类目标和背景杂质的学习能力也相应提高,而在目标较小时,小型直升机的旋翼在形状特征上与无人机的旋翼类似,所以在检测时会将少数小型直升机的旋翼部分检测为无人机或其他背景杂质,且YOLOv7-SC模型与YOLOv7模型在小型直升机分类上的AP仅相差0.006%,不影响实际应用效果。总体上,YOLOv7-SC模型在对7种常见低空飞行物的检测mAP(IoU=0.5)上比YOLOv7模型高1.7%,平均准确率与平均召回率也分别高出2%、0.8%。综上表明,YOLOv7-SC模型在低空飞行物数据集上的检测效果比YOLOv7模型更优秀且稳定,检测mAP达到97.1%。

表2 YOLOv7-SC与YOLOv7在低空飞行物数据集上的检测结果Tab.2 Test results of YOLOv7 and YOLOv7-SC onlow-altitude flying object dataset

为了进一步验证改进网络模型YOLOv7-SC的有效性,对YOLOv7-SC与YOLOv7模型的损失函数进行收敛性验证。

得益于使用LSIoU为坐标损失函数、引入SimAM注意力机制,YOLOv7-SC模型在预测目标位置和区分目标种类上获得了更优秀的能力。如图8和图9所示,其坐标损失函数和分类损失函数收敛速度相较于YOLOv7模型更快,且最终收敛结果优于YOLOv7模型。

图9 分类损失对比Fig.9 Classification loss comparison

为了更直观体现引入注意力机制对模型检测效果的影响,采用GradCAM热力图可视化观察YOLOv7-1模型和YOLOv7-2模型的检测结果。可视化结果如图10所示,其为对飞鸟的检测结果,红色部分表示模型较关注的部分,引入注意力机制后的YOLOv7-2模型更加关注目标所在区域,将计算资源集中在目标附近,并抑制非目标区域占用算力,可验证注意力机制的有效性。

图10 引入注意力机制前后对比Fig.10 Comparison before and after introducing attention mechanism

3.3.2 与其他网络模型对比

为了更加客观、全面评价YOLOv7-SC模型的综合性能,在检测精度、模型占用内存、浮点运算次数和检测速度等方面,与其他9种目标检测模型进行对比,统一使用输入图片尺寸为3×640 pixel×640 pixel,结果如表3所示。YOLOv7-SC模型占用内存除YOLOv5s外最小;浮点运算次数大幅低于除YOLOv5s外其他模型,相较于改进前的YOLOv7模型尺寸压缩达23%;YOLOv7-SC模型在GPU上的检测速度与YOLOv5s持平超过其他所有模型,检测帧率达到57.5 帧/秒,可以满足实时检测要求,YOLOv5s和YOLOv7-SC的GFLOPs不同,但是FPS持平,其可能的原因是:GFLOPs是用来衡量算法复杂度的指标,FPS是反映模型推理速度的指标,但是计算复杂度不等于推理速度。Ma等[21]发现一些操作虽然不会增加GFLOPs,但会增加模型推理时间,例如YOLOv5s模型中大量残差模块使用的add操作和CBL层中的ReLU激活函数,虽然不会增加计算复杂度,但会增加内存访问时间,而YOLOv7-SC模型使用更少的add操作,同时其使用的CvNX模块不会在每个卷积层之后都添加激活函数,在部分替换ELAN-A模块后,减少了激活函数的使用,从而提升了推理速度。YOLOv7-SC模型的检测mAP(IoU=0.5)达到97.1%,超过其他所有模型。

表3 不同网络模型检测性能对比

以上模型在测试集部分图像上的检测结果对比如图11所示,图例为4架无人机编队,部分目标与背景区分度较低,检测难度较高。Faster R-CNN模型仅检测到1个目标,ResNet50-csp、YOLOv3、YOLOv3-spp、YOLOv4和YOLOv5s模型均存在不同程度的漏检,YOLOv5l、YOLOr-csp和YOLOv7、YOLOv7-SC模型均检测出全部目标,其中YOLOv7与YOLOv7-SC模型预测框定位较精确,YOLOv7-SC模型检测到的目标置信度更高。

图11 不同模型在测试集部分图像上的检测结果Fig.11 Detection results of different models on some images in the testset

3.3.3 消融实验

为了进一步验证YOLOv7-SC模型中各种改进方法的有效性,通过消融实验对比各改进模块对模型的影响(√代表进行此项改进,×代表未进行此项改进)。消融实验结果如表4所示,加入CvNX模块的模型命名为YOLOv7-1模型,在此基础上引入SimAM注意力的模型命名为YOLOv7-2模型,在YOLOv7-2模型中应用SIoU-Loss损失函数的模型为YOLOv7-3模型,同时具备4项改进的为YOLOv7-SC模型。从表中数据可以看出,加入CvNX模块后的YOLOv7-1模型检测速度较初始模型提高20.1帧/秒,mAP下降1.3%;在此基础上引入SimAM注意力的YOLOv7-2模型较YOLOv7-1模型mAP提升2.4%,检测速度降低1帧/秒;应用SIoU-Loss损失函数的YOLOv7-3模型较YOLOv7-2模型mAP提升0.3%,检测速度降低1.7帧/秒;同时应用4项改进策略的YOLOv7-SC模型,AP达到了97.1%,检测速度降低2帧/秒。上述实验结果表明,CvNX模块虽然带来了一定的精度损失,但是大幅提高了模型检测速度,提升程度为46%,同时压缩模型尺寸,降低计算复杂度,引入SimAM注意力弥补了提升检测速度带来的精度损失且没有给模型带来额外的负担,SIoU-Loss损失函数和SIoU-NMS的应用进一步提升了模型检测精度。总体来看,最终在保证模型检测精度较高的同时,一定程度上实现了模型轻量化。

表4 消融实验结果

4 结束语

针对空中飞行物检测困难的问题,本文提出了一种基于改进YOLOv7算法的低空飞行物目标检测模型YOLOv7-SC,通过引入SimAM注意力机制提高了对重要特征的提取能力;构建CvNX模块节约算力的同时提高了推理速度;使用SIoU-Loss同时考虑到角度损失、距离损失、形状损失和IoU损失,加快模型收敛速度;SIoU-NMS降低了由于目标聚集造成遮挡进而导致漏检的概率。在低空飞行物数据集上实验结果表明,本文提出的YOLOv7-SC模型,识别准确率为98.5%,检测mAP为97.1%,检测速度达到57.5帧/秒。与Faster R-CNN、ResNet50-csp、YOLOv3、YOLOv3-spp、YOLOv4、YOLOv5l、YOLOv5s、YOLOr-csp和YOLOv7模型相比,较好地平衡了检测精度与检测速度,兼顾了检测实时性和检测精度,降低了模型部署难度,具有更好的检测性能。

猜你喜欢

低空飞行注意力损失
让注意力“飞”回来
胖胖损失了多少元
江西通航旅游现状剖析及对策研究
玉米抽穗前倒伏怎么办?怎么减少损失?
战机低空飞行吓得母鸡不下蛋
低空飞行物防护系统(天盾系统)——我国首个固定基站式核设施低空防护验证示范系统通过验收
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
我国低空飞行气象服务需求分析与思考
一般自由碰撞的最大动能损失