[论文笔记]ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks
本篇论文是基于SRGAN改进而来到,相比于SRGAN它在三个方面进行了改进:
1.网络的基本单元从基本的残差单元变为Residual-in-Residual Dense Block (RRDB);
2.GAN网络改进为Relativistic average GAN (RaGAN);
3.改进感知域损失函数,使用激活前的VGG特征,这个改进会提供更尖锐的边缘和更符合视觉的结果。
1. Network Architecture
1.1generator G
- 将所有的BN layer去除(fig4 左1,左2)
- 将原SRGAN中的resnet网络改为RRDB(fig4 右)
- 对残差信息进行scaling,即将残差信息乘以一个0到1之间的数,用于防止不稳定(fig4 右中的β)
- 更小的初始化,作者发现当初始化参数的方差变小时,残差结构更容易进行训练
BN层在训练时,使用一个batch的数据的均值和方差对该batch特征进行归一化,在测试时,使用在整个测试集上的数据预测的均值和方差。当训练集和测试集的统计量有很大不同的时候,BN层就会倾向于生成不好的伪影,并且限制模型的泛化能力。作者发现,BN层在网络比较深,而且在GAN框架下进行训练的时候,更会产生伪影。这些伪影偶尔出现在迭代和不同的设置中,违反了对训练稳定性能的需求。所以为了稳定的训练和一致的性能,作者去掉了BN层。此外,去掉BN层也能提高模型的泛化能力,减少计算复杂度和内存占用。
1.2 discriminator
作者基于Relativistic GAN改进了判别器。判别器 D 使用的网络是 VGG 网络,SRGAN中的判别器D用于估计输入到判别器中的图像是真实且自然图像的概率,而Relativistic D则尝试估计真实图像相对来说比fake图像更逼真的概率。
作者把标准的判别器换成Relativistic average Discriminator(RaD),在SRGAN中的标准D可以表示为D(X)=σ(C(X)),其中σ是Sigmoid函数,C(X)是非变换的鉴别器输出。然后将RaD定义为,其中表示取batchsize中所有fake data的平均值。所以
-
判别器损失函数为:
-
生成器对抗损失函数为:
1.3 Perceptual Loss
我们还通过在激活函数之前而不是像SRGAN那样在激活后来约束特征,从而形成了更有效的感知丢失。感知损失在SRGAN中是定义在预先训练的深层网络的激活层上,即两个激活特征之间的距离被最小化。而在本论文中,我们建议在激活层之前使用特征,这将克服原始设计的两个缺点:1)激活后的特征非常稀少,特别是在一个非常深的网络之后,如图6。2)使用激活后的特征还会导致与地面真实图像不一致的重建亮度,如图9左。
作者对使用的感知域损失进行了探索,与目前多数使用的用于图像分类的VGG网络构建的感知域损失相反,作者提出一种更适合于超分辨的感知域损失,这个损失基于一个用于材料识别的VGG16网络(MINCNet),这个网络更聚焦于纹理而不是物体。尽管这样带来的增益很小,但作者仍然相信,探索关注纹理的感知域损失对超分辨至关重要。
1.4 loss function
所以我们的生成器的loss为:
1.其中 是content loss(求recovered image 与ground-truth y的1-norm distance)2.作者在源码中实现使用的是L1 loss
1.5 Network Interpolation
为了消除GaN方法中的噪声,同时保持良好的感知质量,我们提出了一种灵活有效的策略-网络插值。我们首先训练一个面向PSNR的网络,然后通过微调获得一个基于gan的网络。我们对这两个网络的所有相应参数进行插值,导出了一个插值模型。
其中
提出的网络插值有两个优点:
- 该插值模型能够在不引入伪影的情况下对任何可行的α产生有意义的结果。
- 我们可以连续平衡感知质量和保真度,无需重新培训模型。
for k, v_PSNR in net_PSNR.items():
v_ESRGAN = net_ESRGAN[k]
net_interp[k] = (1 - alpha) * v_PSNR + alpha * v_ESRGAN
2.Details
- batchsize=16
- The spatial size of cropped HR patch is 128 × 128.
- 训练过程分成两个步骤:
- 训练PSNR-oriented model (使用L1 loss );学习率初始化为0.0002 然后在每2×10^5iterations的时候下降2倍。我们用PSNR-oriented model 作为我们生成器的初始化。
- 生成器训练的时候loss函数为公式3,其中。学习率初始化为,然后分别在[10k,100k,200k,300k] iterations的时候讲学习率减半。
PSNR-oriented methods including SRCNN, EDSR and RCAN
perceptual-driven approaches including SRGAN and EnhanceNet
来源:https://blog.csdn.net/weixin_42105640/article/details/99415696