SinGAN: Learning a Generative Model from a Single Natural Image
https://github.com/tamarott/SinGAN
背景
在许多计算机视觉任务中,建模单一自然图像中斑块的内部分布一直被认为是一种强大的先验方法。最近的一些研究提出将一个深度模型“过度拟合”到一个单一的训练例子。它们的生成取决于输入图像(即图像)。例如,将图像映射到图像),而不用于绘制随机样本。
做法
我们提出了singan -一种新的无条件生成模型,该模型训练单一的自然图像。我们的模型使用一个专门的多尺度对抗性训练方案,在多个尺度上学习图像的patch统计;然后可以使用它来生成新的真实的图像样本,在创建新的对象配置和结构的同时保留原来的patch分布。
效果
生成真实纹理
特点
- SinGAN包含一个由全卷积GANs组成的金字塔,每个GANs负责学习图像在不同尺度下的patch分布。这允许生成任意大小和高宽比的新样本,具有显著的可变性,同时保持了训练图像的全局结构和纤维纹理。
- 从单个自然图像学习的无条件生成。
- 模型都能得到高质量的结果,并且保留了训练图像内部的patch统计量。所有的任务都是在同一个生成网络中完成的,没有任何额外的信息,也没有任何超出原始训练图像的进一步训练。
内容
我们的框架是纯粹的生成性(即将噪声映射到图像样本),因此适合许多不同的图像处理任务。我们的目标是学习一个获取单个训练图像x内部统计信息的无条件生成模型。这个任务在概念上与传统的GAN设置类似,不同的是这里的训练样本是单个图像的小块,而不是数据库中的整个图像样本。
第n级的生成过程包括所有的生成器{GN…Gn}和所有的噪声映射{zN,…zn}。最开始是GN,这个图是从下向上看的。一层结束之后,结果上采样加入到下一层的输入里面
多尺度结构
a pyramid of generators,{G0, . . . , GN },
trained against an image pyramid of x: {x0, . . . , xN }, where xn is a downsampled version of x by a factor rn, for some r > 1
图像样本的生成从最粗的尺度开始,依次经过所有的生成器,直到最细的尺度,在每个尺度注入噪声。所有的发生器和鉴别器都具有相同的接受野,因此随着生成过程的增加,捕获结构的大小逐渐减小。在粗尺度上,一代纯粹是生成,
即GN将空间高斯白噪声Zn映射到一个图像样本x˜N,
这个级别的有效感受野通常约为图像高度的1/2,因此GN生成图像的总体布局和对象的全局结构。每一个更细尺度(n < N)的生成器Gn都添加了以前尺度没有生成的细节。因此,除了空间噪声zn之外,每个发生器Gn从粗尺度接受图像的上采样版本,即
zn是夹在后面的噪声
ψn is a fully convolutional net with 5 conv-blocks of the form Conv(3 × 3)-BatchNorm-LeakyReLU
我们从最粗尺度上的每个块32个内核开始,并每4个尺度将这个数字增加2倍。因为生成器是完全卷积的,我们可以在测试时生成任意大小和纵横比的图像(通过改变噪声映射的尺寸)。
训练
我们按顺序训练我们的多尺度架构,从最粗的尺度到最好的尺度。一旦每个GAN被训练,它是固定的。
第n个GAN是包括
对抗损失函数Ladv:xn和生成的xn分布的距离
重建损失函数Lrec:确保了一系列噪声映射能产生xn
对抗损失:用WGAN-GPloss因为可以增强训练的稳定性整个图像的损失,不是一个n的一个的损失
patch size (the net’s receptive field) is 11 × 11.
重建损失:
Z*是一个固定的映射
重建图像的另一个角色
确定各标度噪声zn的标准差,σn与
的RMSE成正比
应用到SR上面
ZSSR DIP不是在data上训练而是在同一个图像上进行训练
放大比率S,重建损失权重α=100.金字塔放大系数r=k根号s 我们对LR图像进行r因子采样,并将其(连同噪声)注入到最后一个生成器G0中我们重复这个k次以获得最终的高分辨率输出。
这是针对某一张图片的,而不是在数据集上训练的。