DCLS-GAN:利用生成对抗网络的天绘一号卫星高原地区影像去云方法
2021-03-10李建胜王俊强欧阳文谷友艺
郑 凯,李建胜,王俊强,欧阳文,谷友艺,张 迅
1. 信息工程大学,河南 郑州 450001; 2. 78123部队,四川 成都 610000; 3. 北京市遥感信息研究所,北京 100192
高原,地理上通常指海拔高度500 m以上的相对平坦或有一定起伏的地区,面积约占地球表面的45%,其含氧量低、冰雪覆盖多的特点给人类活动带来诸多不便[1]。由于地表约有66.7%[2]被云层覆盖,连续无云影像难以获取,加之部分高原地区常年积雪、水汽多导致云覆盖程度较平原更高,对其影像进行去云处理在应急救援等领域具有重大意义。当发生诸如泥石流、地震、山体滑坡等自然灾害或需要进行登山救援时,部分交通情况可能发生改变,无法应用已有历史影像分析判断受灾情况、规划救援道路,必须对现势性强的实时或近实时影像进行去云处理,实现应急地图的快速生产或应急路线的快速规划。
近年来,学者们对影像去云进行了广泛研究,提出的方法大致可分为4类:多时相法、多光谱法、图像增强法及图像修复法。前3类方法的前置条件多、稳健性不强,比如多时相法需要不同时刻完全相同区域的影像,涉及图像配准操作并且时效性不强;多光谱法需要冗余的不同频段影像支持;图像增强法能提升可视效果,但对厚云去除收效甚微。图像修复法分传统的和基于机器学习的方法,传统的图像修复法直接利用本幅图像视觉真实和语义上合理的其余部分对云覆盖的部分进行替换,如文献[3]提出的基于样本块匹配算法,该算法结合了纹理合成和扩散填充,但只适用于背景以低频信息和重复性纹理为主的图像。另一类图像修复则基于机器学习,如文献[4]针对Landsat影像提出了一种时空加权回归(spatially and temporally weighted regression,STWR)模型,借助大量无云影像对不变相似像素的互补信息进行最优融合,从而生成连续的无云影像。近年来,深度学习技术为图像问题带来了新思路与新路径,可利用训练CNN网络学习到图像中缺失区域与其他部分之间复杂的函数关系。如文献[5]提出了一种基于深度卷积神经网络(spatial temporal spectral CNN,STS-CNN)的统一时空谱框架,采用统一的深卷积神经网络和时空谱补充信息相结合进行去云处理,能够对MODIS和Landsat卫星影像进行去云。
2014年文献(Intriguing properties of neural networks.arXiv preprint arXiv:1312.6199,2013)首次提出深度学习对抗样本的概念,随后文献(https:∥arxiv.org/abs/1511.06434)提出一种无监督学习的网络模型——生成对抗网络(GAN)。该网络由生成网络和鉴别网络组成,生成网络用于合成缺失部分,而鉴别网络负责对图像质量进行判别,两个网络在与对方的对抗中提升自身的性能,实现影像数据特征分布的自主学习,很快成为国内外学者们的研究焦点[7-9]。针对GAN训练过程不稳定的现实,2016年文献[10]针对GAN进行了改进并利用CNN的优点,提出了深度卷积生成对抗网络(deep convolutional-generative adversarial networks,DC-GAN),将CNN引入生成网络与鉴别网络模型当中进行无监督训练,利用卷积网络强大的特征提取能力来提高生成网络的学习效果。在上述工作基础上,2016年文献[11]提出上下文编码器-解码器语义修复网络(context encoder),利用编码器中的CNN来学习图像中的语义特征,结合生成对抗网络学习样本数据的特征分布,从而生成图像的缺失部分,但该方法的修复结果缺乏精细的纹理细节,容易产生伪迹。
目前图像修复法去云多是使用模拟云加云影像[12]、低空无人机和地基摄影影像[13],在真实卫星遥感影像上实现智能去云研究成果较少。本文数据集来自国产遥感卫星天绘一号[14-15],其影像比陆基获取的影像覆盖范围更广、目标结构特征更多样、纹理细节特征不明显。针对上述问题,本文提出了深度卷积最小二乘生成对抗网络(deep convolutional least square-generative adversarial networks,DCLS-GAN)的遥感影像去云方法。试验证明,较传统方法而言,本文方法去云处理不依赖高光谱、不需要多时相,实时性、稳健性强,与文献[11,16-17]方法的对比试验证明,本文方法从定性观察和定量分析上都能得到较优的云区修复效果,为卫星遥感影像的智能去云工作提供了新的途径。
1 试验数据
1.1 原始数据
本文的研究对象是高原地区,研究数据来自天绘一号卫星2018—2019年拍摄的中国高原地区RGB彩色遥感影像。考虑到不同地表类型、不同海拔高度以及不同时间段影像特征不同,为保证模型的泛化能力,选取涵盖不同下垫面、不同季节、不同时段的遥感影像共900景。地理经纬度范围为28°35′E—125°35′E,8°25′N—65°25′N,涵盖了高山、城镇、冰川、雪地等不同下垫面情况。典型的影像类型如图1所示。
图1 高原地区典型地表影像Fig.1 Typical surface of plateau area in TH-1 image
1.2 数据集建立
(1) bmp影像生成。读取原始数据文件,将tif格式四通道数据,保存为分辨率6000×6000的“.bmp”图像。
(2) 影像裁切。原始遥感影像幅面较大,网络训练时将影像裁切为448×448大小,共选取8828张影像。
(3) 影像掩膜。在无监督预训练时使用白色矩形中心掩模模拟云覆盖区域[13],掩膜大小为影像长宽的一半,训练模型修复影像中间部分的信息,如图2(b)所示;在迁移训练时使用可移动云掩膜(不超过影像面积的一半),重点提升模型修复图像边缘信息的能力,如图2(c)所示。
图2 2种不同类型的云掩膜Fig.2 Two kinds of cloud mask
(4) 数据集划分。将裁切后的8828张影像按照18∶3∶1的比例划分训练集、迁移训练集、测试集,得到训练集影像7195张,迁移训练影像1213张,测试集影像420张。
2 基于DCLS-GAN的去云网络设计
针对传统图像修复的缺陷以及天绘一号遥感卫星影像的特征,本文基于DC-GAN网络结构,设计最小二乘损失函数[18]与交叉熵损失的联合损失函数,建立DCLS-GAN遥感影像去云方法,实现对高原地区天绘一号卫星遥感影像的智能去云。首先在无云影像中使用矩形中心掩膜进行无监督预训练,而后使用可移动掩膜做迁移训练,提升训练的稳定性和生成结果的质量;同时,引入双线性插值和泊松编辑[19]作为后处理消除生成区域与背景间的颜色差异和云区边缘修复时的伪迹,较好地保留了修复区域的细节特征。
2.1 总体流程
总体网络训练流程图3所示,生成网络G的输入为有云影像z,输出生成影像G(z),G(z)与无云原图z′一起进入鉴别网络中进行对比,经过迭代训练,使得生成网络生成的影像逐渐逼近真实影像,最终使判别网络判断不出生成影像的真伪。利用训练好的模型进行去云的流程如图4所示,输入有云影像,寻找云区的最大外接矩形,矩形内部利用训练好的模型进行生成并经过双线性插值优化,无云部分利用原图进行替换,最后经过泊松图像编辑后处理得到预测结果。
图3 DCLS-GAN网络训练流程Fig.3 Framework of DCLS-GAN network training
图4 训练完毕后去云操作流程Fig.4 Cloud removal framework with trained generator
GAN的网络训练是二元极小极大博弈的过程,鉴别网络D不断学习真实无云影像和生成网络生成的假图像之间的区别并区分真假,而生成网络不断学习真实图像的特征分布从而产生逼真图像去欺骗鉴别网络,如(1)式所示
D(G(z)))]}
(1)
式中,z为有云影像的集合;χ为对应的无云原图的集合;D(x)和D(G(z))分别为鉴别网络对原图和修复图的分类标签值;E为期望值。GAN的训练过程即为对式(1)进行联合优化,目的是使D将x识别为真(值为1)而将G(z)识别为假(值为0),而G努力阻止D做出正确判断。在不断对抗学习下,G和D的性能都会得到提高,G最终能生成人眼无法分辨的接近真实的无云影像。
2.2 生成网络与鉴别网络
生成网络基于编码器-解码器结构,编码器由5个卷积层组成,解码器由5个转置卷积层组成,负责提取原图特征并生成预测图。表1给出了生成网络的详细配置,其中conv、dconv、BN、stride和padding分别代表卷积、转置卷积、批标准化、卷积步长和卷积核填0,conv4×4表示卷积核的大小为4×4,同理dconv4×4表示相同大小的核进行转置卷积,连接编码器与解码器的是与通道等宽的全连接层,并使用了步长为1的卷积模块,用于减少网络参数数量,其输入维度为8,输出维度为4000,ReLu[20]、tanh和Leaky ReLu[21]代表激活函数。
表1 生成网络的结构
鉴别网络基于CNN结构,由6个卷积层组成,负责判断生成的图像真伪。考虑到池化操作会造成特征信息的丢失,本文在生成网络、鉴别网络中使用空洞卷积替换(Multi-scale context aggregation by dilated convolutions.arXiv preprint arXiv:1511.07122,2015)池化,在扩大感受野的同时不丢失图像的细节信息;利用BN操作使特征输出归一化,加速训练并使得网络训练更稳定,但是文献[13]指出,在网络所有层都加上BN会使训练过程震荡,在生成网络G的输出层不使用BN能有效避免该问题,本文采用了这一策略。鉴别网络中的激活函数LeakyReLu,将输出层最后的Sigmoid激活函数[22]结合到交叉熵损失中用防止梯度消失。鉴别网络的参数设置如表2所示。
表2 鉴别网络的结构
2.3 损失函数
针对GAN训练过程过于自由而导致梯度消失或梯度爆炸等问题,许多学者提出了改进的方法。文献[23]提出WGAN模型,利用W距离代替JS散度并加入梯度惩罚来描述两个分布之间的距离,文献[18]提出了LS-GAN,利用最小二乘损失描述两个分布之间的距离,能够在两个数据分布距离较远的情况下仍能反映距离的远近程度,防止因为Sigmoid损失处于饱和状态以及JS散度为常数而导致的梯度为0的情况,解决训练的稳定性问题,提高GAN生成图像的质量。鉴别网络与生成网络的最小二乘损失函数如式(2)、式(3)所示
(2)
(3)
式中,Pr是真实影像集的样本分布;Pz是生成网络产生的影像集样本分布;D(x)和D(G(z))分别为鉴别网络对原图和修复图的分类标签值。常数a、b分别表示生成图片和真实图片的标记;c是生成网络为了让判别网络认为生成图像是真实数据而定的值。文献[18]指出,当b-c=1,b-a=2时,目标函数等价于皮尔森卡方散度(Pearsonχ2divergence),一般取a=-1,b=1,c=0或a=-1,b=c=1。
本文令a=-1,b=1,鉴别网络的损失函数如式(4)所示
(4)
令c=0,生成网络的重建损失J(G)1为最小二乘损失,如式(5)所示
(5)
(6)
从而生成网络的联合损失函数如式(7)所示
J(G)tot=λ·J(G)1+(1-λ)·J(G)2
(7)
式中,λ为权值,文献[13]经过交叉验证,λ取0.001时效果最好,本文λ取0.001,1-λ为0.999。
2.4 双线性插值与泊松编辑后处理
本文在云覆盖区域进行去云处理时,在输出像点像素前使用了双线性插值,利用待求点临近的4个像素点的像素值进行插值,得到待求像点的像素值,提高还原精度与可视效果。双线性插值公式如式(8)所示
(8)
式中,Q11、Q21、Q12、Q22分别为像点(x,y)左下、右下、左上、右上相邻的4个像点。
本文使用泊松图像编辑作为后处理改善修复部分边界的色彩差异,其主要思想是把原始含云影像的梯度信息赋予到生成影像上,使生成部分与整体影像更加相似。泊松方程如式(9)所示
(9)
2.5 网络优化算法步骤
在训练生成网络和鉴别网络时,先固定生成网络,训练鉴别网络,按照每训练1次生成网络、训练5次鉴别网络的策略,平衡最小二乘损失函数优化下的DCLS-GAN训练的波动。网络优化的算法步骤如表3所示。
2.5.1 参数设置
2.5.2 训练步骤
初始化生成网络参数θ和判别网络参数ω;
Whileθhas not converged do;
fort=0,…,Tddo;
ω←ω+lr·Adam(ω,gω);
end for;
θ←θ-lr·Adam (θ,gθ);
end while.
3 试验与分析
3.1 试验数据与平台
训练数据集共8408张,划分情况如表3所示,影像大小均为448×448;测试数据集420张,并额外使用50张真实云覆盖的天绘一号卫星影像作为无参考试验数据。试验硬件为联想深度学习工作站,CPU主频为2.1 GHz的英特尔Xeon处理器,显卡为英伟达Titan xp图形处理器,使用PyTorch1.0框架搭建深度学习模型。
表3 训练集划分
3.2 训练过程与结果
训练采取“无监督训练+迁移训练”的策略进行,同时采取数据增强策略对输入影像进行随机上下翻转、水平翻转。无监督训练时,使用白色矩形中心掩膜影像进行,完成白色矩形中心掩膜影像数据的训练后,保存预训练模型,在此基础上采用随机位置矩形掩膜的数据集进行迁移训练,按相等概率将掩膜覆盖在迁移训练数据集的左上、右上、左下、右下位置,提高特征学习的泛化能力,无监督训练共进行了200轮,迁移训练进行了100轮。
图5为无监督训练过程与结果,图5(a)为生成网络与鉴别网络的损失图,图5(b)为第1轮输入影像,图5(c)是第1轮训练的生成影像,图5(d)为第200轮训练时的输入影像,图5(f)为第200轮训练的生成影像。可见,训练初始阶段,影像修复质量较差;训练200轮后,修复质量已明显提高,但此时网络倾向于学习中心掩膜边界附近的低层次特征,生成网络对影像四周的特征利用不够,仍具有边界伪迹。图5(g)为训练200轮的结果局部放大(修复部分位于影像中央),此时人眼已难辨认生成影像与原始影像的真假。随着训练次数的增加,鉴别网络判别真假样本的能力越来越强而生成网络的预测结果越来越接近真实样本。
图5 无监督训练过程与结果图Fig.5 Process and results of unsupervised-training
图6为迁移训练过程与结果,图6(a)为生成网络与鉴别网络的损失图,图6(b)为第1轮输入影像,图6(c)是第1轮训练的生成影像,图6(d)为第100轮训练时的输入影像,图6(e)为第100轮训练的生成影像。图6(c)可见,无监督中心掩膜训练完毕后,对影像边缘部分的特征学习还不够好,所以在迁移训练初始阶段,影像边缘修复质量较差;训练100轮后,修复质量已明显提高。图6(g)为训练100轮的结果局部放大,此时人眼已难辨认生成影像与原始影像的真假。随着迁移训练次数的增加,鉴别网络与生成网络的损失趋于平稳,且波动较小,说明网络已经学习到训练数据集的特征,预测结果更加接近真实样本。
图6 迁移训练过程与结果Fig.6 Process and results of transfer-training
3.3 对比与分析
将模拟加云的测试影像输入训练好的DCLS-GAN模型,得到初步去云结果,但生成的去云影像会在背景和边界部分产生一些颜色差异和伪迹。本文采用泊松图像编辑作为后处理方法,处理结果如图7所示。可见,泊松图像编辑可以有效去除重建区域内部的对比度不一致以及重建区域与原图拼接缝的伪迹问题。
图7 泊松编辑后处理对比Fig.7 Comparison results of Poisson image editing
为验证本文方法的优越性,采用对比试验的方法,选取2种经典的非机器学习类图像修复方法[16-17]以及原始Context Encoder网络[11]与本文方法进行对比,其中,Context Encoder网络训练条件与本文方法一致,文献[16—17]方法参数设置与原作一致。
首先使对测试集中的3类典型高原地表影像进行测试,本文方法与对比方法的去云结果如图8—图10所示。
图8 雪山的去云结果对比Fig.8 Comparison of processed results of snow mountain
观察图8—图10,可以发现传统方法在纹理平滑区域的修复效果视觉感受上较好,但修复结果不具备语义正确性,且效果稳健性差,另外在修复区域四周的伪迹十分明显,基于DC-GAN方法在视觉真实性和语义正确性上都远远优于传统方法。
为了定量分析本文方法的效果,采用峰值信噪比(PSNR)[23]与结构相似性(SSIM)[24]两类影像质量评价指标对150张测试集影像(3种地表各50张)定量分析去云效果,结果如表4所示。PSNR值越大、SSIM值越接近1代表去云结果影像与原始影像越相似。从表4可知,本文方法的总体结果优于对比方法。虽然在居民地的修复上本文方法PSNR值略低于Context Encoder,但Context Encoder修复的图像纹理不正确(修复出的纹理属于雪山纹理,如图10第3、第4张影像所示),与居民地纹理不符,总体色彩上本文方法更接近原图;在冰川修复上SSIM值略低于传统方法,其原因是大部分冰川表面比较平滑,所以传统方法修复结果结构上与原图相似,但缺少纹理细节,且总体上白色伪迹较多(如图9所示)。本文方法的总体修复结果在细节上优于Context Encoder。
表4 测试集去云效果对比值
图9 冰川的去云结果对比Fig.9 Comparison of processed results of glacier
图10 居民地的去云结果对比Fig.10 Comparison of processed results of resident area
为进一步验证本文方法的有效性,在定量指标计算的基础上,对20张真实云覆盖的测试影像(448×448像素)进行对比试验,选取5张含不同大小、不同形状真云的影像对比如图11所示。
图11 典型地表的真实去云结果对比图Fig.11 Comparison of cloud removal results in typical area with real cloud
由于测试数据集中真实含云影像无对应的无云原图作为参考,所以采用无参考的影像质量评价方法作为评价指标,本文采用自然影像无参考质量评价算法(NIQE)[25]指标作为评价依据,NIQE使用质量完好的与测试数据同一分布训练图像的图像块NSS特征拟合得到多元高斯(multivariate Gaussian)模型,进而利用训练好的模型对测试图像进行评价,指标越小代表与训练数据集的误差越小、质量越好。本文使用NIQE模型参数为:图像块(batchsize)=192×192,锐度阈值(sharpness threshold)=0.75,训练数据362张无云原图由训练集中随机抽取。试验结果见表5。
由图11与表5可知,本文方法不仅在主观目视效果上表现较好,且NIQE评价指标优于原始Context Encoder,验证了本文方法的优越性。另外,在50张测试集上进行了时间开销对比,本文方法与对比方法对1张影像的平均去云时间开销如表6所示。
表5 无参考影像质量评价结果对比 Tab.5 Comparison of non-reference image quality evaluations
表6 不同算法时间开销对比
传统方法[16-17]未采用深度学习技术,无法学习到数据集的高级语义特征,其去云性能稳健性不强。文献[16]采用的是图像金字塔重建修复法,耗时最长;文献[17]采用的修复方法涉及特征点匹配,耗时也较长;本文方法由于加入了泊松图像编辑后处理,耗时略高于原始Context Encoder。另外,本文方法训练350轮总耗时30 h 32 min,但是利用事先训练好的模型进行去云处理时,处理速度远高于非深度学习方法,具有较高的去云效率。
4 结 论
长期以来,遥感影像去云是遥感图像处理的研究热点。本文针对高原高寒地区天绘一号卫星遥感影像的去云处理,提出了一种DCLS-GAN去云方法,将卫星影像去云和图像修复联系起来,基于深度卷积对抗生成网络对云覆盖区域进行修复。在原始的DC-GAN中引入联合最小二乘与交叉熵对抗损失的联合损失函数,生成网络基于Encoder-Decoder结构,鉴别网络基于CNN,生成的结果经过双线性插值处理后再经过泊松图像编辑后处理,在天绘一号卫星高原地区影像数据集上得到的去云结果在目视效果与定量评价指标与算法耗时上都取得了良好成绩。试验结果表明:相比传统非深度学习图像修复方法与原始Context Encoder网络,本文提出的DCLS-GAN模型能够有效学习数据集的特征分布,联合损失函数有助于提高去云重建的精度,泊松图像后处理有助于平滑图像,减少云区边缘的伪迹、调整色彩分布,为高原高寒地区云雪混杂影像的去云处理提供了新的路径。
本文所提出的去云算法还有进一步改进的空间。比如,当影像中云覆盖的部分超过影像大小一半时,生成的去云结果不佳,原因是云覆盖了大部分影像信息,无法利用已知信息对其进行重建。另外,去云重建区域内的视觉真实性和语义一致性还有进一步提高的空间。下一步研究的方向包括将后处理过程融入端到端网络进行训练以及将基于深度学习的自动云检测算法融入去云算法框架中,满足实际工业生产需要。