农林业遥感图像分类研究[通俗易懂]

农林业遥感图像分类研究[通俗易懂]遥感图像处理是数字图像处理技术中的一个重要组成部分,长期以来被广泛应用于农林业的遥感测绘,防灾减灾等领域。本文旨在通过深度学习技术从遥感影像中分类出农田和林业地块。手工从遥感图像中分类出农田和林业区域分类虽然准确但是效率低下,并且很多采用传统图像分割技术的方法泛化性能差,不适合场景复杂的遥感图像。经实践证明,使用深度学习技术在各种计算机视觉任务中都取得了良好的效果,因此本文首先使用先进的深度学习框…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

遥感图像处理是数字图像处理技术中的一个重要组成部分,长期以来被广泛应用于农林业的遥感测绘,防灾减灾等领域。本文旨在通过深度学习技术从遥感影像中分类出农田和林业地块。手工从遥感图像中分类出农田和林业区域分类虽然准确但是效率低下,并且很多采用传统图像分割技术的方法泛化性能差,不适合场景复杂的遥感图像。经实践证明,使用深度学习技术在各种计算机视觉任务中都取得了良好的效果,因此本文首先使用先进的深度学习框架进行分类实验,例如使用PSPNet,UNet等作为分割网络对遥感图像数据集进行分类与分割训练。这些框架在ImageNet,COCO,VOC等数据集上表现很好,但是由于遥感图像数据集相对于ImageNet,COCO等数据集,不仅检测对象相对较小而且可供学习的数据集样本较少,需要针对这一特点进行优化。本文经过多次实验将高分辨率的图像切割成合适大小分辨率的图像以减小神经网络的输入,同时进行图片的预处理和数据增强来丰富学习样本。同时在真实情况下,农林区域易受到拍摄视角,光照等造成分割对象重叠,因此本文提出一种处理分割对象重叠的处理策略,来优化边界预测不准确的情况,使用该方法后准确率有明显提升。经实验证明,本文所提出的基于深度学习的农林业遥感影像分割在开源遥感图像数据集上的取得了94.08%的准确率,具有较高的研究价值
农林业遥感图像数据(图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)[5],和随机森林(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:最大值池化操作(2×2,步幅2)

池化层执行的最常见操作是最大值池化(图12)。 从要素图中的每个2×2方格,
图 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)专注于一个简单但功能强大的架构(它仅在整个网络中执行3×3卷积和2×2池化操作),具有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类,最终的1×1卷积层(通过像素丢失函数训练)将特征映射减少到n类得分。通过对图像识别CNN中的最终完全连接层进行卷积,整个网络可以被视为一系列过滤器它可以应用于任意大小的图像。这是FCN背后的第一个主要思想。在图像上使用FCN时,得到的输出不仅仅是每个类包含一个类得分的1D数组,而是包含每个类的空间“热图”或像素类评分的2D数组的3D数组(图14)。例如。如果最后一个卷积层的大小为8x8x256的滤波器内核查看12x12x256的特征映射(即从大小为384×384的输入图像下采样32次),则滤波器内核在长度和宽度上拟合五次特征映射,从而得到n个空间大小为5×5的班级分数图。总而言之,FCN将3D输入图像映射到类别得分图的3D输出。这种配置比在基于区域的方法中在每个可能的图像位置上应用CNN快得多(Longet al.,2014),因为重叠区域的参数可以在神经网络中共享。
图2-9:全连接神经网络的卷积化处理

