改进YOLOv5的无人机航拍图像密集小目标检测算法

2024-03-03 11:21陈佳慧王晓虹
计算机工程与应用 2024年3期
关键词:尺度卷积精度

陈佳慧,王晓虹

1.辽宁石油化工大学 人工智能与软件学院,辽宁 抚顺 113000

2.辽宁石油化工大学 信息与控制工程学院,辽宁 抚顺 113000

近些年,无人机在军事领域和民用市场都处于快速发展时期,无人机航拍检测技术在电路巡检、防火巡查、交通监管、农作物监察等民用领域以及缉毒侦察、应急救援等军事领域都被广泛应用。随着卷积神经网络的创新发展,基于深度学习的目标检测算法因其展现出优异的检测性能,被广泛推行使用。

基于深度学习的目标检测算法主要分为单阶段检测和双阶段检测两种,双阶段目标检测算法以SPPNet、R-CNN 系列等为代表,首先通过区域提议网络生成候选区域,然后对候选区域进行分类和定位预测。以RetinaNet、YOLO 系列等为代表的单阶段目标检测算法是基于锚框来预测目标的类别和定位,在不进行候选区域的情况下完成端到端的目标检测。双阶段目标检测算法的平均精度高、误检率和漏检率低,但由于其复杂的网络架构,以及对候选框提取等操作,导致网络计算量庞大、检测速度慢,难以满足实时检测的需求。而单阶段目标检测算法的模型结构简单、检测速度快、复杂度低,在实时性方面展现出更优异的检测性能。

主流的目标检测模型大多是面向自然场景图像设计的,而自然场景图像与无人机航拍图像存在明显差异:(1)无人机飞行高度高、拍摄角度高导致航拍图像中存在大量小目标且目标之间尺寸跨度大,可提取到的有效特征过少。(2)航拍图像中背景复杂多变、密集小目标相互遮挡且易受环境干扰,导致检测效果不佳。(3)无人机运动速度变化剧烈,拍摄的图像模糊,模型的检测精度低。(4)无人机搭载的硬件设备计算能力有限、存在一定成本开销,对模型的检测速度和轻量化有较高要求。近些年,许多研究者为了提高小目标检测算法的性能,提出许多有用的方法。Kisantal 等人[1]通过复制粘贴小目标的操作来提高数据集中小目标的占比,从而提高小目标对网络的贡献。但这仅仅只是增加小目标物体在数据集中的样本数量,并不能保证在训练时正负样本数量的平衡,而且没有对小目标的特征信息加以利用。Lin 等人[2]提出经典的特征金字塔网络(feature pyramid network,FPN)和Liu 等人[3]提出的路径聚合网络(path aggregation network,PAN)通过采用自上而下和自下而上的连接方式将不同层级的特征信息相融合,这种多尺度学习方法在一定程度上提高了网络的多尺度特征提取能力。但是仅通过简单的元素相加来融合不同层级的特征图,忽略了不同层级的特征图拥有不同细粒度和价值的事实:浅层特征图的细粒度信息更有助于获取小目标的位置信息,而深层特征图的细粒度特征对语义信息的提取尤为重要。直接地相加或者拼接操作还会导致冗余信息和冲突的产生,增加网络的参数量,减慢了训练速度。TPH-YOLOv5[4]采用CBAM(convolutional block attention module)[5]注意力机制模块,先通过通道注意力,然后再经过空间注意力,将二者串联起来以提高空间和通道信息的利用率,增强有效特征的权重,并设计了带有Transformer[6]的检测头以提高网络的预测精度。QueryDet[7]首先在低分辨率特征图上粗略地预测小目标的位置,然后用这些粗略的位置信息引导高分辨率特征图更精确地计算出小目标位置。这样既可以得到更精确的预测回归,也可以对背景目标进行更少的计算。综上所述,虽然现有的小目标检测算法一定程度上提高了检测性能,但仍存在一些不足:(1)前景背景样本不平衡。(2)不同场景下目标特征捕获量不足。(3)为了提高精度而增加计算量和参数量,导致推理速度变慢,无法满足无人机实际部署应用。(4)模型的迁移能力弱,泛化性降低,适用性有限。

