基于改进YOLOv5s的四旋翼自主降落标识检测算法
2023-07-06李晓轩甄子洋梁永勋黄祎闻
李晓轩,甄子洋,刘 彪,梁永勋,黄祎闻
(1.南京航空航天大学 自动化学院,南京 210016;2.沈阳飞机设计研究所 扬州协同创新研究院,江苏 扬州 225006)
0 引言
随着无人机技术的飞速发展,大量难题已被解决,但仍然还存在一些需要解决的问题,其中就包括无人机回收技术[1-2]。在无人机导航领域中,无人机自主降落系统已成为研究热点。传统的导航方式有GPS 全球卫星定位导航、惯性导航、无线电导航等。GPS采用的是多卫星单程测距系统,如果接收机测量到了其与空间中至少四颗导航卫星之间的距离,那么就可以通过计算从而确定接收机的位置。但GPS受制于美军,且信号接收容易受到无人机所处环境的影响。因此,在无人机自主降落时仅使用GPS是非常受限的。惯性导航的应用是最广泛的,它不依赖于外界信息,仅通过其内部的加速度计以及陀螺仪就可以确定自身导航信息。但是随着时间增加会导致它的估计误差积累,所以它往往与其他导航方法结合使用。无线电导航利用了电磁波的传播特性,缺点在于无线电信号容易被干扰且需要自身主动发射电磁波信号,这就容易暴露自身位置。
由于传统导航方式有上述的各种缺点,利用计算机视觉信息作为导航信息实现无人机自主降落已成为热点。计算机视觉是多学科交叉的产物,是包含大量信息的被动信息源。无人机的计算机视觉导航通过在无人机上安装机载相机,从而通过相机捕捉到实时图像,并输入到机载计算机中,通过各种算法计算出无人机的各项导航参数,然后将这些导航信息提供给控制系统从而完成各项任务。相机是一种成本相对较低的传感器,且可以提供丰富的环境信息。相对于其他传感器,基于视觉的自主降落技术能够捕获大量的环境信息,且不依赖外部的其他设备,不易受干扰,在电子对抗时有较大优势,因此使用计算机视觉已经成为国内外的无人机自主降落技术以及着舰技术的主流[3-4]。
确定了计算机视觉的导航方式后,就要考虑选择合适的目标检测算法。传统的目标检测算法一般由人工提取目标特征,由于检测过程比较复杂,这就导致了目标检测的效率不高,精度较低,效果较差。近年来,由于深度学习技术的研究取得了一定的突破,基于深度学习的卷积神经网络(CNN)[5]在目标检测中的应用也取得了长足的进展,人们已经开始逐渐抛弃传统的人工提取图像中特征的方式,而使用卷积神经网络来自动提取图像中的特征并进行分析。基于深度学习的目标检测算法大大提高了目标检测效果,且范化能力更强,应用范围更广,在实际情况下更容易应用,已应用于自动驾驶[6]、人脸识别[7]、智慧医疗[8-9]、工业检测[10]、活动识别[11]等领域中。目前,基于深度学习的检测算法最常见的两种方法分别是基于区域的卷积神经网络(R-CNN)系列为代表的基于候选框的二阶段目标检测算法和以YOLO(You Only Look Once)系列为代表的基于回归的单阶段目标检测算法。二阶段目标检测算法虽然在精度上有着较好的表现,但检测速度较慢不适用于实时检测系统。而单阶段目标检测算法在有着较快检测速度的同时,在检测精度上也表现不俗。
二阶段目标检测算法的代表是R-CNN 系列算法。美国的工程师R.Girshick在2013年第一次将CNN 应用到目标检测领域,即R-CNN[12]。它使用CNN 自动提取图片中的特征信息,在训练网络时先采用大样本进行有监督的预训练,再通过小样本进行微调,以此来解决模型训练过度产生过拟合的问题。这种做法相对于传统方式极大地提升了检测性能,但它需要对图像中的候选区域的卷积特征进行很多重复的计算。为了解决图片缩放后会产生形变,提出了SSP Net网络[13],它的特点是无论输入什么尺寸的图片,输出的大小都是固定的,这就令SSP Net可以提取不同尺度的特征,且仅需提取一次图片中候选区域的卷积特征,大大节省了计算资源的浪费,加快了检测速度。在此基础上又提出了Fast R-CNN[14],它在R-CNN 中结合了SSP Net的思想,不但提高检测的精度还提高了检测的速度。之后又提出了Faster R-CNN[15],它引入了RPN(region proposal networks,区域检测网络),进一步提升了检测的精度与速度。然而检测速度与单阶段目标检测算法相比仍有一定差距。
单阶段目标检测算法主要包括YOLO 系列算法以及SSD(single shot multibox detector)算法[16]。2015年,单阶段目标检测算法的开山之作YOLO 系列算法被首次提出[17]。YOLO 算法最后采用全连接层得到检测结果,而SSD算法直接使用卷积提取不同尺度的特征图来得到检测结果。YOLOv2[18]在YOLOv1的基础上进行改进,它在引入锚框机制的同时还引入了批标准化(BN,batch normalization,)的概念。YOLOv3[19]又进行了进一步改进,它的骨干网络(Backbone)使用darknet53,并将锚框的大小扩增到3种类型,此外使用sigmoid函数作为逻辑分类器将输出限制在0和1之间,这大大提高了YOLOv3的推理速度。在此基础上改进又提出了YOLOv4算法[20],它用Mish函数代替原先的ReLU 函数作为激活函数,因为Mish的函数图像比ReLU 更加平滑,在检测速度与精度之间做到了较好权衡。而YOLOv5将之前版本的优点融会贯通,无论是在精度还是速度上,都有了较大的进步[21]。YOLOv5算法包 括 YOLOv5n,YOLOv5s,YOLOv5m,YOLOv5l,YOLOv5x五个版本,他们的参数量逐渐增加,检测精度也随之升高,但检测速度会逐渐减慢。YOLOv5s在有着良好检测精度的同时速度也较快[22],适用于无人机自主降落实时系统中,但在一些独特场景下对小目标的检测仍有一些不足。
本研究以二维码构成的降落标识物为检测目标,如图1所示,采集一千多张不同高度不同角度无人机拍摄的降落标识物图片,构建降落标识物检测数据集。基于YOLOv5s检测网络,为了增强对小目标检测的能力,做出如下改进:
图1 降落标识物
1)增加小目标检测层,即增加了一个预测头来检测更小尺度的目标;
2)采用BiFPN 加权双向特征金字塔网络代替原先PANet结构,快速进行多尺度特征融合;
3)将EIoU Loss替换CIoU Loss作为算法的损失函数,在提高边界框回归速率的同时提高模型整体性能。
1 YOLOv5s算法原理
YOLOv5 算法的速度快,灵活性高,该算法在YOLOv4的基础上做出了一些改进,使得其速度与精度都有了一定提高。它由4个部分组成,分别是输入端、Backbone、Neck和Head。YOLOv5s的网络结构如图2所示。
图2 YOLOv5s网络结构图
输入端起到预处理输入数据集的作用,包括自适应锚框计算、Mosaic数据增强等步骤。在网络训练时,模型首先会在初始锚点框的基础上输出得到的预测框,然后计算预测框与真实框的差值,接下来就可以反向更新网络中的各项参数,因此设定初始锚点框也是比较关键的一环。在之前的YOLO 系列检测算法中,训练不同的数据集时,为了获得初始锚点框,需要运行单独的程序来获得,而YOLOv5s的代码集成了此项功能,每次训练时,依赖数据集的名称,它可以进行自适应的计算,从而得到最佳的锚点框。Mosaic数据增强借鉴了CutMix增强的方法,只不过本方法采用了4张图片,对其进行了随机裁剪、缩放、旋转等操作,从而合成了1张图像,采用Mosaic数据增强的方法,不仅使图片能丰富检测目标的背景,而且能够提高小目标的检测效果。并且在Batch Normalization计算的时候一次性会处理四张图片。
Backbone用于提取输入图像的信息特征,它使用了CSPDarknet53网络。Backbone作为YOLOv5s的骨干结构,还包含Focus、Conv、C3、SPP等模块。其中Focus结构在YOLOv1-YOLOv4中没有引入,Focus模块重要的是切片操作,它从纵向和横向两通道对输入进行切片后重新拼接;Conv中主要的操作有卷积、正则化和激活层;C3中包括N个残差网络Bottleneck,输入的特征图首先经过1×1的卷积层,再经过3×3的卷积层,然后将得到的结果直接与输入特征相加;SPP 是空间金字塔池化层,它用于解决输入不是固定尺寸的情况,它能将任意大小的特征图转换成固定大小的特征向量,它在3 种尺度上进行最大池化操作,然后将输出结果进行拼接。
Neck是为了实现不同尺度特征信息的融合,它包括特征金字塔(FPN)[23]结构和路径聚合网络(PAN)[24]结构。由于高层的语义特征比低层的要强,为了增强整个金字塔的语义特征,FPN 自顶向下的将高层的强语义特征传递下来,但是它并没有传递定位信息。PAN 针对这一点不足,为了将低层较强的定位特征传递到上层,它在FPN 的基础上又添加了一个自底向上的金字塔,弥补了FPN 的不足。
Head是YOLOv5s的检测部分,它继承了YOLOv4的Head进行多尺度预测,提高了对不同尺寸目标的检测性能,它可以输出大、中、小3种不同尺寸的特征图,分别用于检测小、中、大3种目标。
2 改进的YOLOv5s算法
本文以YOLOv5s网络为基础进行了如下3种改进:通过增加一个小目标检测头来提升对小尺度目标的检测能力;采用BiFPN 加权双向特征金字塔网络代替原先PANet结构,快速进行多尺度特征融合;损失函数使用EIoU Loss,提高边界框回归速率的同时提高模型整体性能。下面分别从以上3个方面进行详细介绍。
2.1 小目标检测头
原来的YOLOv5s骨干网络为了检测大中小3种尺度的目标使用了3种大小的特征图,这3种不同大小的特征图分别来自网络对原始输入图像进行8倍、16倍和32 倍下采样,如图3所示,得到这3种特征图后将其输入到特征融合网络中进行特征融合。虽然经过卷积次数越多的特征图的语义信息越丰富,但是代价是目标的位置信息也会慢慢丢失,这样就不利于检测小目标。相反的,虽然卷积次数越少,特征图语义信息不足,但是目标的位置信息更加准确。因此为了提升小目标的检测效果,本文在YOLOv5s原有的网络上将4 倍下采样得到的特征图也输入到特征网络中,从而得到新的大小的特征图,此特征图的感受野小,且拥有更加丰富的位置信息,能对更小尺度的目标有更好的检测效果,如图4所示。
图3 原始YOLOv5s目标检测层
图4 改进算法的目标检测层
2.2 BiFPN结构
BiFPN 是加权双向特征金字塔,BiFPN 有两个主要思想:1)高效的双向跨尺度连接;2)加权特征融合。BiFPN构造了自上而下、自下而上的双向通道,对主干网络中的不同尺度信息进行融合。在融合时,通过上采样和下采样将不同尺度信息变为同一尺度,并在同一特征的原始输入节点和输出节点之间添加横向连接,这样不仅不增加成本还能融合更多特征。相比于PANet,它还移除了单输入边的结点,因为单输入边的结点没有进行特征融合,故具有的信息比较少,对于最后的融合没有什么贡献度,相反,移除还能减少计算量。加权特征融合简单来说,就是针对融合的各个尺度特征增加一个权重,调节每个尺度的贡献度,这其实是注意力机制与FPN 的碰撞。此外,还可以将BiFPN 看成一个基本单元,通过重复堆叠几次此单元的方式可以融合更多特征,它的网络结构如图5所示。
图5 BiFPN 结构
2.3 EIoU Loss
本文采用EIoU Loss替代原始模型的CIoU Loss作为损失函数。EIoU Loss的收敛速度更快,评价也更加准确,不但可以提高模型整体性能,而且在一定程度上可以弥补多尺度特征融合模块增加导致的训练时间增加、收敛速度变慢的问题。EIoU Loss是针对CIoU Loss进行改进的,CIoU Loss的计算公式为:
式中,I为真实框与预测框的交并比,bgt与b分别代表真实框的中心点与预测框的中心点;ρ代表真实框的中心点与预测框的中心点之间的欧式距离;c代表可以同时包含真实框和预测框的最小外接四边形的对角线长度;θ是一个权重系数,其表达式为:
式中,v是两框长宽比的距离,其表达式为:
式中,wgt、hgt分别为真实框的长和宽;w、h分别为预测框的长和宽。
从公式可以看出CIoU Loss的优点在于同时兼顾了真实框与预测框的交并比即重叠面积、中心点距离和纵横比,但缺点是其公式中的v反映的是两框长宽比的差异,没有考虑到宽度和高度分别与其置信度的真实差异,所以有时会降低模型优化的速率。而EIoU Loss继承了CIoU Loss的优势,沿用了交并比损失LIoU、中心点距离损失Ldis,而宽高损失Lasp直接设置为真实框和预测框之间的宽度和高度最小差,使收敛速度更快。计算公式如下:
式中,cw和ch为可以包含真实框与预测框的最小外接矩形框的宽和高。
经过上述3 种改进后,算法的整体网络结构如图6所示。
图6 改进的YOLOv5s网络结构图
3 实验
3.1 数据集
本文主要针对无人机自主降落场景下的降落标识进行视频采集,共计采集1 350张图片,其中80%用于训练集,15%用于验证集,5%用于测试集,其中部分数据如图7所示,他们是在不同天气,不同背景,不同角度,以及不同高度下拍摄的二维码降落标识的图片。采集完数据集后,下一步就需要对数据集进行标注,以便网络学习,利用Make Sense网页对数据集进行在线标注,标注成YOLO 格式,共有一个标记类别,是QRcode(降落标识)。完成标注后,每一张图片都会生成一个txt文件,文件名与图片名相同。txt文件中共有n行5列,每一行都代表一个检测目标的标记框,其中第一列代表该框的类别,第二列代表框中心的横坐标与图片宽度之比,第三列代表框中心的纵坐标与图片高度之比,第四列代表框的宽度与图片的宽度之比,最后一列代表框的高度与图片的高度之比。因为采集的降落标识数据集有限,改进后的算法与原算法的map值相差不大,在验证改进算法性能的优越性时,使用自制数据集并不太合适,所以采用VOC2012数据集中的部分数据作为数据集,将几种算法同时用在此数据集上,从而对比不同算法之间的性能。
图7 数据集中部分图片
3.2 实验环境与模型训练
实验环境如下:操作系统为Ubuntu18.04,使用Ge-Force GTX 1660显卡进行运算,显存大小为6GB,CPU 配置为Intel(R)Core(TM)i5-9400F@2.90GHz,CUDA的版本为11.1.0,Python的版本为3.8.12,Pytorch 的版本为1.8.0。本实验的一些参数设置如下:总迭代次数设置为100次,迭代批量大小设置为16,优化器使用的是SGD算法。
3.3 评估指标
本文介绍3种常见的评估指标:平均精度AP(average precision)、平均精度均值mAP(mean AP)和每秒检测图片的帧数fps(frames per second)。其中,平均精度由精确率(precision)和查全率(recall)所决定。精确率是相对于预测结果而言的,它表示的是预测为正的样本中有多少是预测对的,所以用预测对的正样本数除以模型预测的正样本总数。查全率是相对于样本而言的,即样本中有多少正样本被预测正确,所以用预测对的正样本数除以实际样本总数。上述每种指标的计算公式如下:
式中,AP是指精度-回归曲线(Precision_Recall,P_R)的面积。mAP是通过对所有类别的AP进行平均得到的。N表示检测到的类别总数。如果mAP值越大,那么算法的识别准确率就越高,检测效果就越好;TP表示预测正确的正样本框的数量,FP表示预测错误的正样本框的数量,FN表示遗漏的样本框的数量。
3.4 改进后模型的性能分析
在VOC2012数据集上,改进后模型的P-R 曲线如图8所示。改进后的模型性能与改进前的模型以及YOLOv4算法的对比如表1所示,改进后算法对所有类别的检测精准率、查全率、FPS、mAP@0.5和mAP@[0.5:0.95]分别达到77.8%,128,71.9%和48.2%。
表1 不同算法性能对比结果
图8 P-R曲线
图8显示了VOC 数据集中20个不同的类别以及所有类别的P-R曲线,图中以“aeroplane 0.838”为例,“aeroplane”表示类别名,“0.838”表示将IoU 设为0.5时,该类别的AP值。由于P-R曲线只是宏观上展示模型性能,不同模型之间的性能差异主要通过mAP 来衡量,且用VOC数据集仅是为了验证改进算法在性能上的优越性,并不用关注各个类别,只用关注所有类别的P-R曲线即可。
实验结果证明,改进后的算法在VOC2012数据集上比原算法有更好的检测效果,在精度与速度上的权衡是最好的,虽然FPS略有降低但精度却得到了提升,在无人机自主降落时,FPS的略微降低的影响基本可以忽略不计,但精度每提升一点,无人机自主降落的安全性就会提升一点。由于YOLOv4的网络参数要多于YOLOv5s,所以YOLOv4算法在精度上会有一定优势,但是FPS却较低,即检测速度比较慢,若将YOLOv4算法部署在无人机上的机载计算机系统中,系统会缺乏实时性,因此不适合应用于无人机上进行自主降落任务。
3.5 实飞实验
为了验证改进算法在无人机上的实际性能如何,将改进算法应用到如图9所示的无人机上。采用的无人机的轴距为410mm,使用碳纤维机身,同时兼顾了机身的重量与续航。它还包含有Pixhawk4基础套件,用来完成PX4最基本的飞行功能;同时配备有单目视觉相机用于获取视觉信息,作为改进算法的输入;机载计算机采用NVIDIA TX2,它作为无人机自主降落任务的核心用来运行改进的目标检测算法来处理单目相机获取到的原始数据,并通过相关算法计算出无人机与降落标识物之间的相对位姿关系,最后通过Mavros将此信息发送至飞控之中,从而引导无人机安全的自主降落到降落标识物上。
图9 实验所用无人机
在无人机上的实际检测效果如图10所示。
图10 降落标识检测效果图
实验结果证明,当无人机的高度越来越高时,如果视野中同时存在一个大目标和一个小目标,原YOLOv5s算法只能检测到大目标却不能检测到小目标,而改进后的算法能同时检测到两种大小的目标,证明了改进后的算法在二维码数据集中对小目标有更好的检测效果。同时改进后的算法在TX2上的FPS约为32,也满足嵌入式部署的实时性要求。
4 结束语
改进YOLOv5s算法首先通过增加小目标检测层来提升对小目标特征的检测能力;然后采用BiFPN 加权双向特征金字塔网络代替原先PANet结构,快速进行多尺度特征融合;最后损失函数使用EIoU Loss,使收敛更快。实验表明,改进算法相较于原算法有更好的小目标检测能力,能够获得较好的检测准确度和比较快的检测速度,可以满足无人机自主降落的准确性和实时性的需求。由于在实际应用中场景是多种多样的,本文选取的降落标识可能在某些背景中不是特别明显,后续工作可以选取不同的降落标识物,并采集更多的数据集,通过实验结果来选择合适的降落标识物,且可以在提升检测的实时性上作进一步研究。