【论文解析】StyleGAN3 - Alias-Free Generative Adversarial Networks

StyleGAN3: Alias-Free Generative Adversarial Networks

🔗 PDF Link 🍺 GitHub Code

Section 1 介绍

🏷预先补一个,首先俺也不太能明白Alias到底是啥个意思,就按照混叠来了…

由GAN生成的图像的分辨率和质量的改善使得图像越来越真实,被广泛的应用于图像编辑,风格领域转换以及视频生成。虽然已经发现了几种控制生成过程的方法,但合成过程的基本原理仍然半知半解。

在现实世界中,不同尺度的细节往往是层次化的。例如,移动头部会导致鼻子移动,而鼻子上的皮肤毛孔也会随之移动。传统生成器的结构也是类似这种层次化结构的:粗糙、低分辨率的浅层特征通过上采样层,逐层逐层的被细化,通过卷积来实现各个特征图的之间的局部混合,并利用非线性(🏷应该就说noise来影响头发丝、皱纹和肤色等)产生一些额外的细节信息。

我们观察到,尽管从GAN的结构已经依照现实世界形成了这种层次化的结构,但当前的GAN在图像生成时并没有以自然的层次方式合成图像:粗糙特征主要控制精细特征的存在,而不是它们的精确位置。相反,许多细节似乎是固定在像素坐标(🏷 这里的意思应该是当在做上采样的时候像素几乎是一对多匹配的,这就是这里提到的粗特征控制了精细特征的精确位置)。如图1所示,这种糟糕的“纹理粘附”在latent值变换的时候很明显,这种现象实际上与我们对于物体或者连续物体在空间中移动的原有印象有很大的出入。我们的目标是实现一个能够更贴合层次化变化更自然的一种对应的层次化结构,其中每个特征的精确亚像素位置都是专有继承自底层的粗特征(🏷解决像素的依赖性粘连问题,使得每一个像素的都是独立存的意思叭)。

image-1

*** 注:注意左图,下面的那一行是使用一个latent编码生成一堆图像后的均值,理论上(🏷没有像素粘连的情况下)来说应该是每一个像素都是模糊的(🏷因为每一个像素都应该是独立变化移动),但是看下图一对比就能很明显发现有一些锐化,没有StyleGAN3中的那么一致。*

事实表明,目前的网络结构可以有很多的技巧手段来绕过这种理想的层次结构进行图像生成。例如使用图像边界参考(🏷例如padding的使用实际上提示了图像的边界位置信息)、像素的噪声输入(🏷防止头发丝粘一起)、位置编码和混叠(🏷加入一些额外的位置信息)。

这是原文,有点长,但是大致意思应该是上面这个意思。

It turns out that current networks can partially bypass the ideal hierarchical construction by drawing on unintentional positional references available to the intermediate layers through image borders, per-pixel noise inputs and positional encodings, and aliasing.

关于生成图像中的混叠,尽管是一个微妙和关键的问题,很少受到关注GAN研究者的注意。

我们找到了两个可能的来源:

  • 非理想上采样(如最近邻、双线性或空洞卷积)产生的像素网格的微弱的印记。
  • 应用pointwise的非线性激活,如ReLU或者Swish

我们发现网络会去放大哪怕是最轻微的混叠,并在多个尺度上进行组合,这就成为了固定在图像坐标中的那些混叠状网格的基础。这个发现适用于深度学习中常用的所有过滤器,甚至图像处理中用到的高质量过滤器。

那么,我们如何消除这些不需要的辅助信息,从而防止网络去组合、使用这些错误信息呢?边界问题可以在稍大一点的图像边缘上进行操作来解决,但是对于混叠的问题就很难困难了。

我们首先注意到,混叠在经典的香农-奈奎斯特信号处理框架中能够得到最自然的处理,并将焦点切换到仅由离散样本网格表示的连续域上的带限函数(🏷对不起,每个字都看得懂…没太理解啥意思,后面在细化研究一下。)Now,成功消除位置参考的所有来源意味着,无论像素坐标如何变换(🏷应该就是对应latent编码的变换),细节都可以同样好地生成,这又相当于对所有层中的对亚像素实现平移(或是旋转)连续同变性。为此,我们尝试对StyleGAN2生成器的信号处理部分进行了一遍全面更新。

我们的贡献包括:

  • 我们很惊讶的发现当前的上采样滤波器,在抗混叠方面不够aggressive,并且需要衰减超过100分贝的极高质量滤波器。
  • 此外,通过考虑它们(指前面的第二点,逐点的非线性激活)在连续域中的影响并对结果进行适当的低通滤波,我们给出了逐点非线性引起的混叠的原则性解决方案。

最后,基于1×1卷积的模型经过修理后,生成了一个鲁棒的,旋转等变性的生成器。

一旦有效地抑制了混叠使得模型能够实现更自然的分层细化,其操作模式就会发生巨大变化:新添加的内部表征就会包含坐标系统使得细节能够正确的被匹配到表面上。这个方法显著改善了动画和视频的生成质量。新的StyleGAN3生成器在FID方面与StyleGAN2相当,但计算量略大一丢丢。模型代码已开源。