为了从航拍图像上小目标的有限特征中获取关键有效的特征信息,从而提高模型对小目标检测的精度,本文提出了一种针对密集小目标检测的算法模型RDSYOLOv5。主要改进如下:

(1)在网络中增添一个160×160 的小目标检测层,并通过K-means 聚类算法对无人机航拍数据集生成12个不同尺度的预设锚框,有效缓解由于锚框设定所带来的误检和漏检问题。

(2)设计了一种具有等级制的残差结构的多尺度特征提取模块C3Res2Block。在减少网络参数量和计算开销的同时在更细粒度级别上表示多尺度特征,从而抑制多尺度特征融合冲突,以提高网络的多尺度特征表征能力。

(3)在预测网络中,采用解耦检测头将分类任务与定位任务分离,减少两个任务之间的差异,加强模型的定位能力。

(4)使用软化非极大值抑制算法Soft NMS 对候选框进行优化,在不增加额外参数的情况下,提升模型在密集且遮挡场景下对小目标的检测精度。

1 YOLOv5网络结构概述

YOLOv5兼并了许多算法的优点,能很好地平衡检测精度和速度,能够做到实时性检测目标,是目前推行和使用最多的目标检测算法之一。YOLOv5共有s、m、l、x四个版本,其网络整体架构完全一致,但网络深度和宽度则依次变大。考虑到实际的应用场景和无人机硬件部署,YOLOv5s 的网络层次最少,网络结构清晰简洁,计算资源的开销成本最低,运行速度最快,更方便移植到其他设备,本文对YOLOv5s算法开展研究。

如图1 所示,YOLOv5s 的网络结构分为骨干网络(Backbone)、颈部网络(Neck)和头部网络(Head)三个部分,基于回归方法来快速高效地完成目标检测任务。Backbone 对输入图像进行不同倍率的下采样并在此上提取特征;Neck 通过FPN 和PAN 将不同层级的特征进行融合;Head 设计了三个不同尺寸的检测层分别用于预测大、中、小目标的类别和边界框回归。

图1 YOLOv5s网络结构图Fig.1 Architecture of YOLOv5s

除此之外,YOLOv5算法还提供了图像预处理操作和许多数据增强的方法,如马赛克(Mosaic)、随机仿射变换(Random affine)、混合(MixUp)等。在训练、推理和部署方面也提供了像自动锚框、余弦学习率、混合精度训练、遗传超参数进化、标签平滑处理、多种优化器等多种功能。这些方法的集成极大地增强了模型的检测效果,并且可以便捷、广泛地应用于实际场景中。

2 本文算法

本文以Ultralytics 6.1版本的YOLOv5s算法为基础设计了如图2 所示的RDS-YOLOv5 目标检测算法。Backbone 部分对输入图像分别进行4、8、16、32 倍的下采样,然后通过Neck部分将不同层级的特征进行融合,获得更丰富的上下文信息。其次使用C3Res2Block 模块替换Backbone 和Neck 中部分的C3 模块,对C3 模块中的残差结构进行重新设计,构造出具有等级制的残差结构的多尺度特征提取模块,以达到提高网络精度的同时减少参数量的目的。然后将融合后的四个尺寸的特征图送入解耦检测头Decoupled Head 中完成类别分数的预测和边界框坐标参数的回归。最后,采用Soft NMS 算法消除冗余的预测候选框,提升网络在复杂背景下对密集小目标的检测效果。

图2 RDS-YOLOv5结构图Fig.2 Architecture of RDS-YOLOv5

2.1 小目标检测层

