超分辨率生成对抗模型SRGAN

最近想把低质量的图片还原成高质量的图片,因此又回到了single image super resolution模型。一直想找一些简单的模型把问题搞定,但试了两天效果都不好。昨天又看到了SRGAN。这篇论文早些时候看过没有特别看懂,当时也是为了找简单的模型应用在工程上,就放过去了。昨天有时间好好看了一下。感觉还是有些收获的。

  1. 论文中提出了一个观点:用MSE(也包括了psnr)作为loss得到的超分辨率图片不符号人眼的感受,图片效果会过于平滑。而GAN能产生出更加自然、多样、符合人类感受的图片。
  2. 作者在设计loss function时使用了:content loss和adversarial loss的加权组合。Content loss是对比原始(hight resolution)图像和generator生成的图像逐个像素的mse。Adversarial loss就是一般的GAN的loss。在https://github.com/alterzero/SRGAN/blob/master/main.py实现中,作者增加了一个loss function: 原始(high resolution)图像和generator生成的图像通过VGG网络输出的mse,但是给的权重非常小(2e-6)。在https://github.com/MathiasGruber/SRGAN-Keras/blob/master/libs/srgan.py里面,作者直接使用了adversarial loss和原始(high resolution)图像和generator生成的图像通过VGG网络输出的mse。个人认为如何设计loss是SGRAN的核心。
  3. 网络结构上作者在生成网络上用了skip connection,在最后用了两个sub-pixel convolution layers来增加分辨率。在discriminator网络上使用了类似于VGG的网络结构,只是加入了batch normalization,去掉了max pooling,激活函数用的leaky relu。但是在实现的时候上面提到的两个代码和文章中的不是特别一样,可能根据实际情况做了变化。

你可能感兴趣的:(深度学习,深度学习,生成对抗模型,超分辨率)