高振宇 刘亮 潘浩 马御棠 黄修乾 耿浩 刘靖 徐崇斌 孙晓敏
(1 电力遥感技术联合实验室(云南电网有限责任公司电力科学研究院),昆明 650217)
(2 北京空间机电研究所,北京 100094)
(3 北京空间飞行器总体设计部,北京 100094)
近年来,随着卫星遥感空间分辨率的不断提升,使其具备快速、大面积获取输电走廊地物信息的能力,在电力行业得到日益广泛的应用。在输电线路的日常检测过程中,通过不同时间遥感图像的变化检测,提取有变化的区域[1],可以及时发现地质灾害、人为破坏和违章建设等潜在风险。当前变化检测流程中,需要假设不同时期获取的影像经过了几何校正[2],即用于变化检测的不同图像中相同的行列号理论上是一样的。除了几何校正之外,变化检测的影像预处理还包括辐射纠正、数据融合等,通过图像的预处理能在一定程度上减少色彩和光照变化等外部条件对变化检测的影响。传统变化检测一般直接基于像元[3]来进行,利用图像处理和计算机视觉技术来定位两张图像存在差异的像元。为了解决像元级别变化检测精度不高而且碎块较多的问题,对象级变化检测[4-6]技术成为变化检测的重要研究方向。检测单元不再是独立的像元,而是经过特征的抽象转变为对象级,对象中包含了丰富的空间、纹理、形状等特征,通过对象特征差异获取变化检测图,能够明显提高变化检测的效率和品质[1,7]。
深度学习通过构造深度神经网络,能够从海量的样本中自动学习抽象特征。相比传统基于人工经验挑选的特征,深度学习训练得到的特征更加准确和抽象,能够反映目标的语义特征,因此具有良好的识别和泛化能力。深度卷积网络在图像识别中得到了广泛应用,出现了大量的深度卷积网络模型,如VGG[8]、GoogLeNet[9]、ResNet[10]等。其中残差网络模型(ResNet)能够较好的避免梯度消失问题,常常用来作为图像特征提取的基础网络。由于深度卷积网络模型的参数较多,对模型进行精简的方法也被提出,比如 MobileNet[11]网络将一个标准的卷积核分成深度卷积核和 1×1的点卷积核,能够极大的降低网络模型参数的数量,提高训练和计算速度。相比对整幅图像进行识别,语义分割能够实现像元级别的分类,在遥感中可以用于土地利用分类。常用的语义分割模型包括:FCN[12]、U-Net[13]、Deeplab[14]系列等。
将深度学习应用到卫星遥感图像变化检测领域是目前变化检测的研究重点和热点,已经有了大量的研究。文献[15]提出了基于深度学习的高分遥感图像变化检测模型,将变化检测转换为语义分割问题,分割的两个类别为没有变化区域和变化区域,输入的数据为多时相遥感数据得到的差分图像;文献[16]对 UNet孪生网络进行改进,对多尺度图像信息进行差分和融合,然后用特征金字塔模块来获取图像多尺度的上下文信息,最后将编码端和解码端对应层跳跃连接,进行端到端的预测,得到前后两期矿区遥感影像的变化二值图像;文献[17]将RNN中的长短时记忆网络应用于变化检测中,利用多时相遥感影像的时间信息来得到二值化的变化影像。在无监督学习方面:文献[18]用预先训练好的VGG模型来提取特征,对特征进行差异分析来得到变化检测结果;文献[19]提出了用于光学和雷达异构图像的变化检测深度网络,采用无监督的方式进行训练。通常,深度神经网络的输入只有一张图像以及对应的一张地面真值图,但用于变化检测任务的神经网络,其输入需要一对图像以及对应的一张地面真值图。孪生网络[11]恰好可以完美的解决这个问题,并且将输入的图片对映射为高维空间中的特征对。
遥感图像的变化检测需要对每个像元是变化还是非变化进行识别,因此可以看作是一个语义分割问题。但是变化检测的输入一般包括2张不同时相获取的图像,而采用孪生网络可以同时处理2组数据,所以本文提出一种综合语义分割与孪生网络模型的变化检测算法。算法采用 deeplabv3+语义分割模型来计算图像的抽象特征,然后对输出层进行归一化并计算距离图,最后利用对比损失函数来作为模型误差进行训练。本文的创新点在于将语义分割网络和孪生网络进行组合来实现变化检测,能够在原始图像分辨率上实现较高精度的变化检测。
本文设计的变化检测深度神经网络模型如图1所示。输入为不同时期获取的一对遥感影像,每张影像都通过孪生网络中的语义分割模型(本文采用了Deeplabv3+)来提取特征图。孪生网络中的模型参数是共享的,在训练的时候统一进行更新。每张图像经过语义网络的处理都可以得到一张和原始图像大小一致的特征图像,输入图像包含了三个可见光通道(蓝色、绿色、红色),所以特征图像的通道设置为3。根据2张特征图像可以计算每个像元对应的欧式距离(一般指欧几里得度量),结合样本提供的标签数据并根据损失函数就可以计算残差。
图1 变化检测深度神经网络Fig.1 The change detection deep neural network
本文设计的变化检测深度网络以语义分割模型为基础,综合孪生网络的结构来计算损失函数,训练的结果就是让有变化的像元对应的欧式距离尽可能大,让没有发生变化的像元欧式距离尽可能的小。图1中,H代表了图像的高度,W代表了图像的宽度,H×W后面的数字代表了图像的通道数量。
Deeplabv3+网络是目前常用的深度学习网络之一,是google公司设计的语义分割模型。如图2所示,Deeplabv3+网络将多尺度空洞卷积(dilated CNN)运用到深度卷积网络,通过解码过程将编码后的数据恢复到原始分辨率尺寸,能够实现精确的语义分割。Deeplabv3+包含一个深度卷积神经网络(deep CNN,DCNN)网络,这个网络可以有多种选择,比如:ResNet、MobileNet、Xception、DenseNet等。这个网络的作用就是进行编码。Deeplabv3+最后的输出层的层数等于分类的数量。
图2 Deeplab v3+网络结构Fig.2 Deeplab v3+network structure
孪生网络用来计算图像之间的相似性,输入为2张图像,分别通过网络来生成特征图,然后根据特征图来计算2张图像的相似度构造损失函数。孪生网络包含两个分支网络,既可以相同也可以不同,当拥有不同分支网络时又被称为“伪孪生网络”。用于变化检测的孪生网络需要两个相同的分支网络(如图1所示),两个分支网络的权重用相同的值初始化并通过随机梯度下降算法接收相同的梯度,以从图像对中提取对应的特征对。
本文采用对比损失作为损失函数。对比损失的核心思想是扩大类间差异、减小类内差异。它主要被运用在降维处理过程中,即对相似的样本进行降维处理后,其对应的特征仍然相似,而本不相似的样本经过降维处理后仍旧不相似,因而可以很好的反应出样本对之间的相似程度loss。其方程表达式如下
式中N代表特征图中像元的数量;n为像元索引;dn代表样本对语义分割网络得到的特征对之间的欧式距离;y是样本标签,当y=0时,代表样本对是相似或者匹配的,当y=1时,代表样本对是不匹配的;m是设置的一个阈值。其中,本文用于计算欧式距离的特征对已经过归一化处理,即dn的取值在0到1之间,m的取值需要保证m-dn的值为一个正数,因此默认可以设置为2。由式(1)可以看出,当样本对相似(即y=0)时,函数只有前半部分 (1-y),若原本相似的样本对之间的欧式距离较大,则说明此时网络不佳,函数随即会加大网络损失;而当样本对不相似(即y=1)时,函数只剩后半部分y·m a x(m-dn,0)2,若原本不相似的样本对之间的欧式距离较小,则说明此时网络不佳,函数一样会加大网络损失。
利用“高分一号”卫星、“高分二号”卫星、“高景一号”卫星、Google Earth和部分无人机的数据整理了一个不同季节的变化检测数据集,训练集包括 10 000对图片,验证集和测试集各 3 000对,总共16 000对图像。这个数据考虑了季节变化,而树木等的生长变化不被当作变化。制作训练集时,训练图像的分辨率从0.03~1m,整体属于高分辨率图像的范畴。为了方便进行训练,原始数据被裁剪为256像元×256像元大小的图像,并随机进行了旋转,部分样本数据如图3所示。
训练时的操作系统为ubuntu 18.04 LTS,深度学习的训练框架选择pytorch,计算机CPU为Intel® Xeon(R)CPU E5-2623 @2.60GHz×8,显卡为 Nvidia Quadro M4000,显存为 8Gbyte。训练的批样本大小(batchsize)设置为32,训练周期(epoch)设置为50,初始的学习率为0.001,学习率随着训练次数的增加逐渐降低。Deeplabv3+编码部分的深度卷积框架选择MobileNet,最后输出层的通道设置为3。输出层的数据采用L2 范数(normalization)进行归一化。根据训练结果输入的精度—召回率曲线如图4所示。
图4 精度—召回率曲线图Fig.4 The precision-recall graph
从图4可以看出,精度与召回率曲线表现良好,召回率在70%左右都能接近100%的正确率,这说明本文算法模型的有效性。F-Measure(又称为F-Score)是精度和召回率加权调和平均,是信息检索(IR)领域的常用的一个评价标准,常用于评价分类模型的好坏。本算法训练后的 F-Measure值为 0.894。文献[20]中基于对抗网络对本文使用的数据库进行了变化检测,并对变化检测得到的变化区域进行了区域合并,然后根据不同的交叉比(IoU)来对算法进行了评估,0.1、0.2、0.3代表了 IoU的阈值,即当交叉比大于设定阈值时就认为分割后的目标是正确的。本文采用同样的方法来计算不同IoU下的准确率和召回率,比较结果见表1。
表1 算法精度对比Tab.1 Comparison of accuracy of algorithms
将本文算法的结果与文献[20]中基于对抗网络的算法精度进行对比,可以看出本文的算法精度要优于文献[20]的模型。为了直观的观察变化检测的效果,根据本文算法训练的模型来对测试的图像数据进行处理,计算得到欧式距离图,将距离归一化到[0,1]之间,然后映射为彩色图像,效果如图5所示。
图5 变化检测测试数据效果Fig.5 Change detection test data effect
如图5所示,最下一排是算法得到的变化检测结果,红色代表出现变化的概率高,蓝色代表没有出现变化。从结果中可以看出,检测的结果与人工标记的区域基本吻合,具有良好的一致性。
利用遥感数据能够对大范围的地表类型变化进行监测,提高电网安全巡检的效率,有效减少人工巡检的工作量和危险性。尤其是,云南电网的线路大多分布在山地和丘陵区域,人工巡检极为不便。因此,对输电线路周围环境变化进行监测,能够及时的发现可能的安全隐患,保障电力设施以及周边居民的安全。为了验证本文模型的实际检测与泛化能力,选择云南省昆明市西南区域的覆盖区域来进行变化检测,输电线路沿着图像中央的山体呈南北分布。
图6是“高景一号”卫星拍摄的2张同一个地区的影像,其中图6(a)是2018年1月拍摄,图6(b)是2018年11月拍摄。两景卫星影像经过有理多项式参数(RPC)几何校正后几何位置基本上对齐。图6中的红色圆圈为220kV高压线经过的高压塔的位置,红色连线代表了高压线的具体位置和分布情况。从不同时相的0.5m分辨率遥感图像上可以看出,由于拍摄的季节不同,太阳高度角也相差较大,导致地表的反射率存在较大的差异,阴影的角度也不同。这些都增大了变化检测的难度,如果用传统的基于颜色或者亮度的算法监测,就会出现大量错误检测区域。
图6 2018年1月和11月拍摄的高景图像Fig.6 High-view images taken in January and November 2018
虽然两幅图像存在明显的辐射品质差异,但是本文算法很好的避免了辐射差异导致的错误检测。为了验证检测的精度,本文采用人工解译的方式来寻找图像中存在变化的区域,然后用人工解译得到的二值图像和本文提出的变化检测模型得到的变化区域二值图统计变化检测像元的整体精度,如表2所示。
表2 检测精度分析Tab.2 Analysis of detection accuracy
对人工解译的结果分析表明:由于拍摄时间相差不到一年,图像中绝大部分的区域都没有明显变化。变化的地方主要出现在高压线附近的新增蔬菜大棚(如图7(b)和(c)中的黄色多边形)。本文算法的检测结果总体准确率从84.5%提高到93.7%,召回率从81.1%提高到89.5%,特别是相比文献[20]中的算法在变化检测结果的空间分辨率上有显著改善。但本文算法也将部分没有变化的区域检测为变化区域,这些区域主要分布在边缘,容易受到几何对齐的影响而被错分为变化区域。采用本文提出的变化检测模型能及时发现纹理变化明显的区域,如:建筑物、植被变化区域等,有助于防范可能出现的地质灾害、人为破坏和违章建设等潜在风险,特别是人工巡线难以涉及的区域,如:密林、高山等地方。
图7 距离高压线一定范围的变化检测效果Fig.7 Change detection effect of a certain range from the high-voltage line
本文提出了一种将语义分割网络和孪生网络组合在一起进行遥感图像变化检测的算法,充分利用语义分割网络强大的特征提取与分辨率复原能力,能够较好的恢复变化区域的细节。基于同样的网络参数,采用孪生网络对不同时相的遥感数据进行处理,保证了训练的有效与灵活性。实验表明:本文算法能够较好的处理不同时相获取的遥感数据,对辐射变化以及季节变化导致的色彩差异具有较好的识别能力,能够有效服务输电走廊的日常巡线工作,为电力线路的安全保障提供必要的技术支撑。