最近的一些研究在分类任务的背景下研究了CNN中平移等变性的缺陷。我们在这篇文献中拓展了对抗混叠方法的研究,并表明了加入了这些新的措施并不会对图像生成引入一些根本性的改变。群卷积神经网络(Group-equivariant CNNs)目的在于将权值共享的效率优势泛化到旋转和反射上(🏷传统CNN具有平移等变性,权值共享也依赖于平移等变性,群卷积的目的是将这个性质拓展到更大的群上,如旋转和反射)。我们的1×1卷积可以看作是连续的E(2)-equivariant模型的一个实例,它仍然与以逐通道的ReLU为例的非线性激活和调制相兼容。Dey等人对将90°旋转翻转等变的CNN应用到GAN上,结果显示这显著提高了数据利用效率。我们的工作与之是互补的,并不是为了提高效率。最近基于GAN的隐式网络通过相似的1×1卷积独立生成每个像素。虽然是等变的,这些模型不能帮助纹理粘附,因为他们没有使用层次化的上采样或者实现一个小小的抗混叠模块。

Section 2 通过连续信号解释等变性

在开始分析CNN的等变性之前,我们首先要重新思考一下网络中到底是什么信号在流动。即使数据以像素格中的值的形式进行存储,我们也不能天真地认为这些值就是信号。这么想的话会使得我们把操作看得太过简单。根据香农采样定理,一个有规律采样(假设采样率为 N N N)的信号可以表示任何频率在 0 0 0 N / 2 N/2 N/2采样率之间的连续信号。让我们考虑一个二维、离散采样的特征映射 Z [ x ] Z[x] Z[x],由不同大小的 D i r a c Dirac Dirac脉冲组成的规则网格,其中间隔为 1 / s 1/s 1/s单位,其中 s s s为采样率。这类似于一个无限的二维数值网格。

在给定 Z [ x ] Z[x] Z[x] s s s的情况下,Whittaker-Shannon插值公式表明,通过将离散采样的 D i r a c Dirac Dirac网格 Z [ x ] Z[x] Z[x]与理想插值滤波器 ϕ s \phi_{s} ϕs进行卷积,即可得其响应的连续表征(🏷其实也看明白这句就行了) z ( x ) = ( ϕ s ∗ Z ) ( x ) z(\boldsymbol{x})=\left(\phi_{s} * Z\right)(\boldsymbol{x}) z(x)=(ϕsZ)(x),其中 ∗ ∗ 表示连续卷积,且可以利用对 s i n ( x ) = s i n ( π x ) / ( π x ) sin(x) = sin(\pi x)/(\pi x) sin(x)=sin(πx)/(πx) 对其进行展开,展开结果为 ϕ s ( x ) = sinc ⁡ ( s x 0 ) ⋅ sinc ⁡ ( s x 1 ) \phi_{s}(\boldsymbol{x})=\operatorname{sinc}\left(s x_{0}\right) \cdot \operatorname{sinc}\left(s x_{1}\right) ϕs(x)=sinc(sx0)sinc(sx1) ϕ s \phi_s ϕs沿水平和垂直尺寸的频带限制为 s / 2 s/2 s/2(🏷这里其实就是奈奎斯特采样定理里面说的,采样频率要大于最高频率的2倍才能不失真),确保得到的连续信号捕获所有可以用采样率 s s s表示的频率。

从连续域到离散域的转换对应于在采样点对连续信号 z ( x ) z(x) z(x)进行采样得到 Z [ x ] Z[x] Z[x],我们定义采样点为采样间距的一半,采样点 z [ x ] z [x] z[x]位于“像素中心”,见图2左。二维 D i r a c Dirac Dirac梳状函数的点乘函数为
I I I s ( x ) = ∑ X ∈ Z 2 δ ( x − ( X + 1 2 ) / s ) \mathrm{III}_{s}(\boldsymbol{x})=\sum_{X \in \mathbb{Z}^{2}} \delta\left(\boldsymbol{x}-\left(X+\frac{1}{2}\right) / s\right) IIIs(x)=XZ2δ(x(X+21)/s)
image2

** 图2,注: 作图实际就是讲离散分布和连续分布的差异就是一个理想采样器的连续卷积和一个 D i r a c Dirac Dirac梳状函数的点乘。

我们将 z ( x ) z(x) z(x)中的单位平方 x ∈ [ 0 , 1 ] 2 x∈[0, 1]^2 x[0,1]2指定为感兴趣信号的区域(🏷看图2,就上图左边的第一张图,横纵坐标是1,这么说应该知道是哪块地方了叭)。在 Z [ x ] Z[x] Z[x]中,该区域有 s 2 s^2 s2个离散样本,但上面与 ϕ s \phi_s ϕs的卷积意味着单位正方形外的 Z [ x ] Z[x] Z[x]的值也影响其内部的 z ( x ) z(x) z(x)。因此,存储 s × s s×s s×s像素的特征映射是不够的;理论上,我们需要存储整个无穷大的 Z [ x ] Z[x] Z[x](🏷这里没太明白为什么要无穷大,难道是说每一个像素之间相互依赖,一直依赖到无穷远处?)。作为一种实用的解决方案,我们将 Z [ x ] Z[x] Z[x]存储为覆盖略大于单位正方形的区域的二维数组(看第3.2节)。