原始的YOLOv5算法对输入图像分别进行8倍、16倍和32 倍的下采样,生成80×80、40×40、20×20 的预测特征图,以检测小目标、中目标和大目标。而无人机航拍图像中小目标实例多,尺度占比很小,经过多次下采样后,特征图中的目标信息变得非常稀少,原有的三个检测层已无法满足对微小目标的检测,容易产生漏检现象。因此,在网络原有的三个检测层的基础上新引入了一个160×160的小目标检测层,该层的高分率预测特征图中保留了更多关于小目标的位置信息和更丰富强大的细节特征,可以更好地获取到小目标的位置信息。同时,因为基于锚框的算法对初始设定的锚框尺度较为敏感,所以还要通过K-means聚类算法为数据集重新聚类生成12 个不同的预设锚框尺度,改进后的预设锚框尺度如表1 所示。这样能够有效地减少由于数据集中目标物体过小而锚框过大导致目标被忽略的情况,降低模型检测的漏检率和误检率。

表1 预设锚框尺度分配表Table 1 Anchor boxes scale assignment

2.2 多尺度特征提取模块

为了提高网络的多尺度特征提取能力,本文设计了一种具有等级制的残差结构的多尺度特征提取模块,称为C3Res2Block模块(C3 Res2Net Block)。如图3所示。

图3 C3Res2Block结构图Fig.3 Structure of C3Res2Block

输入特征图分别经过两个具有相同大小的卷积核且输出通道数减半的卷积层,并通过归一化和Sigmoid操作分出两个分支,以达到降维和特征提取的目的。然后一个分支再经过Res2Net模块后与另一个分支在通道维度上进行拼接。最后再次通过卷积、归一化和Sigmoid函数处理生成包含多尺度特征信息的输出特征图。

使用该模块对原YOLOv5 的Backbone 处第8 层的C3 模块以及Neck 处第21 层、24 层、27 层、30 层的C3模块进行替换。其中,第8 层的Res2Net 有短连接,第21 层、第24 层、第27 层、第30 层的Res2Net 没有短连接。采用这种方法能够有效增强网络的多尺度特征表征能力。

考虑到不同层级的特征图的细粒度对小目标的贡献不同,仅在平等级别上融合特征可能会产生冗余信息和冲突,影响上下文信息,干扰网络对小目标的学习,还会增加参数量,使得推理速度变慢。因此,本文引入了Res2Net 对C3 中的残差结构进行重新设计。如图4 所示,Res2Net 在单个残差块内使用分组卷积对输入特征图的通道进行均等划分;对划分出来的小组使用一组小卷积核,使模型轻量化;并采用阶梯的方式连接起来,以增加输出特征图所能代表的尺度数量。

图4 Res2Net模块结构图Fig.4 Structure of Res2Net module

Res2Net的计算公式如下所示:

假设Res2Net通过一个1×1卷积后特征图的输出通道数变为n,然后采用split操作将输入特征图沿通道方向均等地划分成s个子集,用xi表示,其中i={1,2,…,s}。每个特征图子集xi与特征图具有一样的尺度,但是通道数变为n/s。除了第一组卷积x1之外,每个xi后都有对应的3×3卷积处理,用Ki()表示卷积层,并将xi卷积后的输出用yi表示,其中i={1,2,…,s}。当前的xi与上一次输出的yi-1相加后的结果作为Ki()的输入,因此每一个Ki()的输入都包含了之前{xi,j≤i}的小组特征,同时又采用等级制阶梯状的连接方式,使得每个yi都在yi-1的基础上提取到更丰富更多尺度的特征。

由公式(1)可知,s值越大就有更大的感受野可以被学习。但是s值越大导致网络越冗余,根据文献[8]将s设置为4,使输出特征图中包含不同大小及数量的感受野。这种具有等级制的残差结构,使得各层级之间不再提取单一尺度的特征信息,而是在更细粒度级别上表示多尺度特征,抑制冲突信息的生成,使融合后的特征图具备更强大更丰富的语义信息和纹理细节,从而提高网络对小目标的关注度。

2.3 解耦检测头

YOLOv5 的检测头通过卷积改变输入特征图的通道数,使其输出通道数含有目标边界框回归参数、置信度分数以及类别分数,将多种信息集成在一个特征图里。分类任务和定位任务是共享权重强耦合在一起的,这种耦合检测头对两个任务的检测效果并不能达到最佳。

