基于沙漏瓶颈模块的无人机实时检测算法

2023-01-14 05:57杜芸彦邵林松彭锦锦杨锦辉
电光与控制 2022年12期
关键词:沙漏轻量化尺度

李 鸿, 杜芸彦, 邵林松, 雷 铭, 彭锦锦, 杨锦辉, 毛 耀

(1.中国科学院光束控制重点实验室,成都 610000; 2.中国科学院光电技术研究所,成都 610000 ; 3.中国科学院大学,北京 100000)

0 引言

随着无人机技术的快速发展,无人机朝着小型、高速方向发展并且在监控、农业和军事安全等领域得到广泛应用[1]。无人机的普及在为日常生活提供了巨大便利的同时,也存在一定的安全隐患,比如对空中航路安全、公共安全和军事安全等造成威胁,有时也会造成侵犯个人隐私的问题[2]。无人机的实时检测和监控问题已成为一大热点话题。

目前,传统无人机检测的方法常基于声波探测检测、无线电探测和雷达探测等手段,但这些方法常需要昂贵的设备和严格的配置,相较于传统的检测方法,基于深度学习目标检测的方法成本低廉且易于配置,能有效应对无人机的检测。RCNN[3]方法能取得较好的检测精度但并不具备实时性,随后虽然又相继出现Fast RCNN[4],Faster RCNN[5]等两步走的方法,速度问题有所改善,但其一贯的框架模式注定了速度慢是该类方法的一大缺陷。为了弥补速度慢的缺点,研究人员摒弃了两步走的模式,提出了YOLO[6-7]和SSD[8]系列等一步走的算法,在精度略有降低的情况下,大大提升速度,其中,YOLOv3算法[9]是兼顾速度与精度的代表性算法,后来YOLOv4[10]等优秀算法被提出。但这类算法大多是基于锚点来生成候选框的Anchor-based的思想,近两年来Anchor free的算法逐渐成为主流,代表性算法有基于对角线关键点检测的CornerNet[11]、中心关键点的CenterNet[12]和基于像素点的多级预测回归的FCOS算法[13]等。

为了促进神经网络模型在实际工作中的应用,如嵌入式平台和边缘移动端设备[14],本文结合轻量化网络提出了一个轻量型的实时无人机检测算法。为了增加模型对小目标的检测性能,将原本在3个特征尺度进行检测的YOLOv3算法扩展到5个特征尺度进行检测,在提升网络模型精度的同时也带来了一定的计算复杂度。为了对模型进行加速,使用沙漏瓶颈模块(SandGlass Bottleneck Block)构建起来的MobileNeXt[15]轻量化网络作为模型的骨干部分提取特征,同时也减少了模型在各层级特征的通道数,为了抑制不利信息,提升模型的精度,在上采样部分的Concat操作之后使用了通道注意力机制SENet[16]。为了验证所提模型的有效性,本文生成了一个基于复杂城市背景的无人机数据集,实验表明,提出的模型能较好地兼顾速度与精度,生成的模型权重仅为5.38 MiB,为进一步在嵌入式平台上实时运行目标检测模型提供了可能。

1 相关工作

随着时代的发展,研究人员更加关注深度神经网络的实际应用性能,人工智能技术的一大趋势就是在边缘平台上部署高性能神经网络模型,并能在真实场景中实时运行。

1.1 轻量化网络

在实现深度学习神经网络模型落地实际应用过程中,高效的轻量化网络是实现这一目标的重要途径之一,MobileNetv1[17]基于深度可分离卷积的思想,将普通标准卷积拆分为深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution),在有效保证精度的同时大大减少计算量。相比于MobileNetv1类似VGGNet[18]的简单堆叠方式,MobileNetv2[19]则借鉴了ResNet中跳转连接这种更为先进的方式,应用逆残差模块(Inversed Residual Block)获得了更佳的性能表现。MobileNetv3[20]使用神经网络结构搜索(NAS)[21]的方法,此外还加入了SE(Squeeze and Excitation)结构和使用非线性激活函数h-swish替换swish和修改通道数等。ShuffleNet[22-23]利用分组卷积(Group Convolution)和通道混洗(Channel Shuffle)两个操作设计卷积神经网络模型,使得模型参数大大减少,加速模型的推理。GhostNet[24]通过廉价且高效的线性变换操作生成更多的特征图。沙漏瓶颈(SandGlass Bottleneck)模块翻转了逆残差模块,从而缓解了信息的丢失,在保持轻量化的同时,获得了比GhostNet更好的成绩。为了弥补扩展特征尺度检测带来的计算复杂度,本文选择采用由沙漏瓶颈模块堆叠的MobileNeXt网络作为模型的骨干网络对特征进行提取,加速了模型训练和推理的同时,减少模型参数量。

