论文笔记:SinGAN: Learning a Generative Model from a Single Natural Image

论文笔记:SinGAN: Learning a Generative Model from a Single Natural Image

简介

这是ICCV2019 最佳论文。本文提出了一个多尺度的GAN,能够用单张图片进行训练,生成一系列高质量且类似的图片。这是博主第一次阅读GAN相关的文章,难免在理解上会出现一些问题,望见谅。

github代码:官方pytorch源码

在这里插入图片描述

这个算法可以用于图片生成、图片编辑、图像和谐化、超分辨率等多个领域。
在这里插入图片描述

方法

以往的GAN,要么只能通过大量的同类别图片来训练生成新图片,要么用一张图片只能模仿它的一些比较低级的纹理特征(如图所示),但是本文提出了一种新的方法,只用一张图,同样可以生成一系列高质量的同内容图片。
在这里插入图片描述

如果直接用一张图片来训练一个GAN,势必造成生成器难以学习到足够多的细节特征或者只能学习到纹理特征的情况。因此,这篇文章提出了一个多尺度GAN,来解决这个问题。
SInGAN包含N个不同尺度的GAN,分别为GN ~ G 0,尺度依次增加。第GN个生成器的输入是一张噪声图像,训练其输出的结果尽可能接近下采样过后的原图XN,之后的每一个GAN,输入都是Gn+1输出的结果加上一张噪声图,从而,除了GN,剩下每一个GAN学到的,其实是补充上一个GAN输出结果的细节信息。

在这里插入图片描述

在这里插入图片描述

训练过程就是从第N个GAN开始训练,每个GAN训练完了之后不再改变这一层的参数,再训练更高一层的GAN,直到训练到最后一层。
训练的loss包括两部分:Adversarial loss和Reconstruction loss。二者加权:
在这里插入图片描述

其中,Ladv是为了惩罚生成器输出和实际图片的分布的距离(就是让生成器输出尽可能以假乱真),Lrec是为了保证有一部分输入可以生成和原图一毛一样的结果(文中采取一个固定的噪声输入作用在GN,剩下GAN的噪声输入全部取零,训练让这个输入下的输入尽可能等于原图)。

结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述