基于双向生成对抗网络的图像超分辨率算法
2021-11-15李思平林志贤郭太良
李思平 林志贤 郭太良
(福州大学物理与信息工程学院 福建 福州 350116)
0 引 言
图像超分辨率(Super-Resolution,SR)重建技术旨在从一幅或多幅低分辨率图像重建出一幅高分辨率图像。本文主要研究单幅图像超分辨率重建(Single Image Super-Resolution,SISR)。
Dong等[1]首次提出了端到端的图像超分辨率重建方法SRCNN,通过图像特征提取层、非线性映射层和重建层完成对单帧低分辨率图像的超分辨率重建。Kim等[2]提出了一种极深的卷积网络VDSR,该网络达到20层,运用了残差学习与梯度裁剪来解决梯度爆炸问题。Ledig等[3]提出SRGAN,将基于生成模型的对抗网络GAN[4]用于超分辨率重建中。
尽管目前深度学习方法应用在图像超分辨率重建技术上已经取得了巨大的进步,但是仍然存在以下问题:(1) 随着网络的加深,会出现梯度消失的现象,训练时间久且难以训练;(2) 大部分深度学习方法获取低分辨率图像的方法是简单的通过人为假定的下采样过程获得,比如双三次插值(Bicubic),因此训练出来的模型不能处理现实生活中由于各种模糊、噪声及运动干扰的低分辨率图像;(3) 高质量数据集的缺失。
本文提出了一个端到端的双向对抗生成网络,包括一个重建网络(Low to High)旨在将低分辨率图片恢复成高分辨率图片,及模拟现实生活中的低分辨率图像的下采样网络(High to Low),该网络将高分辨率图片通过学习的方法生成低分辨率图片从而取代人为简单的通过降采样而产生的低分辨率图像。较之前的SRCNN、VDSR、SRGAN等方法,本文提出的算法在Set5、DIV2K等通用测试数据集的主观视觉评价和客观量化指标均超越它们。
1 相关工作
1.1 SRGAN
SRGAN是将基于生成模型的对抗网络用于超分辨率重建中。基于生成对抗网络的图像超分辨率重建流程如图1所示。
图1 基于生成对抗网络的超分辨率重建流程
1.2 WGAN
GAN存在训练困难、生成器和判别器的损失函数无法指示训练过程,缺乏一个有意义的指标和生成图片的质量相关联,生成的图片虽然看起来像是真的,但是缺乏多样性。Arjovsky等[5]针对生成对抗网络这些问题,提出了WGAN。WGAN通过Wasserstein距离来优化生成数据和真实数据之间的差距以替代GAN中的JS散度衡量标准。本文中的双向生成对抗网络的训练策略将采用WGAN中提出的损失函数优化方法以保证训练过程的稳定性。
2 本文算法
2.1 算法总体框架
本文提出的算法旨在解决现实生活中图像超分辨率重建问题。该算法框架如图2所示,包括两个生成对抗网络,分别为重建网络(Low-to-High)和下采样网络(High-to-Low)。
图2 双向对抗生成网络
本文与之前的超分辨率研究工作(SRCNN、VDSR、SRGAN)的第一个基本区别是如何生成低分辨率(LR)图像。在以往的大多数工作中,低分辨率图像是由相应的原始图像(HR图像)进行降采样(Bicubic)而产生的,人工设定的下采样过程完全忽略了图像退化过程(如运动干扰、各种模糊算子等)。为了缓解这种情况,本文受到了CycleGAN[6]的启发,提出了另外一个下采样网络来模拟生成现实低分辨率图像。值得关注的是,训练下采样网络并不需要匹配的低分辨率和高分辨率图像对,从而大大减少了采集相对应高低分辨率图像对的工作。
本文与基于单个生成对抗网络的SRGAN工作的第二个根本区别是,选择新的损失函数训练两个网络,本文将传统的GAN损失函数换成了WGAN的损失函数,且与L1像素损失相结合,同时为了保证图像的空间信息,还引入了结构感知损失函数。
2.2 下采样网络
图像超分辨率重建面临的最大问题是缺乏真实的数据集,即低分辨率的噪声图像和相应的高分辨率图像。生成这样的用于训练的图像对的困难主要有两方面。一是对低分辨率(LR)图像进行建模和仿真,二是生成像素相对应的图像对。为了解决这个问题,本文提出了下采样网络(H2L),低分辨率图片产生的方式如公式所示:
LR=fH2L(HR,θ1)
(1)
式中:LR表示生成的低分辨率图片;HR表示清晰的高分辨率图片;θ1表示网络要学习的参数。
下采样网络的网络架构如图3所示,高分辨率图首先会经过一个卷积层和ReLU激活函数层提取低层特征,然后将提取的低层特征输入到后面八个残差块中。每个残差块包含了两层卷积层和一层激活函数层,相比于SRGAN的残差块,本文设计的残差块遵循EDSR[7]去除了归一化(BN)层,以保证网络可以减少参数,加快训练速度。每两个残差块间的设计运用了ResNet[8]中的跳跃连接(Short-Cut)方式,同时将低层特征与残差块输出的高层特征进行了融合操作,促使网络模拟生成更逼真的带噪声的低分辨率图片。最后融合的特征图经过卷积层和子像素卷积层(Sub-pixel)生成低分辨率图片。重建网络的网络架构如图4所示,和下采样网络架构类似。
图3 下采样网络 图4 重建网络
下采样网络的损失函数由两部分组成,分别为生成网络的对抗损失及结构感知损失。下采样网络的生成器生成的低分辨率图片需要骗过判别器,因此产生了对抗损失函数,其定义如下公式所示:
(2)
式中:D表示下采样网络的判别器;G代表了下采样网络的生成器;N代表了图像的数量。
为了保护生成的图像与原图像之间的空间结构信息不发生改变,本文引入了用于风格迁移[9](Style-transfer)工作的结构感知损失函数,其定义如下所示:
(3)
式中:N代表了图像块的数量;P表示VGG网络的卷积层的特征图;y是生成的低分辨率图片;x是输入的高分辨率图片。在计算损失的时候,图片会被裁剪到同一尺寸。
2.3 重建网络
本文提出的重建网络(L2H)实现了低分辨率图像超分辨率,可以用以下公式来描述:
HR=fL2H(LR,θ2)
(4)
式中:HR表示重建的超分辨率图片;LR表示输入的低分辨率图片;θ2表示重建网络要学习的参数。
低分辨率图片首先经过一个卷积层和ReLU激活函数层以提取函数的低层特征。低层特征经过20层残差块学习高分辨率图片的高频细节部分,最后将融合了低层和高层的特征图输入到子像素卷积层进行图像超分辨重建。反卷积层没有使用经典的转置卷积,引入了子像素卷积层(Sub-pixel),从而避免了重建图像有棋盘效应和边缘模糊。
重建网络的损失函数由三部分组成,分别为生成网络的对抗损失、结构感知损失和L1像素损失组成。其中对抗损失及结构感知损失与下采样一致。L1像素损失的定义如下所示:
(5)
式中:N表示图像块数量;y表示重建的超分辨率图像;x表示真实的标签高分辨率图片。
3 实验与结果分析
3.1 数据集及实验环境
网络训练采用的数据集包括了两部分,分别为公开数据集DIV2K(800幅高分辨率图片)及利用黑莓手机采集的真实数据集对RMSR,包括了500幅4 032×3 024的图像对。其中450幅图像对用于训练集,50幅用于测试集。在训练过程中图片按步幅14切分成224×224的小图片。本实验的实验环境基于Linux服务器,显卡为NVIDIA P100,训练所利用框架为Pytorch1.0。
3.2 超参数设置
本文所提生成对抗网络中的每个卷积层都使用64×64大小为3×3的滤波器。反卷积层没有使用经典的转置卷积,引入了子像素卷积层,从而避免了重建图像有棋盘效应和边缘模糊。同时训练时,输入图像的批次为64,采用了Adam优化器,初始学习率设置为0.001,总迭代次数为200 000次,每迭代50 000次,学习率下降十倍。
3.3 实验结果
虽然本文提出算法的主要目标是学习一种能够处理真实世界图像超分辨率的重建模型,但是很难获得用于评估结果的真实图像(Ground-truth)。因此,为了验证本文方法的有效性,首先将重建模型与其他基于卷积神经网络的单幅图像超分辨率重建方法进行比较,这些方法是专门为基于双三次插值退化的超分辨率设计的,比如SRCNN、SRGAN、ESGANG[10]等。
表1和表2给出了本文提出的算法与其他算法在测试集Set5、DIV2K及本文提出的数据集RMSR上的定量分析。在测试集Set5、DIV2K上的测试过程是对所有的图像运用双三次插值方法进行4倍的下采样,然后将下采样的图像输入进不同的重建模型中得出重建结果。由表1和表2中结果得出,本文提出的方法在处理现实生活的低分辨率图像具有较优秀的能力。
表1 本文方法与其他重建算法的PSNR
表2 本文方法与其他重建算法的SSIM
图5的实验结果是基于测试集DIV2K上的一幅企鹅图片分别对各种深度学习模型进行了超分辨率重建。从重建图像的部分可看出,本文的算法重建的图像细节清晰,且企鹅尖嘴部分无奇怪的纹理,与原图最为相近。
(a) 原始图像 (b) 双三次插值法
(c) SRCNN方法 (d) SRGAN方法
(e) ESRGAN方法 (f) 本文方法图5 测试图像1
图6为一幅现实世界的芯片图像通过各种模型超分重建的效果图,可以看出本文提出的算法重建视觉效果最好,边界明显、细节清晰。
(a) 原始图像 (b) 双三次插值法
(c) SRCNN方法 (d) SRGAN方法
(e) ESRGAN方法 (f) 本文方法图6 测试图像2
综上所述,本文所提出的基于双向对抗生成网络的图像超分辨率重建算法可以很好地把现实世界低分辨率图片重建为视觉良好、细节丰富的高分辨率图片。
4 结 语
本文提出的新型双向联合对抗生成网络旨在解决现实生活中图像超分辨率重建问题。该方法利用降采样模块生成逼真的低分辨率图像,利用生成的逼真低分辨率图像经过重建网络实现高分辨率图像的超分辨。在训练GAN网络时,利用Wasserstein距离优化网络,以保证算法训练的稳定性。通过Set5、DIV2K和RMSR等数据集对算法验证,本文提出的算法要优于SRGAN的重建效果,下一步工作准备优化网络,将网络参数减少,在保证精度的同时提高网络运行速度。