APP下载

基于改进YOLOv7的航拍小目标检测算法

2024-01-15牛为华魏雅丽

电光与控制 2024年1期
关键词:损失卷积精度

牛为华, 魏雅丽

(1.华北电力大学(保定)计算机系,河北 保定 071000;2.复杂能源系统智能计算教育部工程研究中心,河北 保定 071000)

0 引言

随着无人机技术的发展,“无人机+行业应用”逐渐成为社会刚需,无人机智能化在交通疏导、安防巡检、农业防害、物联网运输等方面发挥着重要作用,将目标检测技术应用于无人机航拍领域也得到越来越多重视。

在深度学习领域,基于卷积神经网络(CNN)的目标检测技术显著提高目标检测的性能。现阶段目标检测算法可以分为 R-CNN[1]系列双阶段目标检测算法以及 YOLO[2],SSD[3]系列单阶段目标检测算法。基于此存在多种针对自然场景数据集设计的深度学习目标检测算法,但无人机航拍图像与自然场景图像之间存在显著差异,其中,图像小目标多且密集,不同类型目标间尺度差异大,背景较复杂[4],直接将通用目标检测算法应用于无人机图像目标检测时,检测性能通常会有大幅降低,因此研究者进行有针对性的改进,主要从优化双阶段检测网络[5]、数据增强[6]、优化无锚方法[7]、优化轻量化网络[8]等几个方面展开。

文献[9]根据小目标的特点引入多尺度卷积模块构建特征融合预测网络,同时利用自适应优化权重得到高分辨率特征图,提升无人机图像的目标检测精度。基于无人机图像目标聚集的特点,文献[10]在R-CNN算法基础上提出一种多阶段集群检测网络ClusDet,该网络使用区域聚类、切片检测、尺度适应的方法,提高双阶段目标检测算法在高分辨率无人机图像上的运行速度与小目标检测率。针对遥感目标尺度变化大、遥感图像背景复杂等问题,文献[11]通过引入空间感知注意力模块,设计并融合全局上下文网络和金字塔结构,提高网络对特征丰富区域的关注度并生成更合适的特征图,提升模型检测准确率。

结合无人机图像特点和YOLO系列单阶段目标检测算法的实时性和准确性,本文充分利用 YOLOv7 算法的优势解决检测精度低等问题,有效提高了无人机场景下小目标检测的精度和速度。

1 基于多尺度特征融合的YOLOv7算法

YOLOv7算法在骨干网络中使用ELAN以及MP层进行特征提取,在检测头部之前添加REPvgg_block层,在部署时实现模型重参化,加快了检测速度,同时也使精度得到一定程度的提升。但针对无人机图像检测对象尺度跨越较大,小目标数量多且密集的特点,YOLOv7算法的现有结构还存在一些局限性,故本文提出一种基于改进YOLOv7的无人机图像小目标检测算法,主要从多尺度特征提取、注意力机制优化特征融合、改进损失函数3方面进行,改进后的模型网络结构如图1所示。

图1 改进YOLOv7算法的网络结构

1.1 多尺度特征提取

现有单阶段小目标检测算法的检测多是由输入图像(640像素×640像素)8倍、16倍、32倍下采样及特征金字塔和路径聚合网络得到检测头,但伴随着浅层特征图到深层特征图的获取,其中多次卷积池化操作丢失部分位置信息,针对航拍目标数据集小目标众多,部分类间方差较小的特点,现有网络结构不能发挥最大作用,在经过多次下采样后,原本3个尺度的特征图难以检测此类极小目标。

为了提高小目标的特征信息提取量,增加一个低层尺度的特征信息输入到PANet中,将骨干网络前期卷积得到的特征图C2输入颈部网络与{C3,C4,C5}进行特征融合,得到新的特征图P2针对小目标进行检测,增加图层融合过程如图2所示。其中,YOLOv7输入到检测头部的特征图层为{P2,P3,P4,P5},其大小见图2。

图2 增加小目标层融合过程

