基于YOLOv5的卫星遥感图像滑窗目标检测*
2023-06-05刘佳铭
刘佳铭
(海装上海局驻上海地区第五代表室 上海 200135)
1 引言
光学遥感目标检测在遥感图像分析和处理中具有重大作用,是土地利用、城市规划、航空探测等应用的重要基础。随着目前对地观测技术的发展,获取到的高分辨率遥感图像数据能够提供更丰富的图像细节信息,这为目标检测在遥感领域的发展提供了契机。
之前较早提出的遥感图像目标检测算法大部分都是基于手工设计特征的模式,先提取候选区域,之后针对待检测目标设计手工特征,然后结合SVM 或其他分类器进行分类。然而候选区域提取方法需要设置大量的滑动窗口,导致模型计算复杂度非常高,因此模型较为低效;另外人工设计特征主要通过待检测目标视觉信息(边缘、颜色、纹理等)提取得到,虽然可解释性较强,但是其特征表达能力较弱、适应范围小,鲁棒性较差难以应用在复杂多变的环境中。因此,综上所述,早期提出的光学遥感图像目标检测算法远不能满足实际应用需求。
自从卷积神经网络引入以来,其在计算机视觉技术取得了长足的进步。得益于ImageNet[1]、MS COCO[2]和PASCAL VOC[3]等大型高质量标记数据集的支持,正常尺度的目标检测算法已经较为成熟,从最早的两阶段的RCNN[4]、Fast-RCNN[5]和Faster-RCNN[6]到现在的基于锚框的两阶段的SSD、YOLO[7~11]系列等模型。虽然这些框架的性能令人印象深刻,但没有一个框架可以有效地处理输入尺寸为16000×16000 的遥感卫星图像。针对图像尺度过大的问题,通常是采用分块切割或者滑窗切割的方式,将超大图像切割成小图像块,然后分别对每张小图进行检测识别,最后把所有的检测结果进行拼接和后处理,完成全图的最终检测[12~15]。为了解决这个问题,Wang 等[16]以一定的重叠率对原图进行切割,增加了分块小图边缘目标完整性的可能,但是却增加了子图像的数量,使得大图的处理时间变得冗余,同时依然无法避免目标检测结果一分为二的问题。为了减少大图检测的时间冗余,基于图像中绝大多数区域为背景、待测目标只集中于较小区域的现状,R2-CNN[17]设计了轻量级主干Tiny-Net 来进行特征提取,并采用先判断、后定位的方式,将不含目标的子图像块进行滤除,从而减小后续检测识别过程的计算负担,该方法保证了检测效果,同时提高了检测效率,但是依然会对重叠区域进行多次检测。算法YOLT[18]对切割后的子图,采用多个轻量级模型进行检测,并将检测结果进行融合,保持检测精度的同时,一定程度上提升了检测的速度。以上方法均需要对原始遥感图像进行分块处理,这种切割的方式始终不是一种最优的方式,但目前来看很难通过非切割的办法进行完美的检测。
本文针对大尺寸光学遥感图像目标检测问题,提出了一种基于改进的YOLOv5 的解决办法,在YOLOv5 网络的基础上,增加注意力模块提升模型对于小目标细粒度特征的提取能力,然后利用滑动窗口方法进行目标检测,最后综合所有窗口的检测框执行非极大值抑制,获得检测结果。实验结果证明,对于测试实验中的大尺寸图像,我们的模型在比较快的推理速度下,各个种类都可以得到比较高的F1定位分数。
2 方法
2.1 CBAM
CBAM[19]是一种轻量级注意力模块,它综合使用了空间注意力机制和通道注意力机制。引入CBAM 后,注意力机制能够让网络学会关注重点信息,从而提升模型细粒度特征提取能力。CBAM 大致结构如图1所示。
图1 CBAM注意力模块具体结构图
如图1,每个CBAM 模块由一个空间注意力(SAM)模块和通道注意力(CAM)模块组成,假设CBAM 的输入为大小为N×H×W×C 的特征块F,则其先经过一个通道注意力模块,计算如下式所示。
上式中,Mc代表通道注意力卷积模块;avg和maxp分别代表全局平均池化层和全局最大池化层;MLP是多个线性层的表示,在CBAM 中层数为2;σ代表sigmoid 函数;F′为通道注意力模块的输出,其大小仍为N×H×W×C。
然后将从CAM 得到的F'喂入一个空间注意力模块中,计算如下。
上式中Ms表示空间注意力模块;Concat 表示叠加层;F″表示CBAM 的输出;其他的定义与式(1)、(2)中的定义一样。
日本《读卖新闻》7日早间发布政府消息称,日本政府内部已决定将在2018年12月10日修改内部采购规定,禁止政府部门采购来自华为和中兴2家公司的通信设备,来防止情报泄露和网络攻击。不过,日本担忧中日两国友好关系,因而在会议上并未直接点2家公司的名字。
CBAM 综合两种不同的注意力模块,能够提升检测模型提取细粒度特征的能力,并且其参数量和计算量较小,这使得我们不必担心添加CBAM 对于大图像检测会增加很多耗时。在实验中我们将CBAM 放置上采样之前的Concat 操作之前,如图2所示。
图2 大尺寸遥感图像检测架构
图3 本文模型在COWC每个测试场景下的F1分数
2.2 Backbone
随着深度卷积神经网络的发展,目标检测技术获得了巨大的发展。目前现有的目标检测方法基本上可分为anchor-based 的方法和anchor-free 的方法。基于锚框的方法比较有代表性的为双阶段的Faster-RCNN 和单阶段的YOLO 系列,锚框free的方法有CenterNet,CornerNet 等。YOLO 系列中YOLOv5 网络架构运行速度快、检测精度高,其最快检测速度可达每秒检测140 帧图像。另一方面,该网络模型的模型复杂度并不高,与前一代的YOLOv4 模型相比模型大小减小了大约90%左右,因此YOLOv5 模型非常适合部署到大尺寸遥感图像的目标检测中来。为了保证检测速度和准确率,本研究以YOLOv5 架构为基础,改进遥感图像目标检测网络。
YOLOv5 网络包含YOLOv5m、YOLOv5s、YOLOv5x和YOLOv5l 这四种架构,这四种网络架构的主要区别在于在网络的特定位置处所包含的卷积核数量和特征提取模块数量不同,这几种架构的模型参数量和占用内存依次增大,详细指标参数如表1所示。
表1 YOLOv5四种架构模型的指标参数
由于本研究需要通过滑窗的方式对大尺度遥感图像进行目标检测,而滑窗的过程本身耗时较大,因上采用轻量化且准确度较高的目标检测模型是非常有必要的,我们综合考虑YOLOv5 这四种架构,选取YOLOv5m(图2)架构为基本架构,改进设计遥感光学图像目标检测模型。
YOLOv5m 架构主要由主干网络、Neck 模块和Detect 模块组成。主干网络为特征提取网络,是在不同的图像细粒度上聚合并形成图像特征的卷积神经网络。主干网络的第1 层是Focus 模块,这个模块主要的作用是减少模型的计算量提升快训练速度,具体操作是通过切片操作将输入尺寸为3×640×640的3 通道图像切分成4个3×320×320 的切片,然后使用通道叠加操作在深度维度上堆叠这4个切片部分,输出尺寸为12×320×320的特征图,进而通过一个卷积核数量为48 的卷积层,生成48×320×32 的输出,最后经过批归一化层和Hardswish激活函数后将结果输入到下一层。
主干网络同时使用了空间金字塔池化模块(Spatial Pyramid Pooling,SPP),该模块的使用能够将任意尺寸的特征图都转换成固定尺寸的特征向量,从而能够提高网络的感受野。YOLOv5m 中SPP 模块的输入为尺寸为768×20×20 的特征图,那么首先经过1×1 的卷积层,输出尺寸为384×20×20的特征图,然后将该特征图与其分别经过3 个并列最大池化层进行下采样后的输出特征图从深度上进行叠加,输出尺寸为1536×20×20的特征图,最后再经过卷积核数量为768 的卷积层后输出尺寸为768×20×20的特征图。
2.3 遥感目标检测模型
为了提升目标检测模型对于小目标检测的能力,我们在2.2中提到的YOLOv5m的基础上引入了CBAM 模块,提升模型提取目标细粒度特征的能力。CBAM模块穿插位置如图2所示。我们主要使用车以及建筑物的大尺寸遥感图像数据集重新训练了改进的YOLOv5 模型,另一方面,在锚框设计上,为了更好地贴合小目标的实际情况,我们使用K-means 聚类算法获取更合适的锚框。训练模型时网络的损失函数Loss 由回归框预测损失Lossreg,目标分类损失Lossclass以及置信度损失Lossconf组成,计算如下式:
其中,置信度损失和目标分类损失采用的是二进制交叉熵损失函数(BCELoss),计算公式为
上式中y为种类真值,p为预测概率值。
回归框预测损失采用的是GIoU Loss 函数。其中,GIoU Loss计算如下式:
上式中IOU 表示预测框与真实框的交并比;B表示预测框,Bgt表示真实框,C表示能够包含预测框与真实框的最小矩形。
我们针对大尺寸遥感图像的检测沿用了YOLT的基本做法,使用滑窗分块的方法实现遥感图像的目标检测。假设滑窗大小为(h,w),那么对应的滑动步长(slide_h,slide_w)的选取对于目标检测的精度影响较大。若滑动步长设置过大,例如直接设置为窗口尺寸,容易出现由于目标截断引起的回归框位置不准确以及漏检情况,而较小的滑动步长又会严重影响模型的推理速度,与实际需求冲突。经过分析,综合推理速度和模型精度,滑动窗口步长应该依靠待检测目标尺寸如下设置:
上式中,hobjmax,wobjmax分别为待检测目标数据库的宽高尺寸估测最大值。考虑到增强模型的泛化能力,实验实现过程中采取一个泛化的经验设定如下式:
上式中overlap 表示滑动窗口重叠率,在实验中取15%。这种设定能一定程度上减小遥感目标检测模型准确度受到不同场景下目标多变形状的影响。
检测后处理包括两次非极大值抑制(NMS)。首次为YOLOv5 原有的操作,另外针对滑窗目标检测,我们整合所有滑窗分块的预测框,执行第二次NMS操作,这能够极大地增强模型的预测精度。
3 实验数据集
我们基于从空中平台大型图像小芯片中收集的COWC 数据集对提出的基于滑窗的卫星遥感目标检测模型进行训练和验证。COWC 数据集是一个大型、高质量的注释汽车集,来自多个地点收集的高架图像。数据是通过空中平台收集的,但视角较低,类似于卫星图像。COWC数据集中的图像的分辨率为15cm GSD,大约是当前商业卫星图像最佳分辨率(DigitalGlobe 为30cm GSD)的两倍。通过原始图像与高斯核卷积,并将图像尺寸减少一半,以创建等效于30cm GSD图像的图像。
我们在实验中按照6:4 的比例将数据集划分为训练集和测试集,使用SGD 进行训练,初始学习率为10-3,权重衰减为0.0005,动量为0.8。训练在单个NVIDIA 3090Ti GPU上运行。
4 实验结果与分析
为了提升模型准确度,我们在YOLOv5m 的基础上添加了CBAM 注意力模块提升模型的细粒度特征提取能力,表2展示了有无CBAM 模块目标检测模型的F1分数。
表2 CBAM融合实验结果
由表2的实验结果可知,YOLOv5m 融合CBAM在COWC测试集上验证的F1分数为0.93±0.06,而单纯用YOLOv5 模型目标检测的F1 分数为0.90 ±0.09,各个测试场景下的F1 均值提升了0.03%,并且改进的遥感图像目标检测模型在测试集上的稳定性更好,目标检测精度浮动更小。因此CBAM 注意力模块增强了模型细粒度特征提取能力,这对于遥感图像的小目标检测具有一定的增强。
本文的改进YOLOv5 滑窗检测模型在COWC测试效果如图4所示。通过图4可以看出我们提出的改进模型可以较为完美地预测超大图像车辆的位置,并且预测框比较贴合实际的真实框。
图4 滑窗遥感目标检测模型的预测结果
综合以上分析,我们提出的基于滑窗的改进YOLOv5m 目标检测模型很好地实现了对于大型遥感图像的目标检测和提取。
5 结语
本文针对大尺寸遥感图像目标检测问题,提出了一种基于改进的YOLOv5m 的算法,在YOLOv5m网络的基础上,增加注意力模块提升模型对于细粒度特征的提取能力,增强模型小目标检测能力,然后利用滑动窗口方法进行目标检测,最后综合所有窗口的检测框执行非极大值抑制,获得检测结果。实验结果证明,对于测试实验中的大尺寸图像,我们的模型在比较快的推理速度下,获得了很好的模型准确度。
本文提出的遥感影像目标检测模型同样可以应用于对大尺寸遥感图像中的舰船目标检测,这对于海上目标识别具有重要意义。