目录
1.RDN(Residual Dense Network)残差密集网络【2018】
3.3 关于感知损失(Perceptual Loss)的改进
3.4 网络插值(Network Interpolation)
1.RDN(Residual Dense Network)残差密集网络【2018】
这个网络的核心思想是构建了RDB(Residual Dense Block)残差密集块。这个结构综合了残差块和密集块,所谓密集块是浅层网络有到每层深层网络的快捷连接,从图中也能看出来。而RDB就是把DB作为RB中的一个部分,构成了RDB。RDN网络的结构如下:
这个网络从左到右由四个部分组成:
1.浅层特征提取网络(Shallow Feature Extraction Network),由两层卷积层构成;
2.RDBs,紧接着是D个RDB模块;
3.密集特征融合(Dense Feature Fusion, DFF),主要是将每个RDB的输出concat后经过一层卷积层再加上第一层卷积层的输出;
4.上采样网络(Up-Sampling Network, UPNet)【采用ESPCNN网络】
1.1【Note】
局部特征融合(Local Feature Fusion, LFF)指的是相邻的两个RDB之间也存在一个快捷连接。可以理解为RDB之间构成一个残差网络,所以这个网络无处不在的Dense结构,所以他们称这个网络为RDN。
1.2【参数细节】
1.RDN中所有的卷积层的kernel size都是3X3,融合层的kernel size都是1X1;
2.通过Padding的操作让每个卷积层的输出特征图大小固定(fixed);
3.SFENet,LFF和GFF部分的输出都是64张特征图;
4.激活函数是Relu;
5.UPNet部分采用的是ESPCNN网络【主要是Sub-pixel convolution layer部分】;
Sub-pixel convolution layer - 子像素卷积:
上图很直观得表达了sub-pixel convolution的做法,前面就是一个普通的CNN网络,到后面彩色部分就是sub-pixel conv的操作了。首先,如果我想对原图放大3倍,那么我需要生成出3^2=9个same size的特征图。将九个same size的特征图拼成一个X3的大图,这就是sub-pixel convolution的操作了。
这是一种抽样的反思想,如果把一张x3的大图,每隔三个点抽样一个,那就会得到9张低分辨率的图像。于是,如果我们可以通过CNN来获得9张符合分布的低分辨率图像,那么就可以组成一张高分辨率的大图。
1.3【超参数】
D - RDB的数量【20】
C - 一个RDB中卷积层的数量【6】
G - 在RDB中每个卷积层输出的特征图的数量【32】
G0 - 每个RDB和整个RDBs模块的输出特征图数量【32】
2.SRGAN【2017】
图像中常用的两个指标:PSNR和SSIM
PSNR(Peak signal Noise Ratio, 峰值信噪比)通常用来评价一幅图像压缩后和原图像相比质量的好坏,当然,压缩后图像一定会比原图像质量差的,所以就用这样一个评价指标来规定标准了。PSNR越高,压缩后失真越小。这里主要定义了两个值,一个是均方差MSE,另一个是峰值信噪比PSNR,公式如下:
其中MAX通常是图像的灰度级,一般就是255了。
SSIM(结构相似性):计算稍复杂,其值可以较好地反映人眼主观感受。一般取值范围:0-1.值越大,视频质量越好。结构相似度指数从图像组成的角度将结构信息定义为独立于亮度、对比度的,反映场景中物体结构的属性,并将失真建模为亮度、对比度和结构三个不同因素的组合。用均值作为亮度的估计,标准差作为对比度的估计,协方差作为结构相似程度的度量。
2.1【Note】
1.该网络在生成器末端,通过两层sub-pixel convolution layer来实现放大两倍;
2.在生成器中使用PReLu激活,在判别器中使用LeakyReLu;
LeakyReLu: max(0.1x, x)
PRelu: max(ax, x)其中a是参数,需要网络自己去学习
3.引入Perceptual loss function:
其中内容损失(content loss)是:
其中 是VGG19网络中第i层max-pooling层之前,第j层卷积层之后(经过激活)的特征图(Feature Map)。
也就是说,作者找了一个使用ReLu作为激活函数的VGG19网络的预训练模型,然后把生成器生成图的图和原始的高清大图输入到这个网络中,提取出所需要层对应的特征图,计算MSE。
第二部分中的对抗损失(adversarial loss)是:
3.ESRGAN【2018】
网络结构:
3.1 与SRGAN中的生成器区别是做了以下的两个改进:
1.在生成器中移除了所有的BN层;
2.用RRDB(Residual in Residual Dense Block)代替原来SRGAN中的Residual Block。
文章中表示:在SR任务中移除BN层已经被证明可以提升性能和减少计算复杂度,并降低模糊程度。
3.2 与SRGAN中的判别器区别是做了以下的改进:
使用RaD(Ralativistic average discriminator)代替标准的判别器:
标准判别器最终输出的是一个概率,表示其来自于真实样本的概率;而相对平均判别器RaD输出是一张真实图片比一张假图片相对更加真实的概率。
判别器损失:
生成器的对抗损失:
其中 ,
表示对一个mini-batch中的所有数据取平均操作。通过这种方式,使得生成器在训练的时候同时从生成的图片和真实的图片中受益。
3.3 关于感知损失(Perceptual Loss)的改进
1.使用的特征图是VGG19网络中激活之前的卷积层输出;
原因一:经过激活之后特征变得非常稀疏;
原因二:经过激活后会造成与原图不一样的重构亮度
2.引入L1正则化
3.4 网络插值(Network Interpolation)
先训练一个面向PSNR的GAN(损失函数是L1 loss),然后在训练一个普通的GAN(pixel-wise loss,就是L2损失函数)。然后融合两个网络的参数:
实际上的训练过程是:
1.先采用L1损失函数训练一个PSNR-oriented的网络,再将这个网络参数作为生成器的初始化参数;
2.再采用改进之后的感知损失函数进行训练;
3.在采用pixel-wise loss(基于L2损失函数)训练一个GAN-based的网络,然后再将这个网络参数作为生成器的初始化参数;
4.再采用改进之后的感知损失函数进行训练;
5.最后采用网络插值的方式进行融合。