反卷积:由于网络架构中的下采样操作,类得分图小于输入图像大小并且展示有限的空间细节。它们需要对原始图像分辨率进行上采样。而不是固定的双线性插值。
(每个上采样像素是输入中四个对角相邻像素的加权平均值),FCN网络使用反卷积层(也称为转置卷积,后向跨卷积,上卷积或半跨卷积)进行可学习,快速,网内上采样。网络末端的去卷积层通过执行卷积层的逆运算来执行类得分图的上采样。具有步幅f的去卷积层对因子f的上采样对应于具有步幅1 / f的卷积运算。
Skip connections:通过“Skip connections”结合前端卷积层的较高分辨率特征图,可以实现更详细或更密集的分割。除了最后一个卷积层的特征图之外,两个先前卷积层的特征图(分别通过因子8,16和32下采样)被直接转发到最终的1×1卷积分类阶段。对于每个类,这将产生三个不同大小的类概率得分图。由早期卷积层的特征图产生的得分图具有更高的空间分辨率,但是由不太抽象的特征生成,因此包含少量的语义信息。然后通过去卷积层将类得分图(通过它们各自的下采样因子)上采样到原始图像分辨率。对于每个类,对相应的三个得分图求和产生具有良好语义信息和细节的最终输出每个类的概率。
虽然大多数后续语义分割模型采用完全卷积网络的范例,但他们引入了更复杂的方法来改进类别得分图中的空间细节(例如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:高分辨率图像切块成128×128分辨率的小图像
为了从给定的高清图像中获得足够的训练数据,需要训练具有大约31M参数的分类器。我们发现将图片裁剪到大小为64×64时,各个类别的代表性不足以及物体的几何形状和连续性都会丢失,从而减少了卷积的视野。因此本文将图像数据集切割成128×128像素的小分辨率图像,最后整个数据集被切割成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 次或者更多次)后验证集精度仍未出现提升,便停止迭代。
4.2.评估指标
通过将它们与验证数据集中的地面实况边界进行比较来评估预测的字段实例。报告的指标包括不同IoU阈值(0.5,0.75,[0.5:0.95])和三种不同物体尺度(S,M,L)的平均精度以及相应的召回值。下面将更详细地描述这些指标。

对于对象检测和实例分割模型,训练和评估阶段都需要检测评价函数intersection-over-union(IoU)和平均精度(AP):当比较预测对象边界框(对象检测)的位置和外观时或具有相应地面实例的对象段掩模(实例分割),需要区分正确预测的对象(真阳性/TP)和实际上不存在的错误预测对象(假阳性/FP)。这种区分是基于两个边界的IoU得分。通常,IoU评分为0.5或以上被认为是真阳性。 IoU,也称为Jaccard Index,评估两个多边形A和B的相似性和不相似性。通过将两个对象之间的重叠区域除以它们的并集区域来计算IoU。IoU得分为1则表示区域是完全匹配,对于得分为0的情况则视为它们根本不重叠。
实例分割方法预测多个实例,每个实例具有置信度值,即检测分数。对于每个类独立,然后根据它们的检测分数对实例进行排序。将每个实例与每个基础事实对象进行比较。基于IoU阈值(例如0.5),将每个预测实例标记为TP或FP。对于每个地面实况对象,只有具有最高检测分数的预测实例被标记为真阳性:满足IoU标准但具有较低的所有其他预测实例
检测分数标记为错误检测。如果找到真阳性,则从循环中移除基础事实和预测对象。如果地面实况对象与任何预测实例不匹配,则可以将其视为假阴性(FN)。假阴性的数量由地面实况对象的数量减去真阳性的数量产生。根据TP / FP分配,可以计算排序列表中每个实例的精度和召回率。精度(P)是与地面实况对象匹配的所有预测实例的百分比。召回(R)是正确预测的地面实况对象的百分比。每个计算都考虑到列表中此点之前的TP / FP / FN的数量,因此还包括来自具有更高检测分数的所有预测的分配。对于每个图像切片,考虑最多具有最高检测分数的100个实例。表A4中可以找到多个预测和地面实况对象的精度和召回的示例计算。

Kappa系数(定义如下公式)在遥感分类图像的精度评估有着重要应用,其取值范围为(-1,1),score> 0.8 意味着好的分类,0 或更低意味着差的分类

其中,
P0被称为观测精确性比例,反映解释正确的单元格的比例;ep 被称为偶然性一致性比例,表示偶然性因素导致的错误解释的比例。更为通用的语义分割评价指标还包括 Jaccard 系数,定义如下公式:

4.3.设计网络进行训练
本章提出的基于全卷积神经网络的遥感图像语义分割方法主要流程如图 4-3所示。包含以下几个步骤:首先采用 R-SegNet 网络完成对航拍影像的语义分割,得到预测结果;然后在 R-SegNet 网络的基础上对网络进行改进,采用 skip connection 的方式将编码模块中不同尺度的特征图复制到对应的上采样部分,对改进后的网络模型(R-SegUnet)再次进行训练,并得到基于该模型预测结果;再以 R-SegUnet 网络为基础,将 8分类问题转换为 8个二分类问题进行训练,对每个类别的预测结果进行合并得到预测结果图;最后,通过集成学习将上述三种不同模型得到的分割结果图进行结合,如图 4-2 所示,利用相对多数投票法得到集成后的预测结果。本文采用有监督学习的方式对各网络模型进行训练。对于训练数据的处理,第一步是调整输入图像大小;第二步对图像做归一化处理,将样本转换为float32 类型,然后对每个像素点除以 255,该操作使得输入样本的像素值变小,减小了图像中噪声像素值的影响。对于语义标签,使用 Keras 的自带函数 to_categorical,将类别向量(从 0 到 nb_classes 的整数向量)利用 one-hot 重新编码转换为二值类别矩阵。

图4-2 集成学习示意图

图4-3 设计实验
训练模型时,采用优化的随机梯度下降算法(Adam),每一次学习的样本数(batch_size)设置为 10,初始学习率为0.002,根据迭代次数不断减小学习率。同时采用 Dropout 方法提高网络泛化能力,Dropout 因子为 0.5。考虑到数据集的限制,实验采用交叉验证的方法提高模型泛化能力。编码模块的网络参数采用 ImageNet 上预训练的 VGG-16 模型的参数作为初始值,解码模块中各卷积核权重采用 he_uniform 随机初始化,偏置初始化为 0。迭代训练时,使用 Early_stopping 算法检测训练过程,当验证集上的精度在 10 次迭代内没有提升时,采用 Early_stopping 的方式终止程序,并保存最优的模型参数,在下次修改超参数后继续在该模型的基础上微调。 训练过程中,将网络结构、模型训练、模型预测分别定义,将训练得到网络模型存储为.json 文件,权重参数存储为.h5 文件,预测时直接将模型与参数加载即可。模型训练时我们将整张大分辨率的遥感图像裁剪多张 128×128 的图像块作为输入数据,那么对于遥感图像的预测输入图像也应为 128×128 像素,具体步骤如下:首先对原始图像进行边界扩充,将图像的尺寸补齐为 224 的倍数,然后以 224 为步长切割大图,依次对每个图像块进行预测,将预测好的图像块放在相应位置上,最终得到预测好的整张大图,再对扩充后的图像做切割,切割成原始图像的尺寸,完成整个预测流程。
4.4. 基于 R-SegNet 网络的实验结果及分析
本次实验的网络模型及训练参数已经在上面给出,在此不再描述。在实验中,为了证明本文所提算法的正确性及鲁棒性,将测试图像的预测结果与标签图像进行比较,计算测试样本中各类别的精确度、召回率、F1 分数、平均 F1 分数以及样本的总体精度,如表 3.5 所示,其中本章节所提方法的实验结果用黑体表示,最后一行表示文献提出的方法对于不同类别所计算的 F1 分数。 由表 4-1 可以看到本文提出的方法在测试集上取得了不错的分割效果,图像中的像素大致能够分类为正确的语义标签,对各类别的识别率也较高,具体在实验过程中涉及到参数的调整等,表格中展示的都是最好的结果。
表4-1 R-SegNet 语义分割模型测试结果(%)

