当前位置: 首页 > news >正文

UAVAI-YOLO:无人机航拍图像的小目标检测模型

摘要 

针对无人机航拍图像目标检测效果差的问题,提出改进的UAVAI-YOLO模型。首先,为使模型获得更加丰富的语义信息,使用改进可变形卷积网络(deformable convolutional networks,DCN)替换原骨干(backbone)网络部分通道到像素(channel-to-pixel,C2f)模块原始卷积。其次,为增加P2特征层而不增加模型参数量,提出Conv_C模块将骨干网络输出通道降维,同时避免通道降维导致的语义信息丢失,使用改进ODConv卷积替换颈部(neck)部分C2f模块原始卷积。然后,为充分利用上下文语义信息,引入双向特征金字塔网络(bidirectional feature pyramid network,BIFPN)。最后使用Wise-IoU替换原始损失函数,提高模型目标检测框的准确性。在公开的VisDrone2019数据集和UAVDT数据集的实验结果表明,UAVAI-YOLO模型相比于原YOLOv8n模型mAP@0.5分别提升了4.4%和1.1%。与其他主流目标检测模型相比具有较高的检测性精度。

关键词 无人机航拍图像;小目标检测;YOLOv8;可变形卷积网络;注意力机制

引言

随着无人机技术的迅速发展,其在军工业、商业、农业等多个领域得到了广泛应用。但是,无人机飞行高度较高,拍摄对象比较复杂,导致航拍图像中的目标较小且密集,这对现有算法的目标检测精度提出了挑战。此外,无人机所采用的目标检测算法还受到移动端硬件能力的限制。因此,提升无人机航拍图像的目标检测精度已经成为目标检测领域中一个极具挑战性的研究课题。

自LeNet-5问世以来,它作为卷积神经网络(convolutional neural networks,CNN)的奠基石,推动了CNN技术的发展。2012年,AlexNet的诞生进一步加速了基于CNN的目标检测模型的发展。目前,目标检测模型主要分为两阶段和单阶段两种类型。两阶段算法,如区域卷积神经网络(region-CNN,R-CNN)、Fast R-CNN、Mask R-CNN等,首先生成候选区域,然后对这些感兴趣区域进行精确定位和分类。这种方法虽然检测精度较高,但检测速度较慢,不适用于需要实时检测的场景。单阶段算法,如YOLO和SSD,直接在单次检测中预测物体的类别和位置,无须候选区域步骤,因此速度更快,能够满足实时检测的需求。随着YOLO系列的不断改进,YOLOv5、YOLOv7、YOLOv8等模型在检测大目标方面展现了更高的精度。例如,Qu等人提出的基于YOLOv5的多尺度特征融合网络,在PASCAL VOC和MS COCO数据集上mAP@0.5分别达到89.1%和67.8%。黄路等人基于改进的YOLOv5实现了基于区域的多目标检测,在PASCAL VOC数据上mAP@0.5达到81.7%。

