论文地址:
https://arxiv.org/abs/1905.01164
代码地址:
https://github.com/tamarott/SinGAN
补充材料:
https://webee.technion.ac.il/people/tomermic/SinGAN/SinGAN.htm
提出了 SinGAN,这是一个可以从单张自然图像学习的非条件性生成模型。模型可以捕捉给定图像中各个patch小块内的内在分布,接着能够生成带有和给定图像中的视觉内容相同的高质量且多样的新图像。SinGAN的结构是多个全卷积GANs组成的金字塔,这些全卷积GANs都负责学习图像中的某个patch小块中的数据分布,不同的GANs学习的patch小块的大小不同。这种设计可以让它生成具有任意大小和比例的新图像,这些新图像在具有给定的训练图像的全局结构和细节纹理的同时,还可以有很高的可变性。与此前的从单张图像学习GAN的研究不同的是,作者们的这个方法不仅仅可以学习图像中的纹理,而且是一个非条件性模型(也就是说它是从噪声生成图像的)。实验结果表明,很难区分原始图像和生成的图像。同时,SinGAN也在多种图像操控任务展示出优越的性能。
生成对抗网络(GAN)在可视数据高维分布的建模方面取得了巨大飞跃。特别是,无条件GAN具有在针对特定类别的数据集进行训练后,在生成逼真的高质量样本方面显示出了巨大的进展(例如,人脸,卧室等)。但是,捕获具有多个对象类别的高度多样化的数据集的分布(例如ImageNet ),仍然被认为是一项重大挑战,并通常需要根据另一个输入信号为条件输入信号来调整生成或为特定任务训练模型(例如超分辨率,修复,重新定位)。
在这里,我们将GAN的使用带入了一个新领域-从单个自然图像中学到的无条件生成。具体而言,我们发现,单个自然图像内的patch小块的内部统计信息通常携带足够的信息,可用于学习强大的生成模型。新的单图像生成模型SinGAN,使我们能够处理包含复杂结构和纹理的普通自然图像,而不必依赖于存在来自同一类别的图像数据库。这是通过完全卷积的轻型GAN金字塔实现的,每个GAN负责捕获不同规模的patch小块分布。经过训练后,SinGAN可以生成各种高质量的图像样本(任意尺寸),这些样本在语义上类似于训练图像,但包含新的对象配置和结构( Fig. 1 )
Fig.1:从单个训练图像中学到的图像生成。 提出了一种在单个自然图像上训练的新的无条件生成模型SinGAN。模型使用了专用的多尺度对抗训练方案来跨多个尺度学习图像的patch小块统计信息;然后可以将其用于生成新的逼真的图像样本,该样本在创建新的对象配置和结构的同时保留原始patch小块分布。
长期以来,在许多计算机视觉任务中,对单个自然图像中的patch小块内部分布进行建模已被认为是一个重要的前提[64]。典型示例包括去噪[65],去模糊[39],超分辨率[18],去雾[2、15]和图像编辑[37、21、9、11、50]。在这方面最相关的工作是[48],其中定义并优化了双向patch小块相似性度量,以确保处理后的图像patch小块与原始patch小块相同。在这些工作的激励下,在这里,我们展示了如何在一个简单的统一学习框架中使用SinGAN来解决各种图像处理任务,包括从单个图像到图像的绘制,编辑,协调,超分辨率和动画处理。在这些情况下,我们的模型都产生了高质量的结果,并保持了训练图像的内部patch小块统计信息(见 Fig. 2 和我们的项目网页)。所有的任务都是在相同的生成网络中完成的,没有任何额外的信息或原始训练图像之外的进一步训练。
Fig.2:图像操控。 提出了一种在单个自然图像上训练的新的无条件生成模型SinGAN。模型使用了专用的多尺度对抗训练方案来跨多个尺度学习图像的patch小块统计信息;然后可以将其用于生成新的逼真的图像样本,该样本在创建新的对象配置和结构的同时保留原始patch小块分布。
SinGAN可用于各种图像处理任务,包括:将一张涂料(剪贴画)转换为逼真的图像,重新排列和编辑图像中的对象,让添加到图像中的物体变得协调一致,图像超分辨率,以及从单个图像输入创建动画。 在这些例子中,我们的模型仅观察训练图像(第一横行),并且对于所有应用程序都以相同的方式进行训练,无需进行模型架构修改或进一步调整(见 Sec. 4 )。
单图像生成模型 最近的一些研究工作提出将深度模型“过拟合”到单个训练样例中[51,60,46,7,1]。然而,这些方法是为特定的任务而设计的(例如,超分辨率[46],纹理扩展[60])。Shocher等人[44,45]首先为单个自然图像引入了基于GAN的内部模型,并在重定向的背景下进行了说明。然而,它们的生成取决于输入图像(即,将图像映射到图像),而不是用来绘制随机样本。相比之下,我们的框架是纯生成式的(即将噪声映射到图像样本),因此适合许多不同的图像处理任务。无条件的单图像GANs仅在纹理生成的环境中被探索过[3,27,31]。当对非纹理图像进行训练时,这些模型不会生成有意义的样本(Fig. 3)。另一方面,我们的方法不局限于纹理,也可以处理一般的自然图像(如Fig. 1)。
Fig.3:SinGAN对比单个图像纹理生成。 用于纹理生成的单一图像模型[3,16]并不是为了处理自然图像而设计的。我们的模型可以生成包含复杂纹理和非重复全局结构的真实图像样本。
生成式图像编辑模型 在许多不同的图像处理任务中,最近的基于GAN的方法已经证明了对抗性学习的力量[61, 10, 62, 8, 53, 56, 42, 53]。例如交互式图像编辑[61, 10]、sketch2image[8, 43],以及其他图像到图像的翻译任务[62, 52, 54]。然而,所有这些方法都是在类别特定的数据集上训练的,而且正如上文所说,它们通常需要有另一个输入信号作为生成条件。我们对捕获同一类别图像之间的共同特征不感兴趣,而是考虑不同的训练数据源——在单个自然图像的多个尺度上所有重叠patch小块。我们证明了可以从这些数据中学到强大的生成模型,并将其用于许多图像处理任务中。
Fig.4:SinGAN的多尺度管道。 我们的模型由许多GANs组成一个金字塔,其中训练和推理都是以一种由粗到精的方式完成的。在每个尺度上, G n G_n Gn学习生成图像样本,其中用判别器 D n D_n Dn无法将所有的重叠patch小块与下采样训练图像 x n x_n xn中的patch小块区分开。当我们沿着金字塔向上移动时,有效的patch小块的大小会减小(在原始图像上用黄色标记以作说明)。 G n G_n Gn的输入是随机噪声图像 z n z_n zn,和生成的图像从之前的规模 x ~ n \tilde{x}_n x~n, 向上采样到当前分辨率(除了纯生成的最粗级别)。第 n n n级的生成过程涉及所有生成器 { G N … G n } \{G_N…G_n\} {GN…Gn}和所有的噪声映射 { Z N , … , Z n } \{Z_N, …, Z_n\} {ZN,…,Zn}到这个层次,见 Sec. 2。
Fig.5:单尺度的生成。 在每个尺度 n n n处,对前一个尺度 x ~ n + 1 \tilde{x}_{n+1} x~n+1 的图像进行上采样,并添加到输入噪声图 z n z_n zn 中。结果送入5个Conv卷积层,输出是一个残差图像,添加回 ( x ~ n + 1 ) ↑ r (\tilde{x}_{n+1})\uparrow^r (x~n+1)↑r 。这是 G n G_n Gn输出的 x ~ n \tilde{x}_{n} x~n。
我们的目标是学习一个无条件生成模型,它可以捕获单个训练图像 x x x的内部统计信息。这个任务在概念上与传统的GAN设定类似,只是这里的训练样本是单个图像的patch小块,而不是来自数据库的整个图像样本。
我们选择不局限于纹理生成,要能够处理更一般的自然图像。这需要在许多不同的尺度上获取复杂图像结构的统计信息。例如,我们希望捕获全局属性,例如图像中大型对象的排列和形状(例如顶部的天空,底部的地面),以及精细的细节和纹理信息。为了实现这一目标,我们生成框架如 Fig. 4 所示,由层次性的patch-GANs (马尔科夫判别器)组成[31,26],每个patch-GANs负责捕捉不同 x x x尺度的patch分布。GANs的接受域小,容量有限,因此无法记住单个图像。而类似的多尺度体系结构已经在传统的GAN设定环境中得到了探索(例如[28,52,29,52,13,24]),我们是第一个从单一的图像进行内部学习的探索。
我们的模型由发电机金字塔 { G 0 , . . . , G N } \{G_0, ... , G_N\} {G0,...,GN} 组成,针对 x : { x 0 , . . . , x N } x: \{x_0, ... , x_N\} x:{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负责产生真实的图像样本 w . r . t w.r.t w.r.t,相应图像 x n x_n xn中的色块分布。这是通过对抗训练实现的,在对抗训练中, G n G_n Gn学会欺骗相关的鉴别器 D n D_n Dn,该鉴别器试图将生成的patch小块与 x n x_n xn中的patch小块区分开。
图像样本的生成从最粗糙的级别开始,然后依次通过所有生成器,直到最精细的级别,并在每个级别注入噪声。所有的生成器和鉴别器都具有相同的接收域,因此在生成过程中捕获的结构尺寸都在减小。在粗尺度上,这一代是纯生成,即Gn映射空间高斯白噪声 z N z_N zN 到图像样本 x ~ N \tilde{x}_{N} x~N,
x ~ N = G N ( z N ) (1) \tilde{x}_{N} = G_N(z_N) \tag{1} x~N=GN(zN)(1)
这一层的有效接受域通常为图像高度的一半,因此 G N G_N GN 会生成图像和对象全局结构的总体布局。每个更小尺度上的生成器 G n ( n < N ) G_n (n < N) Gn(n<N) 都添加了以前的尺度没有生成的细节。因此,除了空间噪声 z n z_n zn外,每个生成器 G n G_n Gn还接受较粗尺度图像的上采样版本,即
x ~ n = G N ( z n , ( x ~ n + 1 ) ↑ r ) , n < N (2) \tilde{x}_{n} = G_N(z_n, (\tilde{x}_{n+1})\uparrow^r), n
所有的生成器都具有相似的架构,如 Fig. 5 所示。具体来说,噪音 z n z_n zn是添加到图像 ( x ~ n + 1 ) ↑ r (\tilde{x}_{n+1})\uparrow^r (x~n+1)↑r,被送入一个卷积序列层。这确保了GAN不会忽略噪声,就像随机条件规划中经常发生的那样[62,36,63]。卷积层的作用是生成的遗漏的细节 ( x ~ n + 1 ) ↑ r (\tilde{x}_{n+1})\uparrow^r (x~n+1)↑r(残差学习[22,57])。即 G n G_n Gn执行操作
x ~ n = ( x ~ n + 1 ) ↑ r + ψ n ( z n , ( x ~ n + 1 ) ↑ r ) (3) \tilde{x}_{n} = (\tilde{x}_{n+1})\uparrow^r + \psi_{n}(z_n, (\tilde{x}_{n+1})\uparrow^r) \tag{3} x~n=(x~n+1)↑r+ψn(zn,(x~n+1)↑r)(3)
其中 ψ n \psi_{n} ψn是一个有着5个Conv( 3 × 3 3 \times3 3×3)-BatchNorm-LeakyReLU[25]卷积块。我们在最粗糙的尺度上从每个块有 32 32 32个内核开始,然后每 4 4 4个尺度增加 2 2 2倍。因为生成器是全卷积的,所以我们可以在测试时生成任意大小和宽高比的图像(通过改变噪声图的尺寸)。
我们按顺序训练我们的多尺度体系结构,从最粗糙的尺度到最精细的尺度。一旦每个GAN被训练,它就会被固定下来。我们对第 n n n个GAN的训练损失包括一个对抗性公式和一个重构公式,
min G n max D n L a d v ( G n , D n ) + α L r e c ( G n ) \min_{G_{n}}\max_{D_{n}} \mathcal{L}_{adv}(G_n, D_n) + \alpha \mathcal{L}_{rec}(G_n) GnminDnmaxLadv(Gn,Dn)+αLrec(Gn)
对抗的损失 L a d v \mathcal{L}_{adv} Ladv惩罚patch小块之间的 x n x_n xn和patch小块分布生成的样本 x ~ n \tilde{x}_{n} x~n之间的距离分布。重构损失 L r e c \mathcal{L}_{rec} Lrec保证了一组特定的噪声映射的存在,这些噪声映射可以产生 x n x_n xn ,这是图像处理的一个重要特征(Sec. 4)。
对抗损失 每个生成器 G n G_n Gn都与一个马尔可夫链判别器 D n D_n Dn耦合,该判别器将其输入的每个重叠的patch小块分类为真或假[31,26]。
我们使 “WGAN-GP 损失” [20]来增加训练的稳定性,其中最终的判别分数是patch小块判别映射的平均值。相对于纹理的单图像GANs(例如,[31,27,3]),在这里,我们定义整个图像的损失,而不是随机剪裁(batchsize为1),这允许网络学习边界条件(见补充资料),这是我们设定的一个重要特性。 D n D_n Dn的架构和包含 G n G_n Gn在内的网络的 ψ n \psi_{n} ψn 相同,所以它的patch大小(网络的接受域)是 11 × 11 11\times11 11×11。
重构的损失 我们要确保存在一组特定的输入噪声映射,生成原始图像 x x x。我们具体选择
{ z N r e c , z N − 1 r e c , . . . , z 0 r e c } = { z ∗ , 0 , . . . , 0 } \{z_{N}^{rec}, z_{N-1}^{rec}, ... , z_{0}^{rec}\} = \{ z^*, 0, ... , 0\} {zNrec,zN−1rec,...,z0rec}={z∗,0,...,0},其中 z ∗ z^* z∗是一些固定的噪声映射(绘制一次,在训练时保持固定)。当使用这些噪声图时,用 x ~ n r e c \tilde{x}_{n}^{rec} x~nrec 表示在第 n n n个尺度上生成的图像。对于 n < N n < N n<N时,
L r e c = ∥ G n ( 0 , ( x ~ n + 1 r e c ) ↑ r ) − x n ∥ 2 (5) \mathcal{L}_{rec} = \parallel G_{n}(0, (\tilde{x}_{n+1}^{rec})\uparrow^r) - x_n\parallel ^2 \tag{5} Lrec=∥Gn(0,(x~n+1rec)↑r)−xn∥2(5)
对于 n = N n = N n=N,我们使用
L r e c = ∥ G n ( z ∗ ) − x n ∥ 2 \mathcal{L}_{rec} = \parallel G_{n}(z^*) - x_n\parallel ^2 Lrec=∥Gn(z∗)−xn∥2
重建图像 x ~ n r e c \tilde{x}_{n}^{rec} x~nrec,在训练中还有另一个角色,就是在每个规模中确定噪声 z n z_n zn的标准差 σ n \sigma_n σn。具体来说,我们把 σ n \sigma_n σn当成与 ( x ~ n + 1 r e c ) ↑ r (\tilde{x}_{n+1}^{rec})\uparrow^r (x~n+1rec)↑r和 x N x_N xN之间的均方根误差(RMSE)成正比,这表明需要在该尺度下添加的细节量。
我们对我们的方法进行了定性和定量的测试,包括城市和自然风景,以及艺术和纹理图像。我们使用的图像取自Berkeley Segmentation 数据集(BSD)[35]、Places[59]和Web。我们总是在最粗糙的刻度处设置最小尺寸为 25 p x 25px 25px,并选择刻度的数量 N N N s.t,比例因子 r r r尽可能接近 4 / 3 4/3 4/3。对于所有的结果,(除非另有说明),我们将训练图像调整为最大尺寸 250 p x 250px 250px。
我们生成的随机图像样本的定性示例如 Fig. 1, Fig. 6 所示,补充资料中包含了更多的示例。对于每个例子,我们都展示了一些随机样本,它们的宽高比与原始图像相同,并且在每个轴上都有缩小和扩大的尺寸。可以看出,在所有这些情况下,生成的样本描述了新的真实的对象结构和配置,同时保留了训练图像的视觉内容。我们的模型成功地保存了对象的全局结构,例如山脉(Fig. 1)、气球或金字塔(Fig. 6),以及精细的纹理信息。由于网络的接受域有限(小于整个图像),它可以生成训练图像中不存在的新patches小块组合。此外,我们注意到,在许多情况下反射和阴影是真实的合成,可以在Fig. 6和Fig. 1(Fig. 8的第一个样例)看到。注意,SinGAN的架构是与分辨率无关,因此可以用于高分辨率的图像,如Fig. 7中所示(见补充资料中 4Mpix 结果)。在这里,所有尺度的结构都很好地生成了从天空、云和山脉的整体布局,到雪的精细纹理。
Fig.6:随机图像样本。 通过对单个图像进行训练,可以生成描述新结构和目标配置的图像样本的逼真的随机图像,同时保留训练图像的patch小块分布。由于我们的模型是全卷积的,因此生成的图像可能具有任意大小和纵横比。请注意,我们的目标不是图像重定向–我们的图像样本是随机的和经过优化的,以维护patch小块分布,而不是保留突出的目标对象。更多结果和图像重定向方法的定性比较请参见补充资料SM。
Fig.7:高分辨率图像生成。 我们的模型生成的随机样本,经过 243 × 1024 243×1024 243×1024图像的训练(右上角),新的全局结构以及精细的细节被真实地生成。参见补充资料中的4Mpix示例。
测试中尺度数量的影响 我们的多尺度体系结构允许通过选择在测试时开始生成的尺度来控制样本之间的变化量。为了从比例 n n n开始,我们修正了噪声映射到这个比例为 { z N r e c , . . . , z N + 1 r e c } \{ z_{N}^{rec}, ... , z_{N+1}^{rec}\} {zNrec,...,zN+1rec},只对 { z n , . . . , z 0 } \{ z_{n}, ... , z_{0}\} {zn,...,z0}做随机描绘。其效果如 Fig. 8 所示。
可以看出,在最粗糙的尺度上开始生成 ( n = N ) (n = N) (n=N),全局结构有可能会发生较大变化。在某些情况下,一个大的突出的物体,如斑马图像的例子中,这可能导致生成不真实的样本。然而,从更细的尺度开始生成,就可以保持全局结构不变,而只改变更细的图像特征(例如斑马的条纹)。参见补充资料SM获得更多的例子。
Fig.8:从不同的尺度生成(在推理时)。 我们展示了从给定的 n n n级开始分层生成的效果。对于我们的完整生成方案 ( n = N ) (n = N) (n=N),最粗糙级的输入是随机噪声。为了生成更小比例的 n n n,我们插入向下采样的原始图像 x n x_n xn作为该比例的输入。这使得我们可以控制生成结构的规模,例如,我们可以保持斑马的形状和姿势,只有从 n = N − 1 n = N−1 n=N−1开始生成才能改变其条纹纹理。
训练中尺度数量的影响 Fig. 9 显示了使用较少的尺度尺度数量的训练效果。用少量的尺度,在最粗糙的水平上有效的接受域更小,只允许捕获精细的纹理。随着尺度数量的增加,出现了更大的支撑结构,全局对象的排列得到了更好的保留。
Fig.9:使用不同数量的规模进行训练的效果。 SinGAN架构中的规模数量对结果有很大的影响。只有少量比例的模型才能捕获纹理。随着规模数量的增加,SinGAN成功地捕捉到了更大的结构以及场景中物体的整体布局。
为了量化生成图像的真实性以及它们如何捕获训练图像的内部统计数据,我们使用了两个指标:(i) Amazon Mechanical Turk (AMT,亚马逊众包)“真实/虚假”用户研究,(ii)Frechet Inception距离[23]的新单图像版本。
AMT感知研究 我们遵循[26,58]的方案,在两种情况下进行感知实验。
(i)配对(真与假):研究人员向参与者展示了50个实验序列,每个实验中,一张假图像(由SinGAN生成)与它的真实训练图像进行1秒钟的对比。工作人员被要求挑选出假照片。
(ii)非配对(真或假):工作人员看到一张图片1秒钟,然后被问及这是否是假的。总共有50张真实的图像和50张不相关的假图像被随机分配给每个参与者。
我们对两种类型的生成过程重复了这两个过程:从最粗糙的( N N N)尺度开始生成,从 N − 1 N -1 N−1尺度开始生成(如Fig. 8所示)。为了量化生成图像的多样性,对于每个训练示例,我们计算每个像素超过100个生成图像的强度值的标准差(std),在所有像素上取平均值,然后根据训练图像的强度值的标准差(std)进行标准化。真实的图片是从"places"数据库[59]中随机选取的,来自山脉、丘陵、沙漠和天空的子类别。在这四个测试中,我们有50个不同的参与者。在所有测试中,前10个测试都是包含反馈的教程。结果见表1。
Table.1:"真/假"AMT测试。 我们报告了两个生成过程的混淆率:从最粗糙尺度 N N N开始(生成具有大量多样性的样本),从第二个最粗糙尺度 N − 1 N - 1 N−1开始(保留原始图像的全局结构)。在每种情况下,我们都进行了配对研究(real-vs.fake图像对显示),和一个未配对的(无论是假或真图像显示)。方差由bootstrap[14]估计。
正如所预料的那样,在未配对的情况下,混淆的比例总是更大,因此没有可比性。此外,很明显,混淆率随着生成图像的多样性而降低。然而,即使改变了大型结构,我们生成的图像也很难与真实图像区分开来(50%的分数意味着完全混淆了真实图像和虚假图像)。完整的测试图像包含在补充资料中。
单幅图像 Fréchet Inception Distance 接下来,我们将量化SinGAN在多大程度上捕获了 x x x的内部统计信息。GAN评价的一个常用指标是Frechet Inception Distance (FID)[23],它测量生成图像的深度特征分布与真实图像的分布之间的偏差。然而,在我们的设置中,我们只有一个真实的图像,并且对它的内部patch小块统计非常感兴趣。因此,我们提出了单图像FID (SIFID)度量。而不是使用激活向量。在Inception网络[49]的最后一个池化层(每个图像一个向量)之后,我们在第二个池化层(图中每个位置一个向量)之前使用卷积层输出的深层特征的内部分布。我们的SIFID是真实图像和生成的样本中这些特征的统计数据之间的FID。
Table.2:单图像FID(SIFID)。 我们将FID指标应用于单个图像,并报告50幅图像的平均分,对于完整的生成(第一行),以及从第二个最粗糙尺度(第二行)开始。与AMT结果的相关性表明,SIFID与人类的排名高度一致。
从表2中可以看出,规模 N − 1 N - 1 N−1生成的SIFID平均值低于规模 N N N生成的SIFID平均值,这与用户研究结果一致。我们还报告了SIFID分数和假图像的混淆率之间的相关性。请注意,这两者之间存在显著的(反)相关性,这意味着一个小的SIFID通常可以很好地指示出较大的混淆率。成对测试的相关性更强,因为SIFID是成对的措施(它作用于对 x n x_n xn, x ~ n \tilde{x}_{n} x~n)。
我们将探讨SinGAN在许多图像处理任务中的应用。为此,我们在训练后使用我们的模型,不进行架构更改或进一步调优,并对所有应用采用相同的方法。该思想是利用这样一个事实,即在推理时,SinGAN只能生成与训练图像具有相同patch分布的图像。因此,可以通过在 n < N n < N n<N的某个尺度将图像(可能是向下采样的版本)注入到生成金字塔中,并通过生成器将其前馈传输,从而使其patch分布与训练图像的patch分布匹配,从而进行操作。不同的注入规模导致不同的效果。我们考虑以下应用(更多结果和注入规模效应见补充资料SM)。
超分辨率 将输入图像的分辨率提高一个因子 s s s。我们训练我们的模型在低分辨率(LR)图像,重建低损失权重 α = 100 \alpha = 100 α=100和金字塔规模因子
s k \sqrt[k]{s} ks ( k ∈ N ) (k∈N) (k∈N)。由于小型结构往往在自然场景[18]的规模上反复出现,在测试时,我们通过一个 r r r因子对LR图像进行上采样,并将其(连同噪声)注入最后一个生成器 G 0 G_0 G0。我们重复 k k k次以获得最终的高分辨率输出。示例结果如Fig. 10所示。可以看出,我们重建的视觉性能超过了最先进的内部方法[51,46],外部方法的目的是PSNR最大化[32]。
Fig.10:超分辨率。 当SinGAN被训练在一个低分辨率的图像上时,我们能够超级分辨。这是通过迭代地对图像进行采样并将其输入到SinGAN的最精细的比例生成器来实现的。可以看出,SinGAN的图像质量优于SOTA内标法ZSSR[46]和DIP[51]。它也比EDSR[32]好,可以与SRGAN[30]相比,后者是在大型数据集上训练的外部方法。括号中显示了相应的PSNR和NIQE[40]。
有趣的是,它可以与外部训练的SR-GAN方法[30]相媲美,尽管它只暴露在一张图像中。在[4]之后,我们在BSD100数据集[35]上比较 Table.3 中 5 5 5种方法的失真程度(RMSE)和感知质量(NIQE[40])是两个根本冲突的需求[5]。可以看出,SinGAN在感知品质上非常优秀;其NIQE分数仅略低于SRGAN,其RMSE稍好一些。
Table.3:超分辨率评估。 在[5]之后,我们在BSD100[35]上报告了失真(RMSE)和感知性能(NIQE[40],越低越好)。可以看出,gan的性能与SRGAN[30]类似。
图画-图像(Paint-to-Image) 将剪贴画转换成逼真的图像。这是通过向下采样剪贴画图像并将其输入一个粗尺度(例如 N − 1 N−1 N−1或 N − 2 N−2 N−2)来实现的。从 Fig. 2 和 Fig. 11 可以看出,我们保留了画面的整体结构,真实地生成了与原图匹配的纹理和高频信息。我们的方法在视觉性能上优于风格迁移方法38,17。
Fig.11:Paint-to-Image。 我们在目标图像上训练SinGAN,并在测试时将一个向下采样的油漆注入到一个粗糙的水平。我们生成的图像保留了剪贴画的布局和一般结构,同时生成与训练图像匹配的真实纹理和精细细节。著名的风格迁移方法[17,38]在此任务中失败。
协调(Harmonization) 把粘贴的对象与背景图像融为一体。我们在背景图像上训练SinGAN,并在测试时注入原始粘贴的复合材料的下采样版本。在这里,我们将生成的图像与原始背景相结合。从图2和图13可以看出,我们的模型对粘贴对象的纹理进行了裁剪以匹配背景,并且经常比[34]更好地保留了对象的结构。缩放2, 3, 4通常会在保持对象结构和转移背景纹理之间取得良好的平衡。
Fig.13:协调。 我们的模型能够保持粘贴对象的结构,同时调整其外观和纹理。专用的协调方法[34]过度混合对象与背景。
编辑(Editing) 把图像中一个区域的内容复制粘贴到另一个区域后,仍然保持真实的观感。这里,我们再次将复合材料的下采样版本注入到粗糙规模之一。然后我们将SinGAN在编辑区域的输出与原始图像结合起来。如 Fig. 2 和 Fig. 12 所示,SinGAN重新生成了精细的纹理,并无缝地缝合了粘贴的部分,比Photoshop的Content-Aware-Move(内容感知剪切)效果更好。
Fig.12:编辑。 我们从原始图像(a)中复制并粘贴一些补丁,然后将编辑后的图像(b)的下采样版本输入到我们的模型的中间层(在(a)上进行预训练)。在生成的图像(d)中,这些局部编辑被转换成连贯的、逼真的结构。©与Photoshop的contentaware move比较。
单图像动画(SingleImage Animation) 创建一个简短的视频剪辑与现实物体的运动,从一个单一的输入图像。自然图像往往包含重复,这揭示了不同的“快照”在同一动态对象[55]的时间(例如,一群鸟的图像揭示了一个鸟的所有翼姿态)。使用SinGAN,我们可以沿着图像中物体的所有表象的表面前进,从而从一个单一的图像合成运动。我们发现,对于许多类型的图像,一个现实的效果是通过z空间中的随机漫步实现的,从 z r e c z^{rec} zrec开始的第一帧在所有的生成尺度(见补充资料视频)。
我们介绍了一个新的非条件生成方案SinGAN,它是从一个单一的自然图像中学习来的。我们展示了它不仅限于纹理的学习能力,并为自然复杂的图像生成多样的真实样本。与外部训练的生成方法相比,内部学习在语义多样性方面存在固有的局限性。例如,如果训练图像包含一条狗,我们的模型将不会生成不同犬种的样本。不过,我们的实验证明,SinGAN可以为广泛的图像处理任务提供一个非常强大的工具。
作者把原图按照一定的比例下采样,得到很多的下采样版本的样本图像,作者称这些样本为patch,用这些patches训练。
(这里patch样本并不是原图crop所得)
Generator : 假设有 N N N个尺度,最下面的第 N N N个尺度是最粗糙的,最上面的第0个尺度是最细的(finest)。最下面的 G N G_N GN的输入是高斯噪声 z N z_N zN,输出 x ~ N = G N ( z N ) \tilde{x}_N = G_N(z_N) x~N=GN(zN),然后 w ~ N \tilde{w}_N w~N 上采样得到 x ~ N ↑ r \tilde{x}_N \uparrow^r x~N↑r,将其和 z N − 1 z_{N-1} zN−1一起送到 G N − 1 G_{N-1} GN−1中,再向上也同理。
生成的图像的目标函数如下:
x ~ n = ( x ~ n + 1 ) ↑ r + ψ n ( z n , ( x ~ n + 1 ) ↑ r ) \tilde{x}_{n} = (\tilde{x}_{n+1})\uparrow^r + \psi_{n}(z_n, (\tilde{x}_{n+1})\uparrow^r) x~n=(x~n+1)↑r+ψn(zn,(x~n+1)↑r)
每个层接收放大的噪声图像和低分辨率图像作为输入。最初的层 G N G_N GN只输入噪音图像。两种图像是相同大小(宽度和高度的像素数)。在每一层中,输出与输入图像相同尺寸的图像。内容如下图所示,具有Residual的结构。因此,用被注入的噪音图像中,填充低分辨率图像 x ~ n + 1 ↑ r \tilde{x}_{n+1} \uparrow^r x~n+1↑r和高清晰度图像 x ~ n \tilde{x}_n x~n之间的细节。图中的5个灰色竖长矩形是5个卷积块,每个块 ψ n \psi_{n} ψn由Conv(3×3)-BatchNorm-LeakyReLU的组成(感受野: 11 × 11 11\times11 11×11)。我们在最粗略的尺度上从32个卷积核开始,每隔 4 4 4个尺度增加 2 2 2倍。因为生成器是全卷积的,我们可以通过改变噪声图的维度,生成任意尺寸和长宽比的图像。
Discriminator : 生成的图像 x ~ \tilde{x} x~ 和经过resize的patch x x x送到D中,论文中D采用马尔科夫判别器。
Discriminator 与 Generator 结构是相同的。
effective patch size :
最粗的那一个尺度上,输入的是原图经过下采样最小的patch,经过固定的11*11的感受野,因为输入的图像是原图缩小到很小的patch,即便是网络仅有很小的感受野,也能覆盖掉输入图像很大的区域,对应回原图,就是很大的区域。而越往细的尺度上,由于输入图像越来越大,感受野不变,能覆盖的尺度会越来越小。所以effective patch size越来越小,但也越关注细节,所以输出图像的细节更加丰富,逼真。
我们依次地训练我们的多尺度结构模型,从最粗略的GAN到最精细的GAN。一旦一个GAN被训练好,那么它就保持固定。对第n个GAN我们的训练Loss由一个对抗项和一个重建项组成:
min G n max D n L a d v ( G n , D n ) + α L r e c ( G n ) \min_{G_{n}}\max_{D_{n}} \mathcal{L}_{adv}(G_n, D_n) + \alpha \mathcal{L}_{rec}(G_n) GnminDnmaxLadv(Gn,Dn)+αLrec(Gn)
其中,对抗项损失 L a d v \mathcal{L}_{\mathrm{adv}} Ladv 惩罚了输入图像 x n x_{n} xn的Patch分布与生成样本 x ~ N \tilde{x}_{N} x~N的Patch分布的距离。而重建损失 L r e c \mathcal{L}_{\mathrm{rec}} Lrec则用于确保可以产生 x n x_{n} xn的噪声图的特定集的存在.
对抗损失
Discriminator的 L a d v \mathcal{L}_{\mathrm{adv}} Ladv 损失使用WGAN-GP损失;
重构的损失
对于 n < N n < N n<N
L r e c = ∥ G n ( 0 , ( x ~ n + 1 r e c ) ↑ r ) − x n ∥ 2 \mathcal{L}_{rec} = \parallel G_{n}(0, (\tilde{x}_{n+1}^{rec})\uparrow^r) - x_n\parallel _2 Lrec=∥Gn(0,(x~n+1rec)↑r)−xn∥2
对于 n = N n = N n=N
L r e c = ∥ G n ( z ∗ ) − x n ∥ 2 \mathcal{L}_{rec} = \parallel G_{n}(z^*) - x_n\parallel _2 Lrec=∥Gn(z∗)−xn∥2
重建图像 x ~ n r e c \tilde{x}_{n}^{rec} x~nrec,在训练中还有另一个角色,就是在每个规模中确定噪声 z n z_n zn的标准差 σ n \sigma_n σn。具体来说,我们把 σ n \sigma_n σn当成与 ( x ~ n + 1 r e c ) ↑ r (\tilde{x}_{n+1}^{rec})\uparrow^r (x~n+1rec)↑r和 x N x_N xN之间的均方根误差(RMSE)成正比,这表明需要在该尺度下添加的细节量。
将低分辨率图像作为输入,添加细节,生成高分辨率图像。因此,是通过反复应用Generator的最终 G 0 G_0 G0层来实现的。例如,如果想通过 k k k次的应用将分辨率提高到 4 4 4倍,则将各层的升级率设为 r = 4 k r=\sqrt[k]{4} r=k4,逐渐扩大并填充细节。
因为网络是多级的,在训练中有 N N N个尺度,但是在测试中,可以使用更少的尺度,或者改变所使用的的尺度,来控制生成图像的变化。比如从第 N − 2 N-2 N−2个尺度开始,就会生成一些更真实的样本。对比发现,从第 N N N个尺度生成的斑马,有很多条腿。但是从第 N − 1 N-1 N−1个尺度开始,生成的样本就很真实了。而且对于细节保留的更多。
参考:
https://blog.csdn.net/qq_34914551/article/details/102812286
https://zhuanlan.zhihu.com/p/97138846
https://tech.sina.com.cn/csj/2019-12-23/doc-iihnzahi9381320.shtml