考虑到分类任务和定位任务之间存在冲突,本文采用解耦检测头(decoupled head)为两个任务分别解耦出单独的特征通道,有效地避免了不同任务之间的差异所带来的预测偏差,缓和了两者的冲突,从而加强模型的定位和分类能力,提高模型的检测精度。如图5 所示,解耦检测头首先使用1×1 卷积操作对输入特征图的通道数进行降维处理,以减少计算参数量。然后分出两条路线:一条路线使用2 个3×3 卷积,再使用1×1 卷积,将输出通道数变为网络需要预测的类别个数,完成分类任务;另一条路线同样使用2个3×3卷积进行特征提取,然后再将特征图分为两个,一个使用1×1卷积计算目标边界框的中心点坐标、宽高,另一个也使用1×1 卷积计算目标边界框与真实边界框的交并比,获取置信度分数,完成定位任务。

图5 耦合检测头和解耦检测头的比较Fig.5 Comparison of coupled head and decoupled head

2.4 软化非极大值抑制算法

目标检测任务的相关算法在检测过程中,通常会在目标周围生成大量的候选框,大部分的检测算法都使用非极大值抑制算法(non-maximum suppression,NMS)来消除冗余的候选框。NMS是一种通过临近最大值挑选候选框的算法,即对重叠度高的候选框打分,只保留分数最高的候选框。但是得分高的候选框不一定是最合适的框,像无人机航拍图像这种存在重叠、遮挡且密集情况的数据集来说,该算法在删除重复候选框的同时也会误将候选框中不同类别目标得分较低的候选框删除,即强制删除一些重叠但有效的候选框,导致召回率降低,出现漏检、误检的现象。因此,使用软化非极大值抑制算法(soft non-maximum suppression,Soft NMS)[9]优化检测时对候选框的处理操作,从而提升模型的检测精度。

Soft NMS算法是在NMS算法改进的基础上而来,为了解决线性的分数并不连续所带来的跳变问题,Soft NMS提出了高斯重置函数进行优化,计算公式为:

式(2)中,Si为当前候选框的得分,IoU为交并比,M为权重最高的框,bi是在检测时生成的候选框,Ni为IoU的阈值,D是最终检测结果的集合,σ是高斯惩罚系数。相对于NMS算法,Soft NMS算法中的超参数仅在验证和测试阶段使用,在训练时不会引入其他额外的参数。因此,选用Soft NMS 算法对候选框的置信度进行优化,有效地解决了对密集小目标的漏检现象,提高了模型的检测精度。

3 实验与分析

3.1 数据集

为验证RDS-YOLOv5 算法模型的有效性,本文所有的实验均在公开数据集VisDrone2019[10]上进行实验。该数据集是由天津大学机器学习与数据挖掘实验室团队使用不同型号的无人机在中国14个不同的城市和乡村、不同的背景场景以及不同的天气和光照条件下拍摄而来的。数据集中有10类标签,分别为pedestrian、people、bicycle、motor、car、bus、truck、van、awning-tricycle、tricycle,共260 万个标注。根据图6 训练集长宽分布图可知,更多的数据点集中在左下角,说明数据集中目标的长宽比例小于原图的1/10,符合小目标的定义,与本文研究的问题相关。

图6 训练集长宽分布图Fig.6 Training set length and width distribution

3.2 实验环境及评价指标

本文使用Windows10操作系统,编译器是Python3.8,PyTorch 1.10,CUDA11.1。所有模型在NVIDIA RTX 2080Ti GPU 上进行训练、验证、推理,训练时的超参数情况如表2所示。

选取均值平均精度(mean average precision,mAP)、参数量(parameters,Params)、GFLOPs、FPS 评价指标对改进算法的检测性能进行准确的评估。mAP0.5表示所有目标类别在IoU 阈值为0.5 时的平均检测精度。mAP0.5:0.95代表以步长为0.05,计算IoU 阈值从0.5~0.95的所有10个IoU阈值下的检测精度的平均值[11]。IoU阈值越高说明对模型的检测能力要求越严苛。如果在高阈值下模型的检测指标越高,说明模型的检测性能越好,那么模型的检测结果更满足实际应用的需求。Params代表模型的参数量,用来衡量计算内存资源的开销[11]。GFLOPs为每秒10亿次的浮点运算数,用于衡量模型训练时的计算复杂度[11]。FPS是指模型每秒能检测多少张图像,用于衡量模型检测的实时性[11]。