无人机航拍图像具有检测目标数量大、背景复杂等特点,同时,受无人机硬件限制,部署在无人机的目标检测模型参量需要足够小。大量学者采用YOLO作为无人机目标检测模型,满足无人机目标检测对实时性、准确性、鲁棒性的要求。但是,YOLO目标检测模型在网络中使用较小的特征图进行边界框的预测,这可能导致小目标的细节信息丢失。因此,有学者对YOLO系列模型进行改进以提高无人机图像目标检测准确率。如张朝阳等人将YOLOv5融合Swin Transformer多头注意力机制并使用完整交并比(complete intersection over union,CIoU)作为边界框回归的损失函数,在遥感目标数据集NWPU VHR-10上mAP@0.5比基线模型提高了3.05%;刘晋川等人使用一种多阶段特征融合方法,并将其与注意力机制串联到特征挖掘模块,在小目标检测数据集上的检测精度比原有模型提高了8.5%;Ju等人使用改进的Darknet53作为骨干网络,利用尺度匹配策略为小目标检测选择合适的尺度和锚点大小,在航空影像中的车辆检测(vehicle detection in aerial imagery,VEDAI)数据集上实现较高的检测精度;胡均平等人基于YOLOv5在颈部特征融合中增设深、浅卷积特征的可学习自适应权重,在TT100K(Tsinghua-Tencent 100K)交通数据集上mAP@0.5达到77.3%。Shao等人基于YOLOv8提出了一种轻量级的无人机图像目标检测模型Aero_YOLO,在VisDrone2019数据集上mAP@0.5达到28.6%。Cai等人提出了一种新的损失函数CFIoU,解决小物体检测中边界框收敛速度缓慢和空间信息利用率不高的问题。在VisDrone2019数据集上,应用CFIoU之后,基于YOLOv8s模型的mAP@0.5指标达到33.6%。顾宙瑜等人设计了一种高效瓶颈模块,提出Rapider-YOLOX模型,在PASCAL VOC 2007数据集mAP@0.5达到77.92%、每秒处理帧数达到45.40。宋华杰等人对YOLOv3算法的损失函数进行了改进,在不影响车辆检测速度的同时,召回率、精确率分别提升了0.1、0.105。但是,上述学者采用的改进方法没有考虑模型不同层级之间高低特征语义信息缺失的问题,以及无人机硬件对模型参数量的要求。

因此,本文在YOLOv8架构上进行了深入优化,提出了适用于无人机航拍图像的目标检测模型UAVAI-YOLO。首先,针对无人机航拍图像中目标小且特征提取困难的问题,本文在骨干网络中采用改进的C2f_DCN模块,该模块利用改进的可变形卷积网络(deformable convolutional networks,DCN)扩大特征提取时的感受野,从而提高骨干网络的特征提取能力。其次,为了有效利用P2特征层中的小目标语义信息,本文将颈部(neck)部分进行重新构建,将P2、P3、P4、P5特征层输入neck部分。同时,为了抑制引入P2特征层带来的参数量增加问题,在骨干网络与颈部特征链接处插入了Conv_C模块,并在neck部分采用了改进的C2f_ODConv模块,这样在降低模型参数量的同时能够提取更丰富的语义信息。然后,为了更好地结合P2、P3、P4、P5特征层的上下文语义信息,本文在特征融合采用双向特征金字塔网络(bidirectional feature pyramid network,BIFPN),更好地帮助网络模型捕捉上下文依赖关系。最后,为了提高模型对目标检测框的判断准确性,本文用具有动态聚焦机制的边界框回归损失(Wise-IoU)函数替代了原始损失函数,避免了因交并比(intersection over union,IoU)判别造成的网络模型检测精度较低的问题。在公开的VisDrone2019数据集和无人机基准目标检测和跟踪(UAVDT)数据集上的实验结果表明,本文对无人机航拍图像中的目标检测具有优良的检测效果。

1 YOLOv8基线网络模型

本文采用的基线网络模型为YOLOv8,其网络架构如图1所示。YOLOv8是YOLO系列中具有更快轻量的模型,且相比于YOLOv4、YOLOv5增加了focus模块和跨阶段局部网络(CSPNet),在YOLOv8网络模型主要分为backbone、neck、prediction 3部分。

图片

图1   YOLOv8n网络模型

对输入图像进行数据处理,将其缩减到640×640的尺寸。backbone由CBS模块、通道到像素(channel-to-pixel,C2f)模块与空间金字塔池化(SSPF)模块组成,主要作用是对输入的图像进行特征提取。neck主要采用了路径聚合网络(path aggregation network,PANet)将不同特征层和检测层进行融合。predictions采用CIoU_loss作为Bounding_box的损失函数,使用非极大值抑制(non-maximum suppression,NMS)对识别目标进行筛选。

2 改进的UAVAI -YOLO模型

2.1 UAVAI-YOLO总体架构

