GANgealing 笔记(稠密视觉对齐,通过GAN监督学习,不需要对齐的数据集)

GANgealing 笔记(稠密视觉对齐,通过GAN监督学习,不需要对齐的数据集)

《GANgealing**😗* GAN-Supervised Dense Visual Alignment》

主页:https://www.wpeebles.com/gangealing

论文:https://arxiv.org/abs/2112.05143

项目:https://github.com/wpeebles/gangealing

英文讲解:BV1gS4y1D7TD

朱俊彦团队最新论文:GAN监督学习给晃动猫狗加表情,丝滑又贴合


看这篇的理由是,要实现隐式的重建动漫人体,我们需要一种能处理遮挡的稠密视觉对齐(也就是align),来作为坐标编码。

该方法能够很好的产生 align ,但是实验显示,该方法对遮挡的抗性很弱。不知道在训练时对 STN 的输入做随机 mask 能否克服这一点。

在对比实验中提到了一个 RAFT ,这个看起来效果也还行,但是在展示中, RAFT 有时会在某一帧突然崩坏,然后无法恢复。不过也许 RAFT 还是有可借鉴的地方,有空去看看。

这篇应该会提到很多 align 领域的文章,可以试着顺着爬一下看看。

流程总结

简单来说就是:

用 StyleGAN2 生成样本对 ( x , y ) (\boldsymbol{x}, \boldsymbol{y}) (x,y) ,其中 x \boldsymbol{x} x 是一个随机采样的不对齐的图片,而样本 y \boldsymbol{y} y x \boldsymbol{x} x 的对齐的版本。然后训练一个 Spatial Transformer 将 x \boldsymbol{x} x 对齐到 y \boldsymbol{y} y

这里的关键是,产生 y \boldsymbol{y} y 的过程是可学习的。我认为这是该方法区别于一般的用 GAN 合成数据训练 图像翻译 模型的主要特征。

在这里插入图片描述 y \boldsymbol{y} y 是通过操纵 x \boldsymbol{x} x 的隐编码产生的,而产生 y \boldsymbol{y} y 的过程是有可学习的参数的,会跟着 Spatial Transformer Network 一起学习,从而可以产生更对齐的 y \boldsymbol{y} y

x \boldsymbol{x} x 由随机采样的隐编码 w \mathbf{w} w 生成。 y \boldsymbol{y} y 由混合出的隐编码 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) 生成,其中 c \mathbf{c} c 是一个可学习的隐编码。

产生 y \boldsymbol{y} y 的方法非常关键:

我们想尽量让 x \boldsymbol{x} x y \boldsymbol{y} y 的画面上是同一个东西,也就是说,要保证 STN 是有可能将这两者 align 的。于是我们根据 StyleGAN2 的特性,提出了用 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) 操作隐编码来生成 y \boldsymbol{y} y

mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) 是在 W + \mathcal{W}^+ W+ 空间中完成的,也就是说,生成器的前几层用 c \mathbf{c} c ,后面的层用 w \mathbf{w} w 。这样做是因为,训练好的 StyleGAN2 就是有这样的性质,前几层控制姿态,后面的层控制外观,可以用实验验证这一点。

该方法能 work 有以下几个关键点:

  1. StyleGAN2 能在不对齐的数据集上收敛,且能生成不对齐的图片。这点很重要,我本来以为这是不可能的。
  2. 存在一种方法,可以将 StyleGAN2 生成的不对齐的图片对齐,或者说,存在一种方法,可以将 StyleGAN2 的生成结果的姿态和外观解耦。
    事实上我们知道这种方法是存在的,而且我们也知道这个方法的具体流程(还通过端到端的消融实验确认了流程细节和超参),我们只是把物体的要 align 到的具体姿态作为可学习变量而已。
  3. 我们设计的 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) 操作确实可以实现姿态和外观的解耦。并且,事实上,由于我们使用同一个 c \mathbf{c} c 来控制物体的姿态,所以经过训练后,STN 也会自然的将所有图片对齐到同一个姿态。
  4. Spatial Transformer 只能进行简单的仿射变换,这其实是一个较强的约束,这会一定程度上约束生成 y \boldsymbol{y} y 的流程,令其与 x \boldsymbol{x} x 之间尽量只有姿态差别。这使得,即使我们的 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) 方法有可能无法完美地解耦姿态和外观,整个方法仍然有可能收敛。
    1. 我们本来可以直接用 GAN inversion 得到 w \mathbf{w} w ,然后用 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) 产生 align 的图像,但是还是训练了一个 STN ,就是因为,训练 STN 的过程也会反过来优化 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) ,这样可以比原本的方法更好。(另一方面是,实际上 GAN inversion 不是一个很鲁棒的方案,而且在非人脸数据上目前还不够好。用合成数据训练一个 STN 能获得更好的泛化性)