同时,为了保证检测速度,减小网络参数量和计算量,引入深度可分离卷积(DWConv)模块[12]替换原本YOLOv7算法中部分ELAN模块中的普通卷积,DWConv模块通过拆分空间和通道卷积操作大大减少模型参数量和计算量,如图3所示,其中,W,H,C分别代表输入图像的长度、宽度和维度。

图3 深度可分离卷积过程

通过引入DWConv模块进行多尺度特征提取,并增加一个专门针对极小目标的检测头部,减小参数量的同时提高检测准确率,有益于深入挖掘无人机图像目标检测的关键特征信息,能够实现对极小尺度目标的检测,提升 YOLOv7 算法在无人机航拍图像目标检测的效果。

1.2 注意力机制聚合网络

深度卷积通过不断叠加卷积模块来提高检测精度,但是无人机图像小目标众多、分辨率高,一味增加深度小目标更易丢失位置信息,也会降低算法检测速度。为了保持实时性同时提高网络检测精度,本文在骨干网络中引入CBAM(Convolutional Block Attention Module)[13],模型会将更多的注意力用来学习该区域显著特征,以便在有限的计算资源下更好地提取信息。

CBAM中图像先经过通道注意力模块(CAM),其主要聚焦于特征图中的有效语义信息,其过程如图4所示,通过神经网络卷积池化等操作获得一个特征权重Fc,再与原图相乘得到特征图。

图4 通道注意力模块

获得特征图之后输入空间注意力模块(SAM)中获取目标的位置信息,分别经过平均池化和最大池化,将得到的两个特征图做通道拼接,再对其进行卷积操作降维,经过归一化获得空间权重Fs,如图5所示。

图5 空间注意力模块

将CBAM插入主干网络ELAN模块后,提取特征图中有效信息,抑制无用信息,增强了背景信息对回归、分类的指导,并避免降低局部细节信息损失,提高回归的精度。

另外针对数据集小目标占比较多的特性,在CBAM的基础上做改进,实现动态赋予不同特征图权重,在最终跨层级的特征融合过程中获取更为有效的信息,引入CBAM改进原本普通加和Concat模块,称改进后的融合模块为CCT(CBAM Concat)。

在原本特征融合过程中,输入到融合部分的两个特征图以1∶1的权重直接融合,但由于小目标的像素小,在多次卷积之后,深层特征图中包含的小目标相关信息丢失,在最终跨层级的特征融合过程中应该增大浅层特征图的权重,保留更多有效信息。

CCT模块融合过程如图6所示。

图6 CBAM改进特征融合

图6中,高层特征图FB首先和浅层特征图FA进行普通加和,将混合特征图FAB沿通道空间维度得到注意力权重矩阵η和β,其中,β是结合两个维度信息的权重矩阵。

利用β实现权重分配,将更大的权重分配给浅层特征图,用值全为1的矩阵减去β,再与高层特征图相乘,融合得到一个最大化表达目标信息的特征图,融合过程推理如下

FAB=FA⊕FB

(1)

η=sigmoid(MLP(AvgPool(FAB))+MLP(MaxPool(FAB)))

(2)

β=sigmoid(conv(AvgPool(η×FAB);MaxPool(η×FAB)))

(3)

ZA=FA×β

(4)

ZB=FB×(1-β)

(5)

ZAB=ZA⊕ZB。

(6)

利用注意力机制改进主干网络特征提取,并将CBAM替换原本融合模块,可以根据不同尺度特征图的特点,计算并动态分配注意力权重,使每次特征融合过程都能更关注小目标区域的特征,提高多尺度特征融合效率,减少背景噪声干扰,提高检测精度。

1.3 改进定位损失函数

在目标检测中,检测头的损失函数通常由置信度损失、分类损失、定位损失3部分组成,即

Lobject=Lloc+Lconf+Lclass。

(7)

YOLOv7算法中分类和置信度损失均使用二元交叉熵损失(BCE With Logits Loss)函数来计算,定位损失由CIoU损失(CIoU Loss)[14]函数来计算,CIoU损失函数考虑了检测框长宽比,真实框与预测框之间中心点距离、重叠率的因素,但没有考虑预测框回归方向,导致模型收敛速度较慢。