改进的UAVAI-YOLO网络模型如图2所示。首先将YOLOv8中backbone的C2f模块替换为改进的C2f-DCN模块,使用可变形卷积在网络和感受野中引入偏移量,在不同感受野下对特征图进行提取信息,在neck部分使用全维动态卷积(omni-dimensional dynamic convolution,ODConv)构成C2f_ODConv模块,同时考虑了空域、输入通道、输出通道等维度上的动态性,极大提高了模型检测精度。其次对neck部分进行重构,新增一个P2特征层,使其增加对小目标的检测能力。然后对原始YOLOv8模型的IoU损失函数改进,引入Wise-IoU。最后特征融合时为使模型更好地结合上下文语义信息,引入BIFPN模块替换原网络中特征融合网络。

图片

图2   改进的UAVA-YOLO网络模型

2.2 改进的C2f_DCN模块

DCN通过引入可学习的偏移量来允许卷积核在执行卷积操作时进行形变,这样可以捕捉到图像中更加灵活和多变的特征,解决了传统CNN模型中空间提取特征不足的问题。通常2D卷积由两个步骤组成:1)在输入特征图X上使用规则网格R进行采样,如式(1)所示;2)对由w加权的采样值求和,如式(2)所示。网格R定义了感受野的大小和扩张。

图片

(1)

图片

(2)

其中w为权重矩阵,Pn为卷积核,x为输入特征图,P0为卷积中心点坐标。

相比传统的CNN卷积,DCN卷积引入了由双线性插值得到的

图片

偏移量,如式(3)所示,以此提升模型的感受野,解决CNN模型面对小目标检测时特征提取困难不足的问题。

图片

(3)

但是DCN卷积引入了额外的可学习偏移量,相比于传统的卷积操作需要更多的计算资源。同时当DCN卷积在学习位置偏移量

图片

时,无法确定其感受野区域的有效性,可能会导致优化过程中梯度消失或爆炸的问题。因此本文对DCN卷积采样点范围进行改进,利用多层网格R叠加的方法,确定位置偏移量采样点的感受野,如式(4)所示。

图片

(4)

本文提出的改进的DCN卷积在不增加模型参数量的情况下,实现了对DCN卷积位置偏移量的采样点感受野多层级采样。卷积采样点感受野如图3所示。

图片

图3   卷积采样点感受野((a)传统卷积采样点;(b)DCN卷积采样点;(c)改进的DCN卷积采样点)

2.3 重构YOLOv8的目标检测头

目标检测头是用来对特征金字塔输出特征进行目标检测的,它包括了卷积层、池化层和全连接层等。在原YOLOv8目标检测层特征图有3层(P3、P4、P5),分别用于检测8×8、16×16、32×32大小的特征图,但是对于较小目标检测效果较差,因此增加P2层,用于检测160×160大小的特征图,实现较小目标检测。但是增加P2层会导致模型参数量以及计算复杂度的提升,因此,在骨干网络与neck特征链接处添加了额外的Conv_C模块,通过对输出特征通道进行调整,降低了模型参数与计算复杂度,改进的UAVA-YOLO网络模型如图2所示。但是,随着通道数的降低,对于neck解码部分需要更高效的特征提取模块,获取有效的语义信息。所以,在neck部分采用改进的C2f_ODConv模块。动态卷积层将n个卷积核的线性组合与注意力机制进行动态加权,使卷积操作依赖于输入,如式(2)所示。ODConv通过引入注意力机制对卷积核空间的4个维度进行学习,提取更加关注的语义信息。

图片

(5)

ODConv中使用通道注意力机制,计算Wi卷积核的4个维度,但没有关注到特征图中的空间信息。因此改进的C2f_ODConv添加了卷积注意力模块(CBAM),关注到空间维度特征信息,使C2f_ODConv的Wi卷积核提取具有通道和空间信息的语义信息。

2.4 添加BIFPN

传统的特征融合面对多尺度目标检测无法充分地结合上下文语义信息。因此,为解决高低层特征融合时的多尺度问题,本文引入BIFPN加权双向特征金字塔替换YOLOv8的网络模型中特征融合网络。BIFPN相比特征图金字塔网络(feature pyramid network,FPN)的改进之处主要在于其能够更有效地融合不同尺度的特征信息,并且通过双向特征路径增强解决目标检测中上下文信息融合的问题。BIFPN能够更好地应对目标检测中的多尺度问题,提升模型的性能。

