知乎有一篇帖子总结了几篇超分的论文,写的很好:https://zhuanlan.zhihu.com/p/25532538?utm_source=tuicool&utm_medium=referral
下面针对上面没有提到的论文进行补充:
6. PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION
论文:https://arxiv.org/abs/1710.10196 [PGGAN]
代码:https://github.com/tkarras/progressive_growing_of_gans
第三方pytorch实现:
https://github.com/nashory/pggan-pytorch
https://github.com/github-pengge/PyTorch-progressive_growing_of_gans
Motivation:
GAN在做SR时,放大个4倍还行,一旦放大倍数高了,想生成高分图像如从随机高斯分布的512维随机变量生成 1024*1024高分的图像,就会导致生成高分图像不稳定(对抗不起来)。于是作者提出步进的生成图像,也就是一布不行就慢慢来。
具体内容参考: https://zhuanlan.zhihu.com/p/33710326
我们这里只对上述链接中没有提到的部分做补充:
除了PGGAN网络外,作者还提出了很多trick:
INCREASING VARIATION USING MINIBATCH STANDARD DEVIATION
- 干啥的? 对于分辨率variation问题,不仅需要对单张图像操作,还有对一个minibatch中的所有图像操作才能生成更好的效果。
- 以前怎么做? 在一个minibatch中,为每个样本生成一个离散的统计数据,concat到(该样本的)输出上
- 我们怎么做? 首先计算每个特征在每个空间位置上的标准差。然后我们对所有特征和空间位置的这些估计进行平均,得到一个单独的值。我们复制该值,并将其连接到所有空间位置和minibatch上,生成一个额外的(不变的)特征映射。这一层可以插在鉴别器的任何地方,但插在最后面的效果最好。
- 得到了什么? 生成数据的分布和训练数据更一致了,鉴别器见到了更多的图像,模式崩溃得到了很好的缓和。
EQUALIZED LEARNING RATE
- 干啥的? 其实对同一层的参数而言(如一个卷积层的滤波器里的所有参数),它们变化范围是不同的,设置的学习率对有些参数合适,而对有些偏大,对另一些又偏小
- 怎么办? 全部归一化到相同的变化范围不就行了,也就是
- 效果? 收敛地更好,更快
PIXELWISE FEATURE VECTOR NORMALIZATION IN GENERATOR
-
干啥的? 生成器和鉴别器之间存在不良竞争
-
怎么办?生成器中做如下操作:
-
效果? 避免了不良竞争
新评价指标
- MS-SSIM为啥不行? MS-SSIM能可靠发现大规模模式崩溃,但不能有效反映较小的影响,如颜色或纹理的变化损失的差异,也不直接评估训练集相似的图像的质量。具体如下图:
ab效果很差,而MS-SSIM却了很高的分,而作者的指标就更合适。 - 作者啥指标?有啥要求? 作者提出要基于图像的局部(不是整体),局部要和原始训练图像接近,而对于具体的指标其实就是多个尺度上基于局部块之间的W距离。
效果很好,就是费卡,官方code指出8卡还得训练两天,谁让人家英伟达的呢。