CVPR2022 Oral:GAN监督的密集视觉对齐

1 引言

该论文发表于CVPR2022,主要是关于GAN监督学习在密集视觉对齐中的应用,并且论文代码已经开源。在该论文中作者提出了一种用于端到端联合学习的GAN生成数据的框架。受到经典方法的启发,论文中作者联合训练一个空间变换器,将随机样本从基于未对齐数据训练的GAN映射到共同的、联合学习的目标模式。实验展示了8个数据集上的结果(如下图所示),可以直观的发现该论文的方法成功地对齐了复杂数据,并发现了图像中密集的对应关系。GANgealing的性能明显优于过去的自监督算法,在多个数据集上的性能与最先进的监督算法相当(有时甚至超过),另外作者也展示了论文中的算法在增强现实、图像编辑和图像数据集的自动预处理方面的应用。

论文链接: https://arxiv.org/abs/2112.05143
论文代码: https://www.github.com/wpeebles/gangealing
视频代码: https://www.youtube.com/watch?v=Qa1ASS_NuzE

2 GAN监督学习

在该论文中,作者提出了一种GAN监督学习的算法。在该算法框架下, ( x , y ) (\boldsymbol{x},\boldsymbol{y}) (x,y)对是从一个预训练的GAN中采样得来的,并用这些数据对训练一个神经网络 f θ : x → y f_\theta:\boldsymbol{x}\rightarrow \boldsymbol{y} fθ:xy,损失函数为
L ( f θ , y ) = ℓ ( f θ ( x ) , y ) \mathcal{L}(f_\theta,\boldsymbol{y})=\ell(f_\theta(\boldsymbol{x}),\boldsymbol{y}) L(fθ,y)=(fθ(x),y)其中 ℓ \ell 为重构损失,在最原始的监督学习中, f θ f_\theta fθ是在固定的数据对 ( x , y ) (\boldsymbol{x},\boldsymbol{y}) (x,y)中进行学习,但是在该论文中, f θ f_\theta fθ和目标 y \boldsymbol{y} y是联合端到端学习的,在测试时,评估神经网络 f θ f_\theta fθ是用真实的输入。随着 G G G训练成熟,作者从非对齐分布数据分布 x = G ( w ) x=G({\bf{w}}) x=G(w)中进行采样,其中 w ∼ W {\bf{w}}\sim \mathcal{W} wW W \mathcal{W} W表示的是隐空间分布。

2.1 密集可视化对齐

该论文的作者将他们的算法称之为GANgealing,算法的具体示意图如上所示。GANgealing首先在未对齐的输入数据集上训练生成模型 G G G,其中生成器 G G G的输入的隐向量为 w ∈ R 512 {\bf{w}}\in \mathbb{R}^{512} wR512。当 G G G训练时,可以从非对齐的分布中生成样本即 x = G ( w ) \boldsymbol{x}=G({\bf{w}}) x=G(w),其中 w ∼ W {\bf{w}}\sim \mathcal{W} wW W \mathcal{W} W表示的是隐向量空间分布。考虑一个固定的隐向量 c ∈ R 512 {\bf{c}}\in\mathbb{R}^{512} cR512,该向量对应一个固定的合成图片 G ( c ) G({\bf{c}}) G(c)。一个很简单的想法是去使用 G ( c ) G({\bf{c}}) G(c)当做目标模式 y \boldsymbol{y} y,即 y = G ( c ) \boldsymbol{y}=G({\bf{c}}) y=G(c),其中空间转换器 T T T需要利用非对齐样本进行训练。作者可以通过优化关于 T T T的参数和目标图片隐向量 c {\bf{c}} c的联合损失函数: L a l i g n ( T , c ) = ℓ ( T ( G ( w ) ) , G ( c ) ) \mathcal{L}_{\mathrm{align}}(T,{\bf{c}})=\ell(T(G({\bf{w}})),G({\bf{c}})) Lalign(T,c)=(T(G(w)),G(c))其中 ℓ \ell 表示的是两张图片之间的距离。通过最小化关于目标隐向量 c {\bf{c}} c的损失函数 L \mathcal{L} L,GANgealing可以鼓励 c {\bf{c}} c找到一个使得 T T T工作更容易的姿势。如果当前 c {\bf{c}} c的数值对应的姿态不能由大多数图片通过 T T T被预测出来,则需要通过梯度下降法调整隐向量 c {\bf{c}} c
提高生成器生成质量一个简单合理的方法是限制数据集的多样性,然而由于显著外观和姿态的变化的存在,这会导致期望每一个非对齐图片能够精确对齐目标图片是非常不合理的。因此,由下图可知,优化以上损失函数并不会有好的生成效果。可是对每一个随机采样图片 G ( w ) G({\bf{w}}) G(w)代替使用目标 G ( c ) G({\bf{c}}) G(c),此时如果能够构造一个在样本目标中保持外观,并且姿态和物体方向大体一致的图像的时候,则生成效果质量会高很多。