FPN和BIFPN加权双向特征金字塔如图4所示,BIFPN相比FPN在P3~P7部分具有自上而下的通路传递着高层的语义信息,同时P3~P6具有跳链通路传递同一层特征图的语义信息。

图片

图4   FPN和BIFPN的网络模型

在目标检测网络中,引入BIFPN模块能够通过自底向上的方式构建多尺度特征图金字塔,有效地实现特征融合,同时捕捉局部细节和全局上下文信息。这一结构设计有助于提升网络对多尺度目标的处理能力,尤其是在检测小目标和远距离目标时表现出色。

此外,BIFPN通过共享卷积核和更加高效的设计,能够有效减少计算量,这使得网络在保持高性能的同时更加高效。同时,BIFPN还能够增强网络对上下文信息的整合能力,为后续的目标检测任务提供更丰富的特征表示。因此,本文引入BIFPN模块解决多尺度目标处理、捕捉上下文信息等方面的问题。

2.5 损失函数的改进

YOLOv8的损失函数更加侧重于检测大物体或者具有较高置信度的物体,当面对小物体和遮挡或者重叠的物体时,检测的准确性较低。为解决这个问题,对损失函数的优化方向有分类和回归两部分。分类损失函数仍采用交叉熵损失函数(BCEL),回归部分采用分布焦点损失函数(DFL)和目标边界框损失函数(BBRL),其完全损失函数表示为:

图片

(6)

为了提高模型的泛化能力和类别性能,使用Wise-IoU损失函数作为边界框的损失函数。当训练数据标注质量较低时,损失函数结合动态非单调聚焦机制,利用“离群值”对锚帧质量进行评估,避免对模型几何因素(如距离、宽高比)的过度惩罚。

同时,当预测框与目标框重合程度较高时,损失函数通过弱化几何因子的惩罚,使模型在训练干预较少的情况下获得更好的泛化能力。基于此,本文采用了具有两层注意机制和动态非单调FM机制的Wise-IoU。其表达式如式(7)和式(8)所示。

图片

(7)

图片

(8)

其中,

图片

图片

是预测框与实际框的交集的长度和宽度,

图片

是预测框与实际框的联合集,αδ是超参数,β表示预测框的差异程度。因此,利用β构造非单调焦点数,可以为异常值较大的预测框分配较小的梯度增益,有效减少低质量训练样本的有害梯度。其预测框与GT框示意如图5所示。XgtYgt表示预测框坐标值,xy代表GT框的坐标值,HW以及HiWi分别代表两个方框的宽度和高度。

图片

图5   Wise-IoU预测框示意

3 实验结果与分析

3.1 实验数据集

实验数据集采用中国天津大学机器学习与数据挖掘实验室AI SKYEYE团队收集的VisDrone2019数据集和UAVDT数据集。VisDrone2019是由无人机在不同场景和天气下航拍得到的,一共收集了10个类别、8 599张图片、540 000个标签信息。

VisDrone2019数据集中存在大量的密集小目标,其目标尺寸如图6所示。从图7中可以得出该数据集的GT框长宽比都在0.1以下。

图片

图6   VisDrone2019数据集宽高分布

图片

图7   VisDrone2019数据集部分展示

AI SKYEYE团队将VisDrone2019数据集进行划分,其中6 471张图片做训练集,548张图片做验证集,1 580张图片做测试集。图7展示了VisDrone2019数据集中部分图片的标注信息。

UAVDT数据集是关于无人机目标检测追踪的大规模视频数据集,包含10小时的原始视频,约8 000个具有代表性的视频帧,这些视频帧带有手动标注边界框和一些有用的标签,例如车辆类别和遮挡。该数据集是由无人机在各种复杂场景下捕获的,主要用于执行3个基本任务:目标检测(DET)、单目标跟踪(SOT)和多目标跟踪(MOT),UAVDT数据集部分展示如图8所示。该实验采用的目标检测任务数据集包括31 353张训练图片、9 382张验证图像。