图4-4 基于 SegNet 的实验结果示例
对比图 3.9 中的图(b)与图©,可以看出,本文方法在整体上得到了比较理想的分割结果,尤其是对于大面积的绿地的分类效果很好,但是图像中存在一些明显预测错误的区域,比如右上角红色区域中有一些小区域本身应该是背景但是检测出来是树,以及图像的边缘处出现不同程度的错误,将一些其他类别检测为建筑,除此之外,图像中区域
比较细长窄小的部分很多都没有识别出来。当图像中语义信息区域较小的时候,结果容易出现偏差,也就是对于小物体类别的识别能力不太好。如图4-4中,很多小面积的区域块没有识别出来;实验结果图中各类别边界的轮廓不太清晰,出现边缘毛刺现象;并且图像中有部分区域的分类结果出现混乱、重复与丢失现象。
5. 改进网络优化及实验
在本次实验过程中,采用的训练参数和方法与上一节中相同,这里就不再进行叙述。不同的是,本节将采用特征融合的方法在 R-SegNet 网络结构的基础上通过跨层连接,将编码模块的特征信息融合到解码模块,网络结构如图 5-1 所示的.在实验中,为了证明 R-SegUnet 模型在遥感图像语义分割中的正确性及鲁棒性,我们将 R-SegUnet 的分割结果与 R-SegNet 的分割结果进行对比,其中本章节所提方法的实验结果用黑体表示,表 5-1为 R-SegUnet 网络得到的分割结果中各个类别的精确度、召回率、F1 分数、平均 F1 分数以及样本的总体精度,最后一行表示基于 R-SegNet 网络对于不同类别所计算的 F1 分数。表5-2对比了优化前后R-SegUnet 网络在测试集上的平均 F1-score 和总体精度。

图 5-1 优化后的网络结构
表5-1 R-SegUnet 语义分割模型测试结果 (%)
表5-2 优化前后的网络对比

相比于 R-SegNet 网络,R-SegUnet 在总体性能上有
明显的提升,不管是从平均 F1 方面还是总体精度方面都得到了比较理想的分割效果。对各类别的分类准确率也更高,特别是对于 Building、Tree 和 Clutter 这三种类别,F1-score 分别提升了 1.54%、1.10%和 1.23%,由此可以推出基于特征融合后的 R-SegNet 网络方法更加的有效。 R-SegNet 网络对输入图像经过多次池化后,输出的特征图的分辨率远小于原始图像的分辨率,直接对低分辨率特征图经过上池化和卷积操作所恢复出来的图像过多的丢失了原始图像中的细节信息,导致分割图像较为粗糙。而 R-SegUnet 通过融合层在解码网络中引入了编码网络中不同深度的特征信息,使得所有尺度下的特征都具有丰富的语义信息,既提高了标注准确率又保护了图像细节。

图5-2 优化前后对部分测试图像分割结果对比
图5-2展示了 R-SegNet 和 R-SegUnet 模型对部分测试图像分割结果,可以看到,与 R-SegNet 相比,R-SegUnet 得到的分割结果在视觉效果上要更好一些,图©中明显预测错误的区域在图(d)中得到了很大的改善。
未来的工作
本文提出的方法提供了许多改进的潜力。另外的研究可以极大地有益于农业领域分割所取得的成果,模型对其他情景的适用性以及对用于遥感图像的深度学习实例分割的一般理解。未来改进的四个主要方向是:1)使用更准确和异构的训练数据,2)以更好的方式利用卫星图像信息,3)改进模型训练和4)扩展后处理。

更准确和异构的培训数据。现场描绘任务的最佳训练数据将代表卫星图像采集时的确切地块情况。手动编辑以使数据与所选卫星场景完全匹配将非常耗时,但是可以创建一般参考数据集。而且,鉴于高质量地理数据集的公共可用性的增加,使用附加的和更多异构的地面实况和卫星图像数据(例如,并行地来自多个研究区域)可以提高一般模型的准确性,鲁棒性和可转移性。额外的数据增强(例如,随机缩放,失真,颜色偏移或抖动,图像噪声的引入)也可以帮助减轻过度拟合并增加对不同地理设置以及大气和闪电条件的鲁棒性。尽管该模型可以在一定限度内进行推广(局部推广),但其可转移性主要受到训练数据的可变性的限制。此外,更高的空间分辨率肯定会改善场边界的精确描绘,特别是对于小物体。在撰写本文时,Sentinel-2呈现了免费卫星图像的最高分辨率。

