SinGAN:Learning a Generative Model from a Single Natural Image
论文亮点
- 最大的亮点在于其训练样本是单张自然图像,而不是一个训练图像集。
- 无条件的GAN,从噪声中合成图像。
- 作者给出了许多任务场景下SinGAN的应用
研究背景
生成对抗网络已经在建模视觉数据的高维分布上取得了引人注目的进展。特别是当在特定类别的数据集上训练时,无条件GAN在生成逼真、高质量的样本上展现出了卓越效果。然而,从带有多种目标类别的高度多样化数据捕捉数据分布(比如ImageNet)仍然被认为是一个巨大的挑战,并且通常需要条件输入或者是仅在一个特定类别上训练。
在这里,我们将GAN的使用引入一个新的领域——从单张自然图像学习到的无条件生成。
在之前的基于单张图像的深度学习模型(或者是few-shot learning,少样本学习)中,它们通常是有条件的(即输入是一张图像,进行图像—图像的转换)。而作者提出的SinGAN是无条件的(从噪声中生成图像),区别于其他只能应用于生成纹理图像内容的无条件GAN,SinGAN不限制于纹理生成并且可以处理一般的自然图像。
区别与其他图像处理领域的生成模型,它们常常在一个特定类的训练集上训练。而SinGAN并不对捕捉同类图像中的共同特征感兴趣,而是考虑训练数据中(一张图像)的不同来源——在单张自然图像的不同尺度上所有的overlapping patches(部分重叠patch)。
研究方法与意义
我们引入了SinGAN,一个可以从单张自然图像中学习的无条件生成模型。我们的模型被训练于捕捉图像中patch的内在分布,然后可以生成与训练图像视觉内容一致的高质量、多样的样本。SinGAN包含了一个全卷积GAN的金字塔,其中每一个GAN都负责从图像不同的尺度上学习到patch分布。这允许生成带有任意大小和长宽比的新样本。相比于之前的单张图像GAN方法,我们的方法不仅仅适用于纹理图像,并且是无条件的(可以从噪声中直接生成新样本,不需要像Conditional GAN中一样引入其他条件输入,或是从图像到图像的翻译)。用户的研究确认了生成样本经常与真实图像混淆。我们举例说明了SinGAN在广阔的图像操作任务上的应用。
方法细节
我们的目标是学习一个无条件的生成对抗网络,它可以捕捉单张训练图像的内在统计量。这个任务和传统的GAN设定在概念上很相似,除了这里使用的训练样本只有一个,而不是整张图像都作为训练样本。
我们选择跳出纹理合成,来解决更多的自然图像问题。这需要在不同尺度上捕捉复杂图像结构的统计量。比如,我们希望捕捉图像的全局属性(例如布局、大目标的形状,比如顶部的天空和底部的地面),或者是捕捉其他细节和纹理信息。
我们的生成框架如上图所示,它由一系列的PatchGAN组成,其中每一个负责捕捉输入图像不同尺度的Patch分布。
多尺度结构
具体来说,我们的模型由一个生成器金字塔 { G 0 , … , G N } \left\{G_{0}, \ldots, G_{N}\right\} {
G0,…,GN}组成,针对输入图像 x x x的金字塔 { x 0 , … , x N } \left\{x_{0}, \dots, x_{N}\right\} {
x0,…,xN}进行训练,其中 x n x_{n} xn是输入图像 x x x通过一个变化因子 r n r^{n} rn的下采样版本,并且 r > 1 r>1 r>1。每一个生成器 G n G_{n} Gn负责生成与相应输入图像 x n x_{n} xn的Patch分布相关的逼真图像样例。这是通过对抗学习实现的,其中 G n G_{n} Gn学会去愚弄一个判别器 D n D_{n} Dn,而判别器尝试着去区分在生成样本中的Patch和输入图像 x n x_{n} xn的Patch。
一张图像样例的生成从粗略的尺度上开始,依次地通过所有生成器直到最精细的尺度,并且在每一个尺度上都有噪声注入。所有的生成器和判别器有相同的感受野,并且因此随着我们生成过程的进行,捕捉到的结构尺度也不断减少。在最粗略的尺度(图像分辨率最大,也是最开始的层),生成过程就是纯粹的生成,即 G N G_{N} GN将空间白高斯噪声 z N z_{N} zN映射到一个图像样例 x ~ N \tilde{x}_{N} x~N上。
x ~ N = G N ( z N ) \tilde{x}_{N}=G_{N}\left(z_{N}\right) x~N=GN(zN)
在这层上的有效感受野是典型的图像高度的 ∼ 1 /