朱 明, 李景文, 吴 博, 姜建武
(1.中国地质大学(北京)地球科学与资源学院, 北京 100083; 2.广西壮族自治区自然资源信息中心, 南宁 530023;3.桂林理工大学 测绘地理信息学院, 广西 桂林 541006)
地表覆盖是一种重要的地理信息资源, 是自然资源监测、农业种植结构调查、地理国情普查、宏观调控分析等不可或缺的重要基础信息[1]。近年来, 高分辨率卫星影像的光谱分辨率、空间分辨率与时间分辨率不断提高[2], 为地表覆盖分类提供了坚实的数据基础。然而在实际生产中, 大量的影像数据仍然依靠人工解译处理, 这种人工作业模式已经越来越无法适应当前大尺度、海量影像地表覆盖分类处理的时效要求, 特别是随着AI技术的飞速发展, 迫切需要研究一种高效、准确的地表覆盖自动分类技术, 以满足大数据时代智能地表覆盖分类的应用需求。传统的高分辨率影像地表覆盖分类方法主要是综合利用影像的光谱、纹理等特征, 使用人工设计的特征参数进行分类。近年来虽然浅层人工神经网络[3-5]、支持向量机[6-9]、遗传算法[10-11]与面向对象[12-14]等方法发展迅速, 并取得了大量的研究与应用成果, 但这些方法主要是使用若干有限维度的浅层特征, 按一定的算法与解译规则来提取地表覆盖分类, 在地表覆盖分类算法上依赖相对固定的规则以及特定的参数。由于现实世界的地表覆盖在特征上存在区域差异性及表现的不确定性, 同物异谱、同谱异物的情况较为常见, 固定的规则及参数制约了地表覆盖分类自动化解译的精度与效率, 导致大量地表覆盖分类工作依旧严重依赖于人工作业[15]。近年来,飞速发展的深度学习(deep learning)技术为大数据时代的地表覆盖自动分类提供了新的理论方法, 并成为地表覆盖分类的研究热点之一[16-19]。深度学习为地表覆盖分类提供一种端到端的自动化分类模型, 能够无需人为设计规则自动提取地表覆盖分类特征, 完成影像的地表覆盖分类任务。
本文围绕地表覆盖分类精度和效率问题, 以高分二号与北京二号影像数据为对象, 基于深度学习的高分辨率卫星影像地表覆盖分类理论方法, 设计了一种高效、准确、自动化的遥感影像地表覆盖分类卷积神经网络模型(LCC-CNN), 该方法解决了地表覆盖分类的特征组合与解译规则智能化提取问题, 具备多种地表覆盖分类能力, 为自动化地表覆盖分类提供了新的方法与技术思路。
图1 地表覆盖分类卷积神经网络结构
编码模块中主要使用不同的卷积结构来提取地表覆盖分类特征。卷积的操作对象是影像或特征图的若干像素, 因此在卷积的过程中可以获得平移、旋转、拉伸与扭曲不变性[20]。但现实世界中地表覆盖分类图斑的形状及大小差异极大, 如果采用单一的卷积结构不利于捕捉多尺度的地表覆盖信息。为了快速扩大LCC-CNN的感受野, 灵活捕捉多尺度信息, 在编码模块中设计了多尺度感知块与残差网络串联结构。其中,多尺度感知块用于感知与捕捉多尺度图斑特征。在多尺度感知块中并联了4个扩张率分别为1、5、11、23的扩张卷积结构, 用于获取不同尺度特征信息, 并将多尺度特征进行融合, 在扩大感知范围同时保持了较高的特征提取密度。各扩张卷积之后串联了1×1卷积用于压缩、融合不同感知尺度的特征,每个扩张卷积分支在1×1卷积之后进行批归一化操作,将各个扩张卷积分支的结果联合并输出到后续特征提取网络。多尺度感知块结构如图2所示。
图2 多尺度感知块结构
在多尺度感知块之后的编码结构中使用了包含50个特征提取块的残差网络。残差网络主要由两种不同的特征提取块堆叠而成:一种是带有快捷连接(shortcut connection)的结构, 由1×1、3×3与1×1卷积串联组成;另一种是采用1×1、3×3与1×1卷积串联后再与1×1卷积并联的结构。残差网络中通过上述两种结构的搭配与反复串联, 形成深度神经网络, 实现对地表覆盖特征的深度提取。
解码部分负责重建图像分辨率与输出地表覆盖分类。由于解码模块的最终输出为高度压缩、抽象的低分辨率高维特征图, 在编码过程中损失了影像低层细节信息与空间分辨率,因此在重建过程中需要不断融入编码模块低层级的特征信息, 丰富解码模块的特征细节。为了恢复特征图的分辨率, 编码模块对特征图进行双线性插值来弥补下采样后损失的特征图分辨率,但仅依靠插值并不能增加特征图的有效信息含量, 必须在插值后通过连接低层特征图, 扩充有效特征信息量, 补充插值部分所缺失的真实特征信息。每次插值及补充低层特征后, 编码模块中均使用1×1卷积压缩特征维度, 融合各类特征信息, 并使用批归一化层压缩数据震荡, 最终解码后的数据通过Softmax分类器输出分类结果。
LCC-CNN的分类原理是通过卷积神经网络逐层计算, 将计算结果转化为分类概率, 并通过分类概率确定最终的地表覆盖分类结果。这个过程在数学模型上相当于通过训练不断迭代更新模型的各层参数, 最终使LCC-CNN的输出结果逐步逼近目标函数。因此,LCC-CNN的模型训练是通过大量训练样本, 经过充分迭代训练, 通过复杂计算调整神经网络参数, 使输出符合目标函数的过程。LCC-CNN的训练包括样本制作与深度神经网络训练两个环节。
训练样本制作分为内业采集、外业核查与样本切片3个步骤。内业采集主要是利用已有地理国情监测采集的地表覆盖数据, 对照高分二号与北京二号影像数据更新实验区域的地表覆盖图斑。内业采集后的图斑与影像共同形成外业核查工作底图。
外业核查的目的在于核实内业采集的图斑分类与实地情况是否一致。实地核查中发现的内业采集错误, 现场标注并拍摄照片。对于分类错误的, 在工作底图上进行纠正。对于新增图斑或形态与内业标绘不一致的区域进行实地补测。外业核查后, 所有数据重新提交内业环节, 根据原有内业采集数据对外业核查情况进行补充、修改, 从而获得真实、可信的样本数据。
在样本切片环节, 将用于训练的地表覆盖图斑转换为栅格数据, 并对栅格数据的每个像素按分类标签分别赋值。图斑栅格数据与影像叠加后进行裁切, 每张切片规格为512×512像素。裁切好的训练样本中80%划分为训练集, 剩余20%为验证集。
深度神经网络训练原理就是通过误差反向传播尽快实现与目标函数的拟合。神经网络反向传播算法的本质是在参数空间中, 依靠梯度寻找损失函数的下凸点, 并求解损失函数极小值。因此, 损失函数是推动神经网络训练的关键。LCC-CNN的损失函数是以交叉熵损失函数为基础设计的。为了强化边缘部分的学习效果、突出边缘形态, 在损失函数中加入了对边缘强化的函数计算部分。具体的损失函数为
求解上述多目标多约束优化模型采用带精英策略非支配排序遗传算法,即NSGA-III。算法沿用了NSGA-II的框架,但是,在选择个体的机制上,二者有本质的区别,更具有全局优化可行解搜索能力,NSGA-III优化过程如下:
(1)
式中: 损失函数L中yi为第i个分类的真值;ai为第i个分类的预测值;λ为像素权重调节系数, 用于提高神经网络对边缘附近的像素分类误差, 强化图斑边缘附近语义分割的学习效果, 使边缘较为模糊的图斑可以取得更好的分类精度。定义像素权重调节系数λ计算公式为
(2)
式中:基础权重w0与边缘计算范围σ为超参数, ‖pi-pj‖2计算像素pi到最近的边缘点pj的距离。参照地理国情监测等地表覆盖分类任务的技术规范要求, 边缘的误差通常要求控制在5像素以内, 因此在式(2)中σ的取值为5。基础权重w0根据样本的平衡程度计算, 当样本类别基本平衡时,w0取值为1。由于实验使用的训练数据已经过类别平衡处理, 因此在训练过程中w0取值为1。
通过损失函数可以促使神经网络在反复迭代训练中偏向于学习有利于地表覆盖分类的影像特征, 使神经网络的输出结果尽可能拟合参考真值, 获得更高的分类精度。LCC-CNN训练完成后, 将测试影像数据输入神经网络, 经过LCC-CNN逐层运算后, 完成每个像素的地表覆盖分类, 并输出最终成果。
实验区域位于南宁市武鸣区, 高分辨率卫星影像数据选取的是2018年融合后的北京二号卫星影像数据, 包含红、绿、蓝及近红外4个波段。所有的卫星影像数据均按国家标准要求制作为正射影像数据, 影像融合后分辨率为0.8 m, 平面中误差控制在5像素以内, 所有影像数据均未进行匀光、匀色处理。地理国情监测数据选取的2018年数据成果, 其生产完成时间略晚于高分辨率卫星影像数据拍摄时间。地表覆盖数据比例尺为1∶10 000, 已通过质检验收, 数据精度满足样本制作要求。
实验软件环境为Centos 7.3, 深度神经网络开发语言为Python 3.6.5, 开发框架采用TensorFlow 1.12, 并行计算架构为Cuda 10.0。实验使用40 000张512×512像素样本切片, 共分为100组, 其中80组作为训练集, 20组作为验证集, 测试数据为1景10 000×10 000像素的北京二号0.8 m高分辨率卫星影像数据。LCC-CNN共进行了140次迭代训练, 以确保损失函数收敛。
参考地理国情监测地表覆盖分类情况, 依据广西实际情况与应用需求, 共设计了水面、建筑物、硬化地、林地、园地、旱地、水田以及裸土地共8种地表覆盖分类。为了充分对比不同方法的分类情况, 采用SVM、决策树等传统方法以及UPerNet、U-Net等深度学习方法进行对比。各种方法的地表覆盖分类结果如图3所示。目视对比分类结果, 5种分类方法对于面积较大的主要图斑均能正确分类, 但在细碎图斑分类以及图斑边缘的分割上, 深度学习方法表现优于传统方法, 其中LCC-CNN的分类结果最接近人工采集的真值, 并且对各种地类图斑边缘的分割也更准确。在具体的地类上, 各方法对水面的分类效果均与真值较为接近, 但对于易混淆的建筑物与硬化地, LCC-CNN的分类效果优于对比方法。
图3 深度神经网络地表覆盖分类结果
图4为LCC-CNN的分类混淆矩阵, 数据表明LCC-CNN对园地、林地、水面与水田的分类精度较高, 均优于88.66%, 除硬化地分类精度较低为76.60%外, 其余分类精度均在80%以上, 总体分类精度达到87.17%, 能够较为准确地从高分辨率卫星影像中提取各种地表覆盖图斑。分类效果与混淆矩阵数据说明LCC-CNN具备较高的分类精度, 模型中多尺度分割模块能够充分捕捉不同大小的图斑特征, 改进的损失函数能够增强边缘分割能力。
图4 LCC-CNN分类混淆矩阵
园地、林地、水面与水田的分类精度较高, 主要是这些地表覆盖在影像纹理等特征上具有较好的一致性, 并且在近红外波段具有较强的特征。这些特征能够通过样本被LCC-CNN逐步学习归纳, 形成有效的分类特征组合,并准确提取各种分类。硬化地的分类精度相对较低, 主要错误是约有8%与9%的硬化地分类被误分为建筑物与林地。误分原因是建筑物的纹理复杂多变、图斑较为破碎, 并且部分大型建筑物的特征与硬化地的特征非常相似。对比混淆矩阵中建筑物的分类精度, 其中也有约8%的建筑物被错误分为硬化地, 说明建筑物与硬化地中确实存在一部分特征相似度较高的地物, 利用现有的影像特征难以准确区分。
影响硬化地分类精度另一个原因为地表覆盖分类之间的天然压盖。地表覆盖分类通常按照一定规则人为定义分类原则, 而按照分类原则, 地表覆盖分类图斑在局部区域并不与影像纹理完全一致。图5为地物压盖示例, 示例中道路两侧被植被压盖区域全部被划分为林地, 虽然在分类特征上是正确划分, 但在地表覆盖定义中属于错误划分。这种情况在城区范围较普遍, 因此,尽管在影像特征上林地与硬化地特征差异较大, 并且LCC-CNN也能够正确区分硬化地与林地, 但在实验中依然出现了较高的错误率, 影响了硬化地的分类精度。虽然实验中硬化地的分类精度较低, 但与决策树[21]等传统方法相比, LCC-CNN由于采用了大样本训练, 并且在编码模块中能够提取更复杂的特征组合, 对于纹理复杂多变、图斑破碎的建筑物及硬化地也能够将精度从60%提升至76%。
图5 城镇区域地物压盖示例
为了精确分析对比不同方法的地表覆盖分类精度, 实验精度取4个指标进行衡量, 分别是总体精度、召回率、IOU(交并比)以及Kappa系数。总体精度考察的是正确分类像素的占比, 召回率用于评价正样本分类精度, 交并比是影像语义分割的重要评价指标, 用于评价分类图斑中正确分类部分与参考真值间并集的比例, Kappa系数用于评价分类的相似程度。LCC-CNN与其他方法的分类精度对比如表1所示。通过数据对比说明, LCC-CNN的分类精度优于常规语义分割神经网络模型与传统地表覆盖分类方法, 与传统方法相比IOU提升了10%以上, Kappa系数提升了11%以上, 精度提升幅度较大。这说明深度学习方法能够从样本中学习与提取更多的特征, 并且能够利用这些特征提高地表覆盖分类精度。与UPerNet等深度学习方法相比, LCC-CNN的精度也提高了2%。以上说明,LCC-CNN针对高分辨率遥感影像设计的结构达到了预期目的, 在同样条件下具备更高的分类精度。
表1 不同地表覆盖方法分类精度对比
地表覆盖分类效率对比实验主要是为了验证LCC-CNN的处理效能。在实验环境中由于传统方法不支持使用GPU运算, 因此传统方法的实验结果为CPU处理时间。实验中每种分类方法均处理相同的10 000×10 000像素大小的区域, 实验结果如表2所示。结果表明, 3种深度学习方法的处理速度均大幅优于传统方法, 这种情况主要是由于传统方法不能有效利用GPU并行计算加快运算速度, 而深度学习方法均可利用GPU对运算进行加速。在3种深度学习方法中, LCC-CNN的处理时间最长, 主要是由于LCC-CNN在网络层数与网络结构上均比U-Net与UPerNet复杂, 因此网络中的参数更多, 计算量更大, 获得更高精度的同时需要更多的运算处理时间。
表2 不同方法处理速度对比
综合精度与处理效能考虑, LCC-CNN的分类精度最高, 对于0.8 m分辨率的高分辨影像, LCC-CNN的单机日处理能力达到8 000 km2以上, 能够满足大范围地表覆盖分类快速处理任务的需要, 并且通过数据对比, LCC-CNN对于部分精度要求不高的地表覆盖分类项目, 基本可以满足自动化生产需要。对于定量、高精度地表覆盖分类项目, 虽不能完全取代人工作业, 但分类结果仍然能够作为参考数据,提高作业人员工作效率。
LCC-CNN的地表覆盖分类能力主要是通过样本训练迭代学习获得, 因此待分类影像与LCC-CNN的训练样本特征相似时, 能够获得较高的分类精度,但当LCC-CNN的分类数目发生变化, 或者待分类影像的分辨率、波段信息及地表覆盖分类特征与原始训练样本存在较大差异时, LCC-CNN的分类精度将显著下降, 甚至无法准确完成影像的地表覆盖分类任务。尽管LCC-CNN具备一定的泛化能力, 但这种泛化能力并不等同于无限的推理能力。当出现上述情况时, 需要根据变化后地表覆盖分类任务特点, 补充制作适量新的训练样本, 以LCC-CNN为预训练网络进行迁移学习, 使训练后的网络能够准确完成地表覆盖分类任务。
通过研究基于深度学习的影像地表覆盖特征提取与分类方法, 根据影像数据特点与地表覆盖任务要求, 提出了具有编码-解码结构的高分辨率卫星影像地表覆盖分类模型(LCC-CNN)。实验数据表明, LCC-CNN能够较好地从高分二号与北京二号高分辨率卫星影像中提取各种地表覆盖图斑, 地表覆盖分类精度达到87.17%。对比SVM与决策树等传统分类方法, LCC-CNN的总体分类精度、IOU与Kappa系数, 分别提升了8%、10%与11%以上。通过利用GPU加速计算过程, LCC-CNN的日处理能力达到8 000 km2以上, 处理效率优于使用CPU计算的传统方法。基于深度学习的高分辨率卫星影像地表覆盖分类方法, 能够有效提升地表覆盖分类的精度与效率, 为自动化地表覆盖分类提供了新的解决方法与技术路线。