张立亭,邓先金,罗亦泳,孔文学,夏文生
(东华理工大学测绘工程学院,330013,南昌)
目标检测是计算机视觉和遥感中的一项基本任务,在图像解译中起着至关重要的作用[1]。目标检测的目的是找出遥感图像中一个或多个人们感兴趣的物体,同时检测出它们的位置和大小。跟影像分类不同,目标检测既要解决分类问题,还要解决特定目标的定位问题[2]。随着遥感技术的快速发展,极大改善了传统地面测量的覆盖范围小、数据采集不足等缺点。遥感影像目标检测也成为了遥感领域最重要的任务之一,对民用和军事领域都具有重要意义。在民用领域,高精度目标检测可以帮助城市实现交通管理[3];在军事领域,它被广泛应用于目标定位[4]、导弹制导[5]等方面。目前,目标检测算法主要分为两大类:一类为基于候选区域的双阶段算法,主要代表算法有R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8]、Mask R-CNN[9]等。其流程是首先通过区域推荐网络生成候选区域,然后利用卷积神经网络进行分类和边框修正。另一类为基于回归方法的单阶段算法,将目标框的定位问题转化为回归问题处理,不用产生候选框,只需使用一个卷积神经网络对目标的类别和位置进行预测,其中主要代表算法有YOLOv1[10]、YOLOv2[11]、YOLOv3[12]、YOLOv4[13]、SSD[14]等。
由于遥感影像分辨率不同,一些小目标在影像中的像素大小存在差异。人们一般把小于32×32像素的目标定义为小目标[15]。小目标检测精度给研究者们带来诸多挑战。目前,已有研究者把YOLO算法应用到遥感影像目标检测中。为解决遥感影像小目标检测问题,Xu D[16]等人提出了一种基于YOLOv3改进的网络——FE-YOLO,通过引入轻量级特征提取网络和特征增强模块DPFE、IRFE和Res2Net,来提高对影像小目标检测的精度。Xiao J[17]提出了一种小目标检测网络——exYOLO,通过叠加原始网络模型,对特征图进行2倍下采样来增强浅层特征信息,提高小物体检测的准确性和精度。Ju M[18]等人使用空洞卷积模块来扩大浅层感受野,并使用特征融合和直通模块来提高小目标检测能力,在小目标检测方面取得了良好效果。王建军[19]等人通过改进backbone、优化Anchor boxes和引入RFB,增大网络感受野和特征提取能力,提高小目标检测精度。余培东[20]等人通过增加YOLOv4网路特征尺度和嵌入SE模块的改进,显著提升了遥感影像的小目标检测精度。上述研究虽然取得了一定成功,但其精度仍有提升的空间
为有效提高遥感小目标的检测精度,本文以YOLOv3-SPP网络为基础构建针对小目标检测的改进型检测模型,取得较好的效果。
YOLOv3作为目前目标检测领域应用性最广泛的算法之一,它是单阶段检测器中的典型代表。因其简单的结构、较高的检测精度和速度,在工业界具有普遍的适用性。YOLOv3网络基于YOLOv1网络增加了多标签分类,并使用多尺度预测,提高了小目标检测性能。
YOLOv3-SPP共分为输入端、backbone、颈部、预测4个部分,其结构图如图1所示。输入端主要是对图像的预处理,包括数据增强、裁剪。backbone采用Darknet-53特征提取结构,它由不同数量的Resx组成,每个Resx由不同数量CBL块组成,每个CBL单元由Conv层、BN层和LeakyRelu激活函数组成[21]。颈部采用FPN[22]结构,通过上采样和融合的方法将浅层特征和深层特征融合。预测部分通过1×1卷积分别输出3个分支特征图进行目标检测。YOLOv3-SPP算法在YOLOv3第5、第6层卷积之间添加一个SPP模块,通过最大池化操作丰富特征图表达能力,使模型精度提升1%~2%。在U版[23]的YOLOv3-SPP网络中采用GIOU[24]作为网络的损失函数。
图1 YOLOv3-SPP模型框架
YOLOv3-SPP算法在MSCOCO、PASCAL VOC等公共数据集上检测精度表现良好,但在实例对象分布密集且小目标较多的遥感影像数据集上效果不理想[19]。为此本文对YOLOv3-SPP模型做出相应改进,以满足小目标检测精度的需求。通过重新聚类计算Anchor值,用于数据集的训练和测试;使用空洞卷积模块,增大特征图感受野,提升小目标特征信息的提取能力;引入注意力机制simAM模块,提升小目标检测精度。
YOLOv3网络中,共9种不同尺寸的先验框,按照大小分为3组,分别检测小、中、大3种目标。根据本文数据集特点,之前的先验框尺寸不再适用于本文,需要获得新的先验框尺寸。使用K-Means和Genetic Algorithm遗传算法,在K-Meanss聚类的结果上进行变异计算得到Anchor值。其中把K-Meanss聚类时使用的欧式距离,改成基于距离的方法,这样能聚类得到更合适的Anchor值。
空洞卷积[25],也称为膨胀卷积,就是在卷积核元素之间加入一些空格(零)来扩大卷积核的过程。通过在稀疏采样位置进行卷积,扩大了具有原始权值的卷积核大小,在不增加参数代价的情况下增加感受野大小。空洞卷积相对标准卷积引入扩张率新参数,通过控制扩张率大小控制感受野大小。由图2可以看出,图2(a)是由1次扩张的卷积产生,其感受野为3×3。图2(b)由图2(a)通过2次扩张的卷积产生,其感受野为5×5。图2(c)由图2(b)通过3次扩张卷积,其感受野为7×7。随着卷积量的扩大,网络感受野明显扩大。
图2 空洞卷积
不同位置使用空洞卷积增大感受野,其效果也不同,为此设计了不同结构方案。方案1:由于浅层信息丰富,但是信息容易丢失,为增大浅层感受野,在网络第1个卷积层(CBL)和第1个残差模块(Res1)使用空洞卷积模块。方案2:在SPP前一个CBL模块使用空洞卷积。方案3:分别在输出层y1、y2、y3前一个CBL模块使用空洞卷积。
受人脑注意机制启发,Yang L[26]提出了一种具有三维权重的simAM模块,并设计了一种能量函数来计算权重,以评估每个神经元的重要性。在神经科学中,信息丰富的神经元通常表现出与周围神经元不同的放电模式,激活神经元通常会抑制周围神经元,即空域抑制。换句话说,具有空域抑制效应的神经元应当赋予更高的重要性,找到这些神经元最简单的方法是测量一个目标神经元和其他神经元之间的线性区分度。
本文将simAM模块融合到YOLOv3-SPP算法中,在不额外增加网络参数情况下推断特征图映射的三维权重,丰富特征图信息,提升小目标检测精度同时给结构优化带来便利。simAM模块位于模型的不同位置,其精度也不同。为确定最佳的融合位置,为此设计了3种融合实验方案。方案1:simAM模块插入SPP模块之后。方案2:simAM模块插入上采样(upsample)之后。方案3:simAM模块分别插入特征层输出层y1、y2、y3前。
本文实验在Windows10操作系统下进行,模型搭建是基于PyTorch 深度学习框架,版本为pytorch 1.17.0,python版本为3.6.0。CPU为R7-5800H,内存16 G,实验所用GPU为NVIDIA 3060,显存6 G,算法的训练和测试均在GPU加速中进行。本文实验使用武汉大学于2015年发布的RSOD数据集[27]。数据集包含从谷歌Earth和天地图下载的976张图像,图像的空间分辨率在0.3~3 m 之间,数据影像主要有飞机 (aircraft)、油桶(oiltank)、立交桥(overpass)和操场(playground)4类目标。
3.2.1 网络训练 将实验数据按照7:2:1比例划分为训练集、验证集、测试集。经实验验证,在此数据集上使用迁移学习进行训练效果较差,因此使用U版[24]YOLOv3权重作为网络训练初始化参数。改进前后算法的超参数一致,其部分超参数设置如表1所示。
表1 模型超参数设置情况
3.2.2 评价指标 实验使用平均精度均值(mean average precision,mAP)和F1分数作为模型效果评价指标。平均精度综合考虑目标检测的精确率和召回率,是目标检测中最常用的目标检测评价指标。其对应表表达式如下:
(1)
(2)
(3)
(4)
其中:TP表示被正确检测出的目标个数,FP表示被错误检测出的目标个数,FN表示被漏检的目标个数。精度率P是指网络预测的正确个数在所有预测中所占的比例。召回率R是指网络预测的真实个数在所有真实个数中的比例。平均精度均值mAP衡量的是训练出的模型在所有类别上的好坏,F1分数是一种通过将精度率和召回率相结合来判断不同网络性能的综合指标。
实验使用U版[24]YOLOv3-SPP,根据前文优化Anchor值、引入空洞卷积、融合simAM模块3种改进方案分别进行实验。
实验1:优化Anchor值。RSOD数据集小目标居多,用K-Means聚类方法不能得到最优Anchor值。因此,将K-Means聚类和Genetic Algorithm遗传算法结合得到Anchor值,并在ROSD数据集上进行训练和测试。表2是不同聚类方法在ROSD数据集上所得到的不同的Anchor值。表3为实验训练结果。
表2 不同聚类算法RSOD数据集的锚定框的大小
由表3可以看出,使用遗传算法变异得到的Anchor值,进行模型训练,与不使用遗传算法结果相比,mAP提升了0.5%,F1分数提升了0.6%。实验结果表明本文使用遗传算法变异得到的Anchor值,有利于提高模型目标检测精度。
表3 不同anchor值的模型精度比较
实验2:引入空洞卷积模块。为更好利用上下文信息,引入空洞卷积模块,来增加网络特征层感受野,提升模型精度。根据插入空洞卷积设计的3种方案分别在遥感数据集上进行训练和测试,实验结果如表4所示。
表4 不同位置使用空洞卷积的精度比较
由表4可以看出,方案1使用空洞卷积模块,模型精度指标mAP和F1分数分别达到 86.7%和88.4%,比原算法YOLOv3-SPP分别提高了1%、4.9%。方案2使用空洞卷积,mAP只提升了0.1%。方案3,mAP提高了0.8%。实验结果得出方案1检测效果最理想。方案1使用空洞卷积训练得到的各类别精度与原算法精度对比,实验结果如图3所示,小目标飞机(aircraft)类提升了1.1%,油桶(oiltank)类提升了2.1%。实验表明在原模型上使用空洞卷积是有效的,可以提高整个模型的精度。
图3 使用空洞卷积的模型在数据上各类精度比较
实验3:融合注意力机制simAM。融合无参数注意力机制simAM,能丰富特征图信息,提升模型小目标检测精度。对3种方案分别进行训练和测试,实验结果如表5所示。与原算法相比,方案1,mAP只提升了0.4%;方案2,mAP提高了1.1%。方案3,mAP提高了2.7%,F1分数提高了4.4%。实验结果表明,融合simAM能够丰富特征图的信息,提高目标检测的精度。其中simAM分别插入在特征层输出层y1、y2、y3前效果最好。
表5 不同位置插入simAM的精度比较
方案3融合simAM的算法与原算法各类别精度比较结果见图4。其中,小目标飞机(aircraft)类提升了5.1%,油桶(oiltank)类提升了5.7%。实验结果表明,按方案3融合simAM能有效提升原模型对小目标的检测精度。
图4 插入simAM的模型在数据集上各类精度比
上述3组实验对原有检测模型YOLOv3-SPP算法的改进都在一定程度上提升了模型对小目标检测的精度,因此,本文综合以上3种改进方法提出一种改进型YOLOv3-SPP算法以实现对小目标的高精度检测。改进后模型算法精度指标mAP达到90.10%,F1分数达到91.50%,改进后结构图如5所示。
图5 改进后的YOLOv3-SPP模型框架
为了评价改进算法优势,对模型进行定性评价和定量评价。
定性评价:实验主要测试小目标物体遥感影像图,原YOLOv3-SPP模型与改进后的模型的部分检测结果分别如图6所示(其中左边图片代表原模型检测结果,右边图片代表改进算法模型检测效果)。由图6可以看出,一些原YOLOv3-SPP算法未检测到的小目标,改进算法能检测出来,表明本文改进算法能更好检测遥感影像小目标。
图6 YOLOv3-SPP模型与改进模型检测效果对比
定量评价:如图7所示,展示了改进算法和原YOLOv3-SPP算法的准确率曲线、召回率曲线、mAP曲线和损失函数曲线的变化情况。由图7(a)、(b)所示,为训练273周期的精确率、召回率曲线图,根据图7可以看出,改进算法精确率远高于原算法精确率,2种算法的召回率几乎相同。分析图7(c)可以看出,为mAP曲线对比图,由训练结果可知,YOLOv3-SPP的mAP在86%,而本文改进算法mAP达到90%。由图7(d)所示,原YOLOv3-SPP模型和改进后模型的损失函数曲线对比图。其中横坐标表示训练周期数,纵坐标表示损失函数值。原算法的损失函数初始值较大,约为8.53,而改进的算法的损失函数初始值较小,在7.4左右。随着训练周期数的增加,大概在150个epoch之后,慢慢趋于平稳,改进算法最终稳定在0.737,而原算法的值为0.933,整体损失函数值下降了0.196。对比可以看出,相对于原算法,改进算法效果更好,显著提高了收敛速度并降低了损失函数值。相比原YOLOv3-SPP算法,本文改进算法在检测精度方面取得了一定提升,特别对小目标检测精度的提升。
图7 YOLOv3-SPP模型与改进模型收敛图
由表6所示,是Faster R-CNN、SSD、YOLOv3、YOLOv3-SPP和改进算法几种算法精度比较。由表6可以看出,再增加少量训练时间的代价下,改进算法的mAP比YOLOv3高5.6%,比YOLOv3-SPP高4.3%,F1比比YOLOv3高8.3%,比YOLOv3-SPP高7%;跟两阶段算法比较,比Faster R-CNN高0.24%,比SSD高10.03%。虽然改进算法与Faster R-CNN相比mAP接近,但是训练时间却多了1倍。因此,本文改进的算法在对RSOD数据集小目标检测方面具有较大优势。
表6 不同算法检测精度对比
通过以上实验结果可以得出,在遥感影像小目标检测中,本文对YOLOv3-SPP模型的改进,显著提升了遥感影像RSOD数据集小目标检测精度。主要结论如下。
1)K-Means聚类和遗传变异算法优化Anchor值,模型mAP提升了0.5%,F1分数提升了0.6%。在网络结构提取中使用空洞卷积,模型mAP和F1分数分别达到 86.7%和88.4%,比YOLOv3-SPP原算法分别提高了1%、4.9%。在输出层前插入simAM模块,模型mAP提高了2.7%,F1分数提高了4.4%。
2)融合多种改进方法后的算法mAP和F1分数分别达到了90.10%和91.50%。与YOLOv3-SPP相比,mAP和F1分数分别提升了4.3%和7%,而且主要通过提升小目标精度来提升整体模型精度。