随着深度可分离卷积的提出,结合残差思想(如图1(a)所示)的改进版本逆残差模块(如图1 (b)所示),已成为手机端网络结构设计的主流架构。逆残差模块之所以取得这么好的效果,取决于逆残差学习和线性瓶颈层两个主要设计规则。然而,这样的设计却存在一定的问题,比如逆残差模块这种先升维后降维的结构会削弱梯度跨层传播的能力,会造成特征从高维空间压缩到低维空间时信息的丢失。针对这些问题,MobileNeXt对其设计的规则进行了重新思考,针对梯度传播被削弱的情况,将网络变得更宽,以此缓解梯度混淆的问题。具体实现方法是采用像沙漏的网络结构,如图1 (c)所示,从通道维度上执行先降采样后升采样的操作。

图1 3种模块的网络结构Fig.1 Network structure of three blocks

相比于逆残差模块的设计方法,沙漏结构的设计方法能够在高维度进行恒等映射于空间变换,可以有效地缓解信息丢失与梯度混淆。如图2(a)所示,原始的逆残差模块是先升维后降维,是通过1×1的卷积操作对特征通道进行改变,然后中间是由3×3深度可分离卷积形成的线性瓶颈模块。1×1卷积有助于编码通道间的信息,但难以获取空间信息。为了保留更多的空间信息,同时考虑到深度卷积是一种轻量型单元,MobileNeXt将3×3的深度卷积置于两个1×1卷积之外执行两次深度卷积,从而确保深度卷积在高维空间进行处理并得到更丰富的特征表达,具体如图2 (b)所示。

图2 沙漏瓶颈模块相对逆残差模块的改进Fig.2 Improvement of SandGlass Bottleneck Block compared to the inverse residual block

1.2 特征金字塔网络

建立特征金字塔综合利用多尺度特征进行小目标检测是一种常用的手段。FPN[25]是第一个尝试利用多尺度特征图的建筑性工作,建立了一个自顶向下路径的多尺度特征序列。在FPN的基础上,PANet[26]添加了一条自底向上的FPN路径。ASFF[27]提出了一种数据驱动的金字塔特征融合方式,称之为自适应空间特征融合。一些工作尝试使用神经网络结构搜索的方法自动搜索最优的特征金字塔结构,并取得不错的结果,比如NAS-FPN[28]和Auto-FPN[29]。为了综合利用多个尺度信息,更为了符合轻量化设计的理念,本文只是简单地将原本3个特征尺度扩展到5个特征尺度来进行检测。如图3所示,这里上采样使用最近邻插值(Nearest Interpolation)方法以消除锯齿状的情况,并使用Concat的操作从通道上拼接进行特征融合(Feature Integration)。

图3 5个尺度的特征金字塔检测Fig.3 Five-scale feature pyramid for detection

2 基于轻量化网络的目标检测

2.1 网络结构

为使网络模型更好地适用于像无人机这样的小目标检测场景,对原本3个特征尺度检测的YOLOv3算法扩展到5个特征尺度检测,并使用沙漏瓶颈模块堆叠作为骨干网络对特征进行提取,加速模型的推理和训练,为了进一步抑制不利的信息,在特征图进行上采样的Concat操作之后使用了通道注意力机制SE模块。总的说来,该网络结构主要包含骨干网络(Backbone)、颈部(Neck)和检测头(Head)等,见图4。其主要过程如下:416×416大小的RGB三通道图像通过图像增强等预处理后输入网络,会生成{208×208,104×104,52×52,26×26,13×13}大小的特征图,过程中,采用步长为2的卷积代替最大池化的操作进行下采样以避免信息的丢失,分别在5个层级的特征图上预测目标框的位置。

图4 整体网络结构示意图Fig.4 Schematic diagram of overall network structure

图4中,“SGBX”表示X个沙漏瓶颈模块堆叠,CBL表示卷积(Conv)之后经过批归一化(BN) 和Leaky ReLU激活,这里采用最近邻插值的上采样方法。在骨干网络部分设置的堆叠次数的具体参数如表1所示。

