张 杨,程正东,朱 斌
(国防科技大学脉冲功率激光技术国家重点实验室,安徽 合肥 230037)
目标检测识别是计算机视觉领域重要的研究内容,在民用、医学和军事等领域有着广泛的应用,例如智能监控[1]、医学影像辅助诊断[2]和遥感目标检测[3]等。随着经济和科技的发展,在日常生活中也广泛使用到低空无人机,例如航拍和植保等。但是这也给低空领域的安全带来了威胁,无人机的非合作入侵事件在国内外时有发生[4],不仅对公民的隐私和生命财产安全造成了损害,也对公共安全和国家安全造成了巨大威胁[5]。作为对低空无人机反制的关键,无人机目标的预警探测技术在不断发展,出现了低空雷达探测[6]、无线电探测[7]和光电探测[8]等多种手段。但是由于低空无人机具有机动性强和体积小的特点,对其进行预警探测存在发现难和处置时间短的难题,而研究针对低空无人机的快速高效检测算法是解决这些问题的必备条件。
经过近些年的发展,基于传统手工特征和基于深度学习的目标检测识别技术已取得较大进步。2012年,Hinton研究组将卷积神经网络AlexNet网络[9]应用于图像分类任务中,并在ImageNet[10]大规模视觉识别挑战赛(ILSVRC)上获得了第一名,使Top-5错误率降低到了15.3%,比获得第二名的使用传统目标识别算法DMP模型的错误率低了大约11%。此后,基于深度学习的目标检测识别算法蓬勃发展,如利用深度学习对手写签名进行识别[11]。然而,由于在可见光条件下的小目标具有尺寸小、分辨率低、边缘信息模糊等特点,传统方法对小目标检测识别领域的研究还鲜见报道[12]。
按照思路的不同,可将基于深度学习的目标检测算法分为单阶段算法和两阶段算法。单阶段典型检测网络主要是SSD[13]和YOLO[14-16]系列。Fu等[17]将Resnet-101分类器[18]与SSD检测框架结合起来提出DSSD检测算法,此算法在目标检测中引入额外的上下文信息,提高了对小目标的检测精度,但是检测速度较SSD慢了很多。典型的两阶段检测算法包括R-CNN[19]、Faster R-CNN[20]等。Lin等[21]在Faster R-CNN网络的基础上提出具有横向连接的特征金字塔网络(FPN),克服了只用语义信息比较丰富而细节特征信息缺失较多的网络顶层进行目标检测识别时对小目标检测效果不佳的问题。
当前的目标检测算法通常需要在准确率和速度间进行权衡。文献[22]通过增加YOLOv3的特征提取网络深度与多尺度预测网络结构,提高了算法对小目标的检测识别精度,但同时也降低了算法的推理速度。两阶段目标检测算法与单阶段检测算法相比具有检测准确率高的优点,但其检测速度较慢。针对这个问题,本文对两阶段检测算法Faster R-CNN进行改进,一方面通过使用轻量化的特征提取网络减少模型参数,提高检测速度;另一方面,通过改进FPN特征融合和感兴趣区域池化的方式,提高算法针对小目标的检测识别准确率。
无人机目标和数据采集设备如图1所示。图1(a)为数据采集设备,设备配置有红外热像仪与可见光摄像机,在制作此工作所使用数据集时只用到可见光摄像机。图1(b)~(d)分别为所研究的三款大疆无人机DJI Mavic Air、DJI Mavic Pro和DJI Phantom 3 Standard,其中DJI Mavic Air尺寸最小,其折叠时尺寸为168 mm×83 mm×49 mm,对角轴距为213 mm;DJI Mavic Pro对角轴距和折叠尺寸分别为335 mm和83 mm×83 mm×198 mm;DJI Phantom 3 Standard尺寸最大,其最大轴距为350 mm。
图1 (a)数据采集设备;(b)大疆Mavic Air无人机;(c)大疆Mavic Pro无人机;(d)大疆精灵3标准版无人机Fig.1 (a)Data acquisition equipment;(b)DJI Mavic Air;(c)DJI Mavic Pro;(d)DJI Phantom 3 Standard
为了验证距离对算法识别效果的影响,构建了三个可见光图像数据集U1、U2和U3,其主要区别在于无人机目标与探测器距离的不同。可见光图像的大小均为1920 pixel×1080 pixel,无人机目标与探测器的距离分别约为15、70、100 m,每个数据集中的可见光图像数量大约为1500张。图2为三种不同距离下采集的无人机可见光图像数据集样本,其中a、b、c分别代表三款不同机型。由图2(a1)、(b1)、(c1)可见,当无人机目标距离探测器距离较近时,很容易分辨出无人机的类型;由图2(a2)、(b2)、(c2)可见,随着无人机与探测器之间距离的增加,DJI Mavic Air和DJI Mavic Pro两种无人机变得难以区分;由图2(a3)、(b3)、(c3)可见,当无人机距离探测器更远时,无人机在图像中的尺寸变得更小,对其进行检测识别的难度更大。
图2 三种不同距离下不同机型的无人机可见光图像数据集样本。(a1),(b1),(c1)距离为15 m的数据集U1;(a2),(b2),(c2)距离为70 m的数据集U2;(a3),(b3),(c3)距离为100 m的数据集U3Fig.2 Three examples of visible image datasets for three different types of drones at different distances.(a1),(b1),(c1)The data set of U1 at a distance of 15 m;(a2),(b2),(c2)The data set of U2 at a distance of 70 m;(a3),(b3),(c3)The data set of U3 at a distance of 100 m
Faster R-CNN算法结构框架如图3所示,其输入图像大小为1333 pixel×800 pixel;使用深度残差网络ResNet-18作为算法的特征提取骨干网络;将特征提取网络的特征输出分成四个阶段,使用top-down的特征金字塔网络连接方式将深层特征与浅层特征进行融合;区域建议网络(RPN)在不同层次的特征图上生成区域建议框,最后经过感兴趣区域池化(ROI pooling)和Faster R-CNN的检测层,得到最终检测结果。
图3 改进的Faster R-CNN算法结构框图Fig.3 Structure framework of improved Faster R-CNN algorithm
与ResNet-50网络相比,ResNet-18网络包含更少的卷积层,网络参数也大幅减少。所提出的改进型Faster R-CNN算法使用的特征提取网络为ResNet-18的前17个权值层,即去掉最后的平均池化层、全连接层和Softmax层。
表1为改进Faster R-CNN算法使用的ResNet-18特征提取网络结构。该特征提取网络分成5层,其中第一层Conv1卷积核大小为7×7×64,步长为2,为网络的输入层,同时也是算法的输入层;其余4层分别命名为Conv2-x、Conv3-x、Conv4-x和Conv5-x,且同时对应输出特征的4个阶段stage-1、stage-2、stage-3和stage-4。输入图像大小为1333 pixel×800 pixel,则经过Conv1后输出的特征矩阵大小为667×400×64。第二层Conv2x包含一个3×3的最大池化层,步长为2,两个残差单元,每个残差单元中包含2个3×3×64的卷积核,由于最大池化层的步长为2并且残差单元中的卷积核深度为64,因此Conv2-x的输出特征矩阵大小为334×200×64。Conv3-x、Conv4-x和Conv5-x三层使用的残差单元除了卷积核深度不同,其余设置均相同,即每层包含两个残差单元,且每个残差单元第一个卷积核的步长均为2。因此经过步长为2的卷积核的下采样操作后,最后三层的输出特征矩阵大小分别为167×100×128、84×50×256和42×25×512。
表1 ResNet-18特征提取网络Table 1 Feature extraction network of ResNet-18
根据低空无人机目标尺寸小的特点,对特征金字塔网络中深层特征与浅层特征融合的方式进行了改进。图4为改进的特征金字塔网络结构,左侧自底向上的结构为卷积神经网络的卷积过程,随着网络的变深,特征层的尺寸逐渐变小,特征更抽象且所表达的语义信息更强;在右侧建立横向连接,自上而下地对右侧特征层进行上采样并与左侧的特征进行融合。在传统的FPN算法中采用特征相加的方式对相应的特征层进行融合处理,通过对上层特征进行双线性插值的方法上采样,然后与左侧经过1×1卷积操作后的特征层直接相加。虽然特征层相加的融合方式能够让目标特征信息更丰富,但同时也增加了背景的特征信息,使得目标特征与背景特征的差异性不明显。
图4 改进的特征金字塔网络结构Fig.4 The improved feature pyramid network(FPN)structure
为了凸显无人机目标特征、提高算法的检测识别率,改变了传统FPN中特征层通过相加进行特征融合的方式,而采用特征层相乘的方式进行特征融合,如图4虚线框中所示。改进后FPN输出的特征图可表示为
式中:φi表示FPN输出的第i个特征图,C1×1为卷积核为1×1的卷积层,φn为特征提取网络的第n层特征图,f是双线性插值函数,f(φi-1)表示对FPN第i-1个特征图进行双线性插值。
特征相乘的融合方式能够让高特征值的像素点具有更高的特征值,分化不同像素点的特征,使得不同区域的特征差异更大。图5(c)、(d)分别为在FPN中使用特征相加与特征相乘两种融合方式得到的特征图。两种融合方式得到的特征图与浅层特征图5(a)相比,目标相对背景均更加突出;与深层特征图5(b)相比,特征图中的细节信息均得到了加强。而相乘融合方式得到的特征图5(d)与相加融合方式得到的特征图5(c)相比,目标与背景的对比度更高,目标的特征信息更加明显。
感兴趣区域是目标检测算法中识别出的候选识别区域,Faster RCNN算法中的感兴趣区域是由RPN所生成的候选识别框映射到特征图上对应的区域所得到的。感兴趣区域池化的目的是将大小和形状各不相同的锚点框所对应的感兴趣区域归一化为固定尺寸大小的目标待识别区域,以便输入后续的检测层网络。图6为感兴趣区域池化示意图,RPN生成的两个候选识别框对应的各自感兴趣区域大小不同,感兴趣区域池化算法将两个感兴趣区域平均分成7×7个小区域,然后通过分块池化得到固定7×7大小的尺寸输出。
图5 (a)浅层特征图;(b)深层特征图;(c)相加融合特征图;(d)相乘融合特征图Fig.5 (a)Shallow feature map;(b)Deep feature map;(c)Additive fusion feature map;(d)Multiplying fusion feature map
图6 感兴趣区域池化示意图Fig.6 Schematic diagram of region of interest pooling
为了减少感兴趣区域池化对小目标检测算法准确率的影响,所提出的改进Faster R-CNN算法使用双线性插值方法得到候选预测框内每个小网格的像素值。图7为感兴趣区域双线性插值示意图,网络所回归的候选预测框为浮点型,黑色圆形区域代表特征图的像素,感兴趣区域为浅灰色矩形区域。
为了减少算法的计算量,将双线性插值的方法用于感兴趣区域池化时在所划分的小网格区域仅采样一次,如图7所示的两个灰点即为两个小网格经过双线性插值得到的池化结果。以采样点1为例,使用双线性插值计算其像素值的过程为:1)如图7所示,特征图的大小为4 pixel×5 pixel,检测层的固定输入尺寸大小为4 pixel×4 pixel,因此浅蓝色区域被平均划分成4×4个小网格;2)以f(0,0)、f(0,1)、f(1,0)和f(1,1)代表四个位置处像素值的大小;3)采样点1的坐标为(0.8,0.4),则根据双线性插值的计算公式可得采样点1处的像素值f(0.8,0.4)=0.12f(0,0)+0.48f(1,0)+0.08f(0,1)+0.32f(1,1)。
图7 感兴趣区域双线性插值示意图Fig.7 Schematic diagram of bilinear interpolation for the region of interest
为了验证本节所提出的基于轻量化网络的Faster R-CNN目标检测算法的性能,以及优化后算法与原始Faster R-CNN算法性能的比较,设置了若干组对比实验,实验数据集均按照9:1的比例划分为训练集和验证集。其中所提出的改进Faster R-CNN算法与原始Faster R-CNN算法的超参数设置相同,图像输入尺寸均设置为1333 pixel×800 pixel,使用Adam优化器,初始学习率设置为0.0003,训练设置了24个迭代周期,学习率衰减策略是在第8、11、16和22周期时按0.1的比例衰减,原始Faster R-CNN算法使用ResNet-50的预训练模型,改进Faster R-CNN算法使用ResNet-18预训练模型。检测算法输出的检测框与真实框的交并比(IOU)阈值均设置为0.5,训练与测试的深度学习框架为PyTorch,实验均在显卡为GTX2080Ti、操作系统为Ubuntu18.04的服务器上进行。
在验证无人机与探测器的距离对目标检测算法的影响时,使用所提出改进的Faster R-CNN算法在构建的三个无人机数据集U1、U2和U3上分别进行训练,三组实验的训练参数设置相同。图8为分别在数据集U1、U2和U3上训练时mAP与训练迭代周期的曲线图。图8(a)为所提出的改进Faster R-CNN算法在U1训练集上的mAP曲线图,从第2个迭代周期开始mAP值就已经达到了100%,即对U1验证集上的所有目标均能进行准确检测识别;图8(b)为改进算法在U2训练集上的实验结果,算法的mAP值稳定在96.4%左右,较U1数据集下降约3.6%;图8(c)是在U3数据集上的实验结果,mAP值约为92.8%,在三个数据集中检测识别准确率最低。对比三组实验可以发现算法的检测识别精度随着目标与探测器距离的变远而变低,即在三种距离的数据集上,算法在距离为15 m的数据集上识别效果最好,当无人机目标距离增加到70 m和100 m时,算法的检测识别精度由100%降到了96.4%和92.8%。
图8 (a)U1数据集、(b)U2数据集、(c)U3数据集mAP曲线图Fig.8 mAP curves of(a)U1,(b)U2,(c)U3
为了对比改进Faster R-CNN算法与原始使用ResNet-50特征提取网络的Faster R-CNN算法对小目标的检测识别效果,用原始Faster R-CNN算法在U3数据集上进行了训练和测试,训练过程中的mAP曲线如图9(a)所示,训练过程中预测框与类别损失的曲线如图9(b)所示。由损失曲线图可以得出模型在训练到第20个迭代周期时,分类损失和预测框位置的损失曲线已收敛;从mAP曲线图可以得出用ResNet-50作为特征提取网络的Faster R-CNN算法在U3数据集上的mAP值为92.1%,比改进Faster R-CNN算法的mAP值低了约0.7%。
图9 (a)原始Faster R-CNN在U3数据集上的mAP;(b)训练时边界框和类别的损失值Fig.9 (a)mAP of origin Faster R-CNN training in U3 dataset;(b)Training loss of bounding boxes and classes
为比较不同算法在目标尺寸较小的U3数据集上的性能,选择了两种典型的单阶段目标检测识别算法SSD和YOLOv3在U3数据集上进行训练与测试。由于数据集中的原始图像尺寸较大,为避免小目标因输入图像大比例缩放而导致信息严重丢失,此处选择了大输入尺寸的SSD512和YOLOv3-608算法进行实验。为比较不同算法在性能上的优劣,使用每类预测目标的平均准确率(AP)、mAP、虚警率和检测速度作为衡量指标,在相同训练迭代次数条件下,对比实验的最终结果如表2所示。
表2 算法在三个数据集上的训练结果Table 2 Result of algorithm in three datasets
由改进Faster R-CNN算法在三种距离不同数据集上的实验结果可知,随着目标与可见光相机的距离越来越远,目标检测算法的检测速度基本不变,但是检测的mAP值不断降低;除DJ3无人机外,每类目标的预测AP值均在下降,从三型无人机的辨识度可以看出DJ3无人机与其他两型无人机差异明显,即使在较远距离,根据其形状也容易辨认,因此在三个数据集上DJ3无人机的预测mAP均为最高。与原始Faster R-CNN相比,改进后的算法在速度上达到了34.5 FPS,较原始算法的15.8 FPS提高了约一倍,且mAP值提高了0.7%。单阶段目标检测算法SSD 512和YOLOv 3-608在U3数据集上的mAP值分别为66.7%和78.3%,检测速度分别为33.8 FPS和39.1 FPS。
在U3数据集上4种算法的检测时间与检测虚警率如表3所示。目标检测虚警率是指错误检测到的目标在所有检测到的目标中所占的比例,由表3可见所提出改进Faster R-CNN算法对DJ-Pro和DJ3无人机的检测虚警率在四种算法中均是最低,分别为13.0%和8.3%,对DJ-Air无人机的检测虚警率仅高于以ResNet-50为骨干网络的Faster R-CNN算法。而单阶段目标检测算法SSD和YOLOv3的虚警率普遍偏高,体现了使用RPN区域建议网络的Faste R-CNN算法性能的优越性。
表3 检测时间和虚警率Table 3 Detection time and false alarm rate
分析了传统Faster R-CNN算法目标检测识别速度慢的缺陷,为提高对低空无人机的检测识别速度和效果,使用更轻量的ResNet-18替代ResNet-50作为Faster R-CNN算法的特征提取网络,减少算法的参数量;通过改进FPN中特征金字塔的融合方式,提高目标与背景的特征差异;使用双线性插值的方法改善因感兴趣区域池化造成的预测框偏离的问题。通过在构建的低空无人机数据集上进行训练和测试,验证了改进算法的有效性。通过与原始Faster R-CNN、SSD和YOLOv3在构建数据集上的检测识别效果的对比,显示出改进算法具有更优的性能,证明了改进的有效性,为目标检测识别方向的研究提供了一种改善小目标检测识别效果的思路。