基于cosSTR-YOLOv7的多尺度遥感小目标检测
2024-04-19朱正为郭玉英
张 徐, 朱正为,2, 郭玉英,2, 刘 辉, 仲 慧
(1.西南科技大学,四川 绵阳 621000; 2.特殊环境机器人技术四川省重点实验室,四川 绵阳 621000)
0 引言
遥感图像目标检测与识别是遥感图像处理领域中最基本的任务之一[1]。传统的遥感图像目标检测算法,依赖精巧的手工特征设计与提取[2],此类方法易受噪声影响,泛化性较差,检测效果并不理想。而基于深度学习的目标检测算法,不需要人工设计特征,能够提取图像高维度的语义信息,具有良好的鲁棒性[3],但对于复杂背景下多尺度遥感小目标的检测性能仍然具有很大的提升空间,如何有效提取小目标的浅层语义信息,降低误检率和漏检率是亟需解决的问题[4]。
目前,基于深度学习的光学图像目标检测算法及应用已经较为成熟,主要分为单阶段目标检测算法和两阶段目标检测算法。单阶段算法检测速度快但精度较低,代表性算法有YOLO系列[5]和SSD[6]等。两阶段算法检测精度高,但检测速度较慢,代表性的算法有Faster R-CNN[7]和Mask R-CNN[8]等。研究人员根据应用需求,将两种算法改进后应用于目标检测,取得了不同的检测效果。文献[9]提出了一种双通道特征融合网络,可以沿着两条独立的路径学习局部和上下文属性特征,从而形成一个强大的联合表示,实现对遥感图像目标的有效检测;文献[10] 提出了一种端到端旋转检测框的目标检测算法,提高了舰船的检测精度;文献[11]设计了一种基于YOLOV5s模型的多尺度检测网络结构,提高了监控场景下目标的检测性能;文献[12]结合了双射神经网络和错位定位策略,解决了遥感小目标边界框窄小的问题;文献[13]在浅层和深层特征图之间建立了密集连接,解决了船舶尺度变化大的问题;文献[14]将多层特征与有效的锚点采样相融合,提高了对小物体的敏感度;文献[15]通过在特征金字塔网络中引入扩张的瓶颈结构,生成了高质量的语义特征;文献[16]通过跨层级通道特征融合,保留弱小目标精确的位置信息,改善了小目标检测的效果;文献[17]通过将不同层级的特征进行融合获得多个感受野特征,并构建新的级联注意力机制,加强了对遥感小目标特征的捕获能力。
本文针对复杂背景下光学遥感图像目标分布密集、尺度变化范围较大及小目标特征信息过少的检测难点,以YOLOv7[18]作为基线网络,通过对其进行改进和优化,提出了一种基于STR[19]和YOLOv7的多尺度遥感小目标检测新算法cosSTR-YOLOv7。利用DIOR公开数据集[20]对本文算法进行实验,实验结果表明,本文算法对复杂背景下多尺度遥感小目标具有良好的检测效果。
1 基于cosSTR-YOLOv7的目标检测算法
1.1 总体框架
由于遥感图像背景占据图像的大部分区域,而待检测目标往往较小,因此需要采用具有全局建模能力的网络结构作为骨干网络。YOLOv7的骨干网络由卷积堆叠而成,处于网络浅层的特征图感受野小,只能观测到原始图像的局部特征,而处于深层网络的卷积层感受野大,但计算复杂。STR具有多头自注意力机制,其在网络的浅层就具有较大的视野,能够观测到全局的特征。本文结合STR及YOLOv7网络模型,通过改进、优化和重构,提出了一种基于cosSTR-YOLOv7的多尺度遥感小目标检测算法,其总体网络框架如图1所示。
图1 cosSTR-YOLOv7总体网络框架
该网络结构可分为输入端、Backbone、Neck、Prediction 4个部分。
1) 输入端:首先对训练样本进行Mosaic数据增强处理,将任意4张图片进行翻转、色域变化、随机裁剪后,拼接在一起,作为新的样本输入,以此达到丰富检测目标背景和泛化训练特征的作用;然后按照原始样本中目标位置,自适应地映射出增强后样本目标的位置。增强后的新样本包含多种背景,使用新样本进行模型训练,能够提高模型在复杂背景下对目标的检测能力。
2) Backbone部分:首先经过卷积、Patch Partition模块以及Linear Embedding层进行图像深度的扩充以及下采样;然后通过Patch Merging模块和STR模块组成的4个阶段处理,分别得到不同尺度的特征图,其中第4阶段得到的特征图输入到改进的SPPCSPF(Spatial Pyramid Pooling Cross Stage Partial Fast)模块中,进一步提取特征图中的信息。
3) Neck部分:采用路径聚合网络(Path-Aggregation Network,PANet)对主干网络中提取的不同尺度的有效特征图进行特征融合。相较于YOLOv7基线网络,cosSTR-YOLOv7从主干网络引入一个更大尺寸的特征图,用于特征融合,并构建了一个新的特征融合层,以此减少有效信息的丢失。
4) Prediction部分:相较于基线网络,新增加了小目标检测层。首先采用RepConv卷积层处理Neck部分输出的4个有效特征层,再输入到YOLOHead中,最终获得网络的预测结果。
1.2 本文提出的改进措施
1.2.1 cosSTR模块
STR和cosSTR模块的网络结构如图2所示。
图2 STR和cosSTR模块的网络结构
为改善模型在复杂背景下的目标特征提取能力,本文首先将YOLOv7基线网络中的E-ELAN(Extended Efficient Layer Aggregation Networks)模块改进为STR模块,其网络结构如图2(a)所示。与E-ELAN模块相比,STR模块的多头注意力机制,能够计算所有像素点之间的相似度,从而建立目标与复杂背景的全局关系,使模型能够更好地提取复杂背景下目标的特征。
但是基于多头自注意力机制的STR模块在大规模的数据集上进行训练时是很不稳定的,并且随着网络加深,数据规模增大,层间的激活值振幅差距拉大,会导致模型参数过大而无法训练,假设输入方差为1,经过2层STR模块,方差就会扩大182倍。为了解决这个问题,如图2(b)所示,本文将STR模块中前置的LN模块放在MLP模块和Attention模块的后面,对上一层的输出进行归一化处理,再与原输入相加,从而使得幅值可控。此时假设输入方差为1,经过2层改进的STR模块的方差变化只有5倍,从而更加稳定。
另外,传统的Attention模块在计算相似度时,使用的是点乘运算,其算式为
(1)
式中:qi与kj分别为注意力机制中的query与key两个向量;dk为key的维度大小。
当输入没有进行归一化时,所求得的相似度的值会非常大,容易在Softmax层中达到饱和区,为解决这一问题,将Attention模块进一步改为Cosine Attention模块,将计算点乘相似度改进为计算余弦相似度,得到cosSTR模块。余弦函数的取值范围是[-1,1],具有归一化的效果,从而使得自注意力的计算更加可控。其算式为
(2)
式中:τ是一个可学习非共享的参数,本文设置为0.05;‖·‖表示求向量的模长。使用余弦自注意力计算以及残差后正则方法,能够在模型容量较大时,保持模型的稳定性。
1.2.2 SPPCSPF网络
为了减小内存访问成本,提高模型训练效率,将基线网络中的SPPCSPC(Spatial Pyramid Pooling Cross Stage Partial Common)网络改进为SPPCSPF网络,并将SPPCSPC残差结构中的普通卷积层改进为结构重参数化的RepConv卷积层,如图3所示。
图3 SPPCSPC和SPPCSPF对比
训练时,采用多分支的残差结构进行特征提取;推理时,卷积层和BN层进行合并,并且3条支路也合并为单路模型,最后所有训练得到的参数等效为1个卷积核大小3×3的卷积层,以获得更快的推理速度,减小内存访问的成本。
考虑到使用结构重参数化会增加训练成本,SPPCSPC网络中的最大池化部分进行重新设计,将池化核大小固定为5×5,且每一个池化层的输出作为下一个池化层的输入,当池化的步长为1时,两个5×5的最大池化层的功能等效于1个9×9的最大池化层的功能,3个5×5的最大池化层的功能等效于1个13×13的最大池化层的功能,这样就减小了模型训练的计算量。
1.2.3 增加小目标检测层
YOLOv7基线网络具有3个尺度的检测特征图,分别为80×80、40×40、20×20(单位:像素)。本文目标检测数据集图像的尺寸为800×800(单位:像素),考虑到遥感图像中存在小于8×8(单位:像素)的小目标,根据小尺寸检测特征图检测大目标,大尺寸检测特征图检测小目标的原理,在保持基线网络输出特征图尺度不变的基础上,在预测部分构建160×160(单位:像素)的检测层,可将输入图像划分为160×160个网格单元,每个网格单元尺寸为5×5(单位:像素),如此先验框能够更好地实现回归,调整得到小目标的检测框,从而使模型对小目标的检测精度得到了较大的提高。此外,随着网络深度的增加,小目标的大部分特征信息在底层特征图中会丢失,为了解决这个问题,从主干网络中引入新尺寸的有效特征层,并且通过改进Neck部分,搭建并行多分支特征融合网络,以此减少特征图有效信息的丢失。
1.2.4 损失函数的改进
YOLOv7基线网络采用的损失函数为
l=lloc+lconf+lcls
(3)
式中,lloc、lconf、lcls分别为定位损失、置信度损失和分类损失。其中,置信度损失和分类损失采用交叉熵损失函数进行计算,而定位损失采用CIoU损失函数计算。但CIoU损失函数采用相对值来描述真实框与预测框的长宽比,当两者的长宽比相同时,其惩罚项值为零,说明计算长宽比的差值作为惩罚项,并不能很好地代表长和宽的真实差异。为了解决上述问题,采用SIoU损失函数来计算定位损失[21],其定义表达式为
(4)
式中:RIoU为预测框与真实框的交并比;Δ为距离成本;Ω为形状成本。
SIoU损失函数包含角度成本、距离成本、形状成本3个部分。由于考虑了角度因素,在预测框的回归过程中,可使预测框快速回归到与真实框同一水平线或者垂直线上,从而加快损失函数的收敛速度。另外在形状成本计算方面,与CIoU损失函数不同,SIoU损失函数将真实框与预测框的长、宽的关系分别进行计算,而不是计算长宽比的差异,避免在预测框与真实框的长宽比相等时,丢失惩罚项,保证了收敛的平稳性。
SIoU损失函数包含的参数如图4所示。
图4 SIoU损失函数计算
SIoU损失函数的角度成本、距离成本、形状成本的计算方法如下。
1) 角度成本。
在收敛过程中,首先判断α是否小于45°,若满足则将其直接代入
(5)
(6)
进行计算,否则使用其互补角β代替。式中:x为α的正弦值;σ为真实框与预测框中心点的距离;ch为中心点纵坐标的差值。
2) 距离成本。
距离成本的算式为
(7)
式中,γ=2-Λ,Λ由角度成本计算得到;ρt为两个框的中心点坐标差值的平方。
3) 形状成本。
形状成本的算式为
(8)
2 实验分析与讨论
2.1 实验数据集
实验采用2019年发布的光学遥感图像目标检测基准数据集DIOR[20],该数据集由23 463幅场景图像和192 472个目标实例组成,覆盖20个常见目标类别,图像尺寸为800×800(单位:像素),空间分辨率从0.5 m到30 m不等,包括不同季节、天气状况下采集得到的遥感图像。本文实验训练集、验证集和测试集按照3∶1∶1的比例分配。
2.2 实验平台及网络训练参数设置
实验环境为64位Windows11操作系统下搭建的Pytorch1.8.1深度学习框架,Python3.8以及CUDA11.3编程软件,所用计算机CPU为AMD Ryzen 7 5800H,GPU为NVIDIA GeForce RTX3060,内存为64 GiB。网络训练的初始学习率设置为0.01,最小学习率为0.000 1。采用AdamW优化器更新网络参数,批量大小(Batchsize)为8,迭代次数(Epoch)为220。模型训练过程中的损失函数变化曲线如图5所示。
图5 模型训练过程中的损失函数变化曲线
在前50次迭代中,损失持续下降;50次迭代后解冻主干网络,损失下降速度加快;随着迭代次数的增加,损失渐趋平稳,训练达到收敛状态。
2.3 性能评价指标
本文采用查准率(P)、召回率(R)、F1-分数(F1,score)、单个类别的平均精度(AP)、所有类别平均精度的均值(mAP)、模型参数量(Params)、每秒检测帧数(FPS)7个指标作为模型性能的评价指标。其中,模型参数量是指模型中参数的个数。查准率、召回率及F1-分数分别表示为
(9)
(10)
(11)
式中:TP为真正例;FP为假正例;FN为假负例。
根据每个类别的查准率和召回率绘制出P-R曲线,所得P-R曲线与横坐标轴所围成的面积即为每个类别的AP。所有类别的AP相加取平均值即可得到mAP为
(12)
式中,n为检测类别数量。显然,AP、mAP的数值越大,目标检测性能越好。
2.4 实验结果与分析
2.4.1 消融实验结果与分析
为验证本文提出的各项改进措施对遥感图像目标检测性能的提升作用,进行了一系列消融实验,实验结果如表1所示,表1中加粗数据为最佳单项指标值。(表2、表3数据同此)。对表1中的实验结果数据进行分析可知:1)改进1将YOLOv7基线网络中的E-ELAN模块改进为STR模块,同时将Patch Merging引入到YOLOv7主干网络中,所得网络的查准率有所下降,召回率提升,参数量有一定增加,且检测速度下降,但由于STR模块加强了网络对全局观测的能力,此时mAP提升了1.86个百分点;2)改进2在改进1的基础上,结合余弦注意力机制及残差连接的后正则化方法对STR模块进行了改进和优化,不仅使训练过程更加稳定,而且mAP比改进1提升了0.51个百分点,查准率也回到了基线水平;3)改进3在改进1的基础上,采取了两项改进措施,在Neck部分构建了新的特征融合层,在预测时增加了小目标预测层,对比改进1,查准率提升11.2个百分点,mAP提升了1.19个百分点,说明改进措施3对小目标的检测精度有所提升;4)改进4包含了前3种改进,在查准率较高的基础上,召回率达到了最高,对比YOLOv7基线网络,mAP提升了3.53个百分点;5)本文算法在改进4的基础上继续进行改进,采用了SIoU损失函数作为边界框回归函数,并对该函数进行了改进,对比改进4,虽然mAP仅提升了0.2个百分点,但在实际训练过程中,收敛速度比改进4更快。可以看出,通过多种改进措施,与YOLOv7基线网络相比,本文算法的mAP提升了3.73个百分点,参数量有所增加,但与YOLOv7基线网络的参数量处于同一数量级,FPS下降了11.72帧/s,仍可满足实时性的基本需求。综合考虑,以此换来的检测精度提升是极具性价比的。
表1 消融实验结果
表2 几种算法的各项性能指标
表3 几种算法对不同类别目标检测的平均精度
2.4.2 遥感场景实例目标检测结果与分析
利用YOLOv7与本文所提算法对3个遥感场景实例进行目标检测。检测效果如图6所示。图6(a)中,3个场景包含尺度大小不同的车辆、网球场和船舶等目标。由图6(b)与图6(c)可以看出:1)与YOLOv7相比,本文算法在遥感小目标检测上具有较明显优势,对于同一目标,本文算法检测的置信度更高;2)在复杂背景下,本文算法对密集小目标的检测效果更好,YOLOv7检测结果中存在将房顶排气孔误检为车辆和停车场车辆漏检的情况;3)对于尺度变化较大的情况,例如网球场和车辆处于同一场景时,本文算法也能检测到车辆且置信度更高;由图6(d)与图6(e)可视化结果可以看出:本文算法的特征图具有更强的表征能力,能够从语义较弱的目标中提取到目标特征,更加关注存在目标的区域。
2.4.3 本文算法与其他主流算法的性能比较
为进一步验证本文算法对多尺度密集小目标检测的性能优势,下面采用相同的实验环境及参数配置,使用DIOR数据集对Faster-RCNN算法、SSD算法、YOLO系列算法等主流目标检测算法及本文算法进行目标检测实验,并对不同算法的目标检测性能进行比较和分析。表2给出了不同算法的实验结果。
由表2可以看出:1)与两阶段目标检测算法Faster-RCNN相比,单阶段目标检测算法SSD、YOLO系列算法及本文算法的Params更小,检测速度更快;2)与YOLOv7基线网络相比,本文算法的Params增加了15.7×106,FPS减少了11.72帧/s,但查准率增加了4.16个百分点,召回率增加了3.4个百分点,mAP达到了92.63%,比YOLOv7提升了3.73个百分点,并且远高于表2中其他算法。实验结果数据表明,本文算法对DIOR数据集遥感图像目标的检测性能具有明显的优越性。
由于DIOR数据集包含20个目标类别,不同目标实例的尺度大小以及特征都有很大的差异,因此实现多尺度目标检测通常比较困难。表3给出了不同算法对不同类别目标检测的AP结果。
由表3可以看出,在20个目标类别中,本文算法对14类目标的检测性能优于YOLOv7基线网络算法。因此,与其他主流目标检测算法相比,本文算法在多尺度目标检测上也具有更明显的优势。DIOR数据集中小目标类别主要包括立交桥、船舶、飞机、储罐、风力发电机、桥梁、车辆,本文算法对所有小目标检测的mAP为90.7%,与YOLOv5和YOLOv7相比,有了很大的提升。实验结果数据表明,本文算法在小目标检测方面具有明显的优越性,但对桥梁、车辆的检测仍有很大的提升空间,原因在于这类目标的特征不太明显,当场景中存在多个尺度时,容易造成漏检。
3 结束语
遥感图像目标检测在军事和民用方面均具有重要的应用价值,遥感图像中目标分布密集、尺度变化范围大及小目标特征信息过少,导致目标检测具有较大的难度。本文在YOLOv7基线网络的基础上,通过研究采用多种改进措施,提出了一种复杂背景下多尺度遥感小目标检测算法cosSTR-YOLOv7。根据DIOR数据集上的实验结果,得出以下几点结论:1)在主干网络中引入STR模块,可以增强模型对全局的感知能力,能够更好地提取目标特征,从而提升目标检测的精度;2)结合余弦注意力机制及残差连接的后正则化方法改进得到的cosSTR模块,能够使模型在大规模数据集上训练时更加稳定;3)在Neck部分构建特征融合层,保证了主干网络有效信息的传递;4)在Prediction部分增加小目标检测层,可提升多尺度下小目标检测的性能,从而降低漏检率与误检率;5)通过引入SIoU损失函数并对其进行改进,能够加快边界框的回归,从而使收敛速度更快。实验结果表明,本文算法对复杂背景下多尺度遥感小目标的检测具有明显的优势,对多类别目标的mAP可达92.63%,并且具有较好的实时性和鲁棒性。但对特征不太明显的目标仍然存在一定的漏检和误检,后期将针对该问题展开进一步的探究。