图片

图8   UAVDT数据集部分展示

3.2 实验环境

模型的实验环境:CPU为Intel®Core(TM)i5-12 400F,运行内存32 GB,GPU为GeForce RTX 4 080,显存16 GB,操作系统为64位Windows11。采用Pytorch1.8深度学习框架,CUDA版本为10.2,epochs为200。

3.3 实验评价指标

本文采用mAP@0.5、精确率P、召回率R与参数量作为评价指标。

图片

(9)

图片

(10)

其中,TP为正确样本数,FP为误报样本数,FN为漏检的正样本数。平均精度(AP)是衡量模型检测效果的常用标准,AP是召回率取值0到1时准确率的平均值,mAP综合考虑了准确率和召回率,能够很好地衡量目标检测效果。

图片

(11)

其中,J(P,R)k为平均精度函数,即类别编号k时的准确率P与召回率R构成的P-R曲线下方面积。 IoU的阈值为0.5时的mAP称为mAP@0.5,将其作为目标检测模型检测精度的评价指标。

3.4 实验结果分析

在YOLOv8n模型中验证原始模块与改进模块的有效性。实验结果如表1~表4所示。

表1   改进的C2f_DCN对比实验

图片

表2   重构的检测层对比实验

图片

表3   BIFPN对比实验

图片

表4   Wise-IoU损失函数对比实验

图片

从表1可知,在YOLOv8的backbone使用C2f_DCN卷积,mAP@0.5达到34.0%,相比原始的DCN卷积,mAP@0.5提高了0.4%。

为了不增加模型的参数量,在neck部分添加P2检测层。本文使用Conv_C模块对检测特征层进行降维,同时为避免通道压缩造成的语义信息丢失,使用改进的ODConv卷积,加强模型的特征提取能力。

从表2可知,在YOLOv8的neck部分使用改进的C2f_ODConv并添加P2特征层,在参数量仅比基线模型YOLOv8增加0.9 MB的情况下,mAP@0.5达到35.4%,相比使用原始的ODConv卷积,mAP@0.5提高了2.7%。

为了使模型在特征融合时能够充分结合高层语义信息与底层语义信息,使用BIFPN特征融合模块。

从表3可知,使用BIFPN特征融合模块后,mAP@0.5达到33.2%。

为提高模型的收敛速度与准确性,本文使用Wise-IoU损失函数。从表4可知,使用Wise-IoU损失函数后,mAP@0.5提高了0.6%。

以YOLOv8n为基线模型,将所改进的模块逐步添加到基线模型,实验结果如表5所示。首先在骨干网络中使用改进的C2f_DCN模块,提高模型的特征提取能力。其次,对neck部分进行重构,添加P2特征层,并使用改进的C2f_ODConv卷积替换原模型的C2f模块(AD_P2)。然后,使用BIFPN模块结合上下文语义信息。最后使用Wise-IoU损失函数。

表5   在VisDrone数据集消融实验

图片

表5中序号1为原始的YOLOv8n基线模型,序号2~4为分别添加不通模块得到的改进模型。从表5可以看出,当在基线模型基础上添加C2f_DCN模块时,mAP@0.5达到34.0%,相比基线模型提高1%。在序号3中对neck部分进行重构,使用Conv_C模块将骨干网络输出通道调整为512,该方法不仅增加了P2特征检测层,而且模型参数量仅有3.9 MB,其mAP@0.5达到35.8%。在序号4中使用BIFPN进行上下文语义信息融合,mAP@0.5达到36.7%。在序号5中使用Wise-IoU损失函数,其mAP@0.5达到37.4%。实验结果证明改进的UAVAI-YOLO模型相比基线模型,mAP@0.5提升了4.4%。

将UAVAI-YOLO模型与目前主流目标检测模型在VisDrone2019数据集和UAVDT数据集进行对比,实验结果如表6和表7所示。

表6   在VisDrone2019数据集与其他主流目标检测模型对比

图片

表7   在UAVDT数据集与其他主流目标检测模型对比