摘要

我们提出了 GAN监督学习 ,一种框架,可以端到端地联合学习 判别模型 和 对应的GAN生成的训练数据。

受经典的 Congealing 方法的启发,我们的 GANgealing算法训练了一个 Spatial Transformer,将随机样本从 在未对齐数据上训练的GAN 映射到 常见的 联合学习的 目标模式。

(后略,大致意思就是我们这个贼溜)

方法

我们提出了 GAN监督学习。

从一个预训练的 GAN 中采样出样本对 ( x , y ) (\boldsymbol{x}, \boldsymbol{y}) (x,y) ,其中 x \boldsymbol{x} x 为一个随机采样的样本,而样本 y \boldsymbol{y} y 通过一种可学习的方式操作 x \boldsymbol{x} x 的隐编码得到。

这个样本对用于训练网络 f θ : x → y f_{\theta}: \boldsymbol{x} \to \boldsymbol{y} fθ:xy ,用重建误差即可训练。

在普通的监督学习中, f θ f_{\theta} fθ 是在固定的样本对上学习的,但是在 GAN监督学习中, f θ f_{\theta} fθ y \boldsymbol{y} y 会端到端的联合学习。而在测试阶段,我们可以在真实样本上评估 f θ f_{\theta} fθ

稠密视觉对齐

在这里,我们展示了 GAN监督学习 可以应用于 Congealing [48] —— 一种经典的无监督对齐算法。

在本例中, f θ f_{\theta} fθ 是一个 Spatial Transformer 网络。

我们将这个算法称为 GANgealing。

首先,我们用未对齐的图片训练一个生成器 G ,从一个隐编码 w ∈ R 512 \mathbf{w} \in \mathbb{R}^{512} wR512 生成 图像 x \boldsymbol{x} x ,也就是 x = G ( w ) \boldsymbol{x}=G(\mathbf{w}) x=G(w)

固定目标

现在,考虑一个固定的隐编码 c \mathbf{c} c ,以及合成出的固定图片 G ( c ) G(\mathbf{c}) G(c)

在传统 Congealing 中的一个简单的想法就是,将 G ( c ) G(\mathbf{c}) G(c) 作为目标模式 y \boldsymbol{y} y ,也就是说,我们训练一个 Spatial Transformer 网络 T ,把所有随机的未对齐的图像 x = G ( w ) \boldsymbol{x}=G(\mathbf{w}) x=G(w) 都 warp 到同一个目标图像 y = G ( c ) \boldsymbol{y}=G(\mathbf{c}) y=G(c)

使用同一个可学习的目标

由于 G 是可微的,我们可以优化 c \mathbf{c} c ,从而学习我们希望 congeal 的目标。具体来说,我们可以使用以下损失来联合学习 c \mathbf{c} c 和 T :

L align  ( T , c ) = ℓ ( T ( G ( w ) ) , G ( c ) ) \mathcal{L}_{\text {align }}(T, \mathbf{c})=\ell(T(G(\mathbf{w})), G(\mathbf{c})) Lalign (T,c)=(T(G(w)),G(c))

其中 ℓ \ell 为图片之间的某种距离函数。

通过最小化 L align  \mathcal{L}_{\text {align }} Lalign  来优化 c \mathbf{c} c ,我们可以尽可能地令 T 的工作变得简单。如果当前的 c \mathbf{c} c 所对应的图像对于大部分图像都是没法用 Spatial Transformer 达到的,那么 c \mathbf{c} c 会在优化中变得更容易达到。

这种方法对于多样性有限的数据集来说是合理的,然而在存在显著的外观和姿态变化的情况下,让每个图像都对齐到完全相同的目标图像是不合理的。这会导致不够好的结果,从表3的消融实验能够量化地体现出来(第一行):

在这里插入图片描述

为每个样本使用不同的目标