表1 沙漏瓶颈骨干网络的具体参数设置Table 1 Specific parameter settings of the SandGlass Bottleneck backbone network

观察表1可以注意到,在更深层特征提取时,随着特征通道数的增加,设置的模块堆叠次数也越多,比如在52×52和26×26尺度大小的特征图上进行了9次SandGlass Bottleneck单元模块的叠加,这样的设计能更加充分地实现特征提取。

2.2 通道注意力机制模块

在生成特征图的过程中,随着网络层数的加深,生成的特征通道数量也越来越多,每个特征图的信息表达性不一样,能提供的信息也不一样,SE通道注意力模块就是采用一种“特征重标定”的策略,通过学习的方式来自动获取到每个特征通道的重要程度,依照这个重要程度去提升有用的特征并抑制不利的通道信息。在本文所提的方法中,可以认为在上采样之后进行Concat拼接得到的多维特征图中,并不是所有通道上的特征图都能提供相同重要的信息,需从中选择较为重要的通道上特征图,抑制一些通道上的不利信息。所以在上采样部分中的Concat拼接操作之后加入了通道注意力机制SE模块。SENet实现具体过程如图5所示。经过全局平均池化操作,该过程也称之为“Squeeze”操作,使得每一个通道上W×H大小的二维特征图生成一个实数,该实数表示该特征图的一个全局特征响应,具有全局的感受野信息。但这样的实数并不能代表一个权重关系,也就是还需要通过“Excitation”操作,直接使用Sigmoid函数激活,将其映射到[0,1]之间的数值,此时得到的数值代表了权重系数,并且建立了所有通道之间的相互关联性。最后将得到的这组数值与原来的特征图相乘,进行“特征重标定”操作,完成在通道维度上对原始特征的重标定。

图5 SE注意力机制模块Fig.5 SE attention mechanism block

2.3 实验环境与参数设置

整个实验过程基于Pytorch框架,编程语言选择Python3.6实现,软件环境选择方面,本实验采用了Ubuntu18.04.4 LTS Linux 64 位操作系统。显卡为GeForce GTX 1080Ti,采用Adam作为优化器,设置学习率为0.001,权重衰减率w为1×10-5。根据原本DarkNet53中对各层级特征图通道数的设置,在较高的层级特征图会对应生成高达512或者1024高维度的通道数,设置如此高的通道数会造成较大的计算负担。为了实现更加轻量化的实时性检测,对每层级特征通道数量进行了重新设置,设计了一种适用于基于GPU嵌入式平台的SandGlass-FPN,具体通道数量与DarkNet53比较结果见表2。

表2 各层级的通道数量Table 2 Number of channels at each level

在不考虑一些衰减率和优化器参数设置的前提下,神经网络的模型权重大小可以直接理解为网络的参数量,当一个网络结构设计好了之后,网络的参数量就是确定的,计算过程在重新修改后的版本中已经给出。对于输入为w×h×Cin的输入图像,卷积核大小为k×k,经过卷积操作后得到输出的特征图大小为W×H×Cout,其参数量为

Q=(k×k×Cin+1)·Cout。

(1)

本文中参与比较的各个模型权重大小的计算方式也符合式(1)的计算方式。

3 实验结果分析和讨论

3.1 数据集

为了训练和验证本文提出的模型有效性,制作了一个基于复杂城市背景下的UAV数据集。首先获得市场上几种常见的无人机图片和一系列的复杂城市背景图片,通过对无人机图片进行随机旋转、尺度缩放,然后与城市背景图片简单地相加,并且为了尽可能地使得无人机出现在城市背景图片上的任意一个位置,对城市背景图片大致划分为16 patch区域,每个区域将会随机生成一架无人机。最后得到生成的训练集共有12 100张,其中每张图片都包含了16个不同姿态、不同大小的无人机且图像大小为416像素×416像素,通过数据增强等手段训练集数量可高达20万,此外,采用类似方法生成了1210张图片作为测试集验证模型的效果。

3.2 损失函数

尽管在生成训练集图像时无人机在图像上的分布较为均匀,但是相较于背景而言,无人机数量还是很少,会导致正负例样本不均衡,为了弥补这种不均衡,使用Focal loss通过赋予正负例样本不同权重的方法指导模型的训练,使用Focal loss作为损失函数降低了大量简单负样本在训练中所占的权重,可以理解为是一种困难样本挖掘。其表达式为