图片

从表6和表7可以看出,相比YOLOv8n,UAVAI-YOLO在VisDrone2019数据集上的mAP@0.5提高了4.4%,在UAVDT数据集上,mAP@0.5提高了1.1%。与其他网络模型相比,UAVAI-YOLO模型的检测精度都具有优势,虽然在VisDrone2019数据集中检测精度低于KPE-YOLOv5模型,但是UAVAI-YOLO模型参数量比KPE-YOLOv5模型低4.3 MB。整体而言,UAVAI-YOLO模型对于小目标的检测效果优于其他模型。

3.5 可视化结果分析

为验证UAVAI-YOLO模型的检测效果,本文使用YOLOv8模型与UAVAI-YOLO模型在VisDrone2019数据集测试集进行推理,结果如图9所示。从UAVAI-YOLO模型预测图标红区域可以看出,本文模型在无人机目标检测精度方面具有较高的性能。

图片

图9   在VisDrone2019测试集的结果

4 结论

针对目前主流检测模型对密集小目标检测存在误检、漏检等问题,基于YOLOv8提出一种航拍下密集小目标检测UAVAI-YOLO模型。首先,引入了改进的C2f_DCN模块到骨干网络中,这显著增强了网络的特征提取性能。接着,为了更有效地利用P2特征层中的细小目标语义信息,本文重新设计了neck部分。此外,考虑到P2特征层引入的参数量增加问题,本文在骨干网络与neck特征层连接处引入了Conv_C模块,这不仅减少了模型参数,还能提取更丰富的语义信息。随后,为了更紧密地整合P2、P3、P4、P5特征层中的上下文语义信息,本文特征融合采用BIFPN架构,以更好地辅助网络模型捕捉上下文依赖关系。最终,为了提高模型对目标检测框的判断准确性,本文采用Wise-IoU损失函数替代原有的损失函数。在实验结果中验证了本文改进的DCN卷积和重构的neck部分,在仅增加较少的参数量的情况下,能够极大地提升模型性能。UAVAI-YOLO模型在VisDrone2019数据集和UAVDT数据集的mAP@0.5检测精度分别达到37.4%和34.9%,比基线模型分别提升了4.4%和1.1%,这证明UAVAI-YOLO模型具有更高的检测精度和鲁棒性。

http://www.lryc.cn/news/574517.html

相关文章:

  • NLP基础1_word-embedding
  • 桥头守望者
  • iostat中的util原理
  • OpenCV CUDA模块设备层-----检查 CUDA 错误并输出调试信息内联函数checkCudaError()
  • 【STM32】JTAG / SWD 调试原理简析
  • IN子查询与JOIN的区别理解
  • 数据赋能(319)——安全与合规——数据安全可控
  • 烟花爆竹生产企业库房存储安全风险预警系统
  • 前端如何让用户回到上次阅读的位置?
  • 医学数据分析实战:冠心病发病因素可视化
  • vue3+echarts实现tab切换多个图表
  • 微信小程序节点相关总结
  • 服务器常见问题以及解决方案
  • 学习threejs,使用kokomi、gsap实现图片环效果
  • 【AI落地应用实战】Chaterm:重新定义终端操作的AI智能工具
  • mapbox基础,导出地图
  • 打表法从原理到实战详解
  • RabbitMQ + JMeter 深度集成指南:中间件性能优化全流程解析!
  • uniapp/Vue/微信小程序瀑布流,小红书瀑布流,豆瓣瀑布流,淘宝瀑布流布局
  • 微信小程序如何实现通过邮箱验证修改密码功能
  • ORACLE表空间扩容
  • jmeter接口测试
  • Github 2025-06-24Python开源项目日报 Top10
  • PyTorch topk() 用法详解:取最大值
  • Gym安装
  • 数据结构day2
  • 数组题解——​合并区间【LeetCode】
  • 使用 PyAEDT 设计参数化对数周期偶极子天线 LPDA
  • 如何解决TCP传输的“粘包“问题
  • HTTP面试题——缓存技术