农林业遥感图像分类研究
时间:2022-08-08 16:00:01
遥感图像处理是数字图像处理技术的重要组成部分,长期广泛应用于农林遥感测绘、防灾减灾等领域。本文旨在通过深度学习技术从遥感图像中分类农田和林业地块。虽然农田和林业区域的分类准确,但效率低下,许多传统的图像分割技术泛化性能差,不适合复杂场景的遥感图像。经实践证明,使用深度学习技术在各种计算机视觉任务中都取得了良好的效果,因此本文首先使用先进的深度学习框架进行分类实验,例如使用PSPNet,UNet等待遥感图像数据集作为分割网络进行分类和分割训练。这些框架在ImageNet,COCO,VOC数据集表现良好,但由于遥感图像数据集相对于ImageNet,COCO等数据集,不但检测对象相对较小,而且可供学习的数据集样本较少,需要根据这一特点进行优化。本文通过多次实验将高分辨率图像切割成适当大小的分辨率图像,以减少神经网络的输入,并对图像进行预处理和数据增强,以丰富学习样本。同时,在真实情况下,农林地区容易从拍摄角度和光线重叠分割对象。因此,本文提出了一种处理分割对象重叠的处理策略,以优化边界预测的不准确性,并显著提高了使用该方法后的准确性。实验证明,基于深度学习的农林遥感图像分割在开源遥感图像数据集中获得94.08%的8%,研究价值高
农林遥感图像数据(图1)对许多与农林相关的应用至关重要。如作物类型和产量监测、防灾减灾、粮食安全研究和决策支持等。最初,这些数据主要由政府机构使用。如今,蓬勃发展的农林业技术也需要在农场管理、产量预测、林业规划等应用领域进行创新。过去,农林地块的高质量遥感图像数据主要是在高分辨率图像中手动分割的,即不同土地功能引起的颜色、亮度或纹理与周围区域的差异
亮度或纹理的差异与周围区域不同。虽然农林遥感图像的手动分类可以非常准确,但它非常耗时费力。
图1.1:农田遥感图像分割
定期更新农林遥感图像数据的需求日益增加,扩大了农林遥感图像自动分割的需求。 与ImageNet、VOC2007、COCO与大多数目标检测/分类数据集中的图像相比,农林遥感图像中的对象相对简单。例如,人体的图像数据看起来要复杂得多,因为它包含不同纹理和形状的子对象(面部、手、衣服等)。因此,优化传统的图像分割和深度学习技术来设计农林遥感图像分割算法是非常重要的。该模型需要正确排除不需要划分的对象(房屋、工厂、停车场等),区分光谱特性几乎相似的相邻区域和可见度差的边界区域,并正确划分所需的对象。
1.2 选题来源和资金支持
本研究课题来源于计算机与信息工程学院
随着传感器技术、航空航天技术和图像处理技术的快速发展,卫星遥感图像被广泛应用于生产实践中。由于农林遥感图像场景复杂,传统图像处理分割算法效果差,泛化性能弱,本文采用深度学习方法对现有深度学习模型进行培训和优化,最终提出优化后的深度学习模型。经过测试,该模型可以准确地将所需对象分割在收集的农林遥感图像数据集中。本文提出的模型主要解决以下困难:
1)复杂的农林环境:农田和林场的物理外观(形状、大小、和林场的物理外观(形状、大小、纹理、颜色等)都可以根据许多物理和人类活动因素而变化。不同的来源可能是栽培作物的品种、植物生长状况、地形、土壤性质、天气条件、栽培方法等人类活动。由于这种局部变化,在某一区域的遥感图像数据集上训练的模型泛化性能可能很差。在避免网络过拟合的同时,很难创建高鲁棒性算法来识别各种场景实例。
2)卫星图像的特定属性:在高分辨率卫星图像中,局部背景和地面阴影可能会影响分割效果,如农业机械设备和电线杆、局部变化的大气和闪电条件(如云阴影)。
3)地面实际数据的准确性:另一种算法需要面对的问题来自于神经网络模型验证和训练地面实际数据集的准确性。这些数据集通常来自手动分割遥感图像。然而,图像对象的手动分割在很大程度上取决于所使用的图像数据集。这也是一项非常主观的任务。根据运营商的优先事项,不可避免地会导致不准确和模糊。现有的属性包裹信息可以补充地面实际数据集,这些信息可能仅基于图像无法区分。此外,由于生长季节未报告的土地利用变化,单个田地块的多边形可能显示多个子场。即使是非常优化的图像自动分割算法也很难与现实完全一致。
1.4 国内外研究进展
遥感领域的研究与计算机视觉领域的研究有相似的部分和许多不同的方向。本文主要研究了计算机视觉的语义分割,并关注了遥感领域相同类型的研究。
遥感领域的研究与计算机视觉领域的研究有相似的部分和许多不同的方向。本文主要研究了计算机视觉的语义分割,并关注了遥感领域相同类型的研究。
1.4.1 图像分割算法研究进展
图像语义分割是计算机视觉中的一种重要方法,是指将一对图像分割成一个不连接的区域块,确定并给出每个区域的快速语义类别,最后得到一个具有不同信息的语义分割图像。在计算机视觉中,有一个常见的概念是图像分割,它实际上是传统的语义分割,即将每个像素分为但与语义分割不同的是,图像分割不知道分割属于什么类型,只使用像素点之间的相似性。语义分割将分为不同的类别,这就是为什么它被称为语义分割。图像语义分割在一定程度上实现了理解目标场景的过程,广泛应用于室内导航、医学图像处理、虚拟现实、自动驾驶和增强现实。因此,语义分割算法的研究具有重要意义。
早期的图像语义分割方法受计算机性能的限制,通过分割提取图像的低级特征,如Otsu[1]、FCM(Fuzzyc-means)[2]、N-Cut(NormalizedCuts[3]等方法。这种方法的结果没有语义标记,具体部分是什么也不清楚。在早期的图像分割方法中,图像分割基本上是从图像像素本身中提取的。这种方法不需要监督培训,甚至有些不需要培训。计算复杂性通常不高,但在困难的分割任务中很难获得令人满意的分割效果。
当各种深度学习模型尚未应用于计算机视觉领域时,一些学者建议使用纹理基元森林(TextonForest)以及随机森林(RandomForest)[6]该方法用作语义分类器。分割问题被视为像素分类。它还可以使用一些传统的机器学习方法进行分类,如决策树[7]、神经网络[8]量机(SupportVectorMachine,SVM)[9]。
随着深度学习技术的发展,新的语义分割方法不断涌现。2012年,在AlexKrizhevsqi赢得别人ImageNet挑战结束后,卷积神经网络(ConvolutionalNeuralNetwork,CNN)成为图像分类的黄金标准,其性能不断提高[10]。CNN在图像分类问题上,多层结构可以自动学习多个层次的特征。虽然CNN它主要用于整个图像的分类,但它不仅有助于图像识别,而且极大地促进了语义分割的发展。
基于图像块的最流行的深度学习图像语义分割方法(CPatch-based)它使用包含像素周围一定范围的图像块对每个单独的像素进行分类。一方面是组合像素的位置信息,另一方面是分类网络的完全连接层只能接收固定大小的图像。ZhipengCui等人和WenluZhang等人使用基础patch的CNN语义分割[11][12]LeHou等人使用基础patch的CNN该方法语义分割肿瘤图像[13],表明该方法的有效性。但这种方法有一些缺点。除了相对较大的存储费用外,计算效率相对较低,相邻像素的使用重复较多。
HongshengLi等人提出d-regularlysparsekernel减少了CNN前后传播的重复计算减少了计算量[14]。卷积操作和池操作为内存提供连续访问和GPU更好的利用。
2014年,UABerkele的JonathanLong等人提出了一个全卷积神经网络(FullyConvolutionalNetwork,FCN)语义分割[15]用于图像,它可以从抽象特征图像中恢复每个像素的类别,从图像分类到逐像素分类。与基于patch的CNN方法相比,FCN主要特点之一是处理后的图像尺寸更加灵活,处理速度也有所提高。
语义分割研究以后很长一段时间为基础FCN的结构。例如OlafRonneberger等人提出的U-net,是一种基于FCN语义分割网络在医学图像分割方面取得了良好的效果。ShuaiZheng等人提出的CRF-RNN方法[17],将CRF-RNN与FN结合起来,增加了一些深度学习技Liang-ChiehChen等人提出的DeepLab方法[18]。采用反卷积操作进行上采样,扩卷积神经网络,连接CRF。
关于如何细化FCN这两种方法都研究了粗略的预测结果如何细化,这种情况的大部分原因来自于池层丢失信息。如果需要更详细的调整,则需要使用池层丢弃的位置信息。
于是出现了一系列的基础Encoder-Decoder改进上采样步骤的方法。HyeonwooNoh等人提出的DeconvNet方法。粗糙特征映射采样过程通过对称镜像卷积过程的策略改变,卷积阶段的逆过程得到实现。[19]SeunghoonHong等人提出的DecoupledNet方法。与DeconvNet类似。将卷积阶段和完全连接层对称[20]。JimeiYang等人提出了CEDN该方法用于轮廓检测,但基于Encoder-Decode语义分割网络:[21]。该方法去除完全连接的层,并在卷积后直接去除卷积,但不完全对称。相反,它通过轮廓概率图和多级组合组合(MCG)简化分割方法。VijayBadrinarayanan等人提出的SegNet方法。[22]删除完全连接的层,使用Max-Pooling上采样方法,每个池层输出两个特征映射,一个输出到下一层,一个直接用于解码器。在舞台上采样。SegNet的结构是Encoder-Decoder最简单的方法。没有完全连接的层。不直接学习采样层的参数,大大降低了网络参数的规模。
网络结构方面,GuoshengLin提出了RefineNet方法fz31.该方法利用残余结构完全提取图像的特征,并通过多分辨率集成获得更详细的预测结果。
综上所述,图像语义分割方法主要包括传统的图像分割方法、基于机器学习的分类方法和基于深度学习的方法。传统的语义后两种方法。
1.4.2卫星遥感图像语义分割的研究进展
图像语义分割也是遥感技术研究的重要方面之一。随着遥感图像产品的普及,越来越多越多的应用。早期,有许多利用水体指数对水域进行识别分割「24],或使用植被指数进行植被检测[25]此类较粗糙的类别划分的研究。 何灵敏等人使用了SVM作为分类器进行遥感影像语义分割,与最大似然估计、神经网络分类器做了比较,证实了SVM的良好分类效果[[26] a Pabitra Mitra等人在多光谱图像上使用SVM方法进行语义分割的实验,并与非监督学习方法进行了比较[27]; Gokhan Bilgin等人也使用SVM在高光谱遥感影像上进行语义分割[28]
Volodymyr Mnih等人在多光谱图像上使用基于patch的CNN进行道路和房屋分割实验[29] [30]; yushi Chen等人也使用这种方法在高光谱图像上执行多类别语义分割[31] 0Sakrapee Paisitkriangkrai等使用人工提取特征和CNN提取特征分别训练分类器,使用条件随机场(Conditional RandomField, CRF)来优化同一图像的离散部分以及边缘部分[[32]。在ISPRS 2D’语义标注数据集上获得了良好的结果。Wenzhi Zhao等人同时使用CNN和CRF对遥感图像进行语义分割[33],但首先对遥感图像进行分割而不忽视语义,并将结果与语义分割结果合并,然后使用CRF进行优化。 Ce Zhang等人设计了阂值规则以融合CNN和多层感知器(Multi-layer Perceptron,MLP)的结果[[34],遥感图像的语义分割实验。
Gang Fu等人使用多尺度基于FCN的分类模型对多光谱遥感图像进行多级语义分割[35]; 1Vlaggiori等人在一些公开的多光谱遥感图像上使用基于FCN的分类模型进行房屋分割实验[36]和使用RNN改善CNN分类结果的实验[37],也使用类似DeeonvNet的模型进行多类别语义分割[38],取得了较好的效果。
Dimitrios Marmans等人使用卷积神经网络(Deep Convolutional NeuralNetwark,DGNN)进行遥感图像的语义分割的基础上使用SegNet和FCN进行边缘检测,以改善分割结果[[39]。 在ISPRS 2D语义标注数据集的Vaihingen和Potsdam区域进行了实验,获得了良好的结果。
由于高光谱遥感图像包含的信息多于多光谱图像,因此通常可以使用更简单的方法获得更准确的实验结果。 大多数实验都是为了研究高光谱图像的分割。 然而,多光谱图像的分辨率高,并且可以通过处理获得清晰的彩色图像,这非常适合于计算机视觉领域中的各种算法。
目前关于多光谱图像的语义分割的研究很少。 一些使用光学指数进阂值法分割。 这些通常只解决特定的对象分割。 有些使用较浅的深度学习网络模型,可用于某些数据集。 获得了良好的结果,但单个数据集无法保证高准确率。 较新的研究通常基于用语义分割的深度学习模型,并使用一些优化处理来使结果更准确。
1.5 论文基本框架
本文主要分为五章,基本框架如下。
第一章,绪论。本章主要介绍论文的研究背景及目的,论文的选题来源、研究现状、论文的基本框架等。
第二章,深度学习概况及图像分割的方法。本章主要对神经网络原理和图像分割网络做了详细介绍。
第三章,数据采集和预处理,本章介绍了如何收集卫星遥感图像数据集并进行标注和预处理。
第四章,设计神经网络模型实验,本章介绍了结合现有分割网络(PSPNet,Unet)对收集的数据集进行分割实验,总结现有模型的优缺点并提出优化方向。
第五章,改进网络优化及实验。本章介绍了图像分割的常见指标,并依据农林业遥感图像的特点设计神经网络的优化方法,并依据该方法对收集的遥感图像数据进行实验分析。
总结与展望。本章总结了本文的主要研究工作,并对该神经网络图像分割模型在农林业遥感图像分割上存在的问题进行了论述,阐述了未来农林业图像分割模型优化的研究方向。
1.6论文研究的主要内容
本文在借鉴已有的深度学习语义分割的基础上,以收集的遥感图像数据集为实验对象,比较现有的多种深度学习模型,并分析各自模型的特点和效果,在研究过程中针对农林业遥感图像的特点提出模型优化方案。
本文的主要研究内容包括:
(1)根据农林业区域的环境复杂的问题,对收集的数据集进行切分并使用数据增强丰富神经网络学习样本,防止网络过拟合。
(2)针对农林业遥感图像的特点和不同的神经网络模型设计不同的训练方法和优化技巧,以提高网络分割效果。
(3)基于R-SegUnet提出优化模型,与现有的语义分割模型进行对比试验,比较分析各模型的特点和效果
2 神经网络与图像分割算法概述
2.1 神经网络
深度学习概念被提出之前,研究者们尝试训练三层以上的人工神经网络基本都以失败告终。直至 2006 年,在机器学习领域享誉盛名的多伦多大学 Geoffrey Hinton 教 授与他的学生 Ruslan Salakhutdinov2 在《Science》杂志上发表了一篇关于深度学习的 文章,掀起了深度学习在学术界的热潮,深度学习概念也被正式定义。文章表达了两 个核心思想:包含多层隐含层的人工神经网络具有更优秀的学习特征能力,所得学习 特征对于原始数据具有更本质的描述,可用于可视化特征及二分类问题;深层人工神 经网络的训练难问题可通过“逐层初始化”克服,文章通过无监督学习实现逐层初始 化并完成深层神经网络的训练。另外,随着神经网络的发展,网络训练的过拟合问题 也逐渐被解决,如采用增加训练集、添加 dropout 丢弃层等操作。 近年来,深度学习不断发展,成为机器学习领域的重要分支之一。深层的卷积神 经网络在各个应用领域均取得了不错的效果,尤其著名的成功案例则是每年举办的 ILSVRC 图像分类挑战赛。竞赛中不断诞生出优秀的卷积神经网络,促进神经网络在 图像分类及计算机视觉领域的发展。
人工神经网络(ANN)是信息处理模型,其大致基于生物神经元的分层和互连结构,即大脑中的基本信号处理单元。通常,神经网络通过样本进行学习,这意味着对训练数据的学习可以将网络配置为执行特定任务(例如,图像识别)。神经网络也可以通过无监督学习来训练数据或聚类应用,但这里不考虑这些技术。ANN不需要专门的特征工程,但可以在原始输入数据(例如图像像素值)上进行训练。 这些特征使神经网络能够执行复杂的预测任务,这些任务很难通过简单的基于规则的技术来解决。 以下部分介绍了神经网络的结构,功能和训练过程
神经网络通常被描述为神经元的堆叠层(图7)。输入层(存储数据输入,例如图像像素值)和输出层(存储预测结果),之间的层称为隐藏层。当网络包含两个或更多隐藏层时,通常称为深层神经网络。隐藏层中的每个神经元通过加权连接与相邻层中的所有神经元“完全连接”。当执行预测(正向通过网络)时,网络通过执行一系列矩阵运算来处理输入数据。每个神经元接收前一层中所有神经元的输出信号,对它们进行积分和评估,并将新信号传递给下一层中的神经元。
图2-2:感知器
神经网络的最基本形式是感知器(图8),其具有单个神经元。感知器的输入信号x1和x2与相应的连接权重w1和w2相乘。 将两种产品相加并加到神经元的偏差b中。偏差代表神经元的阈值。感知器的输出信号y是二进制的:1如果神经元的评估结果为正,则为0,如果是负的则为0。 更一般地,多层神经网络中神经元的信号处理可以通过以下公式描述:
对于隐藏层中的每个神经元,将所有输入信号xi和相应连接权重wi的乘积加到神经元的权重b上。而不是简单的二进制阈值,非线性激活函数σ应用于结果(例如,sigmoid,tanh或ReLU函数)。非线性激活函数对于网络学习输入和输出之间的复杂映射至关重要。使用线性激活函数,神经网络只能学习线性映射,无论它有多少层或神经元。在应用激活函数之后,输出信号y被传递到下一层中的神经元。 通过对每个神经元重复该计算,在整个网络层中处理信号,这产生了原始输入数据的越来越多的抽象的内部表示。 最后的网络层生成预测输出(例如,分类概率的分布)。
通常,所有网络参数都是随机初始化的。因此,网络在开始时无法做出任何有意义的预测。 通过监督学习训练网络意味着执行初始预测(前向传递),评估预测性能,调整神经元的权重和偏差(向后传递),并迭代地重复整个过程,直到网络学会预测所需的输出。如上所述,网络需要评估在培训过程中参数的优化程度。在每次前向传递之后,比较预测输出和预期的样本标签。这是通过损失或成本函数(例如均方误差或交叉熵)来量化结果的质量。通常,损失在训练数据集中的多个样本上取平均值。然后,训练旨在通过在每次向后传递期间通过某种形式的梯度下降优化来更新网络参数来最小化损失。递归地返回通过网络层,使用计算上有效的反向传播方法计算相对于网络参数(神经元权重和偏差)的损失梯度。梯度是网络的高维参数空间中的向量,指向损失的最大增加的方向。因此,为了减少损失,通过梯度下降来更新权重(即,将参数移动到参数空间中的梯度的相反方向):
这里,η是学习速率,是控制参数更新幅度的网络的超参数。除了这种简单形式的(随机)梯度下降之外,现在使用许多改进的优化方法(例如RMSprop或Adam)。由于计算限制,通过网络的向前-向后传递通常不包含所有训练样本,而是针对小批量数据集迭代地执行。一个周期的训练意味着网络已经看过所有训练样本一次。
2.2 用于图像处理的卷积神经网络
虽然常规神经网络可以对小尺寸的输入图像执行简单的图像识别任务,但是它们不能有效地大规模处理图像数据。给定尺寸为256x256x3(高度,宽度,颜色通道数)的中等大小的输入图像,网络的第一个隐藏层中的一个完全连接的神经元将具有196608个权重。大量的参数使得整个网络的训练效率非常低,并且容易过拟合。
卷积神经网络(CNN)是一种更适合图像数据的神经网络。其架构利用了图像的空间结构,可以更有效地训练网络参数。最初,CNN架构主要用于图像识别任务。虽然它们本身缺乏执行空间预测的能力,但CNN可以很容易地适应和重新用于更复杂的计算机视觉任务,如对象检测,语义分割或实例分割。
图2-3:Alexnet网络的体系结构(Krizshevsky et al. 2012).
CNN的现代概念由由LeCunet al.开创。Alexnet或监督模型引入并推广。Alexnet(图9)作为2012年ImageNet大规模视觉识别挑战赛(ILSVRC)的获奖作品出现。挑战旨在预测1000个类别中100,000个测试图像的标签,其中120个图像位于训练数据集中。直到2012年,挑战主要是利用支持向量机的方法。Alexnet的准确率为85%,优于2012年和前几年的所有其他参赛作品,以11%的巨幅差距击败2012年比赛的第二名。这一着名的胜利对计算机视觉研究产生了巨大影响,并引发了深刻的学习革命。自2012年以来,每年的ILSVRC挑战赛获胜者都会使用深度学习技术。
图2-4:卷积神经网络的架构。
用于图像识别的典型CNN架构(图2-4)将图像像素矩阵作为输入,提取越来越多抽象和计算上有效的图像特征,并最终使用最抽象特征向量上的分类器输出类概率阵列。每个特征提取器阶段包括卷积层,其将多个图像滤波器应用于数据,每个图像滤波器搜索特定的图像模式。第一个卷积层的滤波器在输入图像中查找这些特征,从而产生滤波器激活地图或要素图。每个后续卷积层的滤波器将先前卷积层的产生的特征映射作为输入。较低卷积层的滤波器通常扫描简单的通用特征(边缘或颜色梯度)。结合前面图层的知识,后来的卷积层学会记录越来越复杂和抽象的特征(多边形,纹理等)。随着原始输入数据的越来越多的抽象表示,网络最终为整个图像对象构建过滤器。但是过滤器模式不是固定的,而是在网络训练过程中自行调整以识别相关的图像特征。在传递到下一个卷积层之前,每个特征映射都通过激活函数(或非线性)和池化层(减少参数计数)以使预测和训练过程更有效。基于由最后一个卷积层提取的高级特征,网络的最后一级将输入图像分类为预定义类别之一。 CNN的各个阶段(如图2-5所示)将在下面更详细地解释。
卷积操作可以描述为在数据上滑动的移动窗口。它的大小也称为内核大小。假设步幅为1(即滤波器以一个像素的步长移过数据)并且零填充为2(即输入图像边界被两行和两列零扩展),则移动窗口应用于每个第一网络层中RGB输入图像的可能空间位置。图像尺寸为32x32x3。大小为[5x5x3]的移动窗口滤波器在输入向量的整个深度上延伸,即它同时保留所有图像频带的信息。对于输入图像中的每个位置,移动窗口通过滤波器内核和原始图像像素值之间的点积来计算滤波器激活。得到的大小为32x32x1的二维特征图是根据特定图像区域触发过滤器的强度来表示原始输入图像。与过滤器模式更紧密的匹配导致更高的激活。移动窗口跨度大于1,或输入体积周围没有零填充产生压缩特征映射。这可能导致CNN更快但准确度更低,因为特征映射包含的信息更少。卷积操作也可以通过人工神经元来描述:图像滤波器然后由神经元网格表示,每个神经元网格连接到输入图像中的小的局部像素区域,称为局部感受野。每个神经元正在寻找的滤波器模式(卷积核)由神经元的权重和偏差决定。网格中的每个神经元都具有相同的权重和偏差。这种参数共享使得能够检测整个图像上的特定特征。每个值
特征图计算为神经元的重量与神经元连接的图像区域中的RGB像素值之间的乘积,加上神经元的偏差。
图2-5:由Alexnet 的第一个卷积层学习后的96个卷积滤波器内核
实际上,每个卷积层都使用多个特征过滤器(图2-5)。与输入图像类似,每个卷积层以3维(宽度,高度,深度)排列。宽度和高度表示移动窗口尺寸或每个滤波器中神经元的排列,深度表示卷积层中的滤波器数量。每个滤波器都考虑了3D输入体积的全深度(原始输入图像或来自先前卷积层的堆叠特征图)。卷积操作将3D输入向量转换为新的3D向量激活。例如,具有4个滤波器的卷积层能够在整个输入向量中检测到4个不同的特征,无论输入向量具有多大的深度,都会产生32x32x4的激活向量。
激活和池化:在下一个卷积层处理特征映射之前,它通常通过非线性激活函数并通过池化层进行下采样。激活函数(在此示例中为整流线性单位(ReLU)图层)将要素图中的所有负值设置为0.要素图数组的尺寸保持不变。
图2-6:最大值池化操作(2x2,步幅2)
池化层执行的最常见操作是最大值池化(图12)。 从要素图中的每个2x2方格,
图 2-7:左:sigmoid 激活函数;中:tanh 激活函数;右:Re Lu 激活函数
仅保留最大值(最大值激活)。 虽然阵列深度保持不变,但阵列高度和宽度减小到一半(例如,在第一个特征提取器阶段,池化层将阵列大小从32x32x4减小到16x16x4)。 下采样操作聚合激活信息,同时丢弃空间信息的一些细节。 这使得网络中的参数数量和计算更易于管理。 在经过多个特征提取阶段之后,原始输入图像阵列被缩减为更小的体积。
分类:在CNN的分类阶段,来自最后卷积层(分别是最后一个汇集层)的高级特征映射的3D体积被转换为1D体积的类别得分,每个表示原始输入图像属于的概率。特征图被矢量化,即垂直伸展和连接。通过执行神经元权重和连接的滤波器激活的矩阵乘法,许多完全连接的层和最终的softmax层为这些类中的每一个产生0到1之间的专用分数。所有类别的总概率和为1。
训练: CNN的训练与常规(前馈)神经网络的训练类似(见第2.1章)。 CNN通过随机梯度下降进行训练。目的是减少预测和预期图像类之间的误差。虽然激活和池化层实现了在训练期间不改变的固定功能,但是卷积层中的权重和偏差以及分类阶段中的参数在训练过程中被随机初始化和调整。在初始向前通过网络之后,从当前预测计算损失。随后,在向后通过网络时,通过反向传播计算梯度。然后,通过减去梯度来更新网络参数。迭代地调整参数,使得随着时间的推移,网络能够检测在期望类的图像中常见的特定图像模式。通过调整完全连接的层的权重,网络学习哪个提取的高级特征与哪个类最相关。
从头开始地训练CNN(随机初始化所有图层参数)需要巨大的数据集。因此,迁移学习通常用于调整现有网络以用于新数据集。这里,重复利用在同一应用程序类别中的巨大样本数据集上预先训练的不同网络的参数。然后,仅重新训练网络的分类层,使得网络能够预测实际训练数据集的类别(相当于在提取的特征之上训练线性分类器)。根据数据集大小以及它与初始网络的训练数据的差异,还可能或需要对网络本身进行微调(Finetuning),这意味着调整最后或甚至所有卷积层的预训练参数。转移学习和微调可以极大地加速培训过程,并可以在小数据集上进行学习。它们在计算机视觉应用中特别成功,因为早期特征提取阶段(例如边缘或颜色渐变)识别的图像特征非常通用,几乎适合任何数据集。
继Alexnet提出之后,出现了几种流行的更复杂的CNN架构: ZFNet(Zeileret al.,2013年)是2013年ILSVRC挑战赛的获胜者,是原始Alexnet架构的修改版本,具有经过调整的超参数。 GoogLeNet(Szegedyet al.,2014年)赢得了2014年ILSVRC的挑战。它引入了平均池和一个Inception模块,它可以在不同的过滤器大小下组合池和多级卷积操作,同时保持所需模型参数的数量相对较小。 VGGNet(Simonyanet al.,2014)专注于一个简单但功能强大的架构(它仅在整个网络中执行3x3卷积和2x2池化操作),具有13个卷积层和3个完全连接的层。该模型在2014年ILSVRC比赛中获得第二名。 Resnet或Residual Network(He et al.2015)通过“跳过连接”引入了深度残留层的概念。非相邻卷积层之间的连接使得能够训练这种非常深的网络架构。它赢得了ILSVRC 2015挑战赛的冠军,目前是最广泛使用的转学习模型之一。
2.3 用于语义分割的全连接神经网络
在计算机视觉领域,一般认为,人们仅对图像的部分内容感兴趣,故计算机处理图像信息时仅需考虑人眼的“目标”区域而无需处理整张图像内所有像素间的关系。这些“目标”像素往往对应图像中特定的具有特殊性质的区域,如颜色、纹理、亮度等图像属性不同于图像内其他“非目标”部分。迅速捕捉这些人眼感兴趣的“目标”有利于计算机理解图像内容,故图像分割技术是值得探讨的。图像语义分割即为分割图像内容并进行模块语义识别,达到给予每个像素点语义信息的目的。然而,图像语义分割是一项难点技术,目前为止还没有一种广泛通用的方法能够准确实现语义分割。不少已提出的分割算法均是针对某些特定的数据集展开,故无法制定评判分割算法好坏的统一标准。从主观角度考虑,好的图像语义分割算法需具备以下特性:分割图像不同语义区域的图像性质如灰度、纹理等具有一定的相似性,区域内部图像性质较平整;相邻图像分割区域对分割所依据的性质有明显差异;不同语义区域的边界是明确且规整的[1]现有的大多数图像语义分割算法均无法完全做到以上三点,仅可实现在以上三种约束条件下寻找某种平衡关系完成图像语义分割。原因在于:若过度关注分割区域的相似性将导致分割所得区域内部边缘不规则;过度关注不同语义区域间的差异性将导致语义信息分割混乱出错;最后,实现明确且规整的语义分割边界是非常困难的,这一要求务必与区域内的图像性质相似性及区域间的互异性相冲突。由此可见,尽管图像语义分割技术已有所发展,但现有的分割技术无法满足实际的应用需求,各分割算图像识别模型产生整个图像的类概率的单一分布。相反,语义分割需要为每个图像像素计算类概率。从概念上讲,CNN可以通过滑动窗口(CNN需要固定大小的输入)用于基于区域的方法中的按像素标记。然后,为每个区域的中心像素分配该图像区域的预测类别概率。然而,这种方法非常消耗计算资源,因为CNN会独立地应用于每个图像区域。
图2-8 语义分割网络
全连接卷积神经网络(FC等)(Long et al.2014)基于卷积神经网络架构,为像素类标签的预测提供了更有效的解决方案(图2-8)。 CNN架构可以很容易地适应FCN,FCN仍然可以使用预先训练的CNN参数进行迁移学习。 FCN对基本CNN架构引入了三个主要变化:1)它通过卷积层替换CNN的完全连接层。这使网络能够预测每个班级的班级分数图任意大小的图像。然后,通过获取每个像素的最大类概率,可以将每个类的得分图合并到期望的“所有类”得分图中。与基于区域的方法相比,FCN方法要快得多,因为计算可以在重叠的区域区域之间共享。由于网络架构中的下采样操作,所得到的输出映射是粗略的并且需要对原始图像大小进行上采样。 2)因此,FCN引入了网内上采样阶段,即所谓的反卷积层。 3)粗类分数图中的细节可以通过添加“跳过连接”来改进,其中将较少的下采样特征从较早的卷积层合并到最终输出中。下面更详细地概述FCN网络的一些概念。
卷积化处理:由于固定量的神经元和完全连接的层需要固定大小的输入并输出1D阵列。相反,卷积层的滤波器内核可以应用于任意大小的输入,并产生空间映射的3D阵列。最终,全连接层和卷积层都计算其输入值的加权和。这意味着每个完全连接的层都可以用具有特定设置的卷积层代替:卷积层中的滤波器数量必须等于全连接层中的神经元数量,并且感知域必须相同尺寸作为完全连接层的输入体积的高度和宽度尺寸。例如,采用具有4096个神经元的完全连接的层,其处理来自先前卷积层的大小为8×8×256的特征图(即从大小为256×256的输入图像下采样32次)。这个全连接的层可以用具有4096个滤波器(步幅1,填充0)和大小为8x8x256的感知的卷积层代替。由于要素图和滤波器具有相同的大小,因此每个滤波器仅应用一次,计算单个加权和。4096个大小为1x1x4096的特征映射具有与完全连接层相同的网络参数和计算要求。对于n类,最终的1x1卷积层(通过像素丢失函数训练)将特征映射减少到n类得分。通过对图像识别CNN中的最终完全连接层进行卷积,整个网络可以被视为一系列过滤器它可以应用于任意大小的图像。这是FCN背后的第一个主要思想。在图像上使用FCN时,得到的输出不仅仅是每个类包含一个类得分的1D数组,而是包含每个类的空间“热图”或像素类评分的2D数组的3D数组(图14)。例如。如果最后一个卷积层的大小为8x8x256的滤波器内核查看12x12x256的特征映射(即从大小为384x384的输入图像下采样32次),则滤波器内核在长度和宽度上拟合五次特征映射,从而得到n个空间大小为5x5的班级分数图。总而言之,FCN将3D输入图像映射到类别得分图的3D输出。这种配置比在基于区域的方法中在每个可能的图像位置上应用CNN快得多(Longet al.,2014),因为重叠区域的参数可以在神经网络中共享。
图2-9:全连接神经网络的卷积化处理
反卷积:由于网络架构中的下采样操作,类得分图小于输入图像大小并且展示有限的空间细节。它们需要对原始图像分辨率进行上采样。而不是固定的双线性插值。
(每个上采样像素是输入中四个对角相邻像素的加权平均值),FCN网络使用反卷积层(也称为转置卷积,后向跨卷积,上卷积或半跨卷积)进行可学习,快速,网内上采样。网络末端的去卷积层通过执行卷积层的逆运算来执行类得分图的上采样。具有步幅f的去卷积层对因子f的上采样对应于具有步幅1 / f的卷积运算。
Skip connections:通过“Skip connections”结合前端卷积层的较高分辨率特征图,可以实现更详细或更密集的分割。除了最后一个卷积层的特征图之外,两个先前卷积层的特征图(分别通过因子8,16和32下采样)被直接转发到最终的1x1卷积分类阶段。对于每个类,这将产生三个不同大小的类概率得分图。由早期卷积层的特征图产生的得分图具有更高的空间分辨率,但是由不太抽象的特征生成,因此包含少量的语义信息。然后通过去卷积层将类得分图(通过它们各自的下采样因子)上采样到原始图像分辨率。对于每个类,对相应的三个得分图求和产生具有良好语义信息和细节的最终输出每个类的概率。
虽然大多数后续语义分割模型采用完全卷积网络的范例,但他们引入了更复杂的方法来改进类别得分图中的空间细节(例如Badrinarayananet al.2015,Yu&Koltun 2015,Chenet al.2017)。
2.4通过Regional CNN进行目标检测
对象检测旨在找到图像对象的边界框位置和类。对象的确切数量未知。从概念上讲,通过在输入图像中提出多个矩形框区域来查看对象检测,以查看它们中的任何一个是否对应于实际图像对象。这可以通过在每个可能的位置和比例处提出框来完成,然后分别在每个框的图像内容上应用CNN。但是,这种方法会非常耗费性能。
R-CNN(区域CNN)(Girshicket al,2014)通过卷积神经网络实现更有效的边界框对象检测。此外,Fast-RCNN(Girshick 2015)和Faster-RCNN(Renet al.2016)极大地提高了模型训练和测试速度。在撰写本文时,Faster-RCNN是对象检测的主要框架,也是许多实例分割模型的基础。
要评估对象检测(以及实例分割)的模型,有两个重要指标:平均精度(mAP)是正确的边界框和分割实例的比例。检测评价函数 intersection-over-union (IOU)即检测结果(Detection-Result)与基准(Ground-Truth)的交集比上它们的并集,以下是IOU的计算公式:
R-CNN与选择性搜索:R-CNN首先搜索可管理数量的类别不可知region-proposals,即一组最可能包含图像对象的图像区域。为了找到这些区域,R-CNN使用选择性搜索算法(Uijlingsetal.,2012),但也与其他region-proposals方法兼容。选择性搜索合并在多个尺度上共享纹理,颜色或强度的相邻超像素(图2-9)。R-CNN仅考虑这些region-proposals的边界框,然后将每个region-proposals边界框的图像内容加到标准方形大小以适合CNN规范。CNN分别应用于这些图像片段中的每一个以提取其卷积特征(图16)。对于每个类(加上专用的背景类),将对该类对象的卷积特征进行专门训练的线性SVM应用于每个提议的卷积特征向量。对于每个region-proposals或感兴趣区域(RoI),这产生每个c+1预定义类的类别分数。最高级别分数确定提案的类别标签,并且还用作检测分数,表示检测的置信度。然后对其中存在相同类别的重叠通过非最大抑制(NMS)消除冗余的region-proposals,选择NMS更高得分的region-proposals。此方法遍历每个region-proposals,并将其与同一类的所有剩余region-proposals进行比较。如果region-proposalsA和另一个region-proposalsB具有显着的IoU重叠并且A的检测得分低于B的检测得分,则region-proposalsA被拒绝并从循环中移除。其余region-proposals被视为实际预测的图像对象。最后,为了减少定位误差并确保更紧密地拟合边界框,对剩余的分类region-proposals应用特定于类的简单线性回归。此步骤可以显著校正其边界框坐标。
图2-10:用R-CNN目标检测实现语义分割
Fast R-CNN. 在R-CNN的算法流程中,CNN在每个region proposals上单独应用。由于许多region proposals部分重叠,因此R-CNN执行大量冗余计算。 Fast-RCNN(Girshick 2015)的主要成就是引入了感兴趣区域池(RoIPool)以实现更高效的特征提取。移除CNN的分类阶段,并且仅对整个图像应用网络一次。然后,通过RoIPooling直接在最后一个卷积层的输出特征图上的相应位置提取region proposals的特征向量(图17)。随后,网络并行执行分类和边界框回归。 RoIPool比多次应用CNN和部分重叠区域快得多。快速R-CNN不是单独训练和应用三种不同的模型(CNN特征提取,SVM分类,边界框回归),而是将这些任务组合成一个具有共享参数的联合网络,使网络更加高效。
图2-11:Fast-RCNN架构
Faster R-CNN: R-CNN的最后一次升级,Faster R-CNN(Renet al.,2016)侧重于加速region proposals步骤,引入完全卷积region proposals网络(RPN)来代替相当慢的外部选择性搜索算法。相反,类别不可知region proposals直接在卷积特征图上生成,这更加有效并且能够实现整个对象检测模型的端到端训练。在整个图像的特征图上滑动窗口时,使用预定义的Anchor Box(常见尺寸和纵横比的参考边界框,默认情况下3个不同尺度的3个Anchor Box)检查每个窗口位置(图2-11)。对于每个Anchor Box,RPN然后通过两个平行的卷积完全连接的层对提议框坐标(reg层)和“对象性”得分进行回归。对象性分数表示该框包含图像对象或属于背景类别的可能性。region proposals按其对象得分排序,非最大抑制应用IoU得分为0.7。从剩余的region proposals中,排名前n位的region proposals被用作Fast-RCNN的对象分类和边界框回归分支的候选者。通过使用Anchor Box,需要评估更少的候选人。此外,因为卷积特征图在RPN和Faster R-CNN之间共享,所以可以以最小的计算资源创建region proposals。
图2-12: Faster-RCNNR 中的Region Proposal Network(RPN)网络层
2.5 语义分割
2.5.1 模型概述
语义分割(或简称实例分割)意味着对单个对象实例进行分割和分类。 它结合了对象检测的元素(预测边界框和对象类而不分割它们)和语义分割(用语义类别标签标记每个图像像素而不区分同一类别的对象)。
图2-13:COCO测试数据集上使用Mask-RCNN进行语义分割
用于实例分割的两个最广泛使用的参考数据集是Microsoft的公开数据集(COCO)(80个类,300个图像)(Linetal.2014)和Pascal数据集(VOC)(20个类,5000图像))(Everingham等,2010)。目前性能最佳的深度学习分割模型Mask-RCNN(Heetal.2017),在[.5,.95]IoU(平均每个类别的平均AP,平均值)上实现37.1平均精度(mAP)。COCO参考数据集中的IoU阈值从0.5到0.95(0.05步)(图2-12)。其次是FCIS(Lietal.2017),29.2mAP@[.5,.95]IoU。
实例分割需要在图像区域上操作,因为相同的图像像素可以根据所在的图像区域或对象实例属于不同的语义类别。例如,像素可以属于图像对象的对象蒙版(mask foreground),但是相同的像素可以位于另一个图像对象的蒙版前景之外
mask background应用于整个图像时不能通过常规CNN和FCN处理来区分,因为卷积是平移不变的。受到区域提议对象检测技术成功的启发,大多数实例分割模型通过分割提议使用per-RoI应用程序。图2-13介绍了聚焦不同实例时同一像素的不同语义类别,相同的像素(红点)属于黄色实例中的蒙版前景(白色),但是蓝色实例中的蒙版背景(黑色)
图2-14:聚焦不同实例时同一像素的不同语义类别
早期的实例分割模型(SDS:Hariharanetal.2014,Hypercolumn:Hariharanetal.2015,CFM:Daietal.2015a)依赖于提取和合并超像素的现有自下而上的片段提议算法,例如,选择性搜索(Uijlingsetal.2012)或MultiscaleCombinatorialGrouping(Arbelaezetal.2014)。与对象检测工作流程类似,然后使用R-CNN或快速R-CNN的变体对类别不可知的分割提议进行分类(参见第2.3章)。简单的提议技术后来被神经网络取代,神经网络学会预测更准确的分割提议,例如:Deepmask(Pinheiroetal.2015)或完全卷积方法InstanceFCN(Daietal.2016)。但是,这些分割提议网络需要下游分类网络,这不允许参数共享。Multipathnet(Zagoruykoetal.,2016)使用Deepmask的提议,并利用Fast-RCNN的修改版本进行更精确的对象定位。多任务网络级联(MNC)(Daietal.,2015b)代表了第一个端到端可训练的实例分割解决方案。它首先预测边界框提议,随后用于回归分割掩模。然后,通过Faster-RCNN将边界框和分割提议用于分类。虽然MNC在其子任务之间共享卷积特征,但每个任务仍然依赖于先前子网的输出,从而导致复杂的网络架构和训练。最近的模型尝试将这些任务组合到并行网络架构中,而不是连续的分割和分类。FCIS(Lietal.2017)是第一个用于实例分割的端到端可训练,完全卷积网络架构。它扩展了位置敏感类评分图的思想,用于完全卷积分割建议预测(Daietal.2016a)和目标检测(Daietal.2016b)。FCIS同时有效地执行对象分割和分类,这使得整个系统非常快。掩模-RCNN(Heetal.2017),例如现有技术的分割,通过添加用于预测RoI分割掩模的并行完全卷积网络分支来扩展对象检测模型Faster-RCNN(第2.3章)。以下章节将更详细地介绍一些最重要的模型。
2.5.2 Deepmask和Multipathnet
Deepmask引入了使用卷积神经网络的第一个分割提议方法。该架构基于VGG网络,这是一种经典的图像识别CNN。该算法移除完全连接的VGG层,并提取输入图像的卷积特征。然后,Deepmask体系结构分成两个网络分支,这些网络分支直接应用于多个尺度的移动窗口方法中最后一个卷积层的卷积特征映射。第一个网络分支预测类不可知的二进制RoI分割掩码。第二分支回归类别不可知对象性分数,指示RoI以完整图像对象为中心的可能性。这两项任务都是通过随机梯度下降联合训练的。损失函数是两个网络分支的逻辑回归损失的总和。因为分割掩码是从下采样卷积特征映射描绘的,所以Deepmask双线性地将提议重新采样到原始输入图像。得到的提议相对粗糙,并且经常遭受与实际对象边界的不精确对齐 Sharpmask是Deepmask模型的可选迭代,旨在提高Deepmask粗段提议的准确性和整体拟合度。它通过合并来自较少下采样特征映射或较早卷积层的信息,改进了提议与图像对象的对齐。
Multi-PathNet识别和分类Deepmask或Sharpmask提供的细分提议。该体系结构基于成功的物体检测模型Fast R-CNN和RoIPooling,但包括几个修改:通过RoIPooling提取提议的卷积特征,网络通过裁剪相应的方法创建4个“中心凹区域”多尺度的特征地图位置。这使网络能够以多种分辨率使用对象上下文。另外,对于每个中央凹区域,它通过跳过连接结合了早期卷积层的更详细信息。然后,网络对分割提议进行分类并应用边界框回归以改进对象实例的本地化。使用Deepmask提供的对象性分数将非最大抑制应用于提议,以过滤掉同一对象的重叠预测。训练类似于快速R-CNN,但与Multipathnet一起使用的“积分损失”功能在多个IoU阈值处应用损失函数。
2.5.3 MNC
多任务网络级联网络(MNC)(Dai等人2015b)赢得了COCO 2015分割挑战冠军,多任务网络级联网络是三个连续VGG网络组成的多阶段结构。该模型是端到端可训练的,并在其子任务之间共享参数,但每个任务仍然依赖于先前子网络的输出。
图2-15:多任务网络级联的结构
首先,Faster-RCNN的区域提议网络预测了类别不可知的边界框及其各自的对象性得分。通过非最大抑制过滤掉冗余提议。第二阶段采用边界框提议和共享卷积特征图,并通过RoIPooling提取各个图像区域的特征向量(图2-14)。对于每个边界框,它通过二元逻辑回归预测类不可知的像素级掩码。与在每个图像位置应用分割建议预测的Deepmask相比,通过边界框预测预选RoI在计算上更有效。最后的分类阶段采用边界框提议的特征映射并掩盖其中的像素
不属于相应区域提议的边界框(掩码背景;这些值设置为零)。生成的要素图限于段提案的前景,然后用于预测班级得分。整个工作流程可以通过随机梯度下降进行端到端训练,但各种输出和子网络的因果关系使得通过反向传播进行的训练非常重要。由于某些网络阶段的丢失取决于其他阶段,因此使用统一的丢失功能来训练网络。
2.5.4 UNet
U-net 是基于FCN的一个语义分割网络,适合用来做医学图像的分割。卷积网络的典型利用是在分类任务,输出任务的单个类标签。然而,在许多视觉任务,尤其是生物医学图像处理,目标输出应该包括定位等,每个像素都应该有类标签。另外,大量的训练图片往往超过生物医学图像的任务要求。所以,Ciresan等训练了一个神经网络,用滑动窗口来预测每个像素的类标签,提供像素的周围区域(patch)作为输入。首先,这个网络可以定位。第二,输入的是patches,这样训练数据就比图片数据多很多。这个网络大幅度赢得了ISBI2012比赛
图2-16 UNet网络结构
2.5.5 Mask R-CNN
Mask R-CNN是先进的实例分割模型。它采用Faster-RCNN的对象检测体系结构(包括区域提议网络),并为类不可知的二进制分割掩模的像素预测添加完全卷积网络分支(图23)。分割分支与Faster R-CNN的边界框回归和分类分支并行。所有分支共享输入图像的卷积特征,并直接应用于卷积特征映射上的每个RoI,这使得Mask-RCNN非常有效。(多任务)损失是三个网络分支中每个分支的丢失的总和。
对于每个RoI,Mask-RCNN完全卷积地为每个类预测二进制分割掩码。作者发现,对于传统的R-CNN更快的RoIPooling,卷积特征映射中的感兴趣区域并不完全与精确对齐
原始图像中各个区域的位置。对于Mask R-CNN的分类分支(以及一般的边界框对象检测),这种小的像素未对准几乎是不相关的。但是,实例分割需要像素级精度来描绘确切的对象实例。即使是小翻译也会对评估结果产生重大影响。它们是由于特征图和输入图像的不同比例或像素尺寸导致的舍入问题引起的。因此,Mask-RCNN用RoIAlign取代了更快的RoIPool-RCNN,它使用双线性插值将RoI与原始输入图像中的相应区域精确对齐。根据评估指标的重叠阈值,RoIAlign将掩模精度提高了10%至50%(He et al.2017)。为了进一步提高网络精度,Mask R-CNN的卷积特征提取阶段使用Lin等人提出的特征金字塔网络(2016),它可以在多个尺度上高效的实现卷积特征图,神经网络内处理和利用。与FCIS相比,Mask-RCNN还增加了RPN锚点的数量,并评估了高级Resnext-101。
图2-17: Mask-RCNN架构
2.5.6 PSPNet网络
Pyramid Scene Parsing Network(PSPNet)是CVPR2017上关于场景解析的文章,拿到了2016年ImageNet比赛中scene parsing任务的冠军,也常用来做语义分割。该算法点是在语义分割算法中引入更多的上下文信息(context information), 这样能够避免许多误分割。PSPNet是在FCN算法的基础上引入更多上下文信息是通过全局均值池化操作(global average pooling)和特征融合实现的。
PSPNet网络作者认为现有模型由于没有引入足够的上下文信息及不同感受野下的全局信息而存在分割出现错误的情景,于是,提出了使用global-scence-level的信息的pspnet,另外提出了引入辅助loss的ResNet优化方法。
图2-18 PSPNet网络结构
2.6 迁移学习
使用有监督的深度学习方法实现图像语义分割对于语义标签的制作要求很高,工作量繁重,对于高分辨率遥感图像而言更是复杂,因此遥感图像语义分割的数据库并不像分类数据库(ImageNet)规模那么大。深度神经网络模型通常比较复杂,从零开始训练随机初始化网络需要很长的时间收敛,并且要基于足够大的数据集,因此在实际训练中一般采用迁移学习的方法。实现迁移学习最主要的方法是 Finetune(微调),即用原来模型(Pre-trained model)中的参数作为新的初始参数,再结合当前数据集用小的学习率重新训练。微调的优点在于不用完全重新训练模型,并且通过较少的迭代次数就可以得到一个比较好的分类效果。 Yosinski 等人用实验证明,即使从远距离的任务迁移特征也是比随机初始化参数训练网络效果好。因为神经网络的底层往往包含更多普通的特征(底层特征多是一些边、角之类的基础几何形状),越高层形成的特征越抽象,利用大数据集上得到的预训练模型则具有更加丰富、一般化的底层特征,有了这些丰富的“基础几何形状”,等过渡到新数据集上微调的时候,就可以组合出上层具有强判别能力的特征。 由于遥感图像复杂程度高,其多类别的语义分割将是一项具有挑战的任务,为了学习到遥感图像中的复杂地物信息,所设计的网络结构应当具有一定的深度以便提取更高层的语义特征。然而,考虑到具有语义标签的高分辨率遥感图像本身数据量较少,如果直接对随机初始化的深度神经网络进行训练需要很长的时间而且很难收敛,模型的最终结果也可能会停留在最优解附近,因此在验证实验中我们采用迁移学习的方法从一个预训练好的分类网络上微调实现图像语义分割,从而减少网络学习时间并提高其鲁棒性。本文中语义分割网络的编码模块是基于改造的 VGG-16,因此对编码模块使用了来自根据 ImageNet 数据集训练的 VGG-16 网络的权重;对于解码模块,使用Keras 模型中的 he_uniform 方式初始化网络参数,我们对所有的层都进行了微调,利用遥感数据集重新训练得到稳定后的权值和偏置。在微调的过程中,采用较小的学习速率进行修正。
本文所用的数据集随机抽取来遥感图像常用测试数据集1)UC Merced Land-Use Dataset 2)WHU-RS19 Dataset 3)SIRI-WHU Dataset 4)RSSCN7 Dataset 5)RSC11 Dataset,分辨率为亚米级,光谱为可见光波段(R,G,B),提供的训练数据样本分为8类,其中图3-1来自数据集样图,图3-2为用来测试的基准图像,数据集中总共包含14张高分辨率遥感图像,本文使用前13个图像作为训练集,将数据集中的最后一个图像用作验证集。
图3-1 原始图像
图3-2 基准图像
本实验硬件环境:GTX-1080 GPU,32G RAM,2T SSD,INTEL I7 8700 CPU,WINDOWS 1064 bit,软件环境:CUDA9.0,CUDNN7,Python3编程语言,Tensorflow/MXNet神经网络框架,Opencv图像处理工具,Keras神经网络搭建工具,Matplotlib绘制准确率-损失函数折线图,skimage,numpy用于图像io接口和数字图像处理。
3.2数据增强
遥感图像通常为16位TIF格式图片,使用TIFF软件进行读取转换,再用opencv进行色彩空间转换,同时需要将大分辨率的图像切割成小分辨率的图像(图3-3)以减小神经网络输入,为了避免神经网络在小数据集产生过拟合现象,本文使用的的方法是对已有的遥感图像训练数据集进行数据增强,扩增训练样本,从而提升深度学习模型的泛化能力。具体的处理方法是使用Opencv图像处理模块随机旋转,垂直翻转和随机扭曲图像。
图3-3:高分辨率图像切块成128x128分辨率的小图像
为了从给定的高清图像中获得足够的训练数据,需要训练具有大约31M参数的分类器。我们发现将图片裁剪到大小为64x64时,各个类别的代表性不足以及物体的几何形状和连续性都会丢失,从而减少了卷积的视野。因此本文将图像数据集切割成128x128像素的小分辨率图像,最后整个数据集被切割成15887张训练图像和414张验证图像。
3.3 One hot编码
为了将地面实况分类为类,我们通过首先根据数据集自带的编码表识别要预测的类的RGB值来对输入的地面实况值进行编码。
图3-4,分割对象的颜色表示和编码
4.设计神经网络模型实验
4.1网络设计技巧
批标准化(batch normalization):批标准化的概念由 Google 于 2015 年提出,是一种通过减少内部协变量偏移来加速网络训练的技巧。从统计意义上讲,训练即学习数据分布的过程,我们在训练集上训练网络模型,在测试集上评估网络模型表现,这基于了一个强假设——训练集与测试集具有一致的数据分布。深度神经网络包含了许多层,每 一层的输入即是一个独立的数据分布。通常我们采用随机梯度下降算法训练网络,训练过程中模型参 数不断改变,每一层的输入数据分布也随之改变(内 部协变量偏移),导致了诸多训练难题:学习速度太 慢、学习效果严重依赖初始数据分布、反向传播过 程出现梯度爆炸和梯度消失问题。批标准化的提出很好地解决了以上难题,训练时可选择较大初始学 习率提高训练速度,少用或者不用 Dropout 和正则来 控制过拟合,降低模型对初始权值的敏感度。具体地,批处理化分为归一化和转换重构两个步骤:
(1) 归一化(零均值、线性函数归一化):最常用的是 min-max标准化 和 z-score 标准化,min-max标准化(Min-max normalization)/0-1标准化(0-1 normalization)/线性函数归一化/离差标准化是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:
其中max为样本数据的最大值,min为样本数据的最小值。0均值标准化(Z-score standardization)0均值归一化方法将原始数据集归一化为均值为0、方差1的数据集,归一化公式如下:
其中,μ、σ分别为原始数据集的均值和方法。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变差。
(2) 转换重构
式中,γ、β均为待学习参数。ELU 激活(ELU activation):神经元节点的激活函数定义了神经元输入输出间的映射关系,为网络提供了非线性建模能力。ELU 激活函数具有指数形状,由 Clevert 等人提出。其表达式如下:
ReLU 激活函数在输入为负时会导致神经元“死亡”,ELU 对此做了改进,使得负输入的激活值均值为 0,这和 batch normalization 原理类似,但计算复杂度更低。ELU 在输入取较小值是具有软饱和的特性,提升了对噪声的鲁棒性。ELU 在对于正值输入的导数恒为 1,该特性很好地解决了网络训练过程中出现的梯度弥散问题。
(3) 跳跃连接(skip connection):在普通的卷积神经网络中,一层的输出往往作为相邻下一层的输入,跳跃连接建立起低层与高层之间的“捷径”,即一层的输出既可以连接到相邻下一层,还可以连接到更高的一层或多层。在端到端的图像语义分割中,使用跳跃连接可以向网络高层提供图像的低层特征来辅助图像重构。除此之外,跳跃连接还有减少网络参数数量、减轻梯度消失问题的优点。
(4) 防止过拟合:在机器学习中,我们通常假设数据是满足独立同分布的,可以利用已知数据对未知数据进行估计与模拟,但实际应用中这种独立同分布的假设往往不成立,数据的分布情况可能会发生变化,并且由于样本数量的限制以及训练参数的增加,导致大多数深度神经网络都存在着过拟合的问题。所谓过拟合(Overfitting)就是深度神经网络过度学习训练数据中的细节和噪音,以至于在新的数据上表现很差。直观的来说,模型训练在过程中,对于训练集代价函数会一直降低,但是使用训练出来的模型在验证集上测试时,accuracy 往往是先升高,经过一定的迭代次数后,会在最高值附近波动甚至减低,此时表明模型出现过拟合。本文采用以下几种方法改善模型过拟合问题,提高模型泛化能力。 (1)交叉验证(Cross Validation):就是将数据集分为两部分,一部分作为训练集(Training set),另一部分作为验证集(Validation set),先用训练集对分类器进行训练,再用验证集测试得到的模型,评估模型的预测效果。本文采用重复随机子抽样验证,训练过程中每次随机选择 25%的样本作为训练集,剩下的作为验证集,反复多次抽取进行训练验证。 (2)Dropout:Dropout[81]由 Hinton 组于 2012 年提出,已经成为深度学习中最常用的防止过拟合的技术。其基本思想是在每次训练过程中随机地抑制部分隐层神经元的表达,使得模型的多样性增强,获得了类似多个模型集成的效果。
图4-1 Dropout 工作原理
神经网络中输入层与输出层神经元保持不变,模型在训练过程中会随机删除隐含层中的神经元(图中用虚圈表示),而利用 BP 算法更新网络参数时,对于图中虚线部分不更新,多次迭代训练后,相当于得到了许多不同的神经网络,所以可以有效的防止过拟合。本文中将 Dropout 放置在 Convolutional 和 Max pooling 之间,而对于 Dropout 参数的选择,一般控制在 0.5 以下
(5) Early stopping(提前终止):深度神经网络在训练过程中往往会使用一些迭代算法对模型参数进行学习更新,Early stopping 就是通过设定截断迭代次数来防止过拟合,当模型在验证集上的性能不再提高时,就停止训练。 具体做法如下,当模型对所有训练数据完成一轮遍历后(即一个 Epoch)计算验证集的 accuracy,当 accuracy 不再提高时,就停止训练。但这并不意味着验证集的accuracy 一降下来便停止迭代,训练过程中可能存在某些 Epoch,accuracy 会暂时降低,所以不能根据一两次的连续降低就判定其不再提高。一般在训练过程中,记录最佳的验证集精度,当连续多次 Epoch(比如 10 次或者更多次)后验证集精度仍未出现提升,便停