针对CIoU的不足,本文在检测头定位损失中引入SIoU[15]代替原损失函数,SIoU引入真实框和预测框之间的向量角度,加快预测框回归速度,算式为

LSIoU=1-RIoU+(Δ+Ω)/2

(8)

式中:Ω为形状损失值;Δ为结合角度损失而得距离损失值,Δ算式为

(9)

(10)

γ=2-Λ

(11)

Λ=1-2×sin2(arcsinx-π/4)。

(12)

预测框B与真实框BGT如图7所示。其中,σ为真实框与预测框的中心点的距离,Λ中arcsinx=α,此值由真实框与预测框的中心点通过坐标计算Cw和Ch两个值所得。角度损失方面,SIoU为让模型收敛得更快,在过程中首先最小化角度α,从距离损失计算中可以看出,当α越趋于π/4,其贡献越大。

图7 预测框B与真实框BGT

SIoU从预测框与真实框之间的距离、长宽比、重叠率等因素出发,引入回归向量角度,重新设定损失函数,降低回归自由度。经过对比实验证明,SIoU Loss能带来更快的收敛和更好的性能,在模型保证精度的同时加快训练速度。

2 实验结果与分析

本文基于PyTorch 深度学习框架,利用NVIDIA RTX A5000A GPU进行实验,使用VisDrone2019数据集[16]将本文提出的改进算法与多种基准算法做对比实验。

2.1 数据集概述

VisDrone2019数据集由多架无人机倾斜俯视拍摄而成,包含了6471张训练集图像,548张验证集图像,1610张测试集图像。如图8(a)所示,10个类别的标注框占比不均且数量众多,图8(b)展现训练集中所有标注框尺寸与图像尺寸长宽比值的分布图,左下角聚集了更多的点,说明数据集中存在更多的小目标。此数据集反映了无人机在实际应用场景的一般情况,检测目标类别分布不均衡、小目标众多、大目标稀少,部分类间方差较小,类别混淆严重,也说明无人机数据集的特点对于检测、跟踪任务而言仍是比较困难的。

图8 VisDrone2019 数据集统计图

2.2 评估指标

为准确地反映深度学习模块在无人机图像领域的检测能力,实验采取精准率P和召回率R来分析检测网络的错检率和漏检率,精准率和召回率越高表示检测过程错检率和漏检率越低,引用评估指标P,R算式为

P=TP/(TP+FP)

(13)

R=TP/(TP+FN)

(14)

式中:TP为目标预测正确的数量;FP为目标预测错误的数量。在此基础上,实验另外采取mAP50,mAP50∶95,GFLOPs,Params(参数量),FPS等指标评价模型性能。mAP50反映数据集中各类精度的平均值即不同类别目标的综合分类能力;GFLOPs指每秒千兆次浮点运算,用于衡量训练模型时的计算复杂度;Params是用于衡量计算内存资源的消耗;FPS指模型每秒检测图像帧数,用于衡量模型实时性。

2.3 消融实验分析

为了验证本文提出的融合小目标层、SIoU损失函数改进以及改进CBAM特征融合CCT模块的有效性,进行消融实验评估不同模块在相同实验环境下算法的检测性能。实验选取YOLOv7作为基准算法,输入图像分辨率为640像素×640像素,每种实验控制参数相同,输出训练300个epoch后的结果,如表1所示。

表1 消融实验

由表1可知,在增加小目标检测层后,检测精度提升明显,在YOLOv7算法的基础上mAP50提升2.1个百分点,证明其存在的有效性,但Params增加0.57×106,GFLOPs增加了14.4,导致FPS略有降低。考虑实际应用情况,为减少计算开销、提高训练效率,本文将部分ELAN中的普通卷积换为深度可分离卷积,牺牲0.8个百分点精度的同时,Params减少4.23×106,GFLOPs减少21.5,FPS提高5 帧/s。引入CCT模块给特征图分配权重后,得到的mAP50比YOLOv7算法提高了1个百分点;用SIoU损失函数替换CIoU定位损失后,mAP50进一步提升0.8个百分点,且模型收敛速度变快。最后,集成三方面改进的算法较YOLOv7基线算法的 mAP50提升2.8个百分点,达到最优的检测精度。

