1. 引言
随着遥感卫星技术的发展,遥感图像的空间分辨率不断提升,从海量遥感图像中自动提取有价值的目标信息逐渐成为研究热点。军用飞机作为有战略意义的目标,对其精准定位和分类,在军事领域具有重要作用[1]。由于遥感图像尺度变化大,背景复杂等因素,造成了遥感图像目标检测准确率低、漏检等问题[2]。为提高遥感图像目标检测的准确率,不断有学者对此进行研究[3] [4]。章程军等[5]在YOLOv5s的基础上通过引入BiFPN [6]特征融合方法,提高多尺度信息融合效率,以提高遥感图像目标检测准确率。谢俊章等[7]基于YOLOv4目标检测算法,设计轻量化的骨干网络,以提高遥感图像目标检测准确率。本文基于YOLOv8s目标检测算法,结合遥感图像的特点,为YOLOv8s目标检测算法引入Mixup [8]数据增强方法,以提高数据集多样性;其次,使用改进的NWD [9]损失函数替代原算法中的CIOU边框损失函数,以更精确的计算边框损失;接着引入改进的SimAM [10]模块,以提高主干网络的特征图质量;最后,考虑到遥感图像的目标较小,减少了骨干网络第三个输出特征图的通道数,以减少神经网络深层语义信息的参数量。基于以上改进,构建了改进的YOLOv8s算法,并在MAR20 [11]军事飞机检测数据集和NWPU VHR-10数据集上做了实验,实验结果验证了改进算法的有效性。
2. 改进的YOLOv8s算法
2.1. YOLOv8算法原理
YOLOv8目标检测算法是基于YOLOv5目标检测算法改进而来的单阶段目标检测算法,它融合了众多最前沿的技术以提升检测效果。与YOLOv5相比,YOLOv8的主要改动部分在于检测头部分和损失函数计算部分。YOLOv8的检测头换成了目前的主流解耦头结构,把分类问题和回归问题分离以提高检测准确率,同时使用了无锚框的范式做边框回归。损失计算的时候,则引入了DFL [12]损失函数。YOLOv8目标检测算法根据模型参数量的不同,有五个版本:YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x,以适应不同的应用场景。
2.2. 改进的YOLOv8s算法
基于上述YOLOv8模型,结合遥感图像背景复杂,尺度变化较大的特点,分别改进原算法的数据增强、主干网络、损失函数并引入注意力机制模块,以提升算法的检测效果。改进的YOLOv8s算法结构如图1所示。
Figure 1. Improved YOLOv8 network structure
图1. 改进的YOLOv8网络结构
2.2.1. Mixup数据增强
训练过程中对图片进行数据增强是一种有效的提高模型泛化能力的做法。遥感图像中背景复杂,光照气候等条件变化大,需要基于原算法使用更多数据增强方法。Mixup数据增强是一种与数据类型无关的数据增强操作,可以用在语音识别、计算机视觉、自然语言处理等领域,在YOLO系列目标检测算法中,YOLOv4首先使用了Mixup数据增强操作,以提高模型泛化能力。由于不同参数量的模型应该使用不同的数据增强方式,原YOLOv8s模型未使用Mixup数据增强操作。然而在进行军事飞机遥感图像目标检测任务时,经过实验验证,引入Mixup数据增强方法可以有效提高YOLOv8s算法的准确率。Mixup原理如公式(1)所示:
(1)
xi,xj是原始的输入图片,yi,yj是独热编码之后的图片标签,
且服从Beta分布。Mixup数据增强只增加很小的训练代价,并且可以提高模型的稳健性。
2.2.2. 改进的NWD距离损失
损失函数是目标检测算法的核心组件之一,它用来度量机器学习模型的预测值和真实值的差异。常见的衡量目标检测算法边框损失的函数经常是基于交并比计算的,基于交并比的度量度微小物体的位置偏差非常敏感,遥感图像物体通常较小且密集,考虑使用NWD (Normalized Wasserstein Distance, NWD)损失缓解这种情况,同时结合Alpha-IoU [13]的思想,提出α-NWD损失函数,以进一步提高标检测准确度和收敛速度。α-NWD损失函数原理如下列公式所示:
(2)
(3)
(4)
(5)
上式中,
分别是边界框的中心点横纵坐标和边界框的宽、高,C是与数据集相关的常数,一般设置为数据集目标物体的平均绝对大小,实验中,α的值设置为64,α是超参数,实验中设置为5.0。
2.2.3. 改进的SimAM注意力机制
神经网络中的注意力模块可以提高特征图的质量且不增加很高的计算成本。SimAM是一种无参数的注意力机制模块,它是受神经科学启发,以最小化能量函数的方式直接学习特征图的空间信息和通道信息。SimAM的原理如下列公式所示:
(6)
(7)
上式中,
是单个通道上所有神经元的均值,
是单通道上所有神经元的方差。能量
的值越小,代表神经元越重要。
代表表示输出特征图,X表示输入特征图,
表示激活函数。
为了进一步提高SimAM注意力模块的性能,结合SA (Shuffle Attention, SA) [14]的原理,对SimAM的输入特征图进行分组并重新排列,以此增加输入特征不同通道之间的信息交互,构建ShuffleSimAM注意力模块。ShuffleSimAM模块原理如图2所示:
Figure 2. ShuffleSimAM module
图2. ShuffleSimAM模块
2.2.4. 修改主干网络结构
卷积网络的浅层特征图,分辨率较高,具有较低的语义信息,深层特征图分辨率低,具有较高的语义信息,浅层的高分辨率特征图有利于目标对小目标的检测[15]。原YOLOv8s算法的骨干网络分别输出128 × 80 × 80,256 × 40 × 40,512 × 20 × 20的特征图传进特征融合网络,为了提高对小目标检测的准确率,减少了骨干网络最后一个特征图输出层的特征通道数,从512减少为256,发现这种方法可以有效提高YOLOv8s算法的准确率并可以减少参数量。
3. 实验结果分析
为了验证改进算法的性能,使用MAR20军事飞机遥感图像目标检测数据集和NWPU VHR-10遥感图像数据集进行了实验并分析结果。
3.1. 实验环境和数据集
实验使用的操作系统是Ununtu 20.04.4,显卡是NVIDIA RTX3090,总迭代次数为200,批量大小为16,学习率为0.01。
MAR20数据集是西北工业大学开源的军事飞机目标识别数据集,包含3842张图像、20种军用飞机型号以及22,341个目标实例。根据不同机场包含的各飞机型号和目标数量,将3842张图像划分为训练集和测试集,训练集包含1331张图像和7870个目标实例,测试集包含2511张图像和14,471个目标实例。NWPU VHR-10数据集是用于遥感图像目标检测的数据集,包括650有标注的图像、10个类别以及 3775个标注实例,实验中按照4:1划分训练集和测试集。
3.2. 评价指标
实验中使用三个指标来评价模型性能:平均精度均值(mean Average Precision, mAP),参数量和浮点计算量(Floating Point of Operations, FLOPs)。参数量越小,目标检测算法对硬件的要求越低,FLOPs用来衡量算法的计算复杂度,mAP是指不同类型目标的平均精度(Average Precision, AP)。AP是单类物体的Precision-Recall曲线下面积,Precision和Recall的计算公式如下。
(8)
(9)
上式中,TP是真正例的比例,FP是假负例的比例。
3.3. 消融实验
Table 1. Experimental results of MAR20 dataset
表1. MAR20数据集实验结果
算法模块 |
mAP50:95 (%) |
mAP50 (%) |
mAP75 (%) |
参数量(M) |
FLOPs (G) |
基线算法 |
66.1 |
87.6 |
82.9 |
11.143 |
14.292 |
Mixup |
68.1 |
90.5 |
85.5 |
11.143 |
14.292 |
修改主干网络 |
66.6 |
88.4 |
83.7 |
6.732 |
12.448 |
NWD |
66.1 |
88.4 |
82.6 |
11.143 |
14.292 |
α-NWD |
66.6 |
89.1 |
83.4 |
11.143 |
14.292 |
SimAM |
66.8 |
89.0 |
83.4 |
11.143 |
14.292 |
ShuffleSimAM |
68.0 |
89.8 |
85.2 |
11.143 |
14.292 |
改进的算法 |
68.9 |
91.9 |
86.5 |
6.732 |
12.448 |
MAR20数据集的实验结果如表1所示,基线算法是指YOLOv8s目标检测算法,改进的算法是指在此基础上使用了Mixup数据增强、修改骨干网络、ShuffleSimAM注意力模块和α-NWD损失函数的检测算法。由结果可知,在YOLOv8s算法基础上加入本文介绍的模块后,mAP50均有提升,改进的算法mAP50:95指标比YOLOv8s提高了2.8%,mAP50指标比YOLOv8s高了4.3%,且模型参数量减少了39.5%,浮点计算量减少了12.9%,实验结果验证了改进算法的有效性。
改进算法在NWPU VHR-10数据集的结果如表2所示。改进算法的mAP50:95指标提高了0.6%,mAP50指标提高了2.2%,验证了改进算法的泛化性。
Table 2. Experimental results of NWPU VHR-10 dataset
表2. NWPU VHR-10实验结果
算法模块 |
mAp50:95 (%) |
mAP50 (%) |
mAP75 (%) |
参数量(M) |
FLOPs (G) |
基线模型 |
56.3 |
88.9 |
65.8 |
11.139 |
14.281 |
改进的算法 |
56.9 |
91.1 |
62.7 |
6.728 |
12.437 |
Figure 3. Loss changing on MAR20
图3. MAR20数据集损失变化
Figure 4. Loss changing on NWPU VHR-10
图4. NWPU VHR-10数据集损失变化
基线模型和改进模型在MAR20数据集和NWPU VHR-10数据集训练过程中损失的变化如图3和图4所示。可以看出改进算法的总损失小于YOLOv8s的总损失,可以实现更好的检测效果。
图5和图6是YOLOv8s的检测效果和改进算法的检测效果,图中飞机类别均为A16,从图中可以看出,YOLOv8s原算法在检测时有1个误检为A5类型,而改进算法的检测结果均正确。
Figure 5. Detection result of the YOLOv8s algorithm
图5. YOLOv8s算法检测效果
Figure 6. Detection result of the improved YOLOv8s algorithm
图6. 改进的YOLOv8s算法检测效果
3.4. 对比实验
对改进的算法与其他常见目标检测算法在MAR20数据集上进行了对比实验,包括YOLOv5s,YOLOv6s [16],YOLOXs [17],实验结果如表3所示。从表中结果可以看出,改进算法的准确率比YOLOv5s,YOLOv6s,YOLOX更高且有更少的参数,验证了本文改进的模型有效性。
Table 3. Comparison experiment results of MAR20 dataset
表3. MAR20数据集对比实验结果
算法 |
mAP50 (%) |
mAP75 (%) |
参数量(M) |
FLOPs (G) |
YOLOv5s |
88.7 |
82.1 |
7.074 |
8.007 |
YOLOv6s |
81.7 |
74.6 |
17.196 |
21.895 |
YOLOXs |
90.2 |
79.0 |
8.945 |
13.339 |
YOLOv8s |
87.6 |
82.9 |
11.143 |
14.292 |
改进算法 |
91.9 |
86.5 |
6.732 |
12.448 |
4. 结束语
基于YOLOv8s目标检测算法,构建了改进的YOLOv8s算法:引入Mixup数据增强,提高训练集数据分布的多样性;修改主干网络,以减少深层语义信息的参数量;为主干网络融合ShuffleSimAM注意力模块,以提高输出的特征图质量;在检测头部分,使用α-NWD损失函数替换原本的CIOU损失函数,以更好计算小物体的损失。在MAR20数据集和NWPU VHR-10数据集上的实验结果,证明了改进算法的有效性。在后续研究中,可以进一步探究不同注意力机制[18] [19]和损失函数的作用,以构建更加高效的轻量化遥感图像目标检测算法。