L(pt)=-αt(1-pt)γlog(pt)

(2)

从式(2)可以看出,相比于原来的二分类交叉熵损失函数,在原来的基础上添加因子γ,并且该因子是作为(1-pt)的次方根因子的形式出现,当设置γ>0时可以减少易于分类样本的损失,从而更关注于困难的、错分的样本,本文设置γ=2。此外,添加平衡因子αt用于平衡正负例样本不均衡的情况,本文设置αt=0.25。

3.3 实验结果

为了对本文所提的模型性能进行评估,采用精确率P、召回率R和F1作为检测精度的评价指标,采用每秒处理的图像帧数和单帧图片处理时间作为实时评价指标。首先要对目标检测中的几个基本概念有所认识:正样本被正确识别为正样本,即被正确识别出来的目标称之为True Positives(TP);负样本被正确识别为负样本,即背景没有被识别成目标称之为True Negatives(TN);负样本被错误地识别为正样本,即背景被识别成目标称之为False Positive(FP);正样本被错误识别为负样本,即目标被识别成背景称之为False Negatives(FN)。基于此可以得到精确率的定义为

(3)

召回率的定义为

(4)

F1指标的定义为

(5)

为了验证本文所提算法的有效性,进行了一系列标准化实验,过程中使用相同的训练数据集、测试数据集和训练方法,采用与SandGlass-FPN相同的通道数,尝试分别结合ShuffleNetv2,MobileNetv2和GhostNet对应生成SFv2-FPN,MBv2-FPN和Ghost-FPN;另外,YOLOv3和YOLO-tiny也参与比较,最终生成的模型权重大小比较结果如表3所示,模型的检测性能比较结果如表4所示。

表3 生成的各个模型权重大小比较 Table 3 Comparison of the weights of each model MiB

表4 各个模型性能比较Table 4 Performance comparison of each model

由表3可以看出,尝试将YOLOv3与轻量化网络结合后生成的模型权重都大大降低,也有减少各层级通道数量的原因,其中最小模型权重是结合ShuffleNetv2生成的SFv2-FPN,只有0.97 MiB的大小,相比YOLO-tiny减少至其1/35,如此小的模型权重能轻易地部署到资源受限的嵌入式平台或者移动端设备上,这很大程度上取决于ShuffleNetv2的精心设计。而本文中所提的SandGlass-FPN模型权重仅为5.38 MiB,相比于YOLO-tiny差不多减少至其1/7,与YOLOv3相比,模型权重大小也只为其1/46,这在很大程度上已经实现了模型轻量化,为在嵌入式平台或移动端设备实现实时运行提供了可能。

由表4可得出,YOLOv3在实时速度为25.50 帧/s的情况下获得了92.11%的精度,但处理单帧图像的时间高达39.21 ms,其实时性有待提高。YOLO-tiny是所有参与比较的算法中速度最快的,实时速度为78 帧/s,处理单帧图像时间仅需要12.89 ms,并且还取得了较为不错的86.47%的检测精度。结合轻量化网络的方法相对于YOLOv3,实时速度都得到极大提高,其中,分别结合ShuffleNetv2和MobileNetv2对应生成的SFv2-FPN和MBv2-FPN精度也都超过了80%。值得关注的是,结合轻量化网络GhostNet生成的Ghost-FPN在45.31 帧/s的实时速度情况下获得了97.21%的精度,说明了GhostNet通过更为廉价的线性方式生成的特征图同样有效,并且具有较高质量,能够帮助模型获得不错的检测性能。而本文所提SandGlass-FPN算法获得了最高的98.92%检测精度,比YOLOv3的92.11%高出了6.81%,并且实时速度高达62.37 帧/s,是YOLOv3检测速度的2.44倍,这样的检测速度仅次于YOLO-tiny的最高速度78 帧/s。结果在很大程度上实现轻量化,能满足大多数场景对实时和精度的要求,为在资源受限的嵌入式平台和移动端设备上实现实时目标检测提供了可能。本文算法之所以能获得这么高的精度,是针对无人机这种小目标场景精心设计网络的结果,而且场景中只有无人机这一类目标,其他的均为背景,数据集单一也降低了检测的难度。此外,要注意的是本文中采用的精度评价指标是准确率,要与单个类别的平均准确率(AP)和所有类别下的平均准确率(mAP)相区别开来。