更好地利用卫星图像信息。利用多时相卫星图像信息和全频谱卫星图像频带肯定可以改善结果。目前的FCIS实施仅限于单时间三频带图像。使用不同光谱波长的更多图像通道主要受到计算资源的限制。解决方法还可以是在可用图像带的全范围上应用主成分分析(PCA)以及随后使用前三维来替换RGB图像通道。多时间信息的适当集成将需要不同的模型架构。当前可用的实例分割模型被设计用于与自然照片图像一起使用。因此,他们不考虑几个图像之间的可能关系。除了原始图像数据之外,手工制作的特征可以集成到模型中(例如,带索引,边缘检测预处理)。这可能会改善预测准确性,但有些反对不需要任何特征工程的深度学习前提。修改模型训练。对训练过程和参数的各种修改可潜在地改善模型的预测能力。通常,这种改进需要在超参数调整工作,训练时间和潜在的准确度增益之间进行权衡。未来工作的例子是使用额外的RPN锚标尺和纵横比,额外的训练迭代,学习率的调整和多尺度训练。模型集合(其平均应用于训练数据的不同子集并具有不同初始化的相同模型架构的多个实例的结果)也可以增加预测性能。通过在具有多个GPU核心的硬件上并行化模型,可以降低通过增加训练复杂性而增加的计算成本。此外,当前最先进的实例分割模型Mask R-CNN(He等人2017)的待定实现版本将使得能够访问更高性能和更简单的架构。
改进后处理。多种外部多边形后处理技术可潜在地改善场边界的拟合(例如,用于有向线平滑的蛇算法)或减少误报预测的数量(例如,通过修改的NMS或重叠标准去除强重叠的多边形)。由于场地宗地对象无法在卫星图像中显示任何直接重叠,因此可以移除预测多边形的任何部分重叠的子区域。
当前方法的一个重要方面是它在区域范围内描绘野外地块的操作环境中的使用是有限的,因为使用卫星图像而不是自然照片的实例分割会带来独特的挑战:卫星图像被切割成较小的图像切片,因为该方法受GPU内存限制,需要多个示例来迭代。切片特定的预测需要拼接在一起。然而,未完全包围在单个图像切片的边界内的场被分成至少两个多边形预测。这些包裹部分的简单组合不容易实现。一种潜在的解决方法可以是另外使用对应于四个相邻图像切片的25%面积重叠的中间切片。切片中心附近的多边形预测的智能组合可以最小化预测部分实例的风险。
总结
本文研究了深度学习实例分割在农林业遥感图像自动划分农田地块中的潜力。考虑到相对基本的输入-输出方法(没有广泛的后处理),非最佳训练数据,以及处理遥感图像实例分割的少量可用先例工作,结果看起来很有希望。现有方法面临的主要挑战是正确预测小型田地地块,错误检测被视为环境区域的地块以及不同作物类别地块之间的类似物理特征。
考虑到本文取得的积极成果,深度学习实例分割在遥感和地理空间数据中的应用显示了未来的巨大潜力:模型能够使用原始数据,不需要手动特征工程。与许多其他图像分割算法相比,在测试时应用该模型不需要太多的计算时间,这很好地适应了卫星图像和地理数据的快速增长。然而,预测性能强烈依赖于训练样本的准确性,体积和可变性。尽管开源高质量地理空间数据的可用性已经加速,但仍然有限。卫星图像属性和图像切片处理增加了深度学习模型已经非常重要的训练特征和资源需求。
所提出的方法为未来的许多改进提供了空间,例附加卫星图像频带和多时相数据的集成,模型架构调整和额外的后处理。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189540.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号