一个理想的情况是,我们能为每个样本都构建一个目标,保留 G ( w ) G(\mathbf{w}) G(w) 的外观,但是目标之间的姿势、朝向都差不多相同。

为了实现这一点,给定 G ( w ) G(\mathbf{w}) G(w) ,我们令 w \mathbf{w} w 的一部分等于 c \mathbf{c} c ,来产生 w \mathbf{w} w 对应的目标。具体地说,我们令 mix ⁡ ( c , w ) ∈ R 512 \operatorname{mix}(\mathbf{c}, \mathbf{w}) \in \mathbb{R}^{512} mix(c,w)R512 指代一个隐编码,其第一部来自于 c \mathbf{c} c ,其余部分来自于 w \mathbf{w} w 。由此我们可以提出 GANgealing 的损失函数:

L align  ( T , c ) = ℓ ( T ( G ( w ) ⏟ 原本的 x ) , G ( mix ⁡ ( c , w ) ) ⏟ 原本的 y ) \mathcal{L}_{\text {align }}(T, \mathbf{c})= \ell( T(\underbrace{G(\mathbf{w})}_{原本的\boldsymbol{x}}), \underbrace{G(\operatorname{mix}(\mathbf{c}, \mathbf{w}))}_{原本的\boldsymbol{y}}) Lalign (T,c)=(T(原本的x G(w)),原本的y G(mix(c,w)))

其中 ℓ \ell 为感知损失 [38] (又是你,看来得去看看这篇了)。

本文中,我们使用 StyleGAN2 作为 G,原则上可以用任何 GAN,不过StyleGAN2自带一定的 风格-姿态 解耦能力,我们可以利用这一点来构建上述的每个样本的目标。具体地说,我们使用风格混合 [42] 来构造 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) c \mathbf{c} c 用于生成器的前几层, w \mathbf{w} w 用于生成器的后面的层(也就是说,我们是用 W + \mathcal{W}^+ W+ 空间来混合 c \mathbf{c} c w \mathbf{w} w 的)。

表3展示了对于 “在何处开始输入 w \mathbf{w} w ” 的消融实验(文中称为 cut off point)

在这里插入图片描述

对 Spatial Transformer 的参数化

回忆一下,一个 Spatial Transformer Network (STN),输入一张图片,回归并且应用一个反向采样网格 g ∈ R H × W × 2 \mathbf{g} \in \mathbb{R}^{H \times W \times 2} gRH×W×2 (这里是把 STN 对图片的变化看作了 warp)。

本文主要研究一个执行相似性变换的 T (旋转平移,等比缩放)。我们也研究了一个无约束的 T ,直接回归像素级光流。我们最后的 T 是将相似性 STN 组成无约束 STN ,我们发现这样做效果最好。(就是说网络做的是分段仿射变换是吧)

与之前的工作相比 [50,64] ,我们发现多阶段训练没用,所以我们用端到端训练。最后,我们的 STN 也能在测试时执行水平翻转,详见附录B.4 。

当使用无约束的 T 时,加上一个光滑约束会有益,即:

L T V ( T ) = L Huber  ( Δ x g ) + L Huber  ( Δ y g ) \mathcal{L}_{\mathrm{TV}}(T)=\mathcal{L}_{\text {Huber }}\left(\Delta_{x} \mathbf{g}\right)+\mathcal{L}_{\text {Huber }}\left(\Delta_{y} \mathbf{g}\right) LTV(T)=LHuber (Δxg)+LHuber (Δyg)

其中 L Huber  \mathcal{L}_{\text {Huber }} LHuber 表示 Huber loss (就是分段函数,内侧L2,外侧L1), Δ x \Delta_{x} Δx Δ y \Delta_{y} Δy 表示有限差分下 x 和 y 的偏导。我们还对光流做 L2 约束,鼓励光流不做变换:

L I ( T ) = ∥ g ∥ 2 2 \mathcal{L}_{\mathrm{I}}(T)=\|\mathbf{g}\|_{2}^{2} LI(T)=g22

对 c 的参数化

在实践中,我们不直接将梯度反向传播到 c \mathbf{c} c 上,而是将 c \mathbf{c} c 表示为 W \mathcal{W} W 空间上 top-N 个主方向的线性组合 [29,78] :

c = w ‾ + ∑ i = 1 N α i d i \mathbf{c}=\overline{\mathbf{w}}+\sum_{i=1}^{N} \alpha_{i} \mathbf{d}_{i} c=w+i=1Nαidi

其中 w ‾ \overline{\mathbf{w}} w 表示经验平均 w \mathbf{w} w 向量, d i \mathbf{d}_{i} di 表示第 i i i 个主方向, α i \alpha_i αi 是可学习的系数。

做这种重参数化的动机是,StyleGAN的 W \mathcal{W} W 空间具有很强的表达能力。因此,在没有约束的情况下直接优化 c \mathbf{c} c ,可能会远离真实图像的流形,产生比较差的目标图像。减少 N 的数量可以保持 c \mathbf{c} c 处于流形上,并且预防退化解。表3中有对 N 的消融实验。

最终的 GANgealing 损失如下:

L ( T , c ) = E w ∼ W [ L align ( T , c ) + λ T V L T V ( T ) + λ I L I ( T ) ] \mathcal{L}(T, \mathbf{c})= \mathbb{E}_{\mathbf{w} \sim \mathcal{W}} \left[ \mathcal{L}_{\text {align}}(T,\mathbf{c}) +\lambda_{\mathrm{TV}} \mathcal{L}_{\mathrm{TV}}(T) +\lambda_{I} \mathcal{L}_{\mathrm{I}}(T) \right] L(T,c)=EwW[Lalign(T,c)+λTVLTV(T)+λILI(T)]

多个 c 联合对齐和聚类

如上所述, GANgealing 可以处理高度多样性的数据集。有些数据集,比如 LSUN House ,具有极其多样性的姿态,无法用单一模式很好地表示。所以我们同时使用 K K K c \mathbf{c} c ,相当于对训练样本进行 K K K 聚类,也就得到 { c k } k = 1 K \left\{\mathbf{c}_{k}\right\}_{k=1}^{K} {ck}k=1K

使用 hard-assignment 来分配当前样本的类别,并计算损失:

L align  K ( T , c ) = min ⁡ k L align  ( T k , c k ) \mathcal{L}_{\text {align }}^{K}(T, \mathbf{c})=\min _{k} \mathcal{L}_{\text {align }}\left(T_{k}, \mathbf{c}_{k}\right) Lalign K(T,c)=kminLalign (Tk,ck)

注意每个类别使用不同的 T k T_{k} Tk 来 warp 图像。

在测试阶段,我们直接通过 k ∗ = arg ⁡ min ⁡ k L align  ( T k , c k ) k^{*}=\arg \min _{k} \mathcal{L}_{\text {align }}\left(T_{k}, \mathbf{c}_{k}\right) k=argminkLalign (Tk,ck) 选定当前样本所属的类别。

当输入真实图象时,我们需要选择一个类别。一个合理的想法是直接用 GAN inversion [8, 11, 95] 反求出 w \mathbf{w} w 然后算 k ∗ k^{*} k 。不过在非人脸数据集上,当前的 GAN inversion 仍然很难还很慢,尽管最近有了一定的突破 [3, 33] 。

所以我们直接训练了一个分类器(用合成的数据),这样就行了。

实验

消融实验

在这里插入图片描述
第二列表示使用的感知损失,SSL 表示一个完全无监督的 VGG-16 [74] ,使用 SimCLR [13] 在 ImageNet-1k [17] 上预训练。我们发现 SSL 和 LPIPS 没有明显差别。

第三列表示 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) 在第几层开始将 c \mathbf{c} c 替换为 w \mathbf{w} w

第四列表示令光流保持光滑的正则化系数。

第六列 PCK 表示正确检测的关键点所占百分比,越高越好。这是一个姿态估计里面的概念。

第一行表示使用不可学习的 c \mathbf{c} c ,这展示了 GAN监督框架 联合学习判别模型和目标 的重要性。

第二行表示使用无约束的 c \mathbf{c} c 进行学习,这展示了对 c \mathbf{c} c 进行重参数化的必要性。

第三第四行对比了 mix ⁡ ( c , w ) \operatorname{mix}(\mathbf{c}, \mathbf{w}) mix(c,w) 在不同的位置将 c \mathbf{c} c 替换为 w \mathbf{w} w 的效果。

第五第六行表示使用同一个可学习的目标图像进行训练,而不进行mix,这是受到传统 Congealing 启发的 baseline。注意到这非常不稳定,而且 PCK 较低。

第七第八行展示了对光流进行光滑性约束的效果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值