为了进一步说明训练过程,由于训练过程中并没有设置验证集,无法得到验证损失函数和精度,本文只对训练损失函数变化曲线进行了展示,如图6所示。

图6 训练损失函数变化曲线图Fig.6 Curve of training loss function

由图6可以看出,在设置100次迭代的情况下,前20次迭代内损失函数急剧下降,第20~60次迭代之间下降速度减缓,在60次迭代之后模型逐渐收敛。

为了更加直观地比较各个模型的检测性能,给出的可视化结果如图7所示。

图7 各算法可视化结果比较Fig.7 Comparison of visualization results of each method

从图7中可以看出,YOLOv3和YOLO-tiny只在3个特征尺度来检测,面对小目标检测情况时,表现并不佳,YOLOv3在用于较大尺寸无人机时能准确检测到,用于小尺寸无人机时则检测不准确,YOLO-tiny无论是检测大尺寸还是小尺寸的无人机都出现了一定的问题,除了对小尺寸无人机检测不准确,还对较大尺寸的无人机出现漏检的情况。当扩展到5个特征尺度进行检测时,SFv2-FPN,MBv2-FPN,Ghost-FPN和SandGlass-FPN都能有效处理较小目标,对尺度变化也有较好的适应性。相比之下,Ghost-FPN和SandGlass-FPN在检测精度上更高,但本文提出的SandGlass-FPN则在精度上更为准确,相比于Ghost-FPN,得到的目标检测框更注重边缘细节,能刚好完整地框住整个无人机,而Ghost-FPN得到的目标框在边缘上存在一些偏差,特别是图7 (e)中两个较大尺寸的无人机的轮廓边缘超出了目标框,说明本文提出的SandGlass-FPN能有效应用于无人机这样的小目标检测场景,而且能有效适应无人机的旋转、缩放和平移等各种变化,具有一定的鲁棒性。

3.4 消融实验

在所提算法中,为了有效提高模型的检测性能,加入了一些必要的模块,为了验证所加入算法或者模块的有效性,也为了更加清晰明了地观察到每种算法或者模块对最终模型性能的影响,表5给出了消融实验,其中,√代表添加模块。

表5 在UAV测试集上的消融实验Table 5 Ablation experiments on UAV test set

本文以YOLOv3为基准模型,由表5可看出,当尝试使用沙漏瓶颈模块作为骨干网络时,精度从92.11%上升至94.84%,精度指标提升了2.73%,说明使用沙漏瓶颈模块减少了信息的丢失,能有效改善无人机场景的检测精度。在结合沙漏瓶颈模块作为骨干网络部分的基础上扩展为5个特征尺度检测,综合利用多个尺度信息帮助适应不同目标尺寸大小,FPN思想帮助模型精度直接提升了2.22%。最后,在同时结合沙漏瓶颈模块SandGlass,FPN和通道注意力机制SE模块时,模型取得了最高精度98.92%,每一个模块都对最终模型的精度结果有着不可或缺的作用,都在不同程度上带来精度的提升,其中,SE模块在结合SandGlass和FPN的基础上带来了1.86%的精度提升。

4 结束语

本文提出了一种基于复杂城市背景下的UAV检测算法,利用特征金字塔的思想综合了多个特征尺度信息帮助提升小目标检测性能,结合轻量化网络帮助模型加速、实现了网络的轻量化。基于本文提出的复杂城市背景下的UAV数据集,实验结果表明,该算法能有效适应如UAV这样的小目标检测场景,对多尺度变化、旋转的情况具有较强的鲁棒性。在NVIDIA GeForce GTX 1080Ti上测试精度高达98.92%,实时速度为62.37 帧/s,生成的模型权重只有5.38 MiB,这样的结果能满足大多数场景对精度和实时性的要求,并且仅有5.38 MiB的模型权重,能轻易地在资源受限的边缘移动端实现部署,为在嵌入式平台上实时运行和工程落地应用提供了可能。

猜你喜欢
沙漏轻量化尺度
测量时间
汽车轻量化集成制造专题主编
财产的五大尺度和五重应对
一种轻量化自卸半挂车结构设计
一种轻量化自卸半挂车结构设计
有趣的沙漏
DIY装饰沙漏
DIY装饰沙漏
宇宙的尺度
瞄准挂车轻量化 锣响挂车正式挂牌成立