给定 G ( w ) G({\bf{w}}) G(w),作者通过设定 w {\bf{w}} w向量的一部分生成相应的目标。令混合向量 ( c , w ) ∈ R 512 ({\bf{c}},{\bf{w}})\in \mathbb{R}^{512} (c,w)R512是隐向量,通过采样新的 w {\bf{w}} w向量,可以产生一个无限的数据对池,其中输入是非对齐图像 x = G ( w ) \boldsymbol{x}=G({\bf{w}}) x=G(w),目标 y = G ( m i x ( c , w ) ) {\boldsymbol{y}}=G(\mathrm{mix}({\bf{c}},{\bf{w}})) y=G(mix(c,w))有外观 G ( w ) G({\bf{w}}) G(w)的信息,但是姿态是固定的。此时损失函数可以表示为 L a l i g n ( T , c ) = ℓ ( T ( G ( w ) ) , G ( m i x ( c , w ) ) ) \mathcal{L}_{\mathrm{align}}(T,{\bf{c}})=\ell(T(G({\bf{w}})),G(\mathrm{mix}({\bf{c}},{\bf{w}}))) Lalign(T,c)=(T(G(w)),G(mix(c,w)))其中 ℓ \ell 表示的是感知损失函数。在该论文中,作者生成器 G G G选择的是StyleGAN2,其它的生成器结构也可以在该框架中使用,StyleGAN2的优势在于它有高质量强大的风格混合生成能力,作者可以通过使用风格混合来构造每一个样本目标 G ( m i x ( c , w ) ) G(\mathrm{mix}({\bf{c}},{\bf{w}})) G(mix(c,w)),其中 c {\bf{c}} c主要用于粗略的控制物体的姿态, w {\bf{w}} w主要用于控制物体的纹理轮廓,具体的定性结果由上图像可知。为了更好的提高生成质量,作者使用空间转换器 T T T去实现相似性变换,这其中就包含旋转,归一化,水平和垂直移动等。当时用空间转换 T T T时,增加一个 L T V \mathcal{L}_{\mathrm{TV}} LTV损失函数可以使得训练过程中更加平滑,具体的损失函数为 L T V ( T ) = L H u b e r ( Δ x g ) + L H u b e r ( Δ y g ) \mathcal{L}_{\mathrm{TV}}(T)=\mathcal{L}_{\mathrm{Huber}}(\Delta_x {\bf{g}})+\mathcal{L}_{\mathrm{Huber}}(\Delta_y{\bf{g}}) LTV(T)=LHuber(Δxg)+LHuber(Δyg)其中 L H u b e r \mathcal{L}_{\mathrm{Huber}} LHuber表示Huber损失函数, Δ x \Delta_x Δx Δ y \Delta_y Δy分别表示关于 x x x y y y的偏导数。另外作者还是用了损失函数 L 1 ( T ) = ∥ g ∥ 2 2 \mathcal{L}_1(T)=\|{\bf{g}}\|^2_2 L1(T)=g22作为正则化项。

