李景文 陈文达 姜建武
(广西空间信息与测绘重点实验室 广西 桂林 541004) (桂林理工大学测绘地理信息学院 广西 桂林 541004)
高质量的高分辨率遥感影像[1]广泛应用于遥感测绘、侦察监视[2]和公共安全监控识别[3]等军民领域,然而实际条件下获取到的遥感影像通常会受到大气扰动、系统噪声、相对运动及光学系统相差[4]等因素的影响,引起图像的高频信息边缘模糊和空间分辨率的降低,无法满足实际对高质量的遥感影像的需要。目前提高遥感影像质量的主要途径有改良卫星的硬件设备和基于算法的图像处理,但改良卫星的硬件设备成本高昂,耗费时间长,因此利用超分辨率重建(super-resolution,SR)算法提高和恢复遥感影像分辨率已成为学者们研究的热点方向之一[5]。基于生成对抗网络[6-7]的图像超分辨率重建算法(SRGAN)是目前提升图像质量的主流算法之一,SRGAN利用感知损失(perceptual loss)和对抗损失(adversarial loss)来提升图片的真实感。SRCNN[8]相比于深度卷积网络提高了图像超分辨率重建的速度和准确度,可以通过更改网络模型结构或加入先验信息[7]来提高算法性能[10-12]。由于遥感影像相比普通图像包含更丰富的空间细节信息和更多的目标边缘结构,因此本文利用生成对抗网络对遥感影像进行超分辨率重建,结合预处理的边缘检测[13]算子和分层特征融合的密集残差[14]结构进一步改进超分辨率算法,通过多路径分层特征融合结构提取并复用边缘细节特征,并采用输入图像作为先验特征,使得训练出模型对图像退化机理的认知更贴近于现实场景,解决了通过算法提高遥感影像空间分辨率质量的问题。
图像边缘是指相邻区域像素的集合,包含不同灰度值的不同区域之间的灰度分割线,遥感影像的边缘包含着大量高频信息,是遥感图像特征判断和提取的重要依据。本文通过生成对抗网络完成遥感影像的超分辨率重建,利用检测影像梯度边缘上的变化特性来增强影像的特征信息,采用密集残差的方法减少网络参数加强高频信息的利用以提高重建影像质量,主要包括基于GAN的重建、密集残差网络学习和边缘算子检测等三个核心过程。
基于生成对抗网络的超分辨率重建算法由生成器网络(Generator Network)和判别器网络(Discriminator Network)两部分组成。其思路是:① 通过生成器G学习训练集样本数据的分布,将输入样本转化为真实训练集数据类似的样本。② 用判别器D判断样本真实概率,判别器D是一个二分类模型,其输入为生成器G的输出和真实样本。③ 在网络目标函数的指导下,生成器超参数θg和判别器超参数θd在对抗中联合优化训练,使判别器D无法判断生成器G的输出结果,即最大化判别器D为训练数据和生成器G生成的假样本提供的正确标签概率。目标函数定义为:
minGmaxDV(D,G)=Ex~pdata(x)[logD(x)]+
Ez~pz(z)[log(1-D(G(z)))]
(1)
(2)
内容损失函数为VGG特征间的欧氏距离,∅i,j表示提取的为第i最大池化层前的第j卷积层的特征,Wi,j和Hi,j为提取出的特征层的维度。
∅i,j(GθG(ILR))x,y)2
(3)
对抗损失函数是基于判别器输出的概率,其中:DθD代表影像属于真实高分率的概率;GθG(ILR)代表重建后的高清影像。
(4)
传统生成对抗网络中的生成器G包含多个残差块[15],每个残差块中包含两个3×3的卷积层,卷积层之后是批规范化层(batch normalization,BN)和PReLU激活函数。但随着网络模型层数的加深,每个卷积层中的特征将具有不同层级的感受野,无法充分利用每层的信息。
因此本文通过对残差网络进行更深层次的融合来充分利用原始图像的所有分层特征,即密集残差网络。密集残差网络由多个密集残差块(RDB)组成,密集残差块由多个卷积层和激活层组成,通过局部特征融合来学习到当前层和先前层中更有效特征。
图1 密集残差网络
图中Fd-1和Fd为第d个密集残差块的输入和输出,第c个卷积层的输出表示为式(5),其中H()表示了每一层的卷积及激活函数操作。
Fd,c=H(Fd,1,Fd,2,…,Fd,c-1)
(5)
最终通过1×1的卷积操作对最后的特征图进行压缩得到Fd,lF,最终的输出表达为Fd=Fd,c+Fd,lF,通过密集残差网络自适应地保存信息来提取局部密集特征。
图像边缘是图像灰度或结构等信息的突变处,体现了局部特性的不连续性。它存在于目标与背景、目标与目标、区域与区域、基元与基元之间。
边缘检测提取原始影像中不连续部分的特征,将闭合的边缘提取出来作为一个区域,以边缘信息为约束条件对影像进行超分辨率重建。Prewitt算子是一种一阶微分算子的边缘检测,利用像素邻点的灰度差,在边缘处达到极值,在图像空间两个方向模板与图像进行卷积,分别检测水平边缘和垂直边缘。其图像f(x,y)公式如下:
(6)
(7)
像素点(x,y)的梯度为:
G(x,y)=max{|G(i)|,|G(j)|}
(8)
基于改进边缘检测和生成对抗网络是影像超分辨率重建分为以下两个步骤:(1) 生成器学习阶段,在训练样本中,将输入影像的分层特征进行加权融合,最后通过上采样得到超分辨率影像。(2) 判定器判别阶段,通过卷积神经网络分别提取生成影像与真实样本的特征来判断真伪。算法整体流程如图2所示。
图2 算法流程
在生成器学习阶段,本文采用双通道加权融合的方案取代传统的单通道模型,进一步利用到边缘检测获取到的高频细节特征。其网络结构如图3所示。
图3 改进算法模型
(9)
(10)
密集残差模块(RDB)分别在主线和支线上自适应的学习先前的有效特征,稳定的网络训练将形成连续记忆机制。通过加权融合主线上每一个RDB模块不仅学习到先前的信息,还融合了所有支线层的边缘信息特征。
(11)
(12)
该部分的关键代码如算法1所示。
算法1特征提取关键代码
kernelx,kernely为边缘检测算子;img为DataLoader加载的数据集
def edge_enhance(img):
n=img.shape[0]
imgs=img
for i in range(n):
img=imgs[i:i+1,:,:,:]
#读取指定的维度
img=img.squeeze(0)
#去掉第零维
grayImage=img.cpu().numpy()
img=np.transpose(img,(1,2,0))
#调换数组索引
grayImage=np.transpose(grayImage,(1,2,0))
(x,y)=cv2.filter2D(grayImage,cv2.CV_16S,(kernelx,kernely))
#卷积
(absX,absY)=cv2.convertScaleAbs(x,y)
#转uint8
Prewitt=cv2.addWeighted(absX,0.5,absY,0.5,0)
Prewitt=np.expand_dims(Prewitt,axis=2)
#添加第二维
(R,G,B)=img[:,:,(0,1,2)]
(R1,G1,B1)=Prewitt[:,:,(0,1,2)]
(L,L1)=0.2126*(R,R1)+0.7152*(G,G1)+0.0722*(B,B1)
#转RGB三通道
(Rratio,Gratio,Bratio)=(R,G,B)*(1/L)
(R2,G2,B2)=(Rratio,Gratio,Bratio)*L1
Prewitt=np.dstack((R2,G2,B2))
#叠加矩阵
Prewitt=cv2.add(Prewitt,img)
Prewitt=np.transpose(Prewitt,(2,0,1))
Prewitt=Prewitt.unsqueeze(0)
#得到边缘特征图
if (i==0):
out=Prewitt
else:
out=torch.cat((out,Prewitt),0)
#叠加检测的特征图
return out
判定器主要是用于二分类检测,用于判别生成图像与原图像的真伪属性。其网络结构如图4所示,其中包含步长为2和1的卷积层。除第一个卷积层之外,每个卷积层之后通过批量规范化(Batch Normalization)加快了模型收敛速度。在6个密集连接块(DDB)之后网络通过全连接层和Sigmoid激活函数完成对图像真伪的判别。
图4 判别器模型
优化后的模型中不再包含BN层,因此可以使用Wassertein 距离去衡量生成数据分布和真实数据分布之间的距离,并通过对每个训练样本添加单独的梯度来缓解遇到的梯度爆炸和梯度消失问题,最终网络目标函数的表达如下:
L=-Ex~pr[D(x)]+Ex~pg[D(x)]+
(13)
实验环境为Google Colaboratory平台,Ubuntu16系统,内存为60 GB,显卡为Tesla K80,显存12 GB,编程语言为Python 3.6,由PyTorch 1.0框架与CUDA10.1架构完成算法。
实验数据集A、B、C共包含1万幅2018年Google Earth高分辨率多光谱(RGB)遥感影像,影像来源于Maxar Technologies并包含整个桂林市区,整体分辨率为0.14米/像素,单幅影像分辨率为400×400。
为了评价本文方法的重建效果,对高分辨率遥感影像的RGB三通道图像进行下采样操作获得低分辨率数据集,进行4倍采样下的超分辨率重建实验。
本实验采用VGG19[16]模型作为初始化模型。训练过程中,生成器和判别器交替训练,batch_size为128,学习率为0.000 2,epchos为300,Total Variation loss权重为2e-8,adversarial loss权重为0.001,perception loss权重为0.006,分层融合系数为0.01,总融合系数为1,训练时长为24小时。
图5-图7为4倍采样下的不同影像在不同算法下的超分辨率重建效果图。从不同重建方法的视觉效果可以看出,双三次插值法重建的图像各方面都较为模糊,SRCNN好于双三次插值但难以恢复细节特征,SRGAN可以恢复部分纹理细节,但影像边缘仍存在模糊的现象。而经过本文改进后的算法,重建影像在边缘区域有较大改进,不仅具有较高对比度,而且增强了轮廓和细节,可以看出影像的高频信息得到了更好的保存。
图5 不同算法下的影像超分辨率重建效果
图6 不同算法下的影像超分辨率重建效果
图7 不同算法下的影像超分辨率重建效果
本文选用峰值信噪比(PSNR)[17]及结构相似性(SSIM)[18]作为实验评价指标,对比双三次插值方法、SRCNN、VDSR、SRGAN方法及本文改进的算法对得到的超分辨率重建结果。通常情况下PSNR和SSIM越高,表明重建结果越好。
对给定的m×n图像I和噪声K来说,PSNR定义为:
(14)
(15)
(16)
表1为4种算法下测试集影像的指标值,其中每个测试集包含影像100幅,取平均值。可以看出,在不同数据集上本文算法重建影像指标均优于其他对比算法,其中PSNR有较大提升,SSIM略有提升。本文方法的PSNR比SRGAN高0.8 dB左右,这说明将边缘检测和密集残差网络应用到遥感影像超分辨率重建中拥有更好的复原效果,重建图像也更加清晰,恢复了更多的纹理细节,建筑物、道路以及植被的边缘轮廓更加清晰。图8为不同融合系数对指标的影响。
表1 各算法评价指标
图8 不同融合系数对算法的影响
遥感影像中的高频信息较为丰富,包含更多的颜色、形状和纹理特征,本文将边缘特征和对抗网络进行融合,提出了一种基于结合边缘检测算子和密集残差网络的影像重建方法。该方法利用边缘检测算子提取影像边缘细节特征,采用密集残差模块复用前层的底层特征,以“博弈论”的方式训练网络,最终达到纳什平衡状态完成遥感影像的超分辨率重建。本文将该超分辨率算法应用于Google Earth提供的高分辨率遥感影像,成功地提升了其空间分辨率。根据实验结果显示其主观感受与客观指标均优于其他算法,PSNR相比SRGAN高0.8 dB,实验证明了该模型的有效性,为遥感影像重建提供了新的解决方法与技术思路。