2.4 对比实验分析

为验证本文基于改进YOLOv7算法的有效性,在VisDrone2019数据集上与各种先进目标检测算法(RetinaNet,Faster R-CNN,SSD,YOLOv4,YOLOv5,YOLOv7),以及其他针对小目标改进的算法进行对比实验,设置同样的学习率与训练轮次,主要评估指标为mAP和FPS。

表2为不同算法在无人机航拍图像中各个类别的对比检测结果。表2中,Faster R-CNN和YOLOv7算法在Bicycle,People等小目标检测中表现较好,在提取候选框这一步能更多地定位小目标框,避免了漏检情况的发生;本文算法在像素占比小的Pedestrian类别中与YOLOv7算法相比mAP提升3.3个百分点,Motor类别提升1.3个百分点,其他诸如Car,Bus,Truck等较大目标类别检测能力也有进步,证实了本文提出的多尺度特征融合算法在小目标检测领域的有效性。

表2 VisDrone2019数据集上不同算法各类别检测结果对比

根据表3数据可以看出,本文提出的改进YOLOv7算法mAP为52.6%,相较于RetinaNet,Faster R-CNN,YOLOv4算法分别提升了28.9个百分点、19.4个百分点、10.0个百分点,相比于速度最优模型YOLOv5s和精度最优模型YOLOv7分别提升19.4个百分点和2.8个百分点。改进后的算法在FPS上达到62 帧/s,相比Faster R-CNN,YOLOv4等算法也都有大幅提升。在复杂数据集中,本文算法在保证检测基本实时性的基础上能提升检测精度,具有较明显的优越性。

表3 不同目标检测算法对比实验

2.5 检测结果可视化

为验证改进算法在实际场景中的目标检测效果,本文使用VisDrone2019数据集中的具有代表性并且检测较为困难的图像进行测试,YOLOv5算法在众多小目标检测算法中速度最优,YOLOv7算法精度最优,评估二者与本文改进算法对不同实际情况预测结果并可视化分析,检测结果如图9所示。

图9 检测效果对比

本文主要对比在昏暗灯光下、高空极小目标及重叠目标下模型的表现,来验证其检测性能和鲁棒性。检测结果证明,改进后的算法效果被光线影响不大且可以避免一部分漏检并改善错检情况,同时在多个目标重叠且受遮挡的情况下,可以准确定位目标框并分类正确。可视化结果表明,该模型准确率较高且具有较好的鲁棒性,符合实际情况的使用需求。

3 结论

本文提出的基于改进YOLOv7的小目标检测算法,目的是利用多尺度特征图融合来获取航拍图像中更有用目标信息。改进后的算法通过增加小目标检测层,解决了针对航拍数据集中极小目标大量存在导致漏检错检的问题;另外,通过添加通道-空间注意力模块,在特征融合中通过自适应学习动态调节各输入特征层的权重,合理分配检测任务所需求的特征信息比例,改善对小目标的细节感知能力;最后在检测头部改定位损失函数为SIoU Loss,在保证模型精度的同时加快训练速度。

改进后的YOLOv7算法对不同航拍场景下的不同类别目标均有较好的检测效果,与多种先进算法相比取得了最优的检测精度,显著提升了基线算法YOLOv7对无人机航拍小目标的检测能力。虽然改进模型的精度、速度在VisDrone2019数据集上较为可观,但模型参数量也有一定的增加,后期工作仍需关注在无人机并行设备上的实际测试部署工作,实现轻量化模型搭载无人机实时监测任务。

猜你喜欢

损失卷积精度
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于DSPIC33F微处理器的采集精度的提高
基于傅里叶域卷积表示的目标跟踪算法
GPS/GLONASS/BDS组合PPP精度分析
一般自由碰撞的最大动能损失
损失
改进的Goldschmidt双精度浮点除法器