摘 要:利用传统方法对遥感影像的目标检测,过程复杂并且耗时。随着深度学习的发展,用深度学习的方法进行目标检测,为遥感影像的检测开辟了新的思路。当前目标检测的方法主要包括以Faster R-CNN为代表的两阶段检测算法和以SSD为代表的单阶段算法,两阶段算法精度高速度慢,单阶段算法速度快精度低。针对两种算法的优势,该文将Faster R-CNN中的RPN与SSD算法相结合,融合单阶段和两阶段算法的优势,在提高精度的情况下保证速度,并加入特征金字塔结构,利用多个卷积层融合低层特征和高层特征的信息,提高预测效果。在NWPUVHR-10高分辨率数据集上进行训练和测试,对结果进行算法评估。同时选用测试集将本文算法与Faster R-CNN和SSD算法进行对比,实验表明本文算法提高了对小目标物体的检测精度,获得了更优的性能。 关键词:目标检测;深度学习;RPN网络;SSD算法;遥感影像图像目标检测已成为遥感影像地物目标识别、计算机视觉等领域非常重要的研究热点。通过目标检测可以获取影像中的特定目标,得到目标的类型和目标的具体位置,在智能交通、智慧城市、公共安全、军事战争等应用中起到十分重要的作用。因此,对遥感影像数据进行目标检测的研究具有重大意义[1-2]。高分辨率卫星的快速发展使高分辨率遥感影像急剧增加,为遥感影像目标解译系统提供了可能,因此基于大数据的遥感影像目标检测成为当前的迫切需求。传统的目标检测方法采用手工设计的特征难以适应海量数据,而深度学习的方法具有强大的特征表达能力,成为今后发展的趋势。基于深度学习的目标检测算法,主要包括以Faster R-CNN(faster regions with convolutional neural network)为代表的基于候选窗口的两阶段检测算法和以SSD(single shot multibox detector)算法为代表的基于回归的单阶段检测算法。随着深度卷积神经网络的广泛应用,R-CNN[3](regions with CNN)算法突破传统目标检测算法的思想,将卷积神经网络应用到目标检测中,采用选择性搜索[4]的方法,从原始图片区域提取适量候选区域,并将其送入深度神经网络进行特征提取。虽然较传统方法有很大提高,但由于全连接层的存在,只能输入同等大小的图片,而图片裁剪产生的形变会影响检测的精度。针对此问题,SPP Net[5](spatial pyramid pooling networks)对此进行了改进,在最后一个卷积层后添加了金字塔池化层,可以在网络中输入任意尺寸的图片。由于SPP(spatial pyramid pooling)层的加入,只需对图像进行一次卷积特征提取就可得到特征图,速度得到了显著提高,但此种方法不适合深层的网络结构。Fast R-CNN[6]又在SPP Net的基础上进行改进,不仅在最后一个卷积层后加入ROI(region of interest)池化层,而且使用多任务损失函数(multi-task loss),使其在速度和精度上有了很大的提升。但此种算法仍然延续了选择搜索的方法,在检测过程占用较多时间。针对此问题,Faster R-CNN[7]使用RPN(region proposal network)网络替代选择性搜索,引入的RPN网络将区域提取、分类、回归共用卷积特征,使目标检测实现真正的端到端的计算。随着两阶段算法的不断发展,研究学者将其应用在遥感影像的目标检测中。文献[8]将基于Faster R-CNN深度学习网络的识别方法,应用在遥感影像目标识别中,但识别精度较低。针对这一问题,文献[9]采用Faster -RCNN模型对飞机目标进行识别和检测,分别使用VGG(visual geometry group) 网络和ResNet(residual network)[10]网络作为Faster -RCNN模型中的特征提取网络,获得更优的检测效果。为了继续提高Faster R-CNN算法的检测速度,文献[11]提出了基于全卷积网络的结构,同时采用位置敏感池化来引入平移变化,抵消全卷积网络造成的平移不变形问题,使检测精度和效率有了很大提高,但存在适用性较差的情况。 基于候选窗口的目标检测是先进行选择性搜索或者RPN网络生成候选区域,再进行分类和回归操作,此种方法在速度上会受到限制。因此,出现了基于回归的目标检测算法,采取一步走的策略。YOLO(you only look once)算法[12]采用一个单独的CNN模型实现端到端的目标检测,首先将输入图片统一到相同大小,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN算法,其速度更快,但其精度比Faster R-CNN低。针对YOLO算法精度较低的问题,SSD算法[13]以特征分层提取作为主体设计思路进行回归和分类,在保证速度的基础上,提升了精度,但是对小目标物体检测效果较差。文献[14]针对SSD算法在小目标检测性能差的问题,提出一种改进SSD算法,利用现有基于候选框和回归检测方式的优势,提升检测性能。但依然无法发挥单阶段方法的速度优势和两阶段方法的精度优势。针对以上情况,本文结合Faster R-CNN精度的优势和SSD算法速度上的优势,提出了一种新的算法,在SSD算法的基础上结合改进的RPN网络,在保证速度的情况下提高精度。因此,本文算法对RPN网络进行改进,使其可以过滤掉部分负样本,并对候选框位置进行调整,结合SSD算法,使其进行端到端地训练,同时加入了网络的特征融合操作,提高对小目标的检测结果。
1算法原理
1.1算法基础
1.1.1 RPN网络
RPN网络主要用于生成候选区域,其通过softmax函数判断Anchor是属于前景或者背景,再利用边界框的回归来修正Anchor并获得精确的位置。如图1所示,详细说明了RPN网络的结构图。由图1可知,该网络分为两条路线,上面的分支通过softmax对Anchor进行分类,从而获得前景和背景;下面的网络分支用于计算Anchor边界框的回归偏移量,以获得精确的目标候选区域。跟随的Proposal层综合前景Anchor和边界框的回归偏移量获取目标的候选区域,同时剔除太小和超出边界的目标区域,最终实现目标定位的功能。1.1.2 SSD网络结构
SSD算法在单阶段算法中有较好的效果,它比Faster-RCNN的速度快,同时比YOLO算法的精度高。它使用VGG-16[15]作为基础网络,在VGG-16网络的基础之上添加特征提取层。与YOLO的不同之处是,为保证小目标的检测效果,不仅在添加的特征图(conv8_2, conv9_2, conv_10_2, pool_11)上进行,也在基础网络特征图(conv4_3, conv_7)上进行。SSD网络结构可看为两部分,包括基础网络和金字塔网络。它的基础网络是VGG-16的前四层网络,金字塔网络由卷积网络构成。它修改了传统的VGG-16网络,将FC6和FC7层转化为卷积层,如上图中的Conv6和Conv7,同时去掉所有的Dropout层和FC8层,将Pool5从2×2-s2变换到3×3-s1(pool5层的stride由原来的2改为了1)。选取Conv4_3、Conv_7、Conv8_2、Conv9_2、Conv10_2、Conv11_2层的特征图,然后分别在这些特征图上面的每一个点构造6个不同尺度大小的目标框,分别进行检测和分类,生成多个目标框。最后,把不同特征图获取的目标框相结合,经过非极大值抑制(non-maximum suppression,NMS)的抑制掉一部分重叠或者不正确的目标框,生成最终的检测结果。1.2算法网络结构
本文算法的主要思想是将RPN网络部分与SSD算法相结合,融合单阶段和两阶段算法的优势,在提高精度的同时保证速度。本算法的框架主要有3个部分,分别是RPN改进模块,物体检测模块和转换连接块。RPN改进模块主要是过滤掉部分负样本,减少分类器的搜索空间,粗略调整目标框的位置和大小,为后续的回归提供更好的初始化;目标检测模块将确定好的目标框作为输入,进一步分类和回归。同时运用转换连接块来传输RPN改进区域的特征,用于目标检测模块中预测目标的位置、大小和类别标签。采用多任务损失函数使该算法能够以端到端的方式训练整个网络,提高算法的性能。其网络结构如图3所示。1) RPN改进模块。此部分主要针对单阶段方法中精度不高的问题,对RPN结构进行改进,实现粗略的分类和回归的筛选。该部分主要由基础网络和辅助网络构成,采用预训练的VGG-16作为基础网络,如图4所示。在VGG-16的基础上,将FC6和FC7转换为卷积层conv_FC6以及conv_FC7,为了更好地利用高层信息,在VGG-16网络的最后增加2个额外的卷积层(conv6_1,conv6_2),并且对conv4_3以及conv5_3添加了L2 归一化层[16]。SSD算法直接在人为设定的默认框上进行回归,进而生成检测结果,此种方式造成SSD算法检测精度较低。为了提升算法的检测精度,本文算法结合两阶段算法Faster R-CNN中RPN的思想,增加RPN改进模块。如图3所示,在对应的特征图上面生成对应的anchor。对特征图上的每个像元预测4个偏移量及前景对象中的置信度得分,从而消除无用的anchor同时生成每个像元对应的修正后的anchor。此模块为物体检测模块的回归提前进行筛选,进行目标框的调整,为物体检测模块的回归提供有利条件。2)物体检测模块。此部分主要是对上一步得到的结果进行分类和精确的调整。这部分类似于SSD,不同的是利用筛选后的Anchor进行分类与回归。此过程没有采取两阶段算法的做法,对特征图中提取的ROI特征进行池化,而是通过转换连接模块传递特征图,只进行一次分类与回归,改进了两阶段算法中逐候选区域ROI池化的耗时操作。另外,本文算法中的浅层特征图即尺寸比较大的特征图融合了高层特征图的信息,预测目标框也是基于每层特征图进行,最后将各层结果整合在一起。而SSD算法直接用特征图进行预测,缺少特征图信息融合的过程。本文算法的改进,提高了对小目标物体的检测精度。3)转换连接模块。此模块为连接模块,一方面将RPN改进模块的特征映射到物体检测模块,另一方面进行特征层的融合,加入特征金字塔,利用多个卷积层融合低层特征中丰富的细节信息和高层特征中高语义信息,提高预测效果,应对小目标物体检测效果差的弊端。在提高检测精度的同时为物体检测区域进行服务。由图3所示,此模块使用反卷积进行特征图的放大,然后利用以元素进行求和的方式相加,求和后连接一个卷积,提高特征图的分辨力。由上可知,本文算法为提高单阶段算法的精度,加入RPN改进模块,为后面的回归提供更好的初始化。同时为保证单阶段算法的速度,没有进行逐候选区域的ROI池化,而是通过转换连接模块进行特征图映射。此种算法解决了两阶段算法在ROI池化过程中的耗时问题,以及单阶段算法一步到位造成精度较低的问题。1.3 训练过程
1)Anchor的设计与匹配。对于Anchor的设计与SSD算法中的设计类似,为了检测不同大小的目标,选择了4个特征图层,对于VGG-16,其总步幅大小为8、16、32和64像素, 每个特征层与一个特定尺度的Anchor(尺寸是相应层的总步幅尺寸的4倍)和3个纵横比(0.5、1.0和2.0)进行关联。对于Anchor与真实目标框之间的匹配机制,先将每个真实目标框与重叠数值高的Anchor匹配,然后将Anchor与任何重叠高于0.5的真实目标框相匹配。
3)困难负样本挖掘。RPN改进模块已经过滤掉部分负样本,但负样本的数量仍远大于正样本。为了改善单阶段算法正负样本不平衡的问题,对负样本进行筛选,使正负样本比例保持在1:3,根据Anchor分类后的损失进行排序,最终选择损失最高的负样本。
4)损失函数。损失函数方面主要包含RPN改进模块和物体检测模块两部分。在RPN检测模块包含二元分类损失Lb和回归损失Lr;同时在物体检测模块部分包含多类损失Lm和回归损失Lr。采用端到端的训练方式,RPN检测模块和物体检测模块两个部分的损失函数一起向前传递。
2算法实验
本文进一步通过实验,对提出的方法进行验证。实验在Ubuntu16.04操作系统下,配置了型号为NVIDIAGeForce840M的GPU显卡的计算机,并且安装了CUDA8.0和CUDNN5.1,实现对GPU的加速,在Anaconda3.6的基础上配置了Caffe深度学习框架。本实验以VGG-16为网络框架,选择NWPUVHR-10高分辨率数据集进行实验,并与Faster-RCNN和SSD算法进行对比。2.1数据集
本文使用的高分辨率数据集为NWPUVHR-10数据集。NWPUVHR-10数据集是一个包含飞机、轮船、油罐、棒球场等10个类别的高分辨率遥感影像多类目标识别数据集。它总共包含800幅遥感影像,其中715幅来自GoogleEarth,空间分辨率在0.5~2 m之间,另外85幅红外彩色融合影像由德国摄影测量协会提供的法伊英根地区的数据,空间分辨率为0.08 m。由于数据集数量较少,对数据集进行了扩充,包括数据增强、旋转、裁剪等操作。按照6:2:2随机将正样本集划分成训练集、验证集和测试集,其中各个类别的具体分布如表1所示。将其转换成VOC数据集的格式,在此过程中,借助VOC框图工具labelimg来标记目标对象区域,生成xml格式的位置文件,具体过程如图5所示。
2.2 实验结果
将NWPUVHR-10数据集,转变为VOC格式的数据集,在本文提出的算法中进行了训练和测试,得到各个类别的测试结果图如图6~图11所示。
2.3 算法评估
算法的评价指标以平均准确率均值(mean average precision,mAP)作为算法精度的评估指标。在检测的过程中每个类别都可以根据召回率(recall)和准确率(precision)绘制一条曲线,那么准确率均值(AP)就是该曲线下的面积,而mAP是多个类别AP的平均值,公式如式(7)所示。每个类别的P-R曲线和mAP的P-R曲线如图6和图7所示。
算法对每个类别的运行速度FPS(frames per second)、AP值以及类别的平均精确度mAP值进行了统计,如表2所示。由表2可知,在所有类别中,大部分的精度都达到了90%以上,田径场的检测精度达到了98.56%,小物体油罐的检测精度也达到了89.42%。2.4 对比试验
为了证明本文算法的检测性能优于Faster R-CNN和SSD算法,将其与本文算法进行对比。得到的结果如表3所示。由表3可知,本文算法在检测速度和精度上优于Faster R-CNN和SSD算法。为了判断本文算法是否能够提高对小目标物体的检测精度,选用测试集220张(包含油罐和汽车),其中包含2 261个目标,对不同算法的检测性能进行测试对比,具体结果如表4所示。通过表4可知,本文算法相比于Faster R-CNN和SSD,对小目标的检测性能有所提高。下面是测试集中部分结果图的对比,具体分析如图14和15所示。
由图14所示,当3个算法同时对小且密集的油罐进行检测时,Faster R-CNN算法出现了漏检的情况,并且一部分油罐的准确率偏低。SSD算法虽然没有出现漏检,但同样表现出准确率偏低的情况。本文算法的检测结果不仅没有出现漏检,同时表现出较高的检测精度。
与此同时,利用3种算法对汽车进行检测,由图15所示,可以看到图片比较模糊,与背景差异不大,如图15中方框所示,Faster R-CNN算法和SSD算法都出现了一定程度的漏检,而本文算法表现出了良好的性能。通过对比实验,可以表明本文算法,在应对小而密集的检测目标和复杂环境的目标时,表现出更优的检测性能。3 结束语
本文以FasterR-CNN和SSD算法作为基础,结合两种算法的优点,提出一种新的算法。将FasterR-CNN算法中的RPN网络进行改进,粗略调整候选框的位置,为后面的精确定位奠定基础,将其与SSD算法结合,构建了物体检测模块,实现精确的分类与回归。为了应对小目标物体检测效果差的情况,在转换连接模块加入特征金字塔,加入多个卷积层,融合低层特征中丰富的细节信息和高层特征的高语义信息,提高对小目标物体检测的精度。本文算法还使用NWPUVHR-10数据集进行了训练和测试,并且与FasterR-CNN和SSD算法进行了对比,在速度和精度上得到了更优的结果。同时将本文算法与其他两种算法在相同测试集下进行对比,通过对误检、漏检、召回率和准确率的统计分析,证明本文算法在对小而密集的目标和环境复杂的目标上,表现出更优异的性能,从而验证了本文算法的可行性。
原标题:结合RPN网络与SSD算法的遥感影像目标检测算法
作者简介:成喆(1994—),女,山东济宁人,硕士研究生,主要研究方向为计算机视觉和遥感影像的目标检测。
基金项目:国家自然科学基金面上项目(41871367,61773377)通信作者:吕京国 副教授 E-mail:lvjingguo@bucea.edu.cnPIE-Engine实践 | NDVI、矢量面积批量计算...巧用map算子提高效率
无人机倾斜摄影测量技术在房地一体中的应用
林祥国:无人机激光雷达点云精细地形提取方法与实践
如何使用 Landsat 8 卫星影像计算地表温度
InSAR技术的城市建筑形变风险评估