3.3 消融实验

为了验证添加小目标检测层P2、多尺度特征提取模块C3Res2Block、解耦检测头Decoupled Head以及引入Soft NMS算法的有效性,本文选择YOLOv5s作为基准模型,通过相同实验条件下的消融实验评估不同模块与方法相互组合时对目标检测性能的影响,消融实验结果如表3所示。

表3 消融实验结果Table 3 Ablation experiment results

从表3 消融实验结果可以看出,本文提出的模块和方法对模型检测小目标的精度均得到一定程度的提升。从单独添加某一模块而言,B 实验将小目标检测层加入特征融合和预测后,mAP0.5提升了5 个百分点,mAP0.5:0.95提升了3.2个百分点。说明新增小目标检测层在一定程度上可以提升模型检测的平均精度均值,也说明了使用K-means 聚类算法给四个检测层重新分配不同尺度的预设锚框,使模型可以很好地适应无人机航拍场景下小目标尺寸变化剧烈等问题。通过C实验可知,C3Res2Block 模块在减少模型参数量和浮点运算数的同时对mAP0.5和mAP0.5:0.95也有0.8 和0.3 个百分点的提升。说明该模块中具有等级制的残差结构可以增强网络的多尺度特征提取能力,使用的分组卷积可以减少模型参数,起到轻量化的作用。D实验引入了解耦检测头后,模型的mAP0.5和mAP0.5:0.95分别提高了2和1.3个百分点。说明解耦检测头在一定程度上缓解了两个任务之间的冲突,降低网络的预测偏差,提高小目标的定位精度。但是由于解耦检测头新增了额外的卷积层,导致网络的参数量和浮点运算数增加。从不同模块的相互组合方面而言,E、F、G实验可以看出,将三种模块组合时,模型的精度得到了明显的提升,虽然C3Res2Block与其他模块组合时mAP0.5相较理论上降低了0.2 个百分点,但是组合后mAP0.5:0.95却有大幅度的提升。最后,通过H实验可知,虽然采用Soft NMS 算法会导致网络的推理速度变慢,但是Soft NMS 算法在没有增加额外训练参数的情况下,大幅度地提高了模型的检测精度,其mAP0.5和mAP0.5:0.95分别提高了5.3 个百分点和5.8 个百分点,充分展现了该方法对密集小目标的有效性。

综上所述,集成四个方面改进后的模型RDSYOLOv5 较基准模型YOLOv5s 而言,其mAP0.5和mAP0.5:0.95分别提高了12.9和10.6个百分点,证明了改进后的模型RDS-YOLOv5能够有效完成对无人机航拍图像小目标的检测任务。

3.4 对比实验

为了验证RDS-YOLOv5 算法的优越性,除了与当前主流的检测算法进行对比实验外,还与YOLO系列算法进行比较。同时,还与VisDrone数据集竞赛的获奖模型TPH-YOLOv5以及针对小目标的QueryDet算法进行对比。主要以mAP和FPS为评价指标测试算法模型的检测精度和检测速度。

从表4可以看出,本文改进的算法模型在基本满足实时检测的要求下,其检测精度相较于主流算法模型来说达到了最高,mAP0.5和mAP0.5:0.95分别达到了46.9%和29.2%。相比YOLO 系列在2023 年推出的最新算法YOLOv7和YOLOv8而言,本文提出的RDS-YOLOv5算法无论是mAP0.5还是mAP0.5:0.95均明显高于二者,但是FPS却不如二者优秀。对比VisDrone 数据集竞赛的获奖算法TPH-YOLOv5 来说,RDS-YOLOv5 算法在检测精度和检测速度上明显优于该模型,检测精度提升了5.4 个百分点。虽然本文引进的Soft NMS算法会增加模型的推理时间,但是相较于针对小目标检测的算法QueryDet来说,在检测精度方面仍表现出明显的优势,检测精度提高了16.7个百分点。