更新参数 c {\bf{c}} c的时候,作者并不是利用反向传播直接到 c {\bf{c}} c,而是利用了将 c {\bf{c}} c表示为 W \mathcal{W} W空间中的 N N N个主要方向的线性组合,具体公式如下所示 c = w ˉ + ∑ i = 1 N α i d i {\bf{c}}=\bar{ {\bf{w}}}+\sum\limits_{i=1}^N\alpha_i {\bf{d}}_i c=wˉ+i=1Nαidi其中 w ˉ \bar{\bf{w}} wˉ表示的是 w {\bf{w}} w的实际平均向量, d i {\bf{d}}_i di表示的是第 i i i个主成分方向, α i \alpha_i αi表示对应的系数。代替直接优化 L \mathcal{L} L中的向量 c {\bf{c}} c,作者优化的参数是 { α i } i = 1 N \{\alpha_i\}_{i=1}^N { αi}i=1N。最终GANgealing的损失函数如下所示 L ( T , c ) = E w ∼ W [ L a l i g n ( T , c ) + λ T V L T V ( T ) + λ I L I ( T ) ] \mathcal{L}(T,{\bf{c}})=\mathbb{E}_{ {\bf{w}}\sim\mathcal{W}}[\mathcal{L}_{\mathrm{align}}(T,{\bf{c}})+\lambda_{\mathrm{TV}}\mathcal{L}_{\mathrm{TV}}(T)+\lambda_I\mathcal{L}_I(T)] L(T,c)=EwW[Lalign(T,c)+λTVLTV(T)+λILI(T)]其中作者在论文中会将 λ T V \lambda_{\mathrm{TV}} λTV的数值会设置为 1000 1000 1000或者是 2500 2500 2500,损失权重 λ I \lambda_I λI会设置为 1 1 1

3 联合对齐和聚类

GANgealing可以处理多模式的数据,并且GANgealing可以通过简单地学习多个目标隐向量 c {\bf{c}} c来适应聚类算法。令 K K K表示希望学习的聚类的数量。由于每个 c {\bf{c}} c捕获数据中的特定模式,多个 { c k } k = 1 K \{ {\bf{c}}_k\}^K_{k=1} { ck}k=1K即为多个模式。每个 c k {\bf{c}}_k ck将学习自己对应的 α \alpha α系数集。类似地,现在有 K K K个空间变换器,每个模式对应一个。GANgealing的这种变体相当于同时对数据进行聚类,并学习每个聚类中所有图像之间的对应关系,具体的公式如下所示 L a l i g n K ( T , c ) = min ⁡ k L a l i g n ( T k , c k ) \mathcal{L}_{\mathrm{align}}^K(T,{\bf{c}})=\min\limits_{k}\mathcal{L}_{\mathrm{align}}(T_k,{\bf{c}}_k) LalignK(T,c)=kminLalign(Tk,ck)
在该论文中,作者训练使用标准交叉熵函数在数据对 ( G ( w ) , k ∗ ) (G({\bf{w}}),k^{*}) (G(w),k)上训练分类器。作者用 T T T上的权重初始化分类器,代替随机初始化。虽然训练成本会比较高,但是空间转换器 T T T和分类器的泛化效果很好。

4 实验结果

如果下图所示是一个非常有趣的小应用为使用GANgealing进行图像编辑的效果图。通过在每个类别中只注释一幅图像,用户可以将其编辑传播到同一类别中的任何图像或视频,本文的链接视频里有使用GANgealing图像编辑更生动的展示。

如下表所示为定量的结果,作者使用标准 α b b o x = 0.1 \alpha_{\mathrm{bbox}}=0.1 αbbox=0.1阈值,在下表中显示了论文的方法在具有在挑战性的SPair-71K数据集上与几种自监督和最先进的监督方法进行比较结果。可以发现GANgealing在几个类别上显著优于先验自监督方法,GANgealing在多个类别上的表现与最先进的监督方法不相上下,甚至优于这些方法。

下图显示了不同簇的密集对应结果。对于每个簇顶行显示该簇的未对齐真实图像;中间一行显示了GANgealing学习的输入图像转换。最下面一行显示了图像之间的密集对应关系。可以发现GANgealing进行密集视觉对齐的效果很,能够准确的将目标图像定位并进行标注。

猜你喜欢

转载自blog.csdn.net/qq_38406029/article/details/124158108