SinGAN: 通过单张自然图像训练生成对抗网络.

本文提出了SinGAN,可以通过单张自然图像训练生成模型。训练完成后,SinGAN接收随机噪声的输入,生成新的具有真实感的图像样本,在保留了原始的图像块分布的基础上,创造新的物体外形和结构。

SinGAN通过使用单张图像来训练GAN,使用多个GAN结构分别学习了不同尺度下图像块的分布,并从低分辨率到高分辨率逐步生成真实图像。

SinGAN由$N+1$个GAN结构组成,所有的生成器和判别器都拥有相同的网络结构(五组$3 \times 3$卷积),具有$11 \times 11$感受野。

判别器采用Pix2Pix提出的PatchGAN结构,把判别器设计为全卷积网络,输出的每个元素对应输入图像的一个$11 \times 11$子区域,用来评估该子区域的真实性。

生成器除了底层网络外采用条件生成结构,接收输入噪声$z_n$和上一层的低分辨率输出图像$\tilde{x}{n+1}$,生成高分辨率图像$\tilde{x}{n}$:

\[\tilde{x}_{n} = \begin{cases} G_n(z_n,(\tilde{x}_{n+1})\uparrow), & n < N \\ G_N(z_N), & n = N \end{cases}\]

SinGAN采用逐层训练的方式,从第$N$层(分辨率最低的层)开始,每层训练结束后固定参数,继续训练下一层。训练损失包括对抗损失和以固定噪声作为输入情况下的重构损失。对抗损失采用WGAN-GP形式,重构损失定义如下:

\[\mathcal{L}_{rec} = \begin{cases} ||G_n(0,(\tilde{x}_{n+1}^{rec})\uparrow)-x_n||^2, & n < N \\ ||G_N(z^*)-x_N||^2, & n = N \end{cases}\]

其中$z^{*}$是训练前随机选取的一个值,之后不再改变。