孙梓超,谭喜成,洪泽华,董华萍,3,沙宗尧,周松涛,杨宗亮
(1.武汉大学遥感信息工程学院,湖北 武汉 430079; 2.上海机电工程研究所,上海 201109;3.城市空间信息工程北京市重点实验室,北京 100038)
高分辨率遥感影像的目标检测是计算机视觉识别、数字影像处理等技术在遥感领域的重要应用[1-2],被广泛应用于军事侦察、国土资源监测、违章建筑及违法用地识别等领域。传统遥感影像目标检测方法一般基于影像处理技术,如几何特征提取、纹理选择、影像分割,在此基础上用对比匹配的方法识别目标。该方法需要充分的特征工程建设,计算量大,工作流程复杂,检测准确率和效率较低,难以满足实际应用中对检测质量和效率的要求[2]。近年来,深度卷积神经网络在影像检测识别等领域表现出较大优势,该网络能根据标注,从海量影像中有效提取目标底层特征并进行训练。目标对象的各种特征几何关系被网络不断学习和优化,最终得到目标的高层深度特征[1],能准确检测影像中的目标。本文基于深度卷积神经网络,设计了一种遥感影像目标检测方法,并以飞机、油罐目标为例,建立一个通用的遥感影像目标检测网络,在测试数据集上取得了较高的准确率和置信度。
深度卷积神经网络是近年来深度学习应用到影像分类、识别等方面的一个重大成果。卷积神经网络最早可追溯到1998年提出的LeNet-5,LeNet-5是第一个多层结构神经网络模型,其训练过程采用反向传播算法[3-5]。与传统的全连接神经网络相比,LeNet-5增加了卷积层和池化层(降采样层)。卷积层对影像进行逐像素特征提取,和前一层局部连接且参数共享,既保证了对影像特征的充分提取,又合理减少了参数数量;池化层降低了输入到下一层的数据维度,从而降低了整个网络的复杂度。然而,在实际应用中,随着网络结构深度加深,参数数量逐渐增多。同时,受制于当时的硬件计算能力且缺乏大型训练数据集,训练中经常出现过拟合现象,网络模型训练所得的参数只在训练数据集上表现良好,而在其他数据集上效果一般,可扩展性低。在此背景下,HINTON等[6]于2006年提出了对待训练参数进行预训练的初始化方法,该方法比随机初始化待训练参数的方法效果更好。随着计算机硬件技术的突飞猛进,以及政府、企业等组织保有数据量的不断增大,深度卷积神经网络迎来了发展高峰。2012年,KRIZHEVSKY等[7]设计了AlexNet模型,用一种整流线性单元(ReLU)来解决梯度消失问题,以Dropout[8]正则化技术防止过拟合,同时使用GPU作为网络训练的硬件计算单元,大幅度提高了训练速度。该网络模型在ImageNet图片分类比赛中将错误率从26%降低到15%。目前常用的深度卷积网络有VGG16、ResNet、Inception、Xception等。
深度卷积神经网络虽然在影像分类和识别领域取得了较大成就,但在目标检测中,不仅需要识别出影像中的目标,还需要检测出目标在影像中的位置,这对普通的深度卷积神经网络而言较为困难[9]。与此同时,对于复杂的影像如遥感影像,一张影像可能存在不同数量的多种目标,如何识别出不同目标的种类并以包围框形式准确标定目标在影像中的位置,也成为深度卷积神经网络无法解决的难题。在此背景下,GIRSHICK[9]提出了区域卷积神经网络(RCNN)。RCNN相比传统目标检测方法,显著提高了检测准确率和效率,以PASCAL VOC数据集为例,检测精度从35.1%提高到了53.7%。
但RCNN也存在如下问题:1)候选区域影像预先提取,会消耗大量存储空间;2)每个候选区域均输入卷积神经网络(CNN)计算,存在大量交叠区域,重复进行特征提取会浪费资源。针对此,GIRSHICK团队在原有基础上提出了Fast-RCNN[9-10],其结构设计更精巧,利用对输入图片的大小归一化操作和均匀切割候选区域完成对应步骤,大大减少了每张图片的候选区域数量,显著提高了网络训练速度[10]。
之后,GIRSHICK团队又提出了Faster-RCNN[10-11],相比RCNN和Fast-RCNN,其进步在于将目标检测的4个步骤统一在一个网络结构中。目标特征提取使用一个深度卷积网络,如VGG16、Inception、ResNet,在候选框生成和类别判断中共享特征参数,大大减少了重复计算,利用区域生成网络完成候选区域选取,进一步加快了训练和测试速度,实现了与GPU的完全兼容,是目前最准确、快速的目标检测方法之一。
RCNN的发展变化如图1所示。
图1 RCNN的发展过程Fig.1 Development process of RCNN
Faster-RCNN目标检测过程可分为如下4个步骤:
1)利用CNN对图片进行特征提取,生成特征图(feature maps)。
2)在步骤1)生成的特征图基础上用区域推荐网络(region proposal network,RPN)进行候选区域生成,该网络用softmax激活函数通过每个候选框中心锚点(anchor)判别该候选框属于背景还是目标,再通过矩形框回归对锚点修正获得精确的候选框(proposals)。
3)Roi Pooling层获得步骤1)、2)中的产生的feature maps和proposals,综合得出输入图片中可能为目标的部分及该部分在原图中的相对位置,称为proposal feature maps,并输入全连接层进行目标所属类别判断。
4)全连接层判断步骤3)中传入的每个proposal feature maps类别,并再次通过矩形框回归获得更精确的目标矩形框,完成目标检测过程。
Faster-RCNN流程如图2所示。作为Faster-RCNN目标检测方法中的2个重要组成部分,CNN和RPN分别解决了目标是什么和目标在哪里的问题。
CNN是深度学习方法应用到遥感影像目标检测领域的理论和技术基础,尽管CNN在3种RCNN中的位置和具体结构略有不同,但其作用均是进行物体特征提取和训练。CNN结构中的主要组成部分包括卷积层、池化层、全连接层、激活函数。以本次实验使用的VGG16网络为例,其结构如图3所示。
卷积层用于图片特征的提取,其实现依赖于卷积核,如图4所示。卷积核在一幅5×5的影像上按从左到右从上往下进行逐像素卷积,将输入影像中的一个3×3子区的特征聚合为输出影像中的一个1×1子区。这样做可使产生的特征图中相邻神经元共享大部分输入,保留图像中目标的大部分特征。遥感影像中,目标与背景在纹理、范围等方面的差异在图片中表现为像素规律的差别,这种差别通过多层卷积核提取后转化为特征图上的黑色背景和非黑色的目标抽象线条,从而达到获得目标特征的目的。
图2 Faster-RCNN流程Fig.2 Flowchart of Faster-RCNN
图3 VGG16网络结构Fig.3 Network structure of VGG16
图4 卷积层示意图Fig.4 Schematic diagram of convolution layer
池化层又称为降采样,在卷积后继续降低参数数量和模型复杂度,同时进行特征压缩,提取主要特征。常用的池化操作方法有最大池化法和平均池化法[12]。最大池化示意图如图5所示,其中尺寸为2×2的过滤器以2为步长在输入特征图上进行滑动,输出由每个相邻2×2区域中最大值组成的特征图,从而达到降低参数数量和提取主要特征的目的。
遥感影像具有数据量大、图片蕴含信息复杂等特点,因此在CNN中合理使用池化层能大幅度降低计算参数,提高检测速度。遥感影像中目标和背景的像素值普遍存在差异,选择合理的池化层舍去的信息绝大多数是无用信息,对网络的识别能力影响很小。
全连接层在整个CNN中起“分类器”作用,在实际使用中,全连接层可由卷积操作实现,相当于卷积核为1×1的卷积层[8]。本实验中,图片经过Roi Pooling处理后,全连接层对其中包含的目标进行种类识别。
激活函数是非线性函数,用于在CNN中加入非线性元素。卷积层、全连接层计算完成后,一般会将结果通过某个激活函数转换为非线性形式,以此来增加网络的表达和泛化能力[8]。目前,大多数卷积神经网络均采用ReLU[12]作为激活函数。
生成目标候选区域的质量直接影响到目标检测任务的准确率,是区域卷积神经网络中至关重要的一环,也是其与传统卷积神经网络的重要区别。在RCNN和Fast-RCNN中,候选区域生成采用选择搜索的方法,利用划窗对每幅影像提取约2 000个候选区域[9-10]。
在Faster-RCNN中,用RPN改进候选区域的生成。RPN是全卷积的网络,在提取特征的CNN后,实现特征参数共享,大大减少候选区域选取过程和特征提取过程中的重复计算,做到了端到端的目标检测,形成了统一的区域卷积神经网络结构[11]。RPN包括1个过滤器尺寸为1×1的卷积层和2个平行的全连接层。RPN与选择搜索均用划动窗口策略生成候选区域,但RPN的划动窗口操作与选择搜索不同,在卷积层特征图上进行,经过卷积池化操作,维度缩小了256倍。
在卷积层特征图上,基础划窗尺寸为3×3,以每个划窗的中心点为锚点,通过锚点,按不同的缩放倍数和长宽比例得到不同大小的划窗尺寸,以适应待检测目标大小和比例不一的情况。常用的公共基准窗口有3个倍数(1,2,4)和3个比率(0.5,1,2),因此可得9个尺寸的划窗,如图6所示。利用上述方法,对每个锚点用不同尺寸的划窗划动生成不同尺寸的候选区域,这些候选区域经过RPN网络中的一层卷积后转换为256维的全连接特征,再分别输入2个全连接层用于判别目标是否存在,并进行后续的矩形框位置回归计算[11],上述过程即RPN的工作原理,如图7所示。判别目标是否存在的具体方法为以候选标注框与人工标注框交并比为依据,对每个人工标注框,取与其交并比最大的候选框为正样本,小于某一阀值的候选框为负样本。
图6 不同尺寸划窗的获取Fig.6 Acquisition of sliding windows with different dimensions
图7 RPN工作原理示意图Fig.7 Schematic diagram of operating principle of RPN
飞机、油罐的遥感影像数据集使用RSOD-Dataset[13-14],标注方法与Pascal数据集一致,飞机图像大小为1 044×915,油罐图像大小为1 075×923,如图8所示。本次实验所使用的遥感影像均为对地俯视图,未发生形变现象,为目标检测提供了便利。同时,待检测目标大小在30×30到150×150范围内,相对图像尺寸较小,且不同目标彼此大小差异较大,增加了准确检测的难度。本实验基于谷歌TensorFlow框架[15],用数据集转换工具将遥感影像转换为TensorFlow可使用的数据集形式,上述数据预处理流程如图9所示。
图8 数据集图片实例Fig.8 Examples from image dataset
图9 数据预处理流程Fig.9 Flowchart of data preprocessing
网络模型的训练使用NVIDIA GEFORCE GTX1060显卡,因此需在Windows10系统上搭建cuda8.0+cudnn6的GPU运算环境。用基于pascal数据集预训练的Faster-RCNN模型进行定制训练,设待检测目标类别为2,学习率为0.002%,初步训练100 000轮,将训练参数存储到本地,并导出为静态网络参数模型以备后续测试[16]。在测试数据集上进行网络测试,测试结果如图10所示。
图10 测试结果样例Fig.10 Samples of test results
针对每张测试图片,本文采用了一种直观的目标检测置信度计算方法,即检测目标置信度之和除以每张图中实际的目标数目,并定义未检测到的目标和检测错误的目标,置信度为0,有
(1)
式中:P为每张图的检测置信度;j为图中实际的目标数目;Cj为每个目标的检测置信度。
用式(1)对测试结果进行统计,总平均置信度为98.4%。同时,所有测试图片中每个目标均被框出,检测准确率达到100%,较之传统遥感图像目标检测方法有较大提高。
本实验中,影响检测准确率的因素主要有:
1) 训练数据集规模较小。训练数据中遥感影像的光照、天气等过于接近,飞机种类、颜色、角度基本相同,网络泛化能力较弱。
2) 存在过拟合现象[17-18]。这是因为借用了谷歌发布的预先训练的Faster-RCNN模型,模型内部已存在的参数对训练有一定影响。
3) 测试用例分辨率参差不齐。在不经影像处理的情况下,检测准确率受到较大影响。
后续研究可从上述3方面入手,扩大数据规模,覆盖多环境下的飞机遥感影像,并改进网络模型结构,以获得更好的检测效果。特征提取部分使用不同的深度卷积网络以获得更好的提取效果。用控制变量的思想,对初始学习率进行微调,对比不同学习率下的检测准确率,探索模型初始参数对检测效果的影响[19]。
本文详细介绍了深度卷积神经网络的一种变体—区域深度卷积神经网络,并以飞机、油罐的遥感影像为例,用Faster-RCNN区域卷积神经网络进行目标检测,提高了检测的准确率和置信度。本文使用的目标检测方法扩展方便,使用包含多种目标的数据集进行网络训练可使网络具备检测不同目标的能力,在遥感影像解译和快速信息获取等方面有着广阔的应用前景。本文使用的方法仍存在一些不足,如在不同光照、地形、天气等外部因素影响下,检测各种地物的遥感影像较为困难,在处理海量遥感数据时如何显著提升效率也仍待解决。随着遥感技术、芯片技术的发展,用于训练的数据集规模和训练所用的硬件设备计算力都会有较大提升,给相关研究带来了新的可能。