表4 不同检测算法的对比实验Table 4 Comparison experiments of different detection algorithms

综上可知,RDS-YOLOv5 算法在满足一定实时性要求的基础上,显著提高了对无人机航拍图像密集小目标的检测精度,展现出更大的优势。

3.5 可视化分析

为了验证本文改进的算法模型在实际应用场景下检测的有效性,在VisDrone测试集中选取在不同场景下拍摄的图片进行测试。检测效果图7(a)是在光线变化场景下,可以发现改进的算法模型受光线变化影响较小。图7(b)是在复杂背景干扰下的检测结果图,可以看出改进的算法仍能检测到更多的目标。图7(c)是在拍摄图像模糊失真情况下的检测结果,可以发现改进的模型能够精准地检测到目标,展现出较好的鲁棒性和判别性,可以有效地应对实际场景下的检测需求。

图7 不同场景检测效果Fig.7 Detection effects in different scenarios

为了进一步评估本文算法的检测性能,还选取了目标密集且遮挡、高空角度拍摄,以及夜间黑暗场景下的图像分别对基准模型YOLOv5和本文提出的RDS-YOLOv5算法进行对比测试。如图8所示,左图为YOLOv5算法的检测效果,右图为RDS-YOLOv5算法的检测效果。

图8 检测效果对比Fig.8 Comparison of detection effects

图8(a)是在真实街道场景下的检测对比,图8(b)对高空拍摄下的小目标检测对比,可以看出改进后的算法在面对小目标密集且遮挡的情况,不仅可以检测出被树遮挡的目标,而且在因为高层建筑物遮挡导致光线昏暗场景下也能将骑车的人和摩托车、自行车以及不同类别的车区分开来。除此之外,也能精准地检测到远处受遮挡且重叠的小目标。图8(c)是在夜间黑暗场景下的检测对比,RDS-YOLOv5 相比YOLOv5,学习到了更充分更细节的小目标特征,夜间低照度并没有影响模型对检测目标的判断和检测,没有产生了误检和漏检现象。总的来说,改进后的算法模型对不同环境背景下的无人机航拍图像小目标具备更强的检测能力。

4 结束语

针对现有目标检测算法对无人机航拍场景下的小目标存在误检、漏检、检测效果差等问题,本文提出了RDS-YOLOv5目标检测算法以解决上述问题。

首先,针对无人机航拍图像的特点,在原YOLOv5的三个预测特征图基础上新增一个专门针对小目标的高分辨率特征图,该特征图包含了更浅层的位置信息与深层的语义信息,使模型更容易检测到小目标的位置。同时,采用K-means聚类算法重新生成对应的预设锚框尺度,以适应无人机场景下小目标尺寸变化剧烈等问题,降低了模型的误检率和漏检率。其次,针对数据集中小目标实例多、类别多样等问题,设计了具有等级制的残差结构的多尺度特征提取模块C3Res2Block,该模块不仅可以减少网络的参数量和计算量,还能提高网络的多尺度特征提取能力,增加网络对小目标的关注度。在预测时,采用解耦检测头Decoupled Head 将分类任务与回归任务解耦,缓和两者之间的冲突,提升模型的分类和定位能力。最后,采用Soft NMS 算法进一步优化对候选框的处理,提高模型对密集遮挡的小目标的检测精度。通过在VisDrone数据集上的实验结果表明,改进后的算法与多种主流的目标检测算法相比取得了最好的检测精度,并且在大幅度提高检测精度的同时也满足了无人机航拍实时性检测的要求。

猜你喜欢
尺度卷积精度
基于3D-Winograd的快速卷积算法设计及FPGA实现
财产的五大尺度和五重应对
从滤波器理解卷积
基于DSPIC33F微处理器的采集精度的提高
基于傅里叶域卷积表示的目标跟踪算法
宇宙的尺度
GPS/GLONASS/BDS组合PPP精度分析
改进的Goldschmidt双精度浮点除法器
9
一种基于卷积神经网络的性别识别方法