基于深度神经网络的遥感目标检测及特征提取
2018-08-23陈金勇吴金亮
王 港,陈金勇,高 峰,吴金亮
(中国电子科技集团公司航天信息应用技术重点实验室,河北 石家庄 050081)
0 引言
遥感是在不直接接触研究目标或现象的情况下,利用记录装置观测或获取目标或现象的某些特征信息的一门科学和技术。遥感已被广泛应用于环境检测、资源探测、生态研究、测绘制图和军事指挥等众多领域[1]。目标检测作为遥感图像处理的一个重要部分,具有覆盖范围广、作用距离远和执行效率高等方面的优点,在军事和民用领域都有重要的意义和价值。
深度学习是近年来在大数据环境下兴起的一门机器学习技术,由于其具备海量数据的学习能力和高度的特征抽象能力,在诸多图像应用领域都取得了革命性的成功[2]。自2014年开始,基于深度学习(主要是卷积神经网络(CNN)[3])的目标检测识别在自然图像应用中取得了巨大突破。例如,以R-CNN(Region with CNN Features)方法为代表的结合通用候选区域算法和CNN分类的目标识别框架(R-CNN[4]、SPP-NET(Spatial Pyramid Pooling Net)[5]、Fast R-CNN(Fast Region with CNN Features)方法[6]、Faster R-CNN(Faster Region with CNN Features)方法[7])。其候选区域采用Selective Search[8]、EdgeBox[9]或BING特征[10]等通用目标候选方法。但这些算法都需要大量的学习样本用于预测准确的回归位置,且大多设计为针对图像中占比大的目标,对于“大范围、小目标”的遥感识别效果并不理想。
大型深度卷积神经网络在遥感影像分类、目标检测识别等研究方面都表现出了良好的性能。但是,并没有一个清晰的解释来说明深度学习网络表现优良的原因,这样就没有技术来支撑改善网络结构,同时无法从科学角度去分析模型的内部操作。针对上述问题在图像处理领域,2014年D.Zeiler开始提出利用反卷积可视化技术来洞察中间特征层和分类器操作,并显示了改善网络的分类性能提高情况[13];2015年Yosinski可视化了网络如何响应输入图像的过程,从而解释网络分类的特征变化情况[14];2017年Brian Chu等人通过可视化深度残差网络中间特征层,从经验分析角度了解了残差结构在整个网络中的显著作用[15];2017年Luisa M Zintgraf等人可视化深度网络模型,并指出了图像中哪些部分为分类贡献哪些部分干扰分类情况[16]。但是,并没有出现应用可视化技术对遥感影像目标在深度卷积网络模型的成像特性的研究[17]。
针对遥感影像目标检测的具体情况,本文设计了基于深度学习神经网络模型的遥感影像目标检测算法。本文通过谷歌地图建立了图像目标样本库;为解决输入图像巨大难以处理的问题,本文对检测输入的遥感影像进行分块处理[18],进行了RPN优化,方便了并行化处理。在建立的模型上,进行逐层的特征图可视化操作,应用卷积正向可视化技术和反卷积可视化技术,实现对网络特征的可视化描述,将深度学习网络模型逐渐从“黑盒”中拉出来,从而指导网络结构的设计。
1 目标检测算法流程
本文总体算法流程如1所示,首先对输入的宽幅遥感影像进行分块操作,然后通过公共卷积层(卷积层1)后,分2条路线进行。路线1为Faster R-CNN框架分类过程,将所选区域进行分类处理,给出类别概率;路线2为区域建议网络(RPN)过程,通过滑窗及后续网络[19],给出包含目标的准确区域建议。路线1和路线2配合,得到被检测影像包含的目标及其具体位置。
图1 算法流程
2 分块目标检测
2.1 训练样本库
深度学习的所有算法都建立在大量数据的基础上,算法都是在大量有效数据上进行特征和规律学习。遥感影像数量很多,但是包含有特定类别、且分辨率一致的影像数据并不够多。本文中建立了高分辨率遥感影像的典型目标样本库,通过这个样本库进行典型目标的学习和检测。
本文搜集的典型目标包括:舰船、飞机和机场3种。搜集包含目标的样本,主要按照由大到小的范围进行搜集,比如舰船样本,即按照“国家—港口—舰船”的思路进行搜集。其余2种样本搜集思路与舰船类似。
搜集的高分辨率遥感影像数据分辨率在0.5 m左右,搜集到的粗样本数据再进行细加工。Faster R-CNN训练的样本数据一般要求在1 000*1 000像素左右,故制作细样本时,也将样本大小选定在1 000*1 000左右。每一幅细样本中包含1~5个目标。典型样本实例如2所示,图2(a)为舰船样本示例,图2(b)为机场样本示例,图2(c)为飞机样本示例。
图2 样本示例
2.2 目标快速检测
本文采用的模型为Faster R-CNN,其本质为RPN结合Fast R-CNN,其中RPN作为区域建议的部分而Fast R-CNN作为主体分类结构存在,二者共享VGG16网络模型的卷积结构,从而减少计算。同时,Fast R-CNN检测网络不再采用Selective Search区域建议方法。具体Fast R-CNN结构,参见文献[6]。
基于Faster R-CNN的目标检测主要包括2个步骤:训练和检测。其中训练过程,RPN和Fast R-CNN都可以进行端到端训练。在反向传播中,采用随机梯度下降法,结合损失函数进行网络参数调节。同时,随机采样正样本和负样本的比例为1∶1。
2.2.1 网络训练
RPN和Fast R-CNN部分都可以独立地进行训练学习,但是这样它们的卷积部分就会不同。本文设计一种训练方法,使得RPN和Fast R-CNN可以共享卷积层,而非独立训练。本文采用4阶段训练算法,通过选择性优化,实现了卷积层的共享。具体步骤如下:
① 按照文献[7]介绍RPN的方法,对RPN进行训练。网络初始化采用ImageNet预训练模型,微调训练采用端到端的训练流程。
② 使用步骤①训练好的RPN输出区域建议,训练独立的Fast R-CNN目标检测网络。到此时,2个网络还没有共享卷积层。
③ 使用步骤②得到的Fast R-CNN检测网络初始化RPN训练,训练RPN时,保持卷积层不变,调节RPN独有网络部分的参数。
④ 保证共享的卷积层不变,训练Fast R-CNN检测网络,只调整Fast R-CNN的全连接层。
这样,既训练了2个网络共享的卷积层,也分别调整了2个网络各自的独立部分。
2.2.2 目标检测
本文中宽幅遥感影像检测,在输入到检测网络前,需要先对其进行分块,针对每一块进行目标检测,再将检测结果汇总到原图中来。
具体分块检测方法如下:
① 从坐标原点开始对宽幅遥感影像进行分块,分块采取交叠方式进行;
② 将分块送入RPN网络,得到区域建议,并汇总到原图中,坐标转化公式为:
③ 对全图进行非极大值抑制操作,滤除交叠建议区域;
④ 将每一个去除交叠的分块I(i,j)输入到检测网络,检测网络给出类别和位置。
其中,n表示本块中检测到的第n个目标。X、Y表示目标的全局坐标,x、y表示目标在分块中的局部坐标。
3 卷积特征可视化
本文通过标准的全监督卷积神经网络模型将输入的二维图像映射为一个表示类别概率的可能性向量。每一层都包括了拥有不同卷积核的卷积层(Convnet)、校正的线性函数单元(Relu)和最大池化层(Max Pooling)。理解卷积神经网络的具体操作就需要显示每一层卷积的操作结果以及反向解译每一层的特征激活函数。本文通过卷积层操作,显示每一次处理后的特征图以观察由原始输入到分类概率的特征抽象过程;同时将这些激活值反向映射到输入的像素空间中去,从而显示出什么样的原始输入模式可以引发特征图中的激活函数。
3.1 正向传播特征可视化
卷积神经网络的输入为二维图像,经过层层卷积算子处理,得到抽象特征。本文将其每层得到的特征图加以显示,以分析其特征提取过程。可在互联网点击(http:∥ethereon.github.io/netscope/#/gist/dc5003de6943ea5a6b8b),查看VGG16详细结构,从“conv1”、“conv2”到“conv4”,本文将每层的输出进行显示。舰船、机场和飞机目标的卷积特征抽象过程如图3所示,为了节约篇幅,每层仅选取其中一个卷积核作为显示样例。
分析特征图样例可知,从conv1、conv2学习到的特征基本上是直线、边缘等低层特征;conv3则开始稍微变得复杂,学习到的是纹理特征,比如上面的一些网格纹理、布局特征;conv4学习到的则是比较有区别性的特征,学习到的则是完整的,具有辨别性关键特征,比如舰船的舰身轮廓。总地来说,通过CNN学习后,本文学习到的特征是具有辨别性的特征,比如要本文区分飞机和建筑物,那么通过CNN学习后,背景部位的激活度基本很少,本文通过可视化就可以看到本文提取到的特征忽视了背景,而是把关键的信息给提取出来了。信息逐渐变少,但是更加聚焦于分类的核心特征。
图3 卷积特征示例
3.2 反卷积特征可视化
为了检测所采用的神经网络,本文将反卷积网络贴于每一个网络层之后,从而提供一个持续的返回到输入像素空间的路径,具体示意图如4所示。开始,一张图输入到整个卷积网络中去,计算得到每一层提取的特征。为了检测某个激活函数,本文设置同层的其他激活函数为0,将特征图通过设计的反卷积网络。然后相继进行上池化、校正、滤波来重建此激活函数对输入像素空间的影像。
图4 反卷积可视化流程
上池化:在卷积神经网络中,最大池化操作是不可逆的,本文通过记录其最大池化值位置来近似获得可逆操作结果。在反卷积网络中,上池化操作使用上述记录的位置来确定最大值的位置,从而模拟本层的原始结构。图4底部为这一操作过程。
校正操作:卷积神经网络使用relu非线性处理单元来确保激活有用信息并保证所有信息都是正的。为了获得每一层有效的特征重建结果,本文将重建信息输入通过relu非线性处理单元。
滤波单元:卷积神经网络使用已学习到的滤波器来从上一层处理得到特征图。为了可逆这一过程,反卷积神经网络使用了相同卷积滤波器的转置。这样在保证有用信息存在的基础上,得到了合理的特征信息。
特征可视化:在VGG16模型上,本文采用上述反卷积神经网络进行特征激活值的可视化处理。本文模型训练完毕后的特征可视化结果如图5所示,每行第1幅为经过重新设置大小的原始影像,第2幅为conv2卷积层反卷积可视化的结果,第3幅为conv5卷积层反卷积可视化结果。本文选择单个最强激活值作为反卷积可视化的结果。
观察越来越深的卷积层可视化的变化,本文发现,卷积神经网络具有良好的特征抽象作用,在特征提取的浅层阶段,获得的是对全图的轮廓、纹理等特征的提取,随着卷积层的加深以及具体分类任务的约束和监督,最终获得的是目标的抽象特征提取,聚焦于目标并且去除了背景的干扰作用。
图5 反卷积特征可视化示例
4 实验与分析
4.1 实验数据集
利用从Google Earth上获取的0.5 m分辨率的光学遥感图像进行实验,包括舰船、机场和飞机3种目标。其中舰船样本500幅,飞机样本300幅,机场样本118幅。随机从带有标签的数据集中选出舰船样本300幅,飞机样本200幅,机场样本90幅,作为训练样本;其余作为测试样本,训练样本与测试样本不重复。
4.2 实验环境配置
本算法在Python3.5上进行编写,采用TensorFlow深度学习开源库作为模型构建基础[20]。计算机为联想Think Station P900,至强E2630 v3(双路),显卡为英伟达Quadro M6000 24G。本本算法训练和测试以及特征可视化显示均是在GPU加速下完成。
由于输入的检测影像大小不一,本文在输入的第一步对其进行了尺度归一,以1 000*1 000作为标准输入大小;对卷积特征图进行滑窗处理时,以10像素作为滑窗步幅;训练时学习率为0.001,学习动量为0.9,权重衰退率为0.000 5,迭代次数为3 000。
4.3 实验分析
本文采用了3种典型目标作为测试对象,分别是舰船、机场和飞机,并对分块后的遥感影像进行了准确率测试,分块后平均检测时间为0.2 s。具体结果如表1所示。
表1 分块遥感影像目标检测统计数据
样本名称测试样本数准确样本数准确率/%舰船20019296机场2828100飞机1009090
传统算法遥感影像目标检测的准确率一般在80%左右。由表1可知,本文方法对于高分辨率遥感影像目标检测准确率更高。
4.4 特征可视化分析
深度学习网络模型往往被看作“黑箱”进行操作,虽然取得了很好的实践效果,但是缺乏相应的分析工具,本文提出针对卷积神经网络进行逐层特征可视化,并利用反卷积网络进行激活函数的像素空间映射,从而可以直观地观察其特征抽象过程。
卷积特征可视化后,可以分析得到前几层卷积可以提取得到直线、点和纹理等特征,到conv4卷积层的时候,提取得到的是目标的形态和轮廓特征,更像是人对目标事物的记忆理解情况,conv5得到的基本是散点,说明此时特征提取已经抽象化为专门用于分类等任务的特殊向量了。
反卷积特征可视化是将最大激活值通过反卷积操作,映射回像素空间,从而分析特征提取的过程。反卷积可视化后,可以分析得到每层激活部门在原图中的位置和权值。浅层卷积层反卷积后,全图依然为纹理等特征,背景也同时被特征提取了,但是从conv4开始,特征开始聚焦于目标的局部和整体,背景得到有效抑制。此时,深度卷积网络特征提取具有很好的抽象性和区分性。
同时,特征可视化分析可以辅助神经网络的设计工作,避免过拟合,提高网络的泛化性能。当特征在卷积最深层之前已经出现抽象特征散点化,则所设计网络可能太深,需要减少卷积网络层;当反卷积可视化后,未出现激活部分为目标整体或局部的情况,则说明特征提取或全连接分类出现设计问题,出现欠拟合状态,此时应该考虑重新设计网络,逐层分析特征提取过程。
5 结束语
本文提出了一种基于深度学习模型(Faster R-CNN)的高分辨率遥感影像目标检测方法。针对高分辨率遥感影像内容丰富、尺度大等问题,将计算机视觉领域目标检测的模型通过宽幅遥感影像分块、RPN优化等多处改进应用于遥感影像处理领域。
同时,本文设计了针对深度卷积网络模型的特征可视化方法,通过正向卷积特征可视化和反卷积特征可视化方法,展示了深度卷积神经网络的特征提取和特征抽象过程,分析了各个卷积层的不同作用,并且分析了可视化对深度卷积神经网络模型设计的指导作用。为接下来设计更适合遥感影像处理深度网络模型提供技术支持,同时推动深度学习在遥感领域的应用。