丛玉华,何 啸,邢长达,成旭明,唐 鑫,王志胜,欧阳权
(1 南京航空航天大学自动化学院,南京 210006; 2 南京理工大学紫金学院,南京 210023; 3 南京航空航天大学深圳研究院,广东 深圳 518063)
无人机通过计算机视觉技术进行目标检测时,因搭载的嵌入式设备性能受限,加上航拍图像目标一般相对较小、背景复杂、图像分辨率低,因此,在机载嵌入式设备上如何保证检测速度和检测精度是无人机端进行目标检测的研究重点。一阶目标检测算法在无人机上应用能达到实时性要求,其中YOLO是经典的一阶算法,Redmon在2018年提出了YOLOv3算法,选用更深的网络,使得算法具有了更高的检测效率和准确率[1]。后续的YOLO版本都是在YOLOv3基础上对不同侧面的改进,因此基于YOLO网络框架针对实时性和高精度的要求进行改进。
卷积神经网络(convolutional neural networks,CNN)由多个神经元连接而成,神经元承担着信息传递的任务,能够有效接收其感受野发送的信号,CNN主要由卷积层、归一层、激活层、池化层及全连接层组成[2-3]。
1)卷积层
卷积层用于提取图像的特征,其中的卷积核通过在输入数据上不断进行运算得到更深的特征图。特征层矩阵各个点的计算公式为:
(1)
式中:U=(1,2,…,k);y表示特征层矩阵中单个点的值;t表示当前层级;i和j表示在卷积核及对应感受野中对应的位置坐标;x表示感受野对应的原图区域;K表示卷积核;b表示偏置。
2)归一层
使用归一化对每一层的数据进行处理,将输入从激活函数的饱和区变到非饱和区,能够解决梯度消失的问题;在反向传播的过程中,因为数据均值都在0附近,解决了梯度爆炸的问题。归一层放在卷积层之后、激活层之前,将每一层的数据分布全部转换在均值为0、方差为1的状态下,其过程如式(2)~式(4)所示,使得网络更加容易收敛,加快网络的收敛速度。
(2)
(3)
(4)
式中:m表示数据数量;xi表示第i个数据;μ表示数据均值;σ2表示方差;ε是一个用于保证数值稳定的量;zi表示归一化后的结果。
3)激活层
在卷积后一般有一个激活函数来帮助其表达复杂的特征,主要作用是增加CNN的非线性表达能力。
4)池化层
池化层主要是用来降低输入特征图的宽、高,能够加快推理速度并保留主要特征。最大池化输出特定区域内的最大值,平均池化输出特定区域内的平均值。
5)全连接层
全连接层在CNN中能够通过卷积层提取到的不同细节特征的组合来分类,并且在很大程度上能降低特征位置的偏移对分类所造成的影响。
YOLO系列网络可以一次性预测多个目标的位置和类别,能够实现端到端的目标检测,YOLO网络框架由主干特征提取网络、特征加强网络和特征输出三个部分组成,下面对YOLO网络框架进行两方面改进:一是对网络结构进行轻量化改进,以提升网络的推理速度;二是在网络结构中引入注意力机制,以提升目标检测的精度,具体改进如下。
2.1.1 主干特征提取网络CSPDark53-tiny
跨阶段局部网络(cross stage partial network,CSPNet)主要有3项功能:增强CNN的学习能力;消除计算的瓶颈;减少内存带来的成本[4-5]。CSPDark53-tiny对CSPDarknet53在通道上进行了缩减,以提升推理速度。CSPDarknet53-tiny结构组件包括CBS模块、Res Unit残差模块及CSP1_X模块,如图1所示。
图1 CSPDarknet53-tiny结构图
1)CBS模块
CBS模块结构由卷积(Conv)、批标准化(BN)及激活函数(SiLU)3个部分组成,激活函数SiLU可表示为:
O(x)=x·S(x)
(5)
式中:x为输入;O(x)为输出;S(x)为Sigmoid函数。
2)CSP1_X模块
CSP1_X模块结构借鉴了CSPNet结构,其主干部分进行一次卷积核大小为1的CBS模块处理,完成特征整合后,再进行X次的Res Unit模块的处理;其分支部分仅进行一次卷积核大小为1的CBS模块处理完成特征整合;在得到两个部分的处理结果后,将两个部分的结果进行通道上的堆叠,并进行一次卷积核大小为1的CBS模块处理完成特征整合。CSP1_X模块结构如图2所示。
图2 CSP1_X模块结构图
3)Res Unit模块
Res Unit模块即残差网络(residual network,ResNet)中的残差块,是使用跳跃式连接的,这种结构能够帮助CNN解决因使用过多卷积层所带来的梯度消失等问题[6]。残差网络比较容易优化,可以通过增加网络深度来提高其检测精度。该结构主干部分进行一次卷积核大小为1的CBS模块进行特征整合,再对其进行一次卷积核大小为3的CBS模块处理完成特征提取;残差边不做任何处理,直接将输入与主干部分的输出进行结合。Res Unit模块结构如图3所示。
图3 Res Unit模块结构
2.1.2 融合SPP的CSPDark53-tiny
1)SPP模块
SPP(spatial pyramid pooling)模块借鉴了空间金字塔池化的思想,对输入特征尺寸大小没有限制,并且可以输出一个固定大小的特征图,使其能够有效帮助网络得到更宽的感受野[7]。SPP模块首先对输入进行一次卷积核大小为1的CBS模块处理完成,特征整合;再通过3种尺度的卷积核对特征整合后的结果进行最大池化处理,将3次处理结果与特征整合结果相堆叠,对堆叠结果再进行一次卷积核大小为1的CBS模块处理实现特征整合。以此融合多尺度特征提升特征提取能力。SPP模块结构如图4所示。
图4 SPP模块结构图
2)CSP2_X模块
CSP2_X模块与CSP1_X模块略有不同,其将主干部分进行的X次Res Unit模块的处理替换为2*X次CBS模块(一次卷积核大小为1的CBS模块处理进行特征整合及一次卷积核大小为3的CBS模块处理完成特征提取),有效减少网络的计算量,提升检测速度。CSP2_X模块结构如图5所示。
图5 CSP2_X模块结构图
3)融合SPP后的主干网络
SPP模块结合CSP2_X模块后引入主干特征提取网络,具体结构如图6所示。
图6 融合SPP后的主干网络图
2.2.1 加权双向特征金字塔网络
加权双向特征金字塔网络(bidirectional feature pyramid network,BiFPN)是基于路径聚合网络(path aggregation network,PANet)的思想并做了一定的改进[8-9]。相较于PANet结构BiFPN删除了只有单个输入的节点,剔除了网络中的一些冗余计算;在同一尺寸的特征图上增加了跳跃连接,使特征融合时能够获得更多的特征;对于特征融合部分,BiFPN选择引用权重对特征进行加权融合;BiFPN对于权值归一化的方式采用了精度与softmax相近但速度比其快30%的归一化方法,其公式为
(6)
式中:O表示输出特征;Ii表示输入特征;ωi表示一个可学习的权值,需通过RELU来确保ωi≥0;ε是一个用于保证数值稳定的量,通常设置为1×10-4。
BiFPN结构如图7所示。
图7 BiFPN结构图
(7)
(8)
2.2.2 引入注意力机制
在目标检测任务中,模型对于各个目标物体特征的关注点和关注程度是不同的。如果模型对所有特征图的关注程度都一致,则会影响到模型的收敛速率,因此对模型来说怎么快速且有效的提取重要特征是非常重要的。基于卷积块的注意力机制(convolutional block attention module,CBAM)[10-11]是个轻量的注意力模块,其计算量很小,能够有效地让网络从通道及空间两个角度学习到一个权重,选择性地增强网络通道及空间中的部分特征。结构如图8所示,其包含两部分:CAM(channel attention module)及SAM(spatial attention module)。
图8 CBAM结构图
CBAM模块引入到特征加强网络的两类位置:一是主干特征提取网络与特征加强网络的衔接部分,作为特征加强网络的输入;二是特征加强网络中上采样和下采样之后均引入CBAM模块。
解耦头结构将分类及回归看作两个任务,通过softmax得到分类结果,通过对边框进行预测回归得到边框位置。解耦头结构考虑到分类和定位对于特征的关注点不同,分类任务主要考虑的是每一个样本的差异,而回归任务考虑更多的是图像边界信息,因此解耦头结构可以提升检测的精度。但是解耦头通过两个分支分别处理两个任务,其中的计算量也会随之提升,因此须在送入解耦头之前首先通过一个卷积核大小为1的卷积来进行通道缩减,以此来实现一个轻量的解耦头,其结构如图9所示。
图9 解耦头结构图
将2.1~2.3节的改进融合后,最终目标检测网络称为CSPBiA-YOLO,结构如图10所示。图10中主干特征提取网络部分增加了SPP结构;主干特征提取网络和特征加强网络衔接部分以及特征加强网络的上采样和下采样后皆增加了CBAM注意力模块,特征加强网络部分还增加了CSP2_X模块;特征输出部分采用改进后的解耦头结构。
图10 CSPBiA-YOLO结构图
采用VisDrone航拍数据集[12]及部分自建数据集进行模型训练。VisDrone数据集中有8 629张静态图像,自建数据集有3 000张静态图像,数据集中的训练类别包含行人、自行车、汽车等共10个类别。数据集划分为7 629张训练图像、1 000张验证图像及3 000张测试图像。图像采集自不同类型的相机、不同城市、不同的日照条件及不同的高度,单张图像中往往包含多种目标信息、检测目标较小且目标易受到遮挡。
1)IOU
在目标检测任务中通常使用IOU(intersection over union)对选框的精度进行评估,IOU计算公式为:
(9)
式中:GT表示真实框的面积;PR为预测框的面积。
2)AP和mAP
AP(average precision)用来评估模型性能,是计算某类目标在不同召回率的情况下准确率的平均值,计算公式为:
(10)
式中:R为召回率;P(R)为召回率取R时的准确率。进一步,可以得到所有类别的平均AP,即mAP(mean average precision),其表达式为:
(11)
式中:AP(i)为类别序号取i时对应的精度均值;n为类别数。mAP0.5指的就是IOU阈值为0.5时的mAP值,文中实验所有的mAP都为IOU阈值取0.5时的值。
网络训练阶段的参数设置如表1。
表1 训练参数
1)CSPBiA-YOLO目标检测实验
CSPBiA-YOLO模型与部分现有模型对比数据如表2。
表2 CSPBiA-YOLO对比数据
由表2可知,改进后的CSPBiA-YOLO网络比YOLOv3在仅增加3 ms推理速度的情况下mAP提升了3%;相较于YOLOv5-s网络,CSPBiA-YOLO网络在增加了2 ms推理速度的情况下mAP提升了2%;相较于YOLOX-tiny网络,CSPBiA-YOLO网络在增加了仅1.5 ms推理速度的基础上mAP提升了2%;相较于推理速度最快的YOLOv4-tiny网络,CSPBiA-YOLO网络在增加了8 ms推理速度的情况下mAP提升了7%。YOLOv3,YOLOv4-tiny,YOLOv5-s,YOLOX-tiny,CSPBiA-YOLO各个类的AP值如图11~图15所示。
图11 YOLOv3各个类的AP值(mAP=29.35%)
图12 YOLOv4-tiny各个类的AP值(mAP=25.78%)
图13 YOLOv5-s各个类的AP值(mAP=30.17%)
图14 YOLOX-tiny各个类的AP值(mAP=30.28%)
图15 CSPBiA-YOLO各个类的AP值(mAP=32.35%)
2)实验可视化结果
图16为目标相对较大且分散的场景,YOLOv3对相对较小的目标检测效果较差,CSPBiA-YOLO则能够准确地检测出图像中的多个目标并正确分类。
图16 简单场景下检测效果对比
图17为复杂场景下目标相对较小且密集的场景,YOLOv3对于图像中间密集且部分受到遮挡的目标无法完成检测,而CSPBiA-YOLO对应的检测率则较高,且对于多个受遮挡的目标也能够正确地完成检测。
图17 复杂场景下检测效果对比
图18为夜景下目标相对较小且密集的场景,YOLOv3对于图像上方及右下角的目标无法进行检测,而CSPBiA-YOLO的检出率明显较高。
图18 夜间检测效果对比
针对无人机航拍图像检测任务中嵌入式设备性能偏低、检测目标小且密集的特点,提出一种轻量级的小目标检测网络CSPBiA-YOLO。通过在无人机航拍数据集VisDrone上进行训练及测试验证了该算法的实时性和高精度。后续将增加数据集,提高网络的泛化能力;使用C++开发部署,通过TensorRT加速提升网络推理速度。