丁鹏程 于进勇 王 超 柳向阳
(海军航空大学 烟台 264001)
近年来,得益于深度学习在特征提取中取到的巨大成就,目标检测作为计算机视觉的主要部分得到了迅猛的发展。不同于传统目标检测中人工提取特征,深度学习特征自提取可以有效克服传统方法对设计者经验的要求,对环境光影的影响有较好的抑制作用,对目标检测的发展起了重要的推动作用。如今,深度学习在目标检测中主要分化出以Fast R-CNN[1],Faster R-CNN[2]为代表的两阶段检测网络和以 YOLO[3],SSD[4]为代表的单阶段检测网络。前者先划分候选区域进行特征提取,之后进行分类和回归定位,后者采取端对端的形式直接进行分类和回归。比较而言,以Faster R-CNN为代表的两阶段目标检测检测精度更高,本文也将此网络作为研究重点。
将深度学习的高精度检测引入无人机视觉定位,是未来发展的趋势。将基于深度学习的目标检测网络替代无人机视觉定位中的图像处理模块,检测出目标在像素坐标系中的位置,经过投影转换可以得到无人机的位置信息。为了使目标检测网络更好的应用在无人机视觉定位,本文根据无人机视觉定位的特点,将研究重点放在提高网络精度,特别是小目标检测的精度,之后根据无人机实时性的特点,研究提高网络速度的方法。
为了让Faster R-CNN更加适应无人机视觉定位的要求,加入Inception改善网络结构,通过设计级联R-CNN,语义级联以及级联激活函数,提出了级联卷积网络,可以明显提高网络的检测精度,特别是小目标的检测精度。选定飞行实验区域,制作自己的数据集UVNLD(UAV Vision Navigation Location Dataset),通过投影关系进行坐标转换得到无人机的位置信息,提出了一整套无人机视觉定位算法,并验证了算法的可行性。
Faster R-CNN引入RPN(Region Proposal Networks)网络,使区域提取、分类、回归等任务共用卷积特征,实现特征共享。RPN采用全卷积层来代替全连接层,可以使网络不受输入图片大小的限制。卷积在特征层上利用k个不同的矩形框进行区域提取,可以同时输出所有矩形框的特征,如图1。分类层用于判断该区域为前景还是后景,回归层预测区域的中心,并得到对应的坐标[x,y,w,h]。
图1 RPN结构
当网络进行目标检测时,为了提高网络的鲁棒性,必须同时考虑小目标和大目标的情况。根据GoogleNet[5]等相关研究,当图像中既有大目标信息,又有小目标信息时,可以控制大小不同的卷积核进行特征提取,即Inception结构。这里,我们设计如图2所示的Inception结构。
在检测精度上,当网络学习大目标时,卷积网络需要足够大的感受野,我们将Faster R-CNN中的5×5卷积核替换成两个3×3卷积核,使感受野略有增加。在小目标学习过程中,1×1卷积核可以增加网络的非线性,在保留上一层感受野的同时,减慢输出特征感受野的增长,有利于小尺度目标的捕捉。
图2 Inception结构
在网络计算速度上,3×3网络的引入可以使每个过程的参数从25降低到18。而设置步长为2的1×1网络,可以使网络的特征图变为原来的一半,显著减低了网络的计算量。
目标检测网络的评价函数IoU(Intersection-over-union)是指模型产生的目标窗口与原来标记窗口的交叠率,即检测结果(Detection Result)与真实标记(Ground Truth)的交集比上它们的并集,表达式如下:
双阶段检测网络,如R-CNN[6]、R-FCN[7]等,都会对提取的候选区域进行分类和回归。分类过程中,每个候选区域都会根据事先设定的IoU的值分为正样本和负样本。回归任务中,网络不断地向正样本的边界框回归。所以,一个好的IoU的设定,对网络的训练和验证具有重大影响。
图3 不同IoU的网络表现
如图3所示,横轴是候选区域的IoU,纵轴是经过回归训练后得到的新的IoU,不同的线条代表不同的IoU训练出来的检测器。整体来看,三条曲线趋势表明IoU越高,检测器的回归性能越好。在0.55~0.6之间,IoU为0.5的检测器性能最佳,在0.6~0.75和0.75以上区间,分别是IoU为0.6和0.7的检测器性能最佳。可以看出,当候选区域自身的IoU值与训练的IoU值相近时,检测器的性能最佳。传统的目标检测网络,通常采用一个固定的IoU设定值,如当IoU为0.5时,大于0.5的都会被认作是正样本,但是网络对于0.6~0.95的候选区域表现较差。提高IoU为0.7,虽然对于0.75以上的候选区域变现较好,但是0.7的IoU值会导致正样本的数量急剧减少,网络训练时过拟合严重,最终检测结果反而不如0.5的设定值。
为了解决以上问题,我们采用级联R-CNN网络结构[8]。由图3可知,网络经过训练,IoU的值会增加。与图4(a)Faster R-CNN相比,我们将多个不同的检测器根据IoU的值串联起来,如图4(b)。本文,我们设定了IoU分别是0.5,0.6和0.7的三个级联检测器,每个检测器的输入源自上一层检测器边界框回归后的结果。
图4 级联R-CNN网络结构
通过这种设定,网络可以充分利用各类正样本的图像信息,一定程度上可以减少正样本的浪费和流失,使得检测网络适应各种目标的检测情况,提高网络的检测精度。
通过上述改进,可以提高网络整体的检测精度,但是,针对小目标这种特殊任务,网络的检测效果提升不明显。通常,为了更好地识别大小不同的物体,特征图像金字塔[9]是一个常见方法。低层图像的特征语义信息比较少,但是位置信息准确,高层的特征语义信息丰富,通过多尺度融合,可以更好地表达图像信息。
图5 几种特征融合
特征图像金字塔如图5(a)所示,将图像化成不同大小尺寸,对每一个尺寸的图像生成各自的特征并进行预测。虽然可以保证特征提取的完备性,但是时间成本太大[10],实用性差。图 5(b)是利用卷积网络自身的特性,对图像进行卷积和池化处理,生成不同尺度的特征图,通过高层的语义网络进行预测[11]。传统的 SPP Net[12],Fast R-CNN[1]和 Faster R-CNN[2]也都采用这种方式。通过这种方式,网络速度快,内存占用小。但是由于忽略了低层网络的细节信息,网络精度有待提高。融合了不同特征层语义信息的网络框架[4]被提了出来,如图5(c)。但是,因为网络中大部分都是低层网络提供的信息,网络的弱特征太多,导致网络的鲁棒性差。
基于上述原因,我们借鉴Lin等[13]思路,采用如图5(d)所示的特征金字塔网络(Feature Pyramid Network),将自底向上和自顶向下的路径进行横向信息融合。比如,将第四层采用1×1卷积层的上采样操作结果与第二层降维操作的结果相加,经过3×3卷积操作后输入到第五层网络进行分类和回归。通过将高分辨率、低语义信息的低层特征和低分辨率、高语义信息的高层特征融合,每一层特征图都可以根据分辨率的不同分别做对应分辨率大小的目标检测,同时这种连接几乎不会增加网络额外的时间和计算量,只是在基础网络上增加了跨层连接。
为了更好地将网络用在无人机视觉定位,必须要考虑网络的实时性问题。ReLU[14]自提出以来,由于可以有效缓解梯度消失、计算方便快捷等原因迅速成为最常用的激活函数。但也存在着成对现象,即低层卷积层的滤波器存在着严重的负相关性,随着网络变深,负相关性减弱[15]。所以,在网络的前半部分,ReLU会在训练过程中抵消部分负响应,造成卷积核冗余。
为了解决这个问题,借鉴Hong等[16]研究,引入级联激活函数C.ReLU(Concatenated Rectified Linear Units)。定义:
则
为了抵消成对现象,根据C.ReLU构造如图6所示结构。将输出通道减少一半,通过将激活函数额外做一次取反,等价于将输入相位旋转180°,从而实现原来的输出总量,在不改变精度的情况下减少一半的运算量。
无人机对获取的图像检测目标,根据目标实际位置和图像中的位置,经过投影关系和坐标转换获得无人机位置信息。根据像素坐标系(u ,v ),图像坐标系相机坐标系(xc,yc,zc),可得经典无人机投影变换方程为
其中,(u0,v0)是图像坐标系原点在像素坐标系中的坐标。 f为焦距,fu=f/dx,fv=f/dy。三维正交旋转矩阵R和平移变换向量t为世界坐标系中的点到相机坐标系的变换矩阵。
图6 C.ReLU结构
然而现实中,摄像机镜头存在严重的畸变,尤在远离图像中心处,像差比较明显。为了提高计算精度,需要考虑无人机镜头畸变。本文根据张正友标定算法[17],运用莱文贝格-马夸特方法[18]解决多参数非线性系统优化问题,从而确定相机参数和畸变系数,实现畸变矫正、图像校正和最终三维信息恢复。
图7 无人机视觉定位算法流程图
通过将级联卷积网络的目标检测融入到视觉投影,代替传统图像处理模块,可以得到无人机的位置信息[19]。本文中,无人机通过识别已知位置信息的目标得到无人机自身位置信息。该算法流程图如图7所示。
1)无人机在高空飞行时,对地面图像进行采集。
2)将当前拍摄图像经过张正友标定算法进行图像校正和三维信息恢复。
3)将校正后的图像输入级联卷积网络。
4)级联卷积网络将检测到的目标分类,并以方框框出的形式标注出目标在图像中的位置,同时得到方框四个顶点像素坐标。
5)根据四个顶点的像素坐标,得到目标中心在图像中的坐标。
6)利用投影转换和已知目标的位置信息,可以得到无人机自身位置信息。
以烟台市芝罘区为中心的海边区域作为研究对象,采用无人机进行数据采集。为了提高模型的适应性和鲁棒性,采集了10类特征比较明显的目标在不同观测角度和飞行高度下的图像,通过旋转、调整亮度、加入噪声等方法扩大样本,模仿Pascal voc2007数据集的构造过程,得到自己的数据集UVNLD。UVNLD数据集包括10类目标的正样本,每类2000幅。其中训练样本每类1000幅,测试样本每类1000幅,共计20000幅。
在64位的ubuntu14.04系统,安装了CUDA 8.0,cuDNN 5.0和python 2.7的环境下,我们选用caffe框架训练本文网络模型。CPU为Intel(R)Core(TM)i7-6770K@4.00GHz×8,GPU为NVIDIA GTX1080,8G内存。
5.2.1 几种网络精度对比
表1是为了验证本文所提级联卷积网络在目标检测中的性能,进行的几组在数据集UVNLD的检测结果。其中,R表示加入了级联R-CNN的网络,F表示加入了语义级联的网络,级联卷积网络则是本文提出的目标检测网络,通过在Faster R-CNN基础上修改网络Inception结构,引入级联R-CNN和语义级联的网络。这里,检测任务的评价指标是AP(Average Precision),定义如下:
其中R为召回率,P为精度。
分别训练和测试四种网络,得到UVNLD数据库的测试结果,见表1。我们可以看出,通过加入级联 R-CNN,无论是 AP50,AP75还是 AP,网络精度都得到了明显的提高。这种级联检测器比单独检测器效果好的多,此外,经过多个检测器后,候选区域的IoU也会提高,可以增加高IoU区域的正样本数量,对于网络的过拟合有明显抑制作用,确保网络在高IoU检测器区间的精度。进一步对比APS和APM可以看出,语义级联对小目标的检测提升明显,通过增加上下文信息,融合高层底层语义信息后,增加了特征映射的分辨率,即在更高层的特征上可以获得更多与小目标相关的有用信息。
通过上述改进,级联卷积网络可以显著提高网络检测小目标的精度,整体精度更是达到了87.9%。部分检测结果如图8所示,所得边界框与真实边界框平均误差为2,满足了网络的设计要求。
表1 几种网络精度
5.2.2 级联激活函数对速度的影响
通过上述方法,网络的精度有了极大的提到。但是,无人机视觉定位除了满足精度要求,还要保证网络的实时性。本文测试了两种传统Faster-RCNN以及是否使用了级联激活函数的级联卷积网络。这里评判标准ms是指网络检测运行的平均时间,以毫秒为计。
表2 不同高度下无人机定位精度
加深网络层数,对网络的精度有很大提升,但也会导致网络检测速度的大幅下降,见表2。仅仅是将卷积子网络从VGG16改为ResNet101,网络速度就有了明显的下降。在网络结构中,通过引入Inception结构等,可以一定程度降低网络运行时间,但是网络的速度依旧远不达要求。
引入级联激活函数后,每层网络都可以减少一半的计算量,特别是随着网络层数的增加,对卷积网络指数级参数增加有了极大的抑制,效果明显,降低了网络对硬件的要求。
为了检验目标检测网络应用于无人机视觉定位的效果,我们在UVNLD数据集上又增加了验证集图片,在保证无人机特定高度下,收集相机拍摄角度分别为45°,60°,90°的图片若干张,同时记录无人机的当前实际位置信息。根据上述步骤,将验证集图片导入,对比网络求取的无人机位置信息与预先记录的无人机实际位置信息,得到表3。
图8 部分检测结果图
表3结果表明,通过引入目标检测网络代替传统的图像处理模块,进行无人机视觉定位,基本可以实现无人机定位误差在0.3m以内,满足无人机视觉定位的需求。特别是当无人机相机垂直角度采集数据时,网络正确检测的区域准确率更是达到了91.1%,定位误差缩小到0.22m,满足无人机视觉定位的要求。
表3 不同高度下无人机定位精度
无人机在相机不同高低角对正确区域检测率和无人机定位误差的影响,主要体现在相机非垂直拍摄时,目标在图像会有一定的投影误差。高低角越低,投影误差越明显,目标检测框误差也会越大,进而影响无人机的定位误差。适当提高无人机拍摄高度,可以一定程度上减小投影误差的影响,从而提高无人机定位结果。
本文在Faster R-CNN网络的基础上,通过引入Inception结构,设计级联R-CNN,语义级联和级联激活函数,提出了级联卷积网络,既可以提高网络在各个候选区域的检测精度,又可以重点解决小目标检测问题,对网络的整体检测精度有了较大的提升。经过在烟台当地数据采集并自建数据库学习,级联卷积网络对图像的目标检测精度稳定在87.9%。将此网络引入无人机视觉定位,代替传统图像处理模块,在考虑相机畸变的情况下,设计了一整套无人机视觉定位算法。试飞实验表明,无人机视觉定位误差稳定在0.3m以内,满足无人机视觉定位的要求。