ECCVW2018的论文,是SRGAN的加强版。相比于SRGAN,本文做了下面几个针对性的优化:
- 去掉所有BN,将basic block替换成RRDB,如下图所示。BN层在SR、deblur任务中被证明会损害PSNR、引入伪影【当trainset和testset差距很大时,这种情况尤其明显,会降低网络泛化性】 在这里作者又发现了几个trick
- 可以使用残差缩放,即在将残差添加到主路径之前通过在0和1之间乘一个常数来缩小残差以防止不稳定
- 初始化要小。当初始参数方差变小时,残差体系更易于训练。
- 优化判别器的判别规则,从原来的真假判断变成相对真或相对假的判断。判别loss和生成loss可以看论文。
- 优化perceptual loss的表现形式:从原来的激活后的特征变成激活前的特征送入pretrained的模型
- 激活后的特征非常稀疏,监督不强,导致性能差
- 为了进一步优化perceptual loss,使用VGG在材料识别的数据集上进行finetune,使loss更关注于纹理细节的生成
在补充材料里面作者反复强调了几点:
- 去掉BN,否则会产生神奇的空洞
- 小值初始化
- 大patch