在有限带宽、连续的特征映射 z ( x ) z(x) z(x)和离散采样的特征映射 Z [ x ] Z[x] Z[x]之间建立了对应关系后,我们可以将焦点从通常的以像素为中心的信号视角转移。在本文的其余部分,我们将把 z ( x ) z(x) z(x)解释为实际需要被处理的信号,而离散采样的特征映射 Z [ x ] Z[x] Z[x]仅仅作为对其的一种方便的编码表示。

网络层的离散和连续表示

实际上神经网络是对离散采样的特征图进行操作。考虑在离散特征图上进行运算 F \mathbf{F} F(卷积、非线性等): Z ′ = F ( Z ) Z^{\prime}=\mathbf{F}(Z) Z=F(Z)。特征映射具有对应的连续对应项,因此我们在连续域中也有对应的映射: Z ′ = F ( Z ) Z'=\mathbf{F}(Z) Z=F(Z)。现在,可以看到在一个域中指定的操作在另一个域中执行相应的操作:
f ( z ) = ϕ s ′ ∗ F ( I I I s ⊙ z ) , F ( Z ) = III s ′ ⊙ f ( ϕ s ∗ Z ) \mathbf{f}(z)=\phi_{s^{\prime}} * \mathbf{F}\left(\mathrm{III}_{s} \odot z\right), \quad \mathbf{F}(Z)=\text{III}_{s^{\prime}} \odot \mathbf{f}\left(\phi_{s} * Z\right) f(z)=ϕsF(IIIsz),F(Z)=IIIsf(ϕsZ)
其中 ⊙ \odot 表示逐像素的点乘,其中 s s s s ′ s' s表示输入的和输出的采样率。注意在离散情况下, f \mathbf{f} f不得引入超出输出带宽限制 s ′ / 2 s'/2 s/2的频率内容。

2.1 等变性网络层

如果运算 f \mathbf{f} f在连续域中与二维平面的空间变换 t \mathbf{t} t支持交换运算,则运算 t \mathbf{t} t相对于它是等变的: t ∘ f = f ∘ t \mathbf{t} \circ \mathbf{f}=\mathbf{f} \circ \mathbf{t} tf=ft。我们注意到,当输入带宽限制为 s / 2 s/2 s/2时,等变运算不能产生高于输出带宽限制 s ′ / 2 s'/2 s/2的频率内容,否则不存在真实的离散输出表示。

本文主要研究两种类型的等变性:平移和旋转。在旋转的情况下,频谱约束稍微严格一些——旋转图像对应于旋转频谱,并且为了保证水平和垂直方向上的带宽限制,必须将频谱限制在半径为 s / 2 s/2 s/2的圆盘上。这既适用于初始网络输入,也适用于用于下采样的带宽限制滤波器,稍后将对此进行描述。

现在我们考虑典型的生成网络中的基本操作:卷积、上采样、下采样和非线性。在不失一般性的情况下,我们讨论了作用于单个特征图的操作:逐像素的线性组合要素对分析没有影响。

卷积

考虑具有离散核 K K K的标准卷积,我们可以将 K K K解释为与输入特征图处于同一网格中(🏷这里没咋明白,为啥是处在同一网格中,可能是说信号的采样率啥的信息与特征图保持一致的意思?),采样率为 s s s。离散域的操作可以被简单表示为 F ( Z ) = K ∗ Z \mathbf{F}(Z) = K * Z F(Z)=KZ,我们也可以得到连续情况下的卷积如下式:
f conv  ( z ) = ϕ s ∗ ( K ∗ ( I I I s ⊙ z ) ) = K ∗ ( ϕ s ∗ ( I I I s ⊙ z ) ) = K ∗ z \mathbf{f}_{\text {conv }}(z)=\phi_{s} *\left(K *\left(\mathrm{III}_{s} \odot z\right)\right)=K *\left(\phi_{s} *\left(\mathrm{III}_{s} \odot z\right)\right)=K * z fconv (z)=ϕs(K(IIIsz))=K(ϕs(IIIsz))=Kz
由于卷积的交换性以及与理想低通滤波器(两者具有相同的采样率s)的离散化之后的卷积是恒等运算,即 ϕ s ∗ ( I I I s ⊙ z ) = z \phi_s * (\mathbf{III}_s \odot z) = z ϕs(IIIsz)=z(🏷互为逆运算且可交换的意思)。换言之,卷积通过在特征图的连续表示上连续滑动离散核来操作。这种卷积不会引入新的频率,因此平移和旋转前后要求的带宽限制不变要求都得到了很好的满足(🏷个人理解,实际上就是说图像的像素点数并没有改变的意思叭)。

卷积在连续域中也是平移等变的。对于旋转等变性的问题,离散核 K K K需要径向对称。我们稍后在3.2节证明了对称的 1 × 1 1×1 1×1(🏷这也没太看明白,原文是trivially symmetric,但是1x1怎么个对称呢… 挠头)卷积核,尽管它们很简单,但对于旋转等变的生成网络而言是一个可行的选择。

上采样和下采样

理想上采样不改变连续域的特征表示。它的唯一目的是增加输出采样率( s ′ > s s' > s s>s),以增加频谱中的余量(🏷对不起属实没明白这个add headroom是个啥意思,可能就是说给原本的特征点之间留点采样空间用以后续丰富信息的意思叭),以便后面层可能引入额外的特征信息。上采样是连续域中的一种恒等运算,因此平移和旋转也具有同变性。当 f ( z ) u p = z \mathbf{f}(z)_{up}=z f(z)up=z时,其离散操作为 F u p ( Z ) = I I I s ′ ⊙ ( ϕ s ∗ Z ) \mathbf{F}_{up}(Z)=\mathbf{III}_{s'}\odot (\phi_{s} * Z) Fup(Z)=IIIs(ϕsZ)。如果我们选择整数 n n n(🏷理解为放大倍数),并使得 s ′ = n s s' = ns s=ns,这个操作可以通过先把 0 0 0插空到 Z Z Z里以增加它的采样率,然后将它与离散滤波器 I I I s ′ ⊙ ϕ s \mathbf{III}_{s'}\odot \phi_s IIIsϕs卷积来实现。

在下行采样中,我们必须用低通滤波器 z z z去除了输出带限以上的频率,这样信号才能在更粗粒度的离散化序列中被完整地表示。连续域的运算为 f d o w n ( z ) = ψ s ′ ∗ z \mathbf{f}_{down}(z) = \psi_{s'}*z fdown(z)=ψsz,其中 ψ s ′ : = s 2 ⋅ ϕ s \psi_{s'}:=s^2 \cdot \phi_s ψs:=s2ϕs是理想的低通滤波器,即对应的归一化到单位质量(unit mass)的插值滤波器。离散形式对应如下式:

F d o w n ( Z ) = I I I s ′ ⊙ ( ψ s ′ ∗ ( ϕ s ∗ Z ) ) = 1 / s 2 ⋅ I I I s ′ ⊙ ( ψ s ′ ∗ ψ s ∗ Z ) = ( s ′ / s ) 2 ⋅ I I I s ′ ( ϕ s ′ ∗ Z ) \mathbf{F}_{down}(Z)=\mathbf{III}_{s'} \odot (\psi_{s'} * (\phi_s * Z)) = 1/s^2 \cdot \mathbf{III}_{s'} \odot (\psi_{s'} * \psi_s * Z) = (s' / s)^2 \cdot \mathbf{III}_{s'}(\phi_{s'} * Z) Fdown(Z)=IIIs(ψs(ϕsZ))=1/s2IIIs(ψsψsZ)=(s/s)2IIIs(ϕsZ)

后面那半部分的式子来源自 ψ s ∗ ψ s ′ = ψ m i n ( s , s ′ ) \psi_{s} * \psi_{s'} = \psi_{min(s, s')} ψsψs=ψmin(s,s)。与上采样相似,以一个整数进行下采样可以通过离散卷积然后去掉一部分采样点来实现(🏷注意上采样是插值 0 0 0然后等待卷积填充信息)。由 f d o w n ( z ) \mathbf{f}_{down}(z) fdown(z)得到的平移的交换性会自动得到平移等变性,但对于旋转等变性,我们必须用具有圆盘型频率响应(disc-shaped frequency response)的径向对称滤波器代替 ϕ s ′ \phi_{s'} ϕs。这类理想的滤波器由 ϕ s ∘ ( x ) = j i n c ( s ∥ x ∥ ) = 2 J 1 ( π s ∥ x ∥ ) / ( π s ∥ x ∥ ) \phi_{s}^{\circ}(\boldsymbol{x})=\mathrm{jinc}(s\|\boldsymbol{x}\|)=2 J_{1}(\pi s\|\boldsymbol{x}\|) /(\pi s\|\boldsymbol{x}\|) ϕs(x)=jinc(sx)=2J1(πsx)/(πsx)给出,其中 J 1 J_{1} J1为第一类一阶贝塞尔函数(first order Bessel function of the first kind)(🏷对不起,崩了…,参考文献给了一本书Theory of remote image formation属实不知道从哪里开始看了)。

非线性

在离散域中应用逐像素的非线性 σ \sigma σ不能实现平移或旋转的交换。然而,在连续域中,任何逐像素的函数都可以正常地与进行几何交换,从而等价的平移和旋转。带宽限制是另一个问题——例如,在连续域中应用ReLU可能会引入一些不能在输出中进行表示的随机高频(arbitrarily high frequencies)。

一个自然的解决方案是将结果与理想低通滤波器 ψ s \psi_s ψs进行卷积来消除干扰高频分量。然后,在连续域里非线性操作就可以被表示为 f σ ( z ) = ψ s ∗ σ ( z ) = s 2 ⋅ ϕ s ∗ σ ( z ) \mathbf{f}_{\sigma}(z)=\psi_{s} * \sigma(z)=s^{2} \cdot \phi_{s} * \sigma(z) fσ(z)=ψsσ(z)=s2ϕsσ(z),离散情况下的表示为 F σ ( Z ) = s 2 ⋅ ( ϕ s ∗ σ ( ϕ s ∗ Z ) ) \mathbf{F}_{\sigma}(Z)=s^2 \cdot (\phi_s * \sigma(\phi_s * Z)) Fσ(Z)=s2(ϕsσ(ϕsZ)),(见图2,右)(🏷这里看图2可以很清楚了,实际上就是在ReLU激活之后使用一个低通滤波,把那个越变区域地部分尽可能地缓和)。如果不暂时进入连续域表示,这种离散操作就无法实现(🏷没太看明白,感觉是在回答离散域无法实现平移和旋转恒等变换的问题)。我们对信号进行上采样,在高分辨率下应用非线性,然后再对其进行下采样来进行近似。这样,即使非线性操作虽然仍然是在离散域进行的,但是我们发现只需要2倍临时扩大的分辨率就已经完全足够实现高质量的图像等变了。对于旋转等变,我们必须在下采样中使用径向对称插值滤波器 ϕ s ∘ \phi_{s}^{\circ} ϕs,如上所一章节描述。

注意,在我们的公式中,非线性是唯一能够产生新频率的操作,在最后的离散操作之前,我们可以通过应用一个截断比 s / 2 s/2 s/2更低的重构滤波器来限制这些新频率的范围。这使我们能够精确控制生成器网络的每一层引入多少新信息(第3.2节)。

Section 3 在生成器中实际应用

🏷这一章节就是理论联系实际了。

现在,我们将将完善的StyleGAN2生成器转换为平移和旋转等价版的新款生成器。我们将逐步介绍必要的更改,并评估它们的影响,如图3。在我们的实验中,判别器的结构保持不变。

** 图3,注:说是图,结果是两张表…

StyleGAN2生成器由两部分组成。首先,mapping网络首先把一个初始按照正态分布生成的变量生成一个latent code w ∼ W \mathbf{w} \sim \mathcal{W} wW。然后,生成网络G 4 × 4 × 512 4×4×512 4×4×512常数 Z 0 Z_0 Z0开始经过 N N N层包含卷积、非线性激活、上采样以及逐像素的噪声的操作,生成了一张输出图像: Z N = G ( Z 0 ; w ) Z_N = \mathbf{G}(Z_0; \mathbf{w}) ZN=G(Z0;w)。latent code(潜编码) w \mathbf{w} w控制了对于生成网络G中特征图的调制(modulation)。每一层都严格地只进行2倍上采样,在每一个分辨率上都添加两层处理,且每次上采样之后地特征图数量减半。此外,StyleGAN2使用了跳跃连接,混合正则化和路径长度正则化。

我们的目标是使G的每一层与连续信号一样具有等变性,这样所有的精细特征将会在一个邻域内随着粗糙特征一起进行变换。如果这是有效的,那么理论上整个网络也会具有等变性。换句话说,我们的目的是使用连续域操作 g g g组成的生成网络G具有等变性,也就是说对于一个连续输入 z 0 z_0 z0平移和旋转变化: g ( t [ z 0 ] ; w ) = t [ g ( z 0 ; w ) ] \mathbf{g}\left(\mathbf{t}\left[z_{0}\right] ; \mathbf{w}\right)=\mathbf{t}\left[\mathbf{g}\left(z_{0} ; \mathbf{w}\right)\right] g(t[z0];w)=t[g(z0;w)]是一致的。为了评估各种结构变化和近似操作的结果影响,我们需要一种方法来衡量网络实现等变的效果。对于平移等变性,我们评估了两组图像之间的峰值信噪比(PSNR),该值是通过对合成网络的输入和输出进行随机量的平移得到:
E Q − T = 10 ⋅ log ⁡ 10 ( I max ⁡ 2 / E w ∼ W , x ∼ X 2 , p ∼ V , c ∼ C [ ( g ( t x [ z 0 ] ; w ) c ( p ) − t x [ g ( z 0 ; w ) ] c ( p ) ) 2 ] ) \mathrm{EQ}-\mathrm{T}=10 \cdot \log _{10}\left(I_{\max }^{2} / \mathbb{E}_{\mathbf{w} \sim \mathcal{W}, x \sim \mathcal{X}^{2}, p \sim \mathcal{V}, c \sim \mathcal{C}}\left[\left(\mathbf{g}\left(\mathbf{t}_{x}\left[z_{0}\right] ; \mathbf{w}\right)_{c}(p)-\mathbf{t}_{x}\left[\mathbf{g}\left(z_{0} ; \mathbf{w}\right)\right]_{c}(p)\right)^{2}\right]\right) EQT=10log10(Imax2/EwW,xX2,pV,cC[(g(tx[z0];w)c(p)tx[g(z0;w)]c(p))2])
每一对图像对应于不同的随机选择 w \mathbf{w} w,在它们有效的区域 V \mathcal{V} V内的整数像素位置 p p p上采样。颜色通道 c c c进行独立处理,生成的图像的预期动态范围为 − 1 … + 1 −1…+1 1+1,且 I m a x = 2 I_{max} = 2 Imax=2。运算符 t x t_x tx使用2D偏移 x x x实现空间平移,这里绘制的是整数偏移量的分布 X 2 \mathcal{X}^2 X2。我们定义了一个类似的度量旋转 E Q − R \mathbf{EQ-R} EQR,旋转角度从 U ( 0 ° , 360 ° ) \mathcal{U}(0\degree, 360\degree) U(0°,360°)

3.1 傅里叶特征以及基线模型简化(configs B-D)

为了便于对输入 z 0 z_0 z0施加精确的连续平移和旋转,我们将StyleGAN2中学习的输入常数替换为傅里叶特征,这也具有一个自然优势,就是可以在无限空间中进行采样映射。我们在 f c = 2 f_c = 2 fc=2的圆形频带内均匀采样频率,用以匹配原始的 4 × 4 4×4 4×4输入尺寸,并在训练过程中保持固定。这个操作(图3中configs的A和B,左)稍微改善了FID,而且,关键的是,这个操作使得我们可以计算等变性的评估,而不需要近似算子 t t t(🏷这个需要去看一下论文1论文2,前者说了在低维空间内使用傅里叶变化可以使得模型更好得理解高维空间信息,后者指出GAN里面的空间编码其实来自于zero padding,实际也可以添加通过添加位置编码来添加这种归纳偏置。🏷简单瞥了几眼代码,这里意思大概、应该、可能、probably就是在频域空间内就可以用仿射变换先把平移和旋转给施加到了潜编码上,而对于原始图像只需要人工加旋转平移就行了)。这个基线结构远不是等变的;我们附带的视频显示,当输入特征从原始位置平移或旋转时,输出图像会急剧恶化。

接下来,我们去除了噪声输入,因为它们与我们的自然转换层次结构的目标非常不一致,也就是说,每个特征的精确亚像素位置只从底层粗特征继承。当单独考虑这种更新(configs C)时,它未能改善等变性。

为了进一步简化设置,我们减小了mapping网络深度,并且不使用混合正则化和路径长度正则化。最后,我们还丢掉了输出的skip connection。在训练过程中,我们跟踪所有特征图上的像素值的指数滑动平均 σ 2 = E [ x 2 ] \sigma^{2}=\mathbb{E}\left[x^{2}\right] σ2=E[x2],并将特征图除以 σ 2 \sqrt{\sigma^{2}} σ2 。在实际应用中,为了提高效率,我们将除法转化融合到卷积权重中。这些更改(configs D)使FID恢复到原始StyleGAN2的水平,同时略微改善了模型的等价性性能。

3.2 持续解释并一步步推进重新涉及网络结构

边界以及上采样(config E)

前面所有的理论假设特征图的空间范围是无限的(🏷看前面的图2的意思叭),通过在优化曲面的附近使用固定大小的区域来近似。这种显式边界填充是必要的,因为众所周知,边界填充会将绝对图像坐标泄漏到内部表示中。在实践中,我们发现10像素的边界就足够了,进一步的增加对结果没有明显的影响。

基于理论模型,尝试使用理想低通滤波器的一个更好的近似代替了 2 × 2× 2×双线性上采样。我们使用一个加窗 s i n c sinc sinc滤波器(🏷 s i n c sinc sinc滤波器时域里就是一个 s i n c sinc sinc函数, s i n c ( x ) = sin ⁡ ( π x ) π x {\displaystyle \mathrm {sinc} (x)={\frac {\sin(\pi x)}{\pi x}}} sinc(x)=πxsin(πx)),设置一个相对较大的 K a i s e r Kaiser Kaiser窗,其中大小 n = 6 n = 6 n=6,这意味着在上采样时每个输出像素会受到6个输入像素的影响,在下采样时每个输入像素会影响6个输出像素。 K a i s e r Kaiser Kaiser窗对于我们的目标是一个特别好的选择,因为它提供了对过渡带和衰减的明确控制(图4a)(🏷的主瓣和 K a i s e r Kaiser Kaiser旁瓣宽度可以同时调节)。

这里插文章附录C.1关于 K a i s e r Kaiser Kaiser低通滤波器设计部分的介绍。

在一维的情况下,连续时间域下的理想低通滤波器(截断频率 f c = 0.4 f_c=0.4 fc=0.4)由 ψ ( x ) = 2 f c ⋅ sinc ⁡ ( 2 f c x ) \psi(x) = 2 f_{c} \cdot \operatorname{sinc}\left(2 f_{c} x\right) ψ(x)=2fcsinc(2fcx)给出,其中 s i n c ( x ) = s i n ( π x ) / ( π x ) sinc(x) = sin(\pi x)/(\pi x) sinc(x)=sin(πx)/(πx)。理想低通滤波器在截至频带部分无限衰减。对应的其脉冲下相应也是一个无穷大的值,这就导致了三个不可实现的理由:实现效率,边界伪影以及振铃效应(🏷似乎这三个理由都是2D图像领域的?)。解决这些问题的常规方法是使用加窗滤波器来限制无限延展的时域信号:
h K ( x ) = 2 f c ⋅ sinc ⁡ ( 2 f c x ) ⋅ w K ( x ) h_{K}(x)=2 f_{c} \cdot \operatorname{sinc}\left(2 f_{c} x\right) \cdot w_{K}(x) hK(x)=2fcsinc(2fcx)wK(x)
其中, w K ( x ) w_{K}(x) wK(x)是窗函数, h K ( x ) h_{K}(x) hK(x) ψ ( x ) \psi (x) ψ(x)的一个实际近似。不同的窗函数有不同的频响特性以及空间范围,并在两者之间有着一些tradeoff,即空间范围越小,衰减越小。本文使用了 K a i s e r Kaiser Kaiser窗,对这两者提供了共同控制。 K a i s e r Kaiser Kaiser窗的定义如下:
w K ( x ) = { I 0 ( β 1 − ( 2 x / L ) 2 ) / I 0 ( β ) ,  if  ∣ x ∣ ≤ L / 2 0 ,  if  ∣ x ∣ > L / 2 w_{K}(x)= \begin{cases}I_{0}\left(\beta \sqrt{1-(2 x / L)^{2}}\right) / I_{0}(\beta), & \text { if }|x| \leq L / 2 \\ 0, & \text { if }|x|>L / 2\end{cases} wK(x)={I0(β1(2x/L)2 )/I0(β),0, if xL/2 if x>L/2
其中 L L L表示我们想要的空间范围, β \beta β是一个自由变量用于控制窗口的形状(🏷这么就是通过这个参数来控制主瓣和旁瓣,这个值越大主瓣宽度增加,旁瓣大小减少,当为0的时候对应长方形的窗函数,越大越接近时频域下的形状都会接近高斯曲线), I 0 I_0 I0是0阶第一类修正贝索函数。注意窗在窗边界具有不连续性。对于离散信号:

h K [ i ] = h K ( i − n − 1 2 s ) s ,  for  i ∈ { 0 , 1 , … , n − 1 } h_K[i] = \frac{h_K(\frac{i-\frac{n-1}{2}}{s})}{s}, \text { for } i \in\{0,1, \ldots, n-1\} hK[i]=shK(si2n1), for i{0,1,,n1}

其中 s s s是采样率, h K [ i ] h_K[i] hK[i] h K ( x ) h_K(x) hK(x)的离散版本, n n n是离散抽样的位置的数量。奇数个采样值的脉冲最大值在原始位置,偶数个的时候会产生半个 s s s的移位。

本文使用的滤波器是归一化的,即 ∑ i h K [ i ] ≈ 1 \sum_{i} h_{K}[i] \approx 1 ihK[i]1。我们发现将其显式归一化是有益的,可以避免累计偏差。

现在,我们选择采用临界抽样(🏷过采样听过吧,欠采样听过吧,临界采样就是既不过也不欠,就是既不 > > >,也不 < < <,欸就是 = = =)并设置滤波器截止 f c = s / 2 f_c = s / 2 fc=s/2。回想第二章的描述,采样率就是图像的分辨率。

这部分的改善促进了平移不变性,但是FID值增加了16%,可能是因为这限制了特征图内可以包含的特征的内容。在图3右边那半部分可以发现,小的核会损伤平移不变性,但是越大的核训练时间越长。(🏷感觉这里FID掉了是一个很正常的事,结合图4a,主瓣的宽度实际上越宽,频率的分辨率应该是越低的)

image4

** 图4,(a)以1维的形式展示 2 × 2× 2×上采样滤波器的形式,其中 n = 6 , s = 2 , f c = 1 , f h = 0.4 n=6,s=2,f_c=1,f_h=0.4 n=6,s=2,fc=1,fh=0.4对应蓝线条,其中绿线对应 f h = 0.6 f_h=0.6 fh=0.6,可以发现绿线比蓝线在阻带的纹波更低,也就是更低的衰减(🏷加窗的最终目的就是让能能量更多地集中在主瓣)。

🏷这一张其实别看上面一堆乱七八糟的玩意儿,其实就是在将插值,怎么插,就是用加窗sinc函数插值,窗函数是啥,就是 K a i s e r Kaiser Kaiser窗。

首先,线性插值会叭,就是两个点之间要插一个值,那么两个点之间的值就是两点的均值,因为要保证插入值之后,三个点是线性关系。然后, s i n c sinc sinc插值啥意思,线性插值是要保证线性关系, s i n c sinc sinc就是保证插值之后近似正弦波呗。插值公式是啥,直接给你: f ( x ) = ∑ i f d ( i ) s i n c ( x − i ) f(x)=\sum_{i} f_{d}(i) sinc(x-i) f(x)=ifd(i)sinc(xi),可以看成是一个卷积的过程,卷积核就是 s i n c sinc sinc函数,理论上要无数个点(因为 s i n c sinc sinc理论上是无限衰减的),这不现实,所以就加窗截断呗。此外,我们还发现 s i n c sinc sinc插值还有一个小问题,就是在针对高梯度的区域进行插值的时候,会出现Gibbs振铃现象。然后我们就可以使用 K a i s e r Kaiser Kaiser窗来做一下处理,为什么是这个窗呢前面有讲,也就是用 K a i s e r Kaiser Kaiser窗对 s i n c sinc sinc核再做一下归一化,使得GAIN(增益归一化),如果不归一化的话不同采样点之间会有误差。就这么简单呗。

其实所有的一切都可以看这个,虽然是在音频领域的,但是看这个比看论文明白一点,毕竟论文篇幅有限…

非线性滤波(config F)

我们对非线性处理的要求在对 m × m× m×上采样和 m × m× m×下采样之间包装每个泄漏(🏷在不可到处丢信息?)的ReLU(或任何其他常用的非线性函数),对于某个放大系数 m m m。我们还注意到,上采样和卷积的顺序可以通过受限带宽的信号带来切换(🏷不清楚啥意思),从而允许我们将与非线性相关的常规 2 × 2× 2×上采样和后续 m × m× m×上采样融合到单个 2 m × 2m× 2m×上采样中。实际上,我们发现 m = 2 m = 2 m=2就足够了(图3,右),再次提高了EQ-T (config F)。使用使用当前框架下的实现Upsample-LReLU-Downsample序列效率不高,因此我们实现了一个定制的CUDA内核,它结合了这些操作(图4b),从而使训练速度提高了10倍,并节省了大量内存。

非临界采样(config G)

临界采样方案(滤波器截止值精确设置在带宽极限)非常适合许多图像处理应用,因为它在抗混叠和保留高频细节之间取得了良好的平衡。然而,我们的目标明显不同,因为混叠对生成器的等变性有大害。虽然高频细节在输出图像中很重要,相反在早期的特征图中就不那么重要了。

为了抑制混叠,我们可以简单地将截止频率降低到 f c = s / 2 − f h f_c = s/2−f_h fc=s/2fh,从而确保所有混叠频率( s / 2 s/2 s/2以上)都在阻带。例如,降低图4a中蓝色滤波器的截止值将使其频率响应向左移动,从而使混叠频率的最坏情况衰减从6 dB改善到40 dB。这种过采样可以看作是更好的抗混叠的策略(🏷应该就是把高频特征滤掉了?毕竟前面说了浅层的高频信息不重要),因为我们现在使用相同数量的采样点来表示比以前变化更慢(🏷高频么的了的意思么)的信号。在实践中,我们选择在除最高分辨率的层以外的所有层上降低 f c f_c fc,因为最终生成器必须能够生成清晰的图像来匹配训练数据。由于信号现在包含更少的空间信息,我们修改了用于确定特征图数量与 f c f_c fc成反比,而不是与采样率 s s s成反比。这些变化(配置G)进一步提高了平移等变性,FID比原来的StyleGAN2低了。

改用傅里叶特征(config H)

具有等变性的生成器层非常适合具有未对齐和任意方向的图像数据集建模,因为对中间特征 z i z_i zi的任何几何变换都将直接传递到最终图像 z N z_N zN。然而,由于层本身引入全局变换的能力有限,输入特征 z 0 z_0 z0在定义 z N z_N zN的全局方向方面起着至关重要的作用。生成器应该理应具有从 w \mathbf{w} w改变 z 0 z_0 z0的能力。这促使我们引入了仿射层(🏷如我上面所言。。),输出全局平移和旋转参数输入傅里叶特征(图4 b和附录F)。在config H中,这稍微改善了FID。

平移等变性(config T)

我们的改变极大地提高了等变性,但是一些可见的伪影仍然保留在我们的演示视频中。经过仔细观察,我们发现滤波器的衰减(config G)对于最低分辨率的层来说仍然是不够的。这些层往往在其带宽限制附近有丰富的频率信息,这就需要非常强的衰减来完全消除混叠。特别地,我们希望跳频在最低分辨率层中较高,以最大化阻带的衰减,但在最高分辨率层中较低,以匹配高频细节。

图4c举例说明了在一个14层生成器中,最后有两个临近采样的全分辨率层。截止频率呈几何级数增长,从第一层的 f c = 2 f_c = 2 fc=2增长到第一层的 f c = s N / 2 f_c = s_N /2 fc=sN/2。我们选择最小可接受的阻带频率从 f t , 0 = 2 2.1 f_{t,0} = 2^{2.1} ft,0=22.1,它呈几何级数增长,但比截止频率慢。在我们的测试中,最后一层的阻带目标为 f t , 0 = 2 0.3 f_{t,0} = 2^{0.3} ft,0=20.3,但StleGAN2的渐进上采样的层的第一个临界采样的层停止。接下来,我们为每一层设置采样率 s s s,以便它能容纳 f t f_t ft的频率,并在不超过输出分辨率的情况下舍入到2的下一次方。最后,最大化混叠频率的衰减,我们设置了 f h = m a x ( s / 2 , f t ) − f c f_h=max(s/2,f_t) - f_c fh=max(s/2,ft)fc。使用该方案,第一层阻带衰减从42 dB提高到480 dB。

旋转等变性(config G)

为了得到旋转等变性网络,我们做出了两个改变。首先,我们将所有层上的3×3卷积替换为1×1,并通过将feature map的数量增加一倍来弥补减少的特征容量。在这个config G中,只有上采样和下采样操作在像素之间传递信息。其次,我们使用相同的 K a i s e r Kaiser Kaiser窗方案(附录C)构造径向对称的基于 j i n c jinc jinc的下采样滤波器来替代 s i n c sinc sinc加窗函数。我们对所有层都这样做,除了最后俩临界采样的层,因为匹配潜在的非径向频谱很重要。这些改变(config R)在不损害FID的情况下提高了EQ-R,尽管每一层的可训练参数减少了56%。

在此配置中,我们还采用了额外的稳定技巧。在训练的早期,我们使用高斯滤波来讲鉴别器判别的所有图像都进行一些模糊。我们从 σ = 10 \sigma =10 σ=10像素开始,在前200k张图像中逐渐减小到零。这可以防止鉴别器在早期过多地关注高频信息。如果没有这个技巧,config R很容易早期崩溃,因为生成器通常会早训练的很早期久长时学习高频信息。

Section 4 结果

这部分看百度搜到的文章,没有什么他们写的更多了。

  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值