黄丹丹, 高 晗, 刘 智,2*, 于林韬, 王惠绩
(1. 长春理工大学 电子信息工程学院,吉林 长春 130022;2. 长春理工大学 空间光电技术国家地方联合工程研究中心,吉林 长春 130022)
无人机凭借尺寸小、操作灵敏等优点,能够替代人类完成一些高难度或有危险的任务[1]。目标检测是搭载在无人机平台的一项重要视觉任务,能够实现空中对地俯视视角下的目标检测,这在军事侦察、森林防火、高压输电线路巡检、环境监测、智慧交通等领域发挥重要作用[2]。在人工智能时代,基于卷积神经网络的目标检测算法不断刷新着目标检测的性能[3-4]。但是,目前绝大多数的目标检测算法都是基于平视自然的视角下进行的改进。由此可见,设计一种专门针对无人机视角下的目标检测模型将是一项有意义且具有挑战性的工作。
在无人机目标检测的实际场景中,面临许多挑战性的问题。例如,当无人机的飞行高度发生变化时,图像采集设备与拍摄目标之间的距离也会发生变化,这就使得无人机获取的图像中目标尺度变化过大,从而影响目标检测的精度[5];当无人机的飞行高度较高时,高空俯视视角下采集的图像会包含大量的小目标。由于检测网络对这些小目标能够提取的特征特别少,导致检测精度非常差[6];由于无人机机载嵌入式设备的算力有限,而常规的目标检测算法一般会产生较大的参数量,使无人机视角下的目标检测无法做到实时性[7]。
针对上述问题,研究者们做了大量工作。多尺度信息融合[8-10]是解决无人机平台下目标尺度变化大的有效方案,但多尺度融合会给网络增加许多参数,减慢模型的推理速度,不利于模型的部署。关于无人机视角下的小目标检测问题,Chen 等[11]提出了一种改进的R-CNN(Region-Convolutional Neural Networks)的小目标检测模型,通过上下文模型和区域提议生成器增强了RCNN 算法,以提高小目标检测性能;Li 等[12]人提出一种利用生成对抗网络(Generative Adversarial Networks,GAN),将低分辨率的小物体转换为类似大物体的高分辨率信息。上述工作改善了小目标检测的检测效果,但也引入了较多的计算量,网络模型不够轻量化。对于模型的轻量化处理,目前较为流行的方法是模型压缩[13],即在已经训练好的模型上进行简化,而Yang 等人[14]则提出了一种QueryDet 检测网络,使用一种新颖的查询机制来加速基于特征金字塔的目标检测器的推理速度。但该类方法实际操作复杂且稳定性较差。而Huang 等人[15]提出了一种YOLOv5-tiny 模型,大幅度提升了检测速度,但牺牲了较大的检测精度。最近的研究成果中,TPHYOLOv5[16]为了提高网络的预测回归能力,将Transformer 引入到YOLOv5 的检测头中,并且使用注意力机制模块,使网络更加关注被检测的目标,但这种方法在目标密集的情况下容易造成漏检。
鉴于以上分析,可知无人机视角下目标检测任务面临图像尺度变化大、小目标检测结果精度低以及机载嵌入式资源有限等问题。本文针对以上问题展开研究,提出一种基于YOLOv5 模型的面向无人机平台轻量化的目标检测方法。对于该方法的主要特点与改进之处描述如下:(1)在网络结构方面增加检测分支以提高模型的检测能力,增强来自于浅层特征的表达,解决目标特征在经过多次卷积池化后大量信息丢失的问题,同时缓解无人机飞行高度变化引起的图像尺度变化的问题;(2)采用NWD[17](Normalized Wasserstein Distance,NWD)与传统IOU(Intersection Over Union)混合的小目标检测度量方法,取代常用的IOU 度量[18-20],减轻IOU 对小目标位置偏差的敏感性,从而提高网络对小目标检测的检测性能;(3)为降低模型的参数量,引入Faster-Net[21]网络结构,并且与C3 网络结构融合,大大提高了目标检测的推理速度,使模型更适合无人机平台使用。
YOLOv5 算法模型作为端到端的卷积神经网络模型,可直接对输入的图片进行预测,从而得到目标的定位和分类[22-25]。YOLOv5 的网络结构主要由backbone 和head 组成,backbone 主要由Conv 层、C3 层和SPPF 层组成,具体结构如图1所示。 Conv 层由Conv2d 卷积函数、Batch-Norm2d 归一化函数以及SiLU 激活函数组成;C3层是由3 个卷积层和多个bottleneck 模块构成,是对残差特征进行学习的主要模块;SPPF 层位于backbone 的最后一个Conv 层后,将输入经过多个并行不同大小的Maxpool 后做进一步融合,可在一定程度上解决多尺度的问题。head 包括特征增强和预测两部分,特征增强部分由PANet(Path Aggregation Network)构成,旨在将不同层级的特征进行整合,通过自下而上的路径增强较低层次上的精确定位信号,从而缩短较低层与最顶层特征间信息路径。head 层的预测部分包含3个输出头,卷积步长分别为8,16,32,大尺寸检测头输出特征图检测小目标,小尺寸检测头输出特征图检测大目标[26]。
图1 YOLOv5 的backbone 层各结构示意图Fig.1 YOLOV5's Backbone layer various structural diagrams
当使用VisDrone 数据集[27]训练模型时,发现YOLOv5x 模型的精度要远超于其他模型,但YOLOv5x 模型的计算成本是YOLOv5 系列模型中最高的,不适合在无人机平台上应用,而YOLOv5s 模型虽然计算成本低,但精度却远不及其他模型。综合考虑,本文采用性能更加均衡的YOLOv5l 模型作为基准网络,并在此基础上进行优化和改进。
IOU 是目标检测常用的度量方式,但其自身也存在缺点:IOU 对于位置的微小变化非常敏感。所以Wang J 等人[17]提出了一种新的方法,即新的包围框相似度(NWD)来代替IOU。NWD 不仅能够实现IOU 的功能,而且对目标的尺度并不敏感,非常适用于测量小目标的相似性。
在小目标检测中,由于绝大部分物体不是标准的矩形,往往边界框会带有背景信息。而目标物体信息、背景信息会分别集中于边界框的中心点、边界上。因此,为边界框构建二维高斯分布时,可将边界框的中心像素设置为权值最高,中心点至边界逐步降低。对边界框R=(cx,cy,w,h)其中中心坐标为(cx,cy),宽度和高度分别w和h,将R建模为二维高斯分布N(μ,∑),其中:
用Wasserstein 距离计算分布距离时,对于不同的边界框μ1=N(m1,∑1)和μ2=N(m2,∑2)之间的二阶Wasserstein 距离计算公式如式(2)所示:
对于边界框A=(cxa,cya,wa,ha)和边界框B=(cxb,cyb,wb,hb)建模的高斯分布Na和Nb,公式最终可简化如公式(3)所示:
Jierun Chen 等人[21]研究发现:每秒浮点运算的效率低下,不一定会导致延迟减少。所以作者在此基础上指出:同时减少冗余计算与内存访问,能有效提取空间特征。在这一思路下,根据PConv 进一步提出了FasterNet,能够有效提高算法的推理速度。图2 所示为FasterNet 的网络结构,从图中可知该网络先进行PConv 操作提取空间特征,再进行两次PWConv 操作,能够充分有效地利用来自所有通道的信息。
图2 FasterNet 网络结构Fig.2 FasterNet network structure
图3 所示为PConv 工作原理:只需在输入通道的一部分应用Conv 进行空间特征提取,其他通道保持不变。对于连续或规则的内存访问,视第一个连续的通道或最后一个连续的通道为整个特征图代表进行计算。在不丧失一般性的情况下,可认为输入、输出特征图的通道数量相同。因此,PConv 的FLOPs 仅对于典型的r=1/4(r=Cp/C,C和Cp分别代表PWconv 与Pconv 的通道数),只有常规卷积的1/16。此外,PConv 的内存访问量较小,同样对于r=1/4,其仅为常规卷积的1/4。
图3 PConv 工作原理Fig.3 PConv working principle
如图4 所示,为了获取特征图中的通道信息,将逐点卷积(PWConv)附加到PConv,因此在输入特征图上形成了类似“T”形Conv 的结构,这种“T”形Conv 结构与常规Conv 结构相比能够更好地在图像中定位目标。
本文基于YOLOv5l 算法改进的模型如图5所示(彩图见期刊电子版),其中虚线框为新增的检测分支P2,用于解决无人机因飞行高度变化引起的尺度变化问题;针对IOU 对小目标位置偏差敏感的问题,提出基于NWD 与传统IOU 混合的小目标检测度量方法,提高了小目标的检测精度;图中绿色处理单元为本文新设计的C3_FN模块,这种C3_FN 模块是将FasterNet 与C3 融合得到的一种轻量化网络结构,以解决无人机机载嵌入式设备算力资源有限的问题。
图5 改进后的YOLOv5 模型Fig.5 Improved YOLOV5 model
新增的P2 检测分支为图5 中虚线框内所示,此分支可用于多尺度中极小目标的检测。P2 检测分支的输入,大部分来源于浅层中的卷积层,且包含许多信息,如:形状、位置、大小等。由于深层的特征图在经过多次的卷积和池化后,会损失较多信息,且大目标的特征有盖住小目标信息的可能,因而造成误检、漏检的问题。所以,引入浅层信息的P2 检测分支能够有效定位小目标的位置,从而可以更好地实现小目标的检测。同时,基于锚框的基准模型对锚框设定较为敏感,而新增的P2 检测分支在进行预测回归时,锚框的大小设定为数据集进行K-means 聚类分析后得到的小目标尺寸,因此更适合实际检测任务。其他各个分支的锚框设定如表1 所示。本文算法新增的P2 检测分支可减少由于物体过小而锚框过大所导致的小目标被忽略的情况,进而有效缓解由于锚框设定而引起的误检、漏检的情况。
表1 各个检测分支的锚框设定值Tab.1 Setting value of the anchor frame of each detection branch
IOU 是目标检测中常用的度量指标,IOU 的发展经历了GIOU,DIOU,CIOU 等历程。上述度量指标对于普通中大尺寸目标已有较好的效果,但是由于在无人机视角下,大多数地面目标均为只有几像素的小目标,缺乏外观信息和细节。而IOU 对不同尺度目标的敏感性差异很大,对于像素越小的目标,微小距离的改变就会导致IOU 下降的明显变化,进而导致模型对小目标检测精度的下降。于是本文引入NWD 来解决IOU对小目标位置偏差敏感的问题,提高网络对小目标检测的精度。
由于单独使用NWD 会造成网络收敛速度慢,因此本文采用NWD 和IOU 混合的方法,这样就可以完美解决收敛变慢及目标检测精度低的问题。本文采用的模型损失函数如公式(5)所示:
其中:α为可调节的超参数,取值范围为0~1,通过调节α的值来调节IOU 与NWD 的比重,即当α的值增大时,NWD 比重增大;当α的值减少时,IOU 比重增大。
如2.1 节所诉,YOLOv5 主干特征提取网络采用C3 结构会带来较大参数量,进而导致检测速度慢、应用受限等问题。在无人机视角下进行目标检测时,大且复杂的模型难以被应用。原因如下:首先,模型过于庞大,会面临内存不足的情况;其次,场景要求低延迟、响应速度要快、精度较高的模型算法。而FasterNet 网络采用PConv结构,该结构能够在减少冗余计算和内存访问的基础上更有效地提取空间特征。因此本文引入FasterNet 网络结构,并与C3 结合形成一种快速轻量化的网络结构C3_FN,其结构如图6 所示。将一半的特征信息通过FasterNet Block 生成特征图,另一部分只通过卷积、正则化和激活函数生成特征图,再将两部分特征图拼接,使得梯度组合的差异最大化,并减少大量梯度信息。
图6 C3_FN 网络结构Fig.6 C3_FN network structure
本文在无人机目标检测公开数据集Vis-Drone2019 上测试算法性能。该数据集含10 209张静态图像(6 471 张用于训练,548 张用于验证,3 190 张用于测试),由不同的无人机平台在不同地点、不同高度、不同的天气和光照条件下捕获。该数据集覆盖类型范围广泛,包括不同位置(相隔数千公里的14 个不同城市)、不同环境(城市和农村)、不同目标物体(行人、车辆、自行车等)和不同密度(稀疏和拥挤的场景)。VisDrone2019数据集中小目标占比较大,统计训练集中各个目标物体面积尺寸如图7(a)所示(横坐标为数据集样本面积、纵坐标为样本数量占比);图7(b)为VisDrone2019 数据集在YOLOv5l 算法下的类混淆矩阵,可以看出该数据集类别分布不均匀且混淆严重,十分具有挑战性。 因此使用Vis-Drone2019 数据集进行测试更能够体现算法之间的性能差异。
图7 VisDrone2019 数据集目标统计图Fig.7 VisDrone 2019 Data set target statistical diagram
本实验采取mAP0.5,mAP0.5-0.95、推理时间(Inference Time)、参数量(Parameters)和模型复杂度(FLOPs)等指标作为模型性能的评价指标。均值平均精度(mAP)是目标检测算法性能的重要指标(APi为每个类别的平均精度,i代表检测类别序号),可以直观反映算法的综合精度,其计算公式如式(6)所示。另外,为了更好地分析模型评价指标的增益情况,本文引入变化率这一评价指标,通过变化率这一性能评价指标,可以较为客观的评价算法与基准算法之间的性能改变情况。计算公式如式(7)所示,其中ρ表示变化率,A表示新值,B表示旧值。
其中:mAP0.5表示当IOU 和NWD 阈值为0.5 时,所有目标类别的平均检测精度,它能够反映算法对于不同类别目标的综合分类能力;mAP0.5-0.95表示当IOU 和NWD 阈值为0.5~0.95 时,步长为0.05,在0.5~0.95 的10 个阈值下,计算阈值的检测精度的平均值,能更好地反映算法对于目标边界框的回归能力。通常来说,阈值越高,对于模型回归能力的要求就越高,在高阈值下,检测指标也越高。因此,模型的检测结果与实际目标可实现更好的贴合。 每秒浮点运算次数(FLOPs)与Parameters 值模型的参数量,分别用于衡量训练模型时的计算复杂度与计算内存资源的消耗。
本文采用的实验环境分为仿真平台实验环境与嵌入式设备验证环境。其中仿真平台的实验环境描述如下:使用Windows10 操作系统,实验环境设置如下:PyTorch 版本为2.0.0;CUDA版本为11.7;Python 版本为3.8.16;硬件配置为:CPU 为Intel(R) Core(TM) i9-10920X;GPU为NVIDIA GeForce RTX 3090 24 GB,算法中的网络模型训练与测试在同一平台进行,网络的预训练权重是在COCO 数据集上训练而得到,实验数据为VisDrone2019 数据集,测试图片大小固定为640×640,设置的总训练轮数为100epochs,测试基准模型为YOLOv5l 模型,学习率为0.01,采用带动量的随机梯度下降法(Stochastic Gradient Descent,SGD)作为优化器,动量设置为0.937,权重衰减系数为0.000 5。
嵌入式设备的验证平台描述如下:NVIDIA Jetson Nano、四核Cortex-A57 CPU、128 核Maxwell GPU、内存为4 GB。相应配置系统为ARM版Ubuntu18.04 操作系统,模型运行环境为Jet-Pack4.6.1,python3.6,pytorth1.8,CUDA10.2和TensorRT8.2.1.8。模型部署采用10W 高性能运行模式,USB 摄像头图像输入。
4.4.1 检测分支对比实验
本实验首先对检测分支的数量与位置进行论证。 当neck 结构为4 层时,检测分支为P2~P5;当neck 结构为3 层时,减少head 处的一个检测头并使其不进行回归检测。测试基准模型为YOLOv5l 模型,测试结果如表2 所示。
表2 不同检测分支对比结果Tab.2 Different detection branches comparison results
由表2 可知:包含四个检测分支的模型与其他只包含三个检测分支的模型相比,目标检测精度有所提升。这是因为增加一个检测分支可以提取更多的特征信息,使得对无人机视角下目标的定位更加精确,有效提升目标检测的效果,此外本算法采用的锚框的设定更加适合无人机视角下的目标检测任务。
4.4.2 度量指标对比实验
为了验证NWD 度量指标的有效性,本文设计了NWD 和CIOU 的对比实验。模型总训练轮数分别为50 epochs 与100 epochs,基准模型为边界框预测损失函数是CIOU 的YOLOv5l 模型,实验结果如表3 所示。
表3 不同预测边界框对比结果Tab.3 Different predictive boundary box comparison results
由表3 可知:当总训练轮数为50 epochs 时,使用CIOU 得到的mAP0.5值为39.6%;当总训练轮数为100 epochs 时,使用CIOU 的mAP0.5仅仅增加了1.2%;对比使用NWD 的效果,当训练轮数为100 epochs 时,mAP0.5显著增加了2.3%。说明在单独使用NWD 时虽然能够显著提高检测性能,但是会造成模型的收敛速度慢。于是本文采用基于NWD 与传统IOU 混合的目标检测度量方法,在保证精度提高的前提下提高NWD 的收敛速度。
4.4.3 度量指标的超参数实验
为了充分验证NWD 与IOU 混合方法的有效性,本文设计了NWD 与IOU 占比对YOLOv5 模型影响的实验,实验前提为以YOLOv5l 为基准,训练数据为VisDrone2019 数据集,使用YOLOv5 原始实验参数,设置的总训练轮数为100 epochs。α为可调节的超参数,取值范围为0~1,通过调节α的值来调节IOU 与NWD 的比重。测试基准模型为YOLOv5l 模型,实验结果如图8 所示,图中Z1 代表mAP0.5,Z2 代表mAP0.5-0.95,X代表α的值,Y代表平均精度值。
优化预测边界框的超参数α设置为0 时,预测边界框损失函数为IOU;当α设置为1 时,预测边界框损失函数为NWD。图8 中可以看出,当α设置为0.8 时达到最优效果,后面的算法性能测试中,α的值都设置为0.8,以达到算法的性能最优。实验结果证明,本算法采用NWD 与CIOU 结合的度量方法是合理且有效的,当模型的总训练轮数相同时,采用NWD 与IOU 结合的度量方法mAP0.5值比单独使用NWD 或IOU 度量方法的mAP0.5值都要高,因此本文采用NWD与IOU 结合的度量方法来提升模型的检测性能。
4.4.4 网络结构对比实验
为了验证本文设计的C3_FN 网络结构的有效性,本文进行了如下对比实验。实验基于YOLOv5l 模型进行实验,其中:C3 代表YOLOv5 原模型结构;C3_Ghost 代表C3 融合GhostNet[27]的结构;C3_FN 为本文使用的结构。实验结果如表4 所示。
由表4 可知:当加入了融合FasterNet 网络的C3_FN 模块后,相对于原模型得到了较为理想的压缩,在mAP0.5值提升的基础上,参数量减少31.9%,模型复杂度FLOPs 减少了60.8%,而推理时间提升48.9%,这都归功于FasterNet 网络,可以在不影响模型精度的基础上减少计算量,从而提高算法处理速度。
4.4.5 综合对比实验
最后,为了综合测试本文模型的检测效果,将本文改进的模型与基准模型YOLOv5l 以及其他主流的无人机目标检测模型进行性能对比。模型的训练数据是VisDrone 数据集,其最终测试结果是在VisDrone 测试数据集上进行验证的,实验结果如下表5 所示。
表5 VisDrone 测试数据集实验结果Tab.5 VisDrone test data set experiment results
由表5 可知:本文模型的推理速度优于YOLOv5l,并且模型的平均检测精度均高于其他主流目标检测模型。整体对比,无论是在检测精度上,还是在推理速度上,本文模型在无人机视角下的目标检测应用上都具有一定优势。
4.4.6 改进模块的消融实验
为了更好地说明本文改进的模块与方法对于模型检测能力的提升,以及对于模型参数量、模型复杂度和推理时间的影响,本节进行了消融实验。本消融实验是在YOLOv5l 模型上逐个添加本文改进模块与方法所得出的实验结果,首先添加新增的检测分支,然后优化预测边界框损失函数,最后加入快速轻量化的网络结构C3_FN。测试图片大小固定为640×640,在NVIDIA Ge-Force RTX 3090 GPU 上进行推理。消融实验的测试结果基于VisDrone 测试数据集,实验结果如表6 所示。
表6 VisDrone 测试数据集消融实验Tab.6 VisDrone test data set discipline experiment
由表6 可知:在YOLOv5l 模型添加新增的检测分支,模型的mAP0.5提升了3.9%;在添加检测分支基础上修改IOU 评价指标后,模型的mAP0.5提升了6.4%;最后同时添加检测分支、修改IOU评价指标和C3_FN,模型的mAP0.5提升了6.8%。综上所述,本文模型与YOLOv5 相比,在保证检测精度的同时减少了模型参数,因此在无人机目标检测任务中具有更高的应用价值,本文模型检测的可视化结果示例如图9 所示(彩图见期刊电子版)。该组图片是在无人机视角下拍摄的不同场景的图片,图片中待检测的目标类别主要是:行人、车辆、自行车等,实验结果中的黄色表示检测结果是车,绿色检测结果表示大巴车,红色表示检测结果是行人。从可视化结果可见,本文算法能够对无人机拍摄的图片具有较好的检测效果,尤其是第2 行第1 列和第3 行第1 列的图片,其中包含大量行人小目标,本文算法仍能够很好地检测出目标。实验结果证明本文算法能够处理大部分无人机目标检测中的难点问题,且在无人机视角下的小目标仍具有较好的检测效果。
图9 本文模型的目标检测示意图Fig.9 Object detection schematic diagram of this model
4.5.1 模型部署
为了验证算法在实际嵌入式平台上的检测性能,本文采用NVIDIA Jetson Nano 进行模型迁移部署,测试图如图10 所示,其中1 表示嵌入式设备NVIDIA Jetson Nano,2 表示外接显示器,3表示检测图像。将在深度学习主机上训练好的本文模型传入到Jetson Nano 开发板上,在Jetson Nano 开发板上使用TensorRT 加速将Pytorch 框架下训练的无人机目标检测模型的.pt 权重文件转化为.wts 中间文件,再使用.wts 文件构建用于推理的引擎(.engine)文件,使用推理引擎推理即可获得加速。
图10 Jetson Nano 测试图Fig.10 Exeriment diagram on Jetson Nano
4.5.2 结果分析
本文从VisDrone 测试数据集中选择10 张未标注的图像在Jetson Nano 平台上进行无人机对地目标检测的推理测试,结果如表7 所示。
表7 TensorRT 加速前后推理时间对比Tab.7 Comparison of inference time before and after TensorRT acceleration(ms)
从表7 可以看出,在嵌入式设备NVIDIA Jetson Nano 中原始YOLOv5l 模型平均每张图像推理时间为563 ms,使用本文模型平均每张图像推理时间为342 ms,检测速度较慢。经过TensorRT 加速后,YOLOv5l 模型平均每张图像推理时间为153 ms,而使用本文模型平均每张图像推理时间仅为84 ms,可以满足实时性的要求。
本文针对面向无人机平台下现有目标检测模型对于小目标检测效果差、漏检率高以及模型参数量大的问题,提出一种适用于无人机视角下轻量化的目标检测算法,并在VisDrone2019 数据集上进行实验验证,主要得出以下结论:
(1)针对无人机视角下目标检测任务面临的图像尺度变化大、小目标检测结果精度低以及机载嵌入式资源有限的问题,本文以YOLOv5l 模型为基础,在网络结构方面增加了检测分支,增强来自于浅层特征的表达,mAP0.5值提升了3.9%;为了降低模型的参数量,得到速度更快的网络,使用C3_FN 代替YOLOv5l 模型默认的C3结构,在mAP0.5值提升的基础上,参数量减少31.9%,模型复杂度FLOPs 减少了60.8%,推理时间提升48.9%。
(2)在模型的度量指标上,本文引入NWD 作为模型的度量指标。经实验发现,相比于单独使用IOU,单独使用NWD 时会使模型的收敛速度变慢,于是本文提出基于NWD 与传统IOU 混合的目标检测度量方法,以提高NWD 的收敛速度。结果发现,当权重参数α设置为0.8 时算法性能达到最优效果,mAP0.5值为41.8%,mAP0.5值为24.5%。
(3)在综合对比实验中,本文模型的mAP0.5值较YOLOv5l,TPH-YOLOv5 和YOLOv7 模型分别提升了6.8%,1.4%和5.5%,推理时间分别提高了40.2%,16.7%,6.2%。最后在Jetson Nano 进行模型迁移部署,经过TensorRT 加速后本文模型平均每张图像推理时间仅为84 ms,说明本文模型在面向无人机平台下的目标检测应用上更具有优势。
后续的研究将继续进行网络结构的优化,使模型变得更加快速、准确以及轻量化,以便于在计算资源有限的情况下部署与应用。