First Order Motion Model for Image Animation
摘要
Image animation consists of generating a video sequence so that an object in a source image is animated according to the motion of a driving video. Our framework addresses this problem without using any annotation or prior information about the specific object to animate. Once trained on a set of videos depicting objects of the same category (e.g. faces, human bodies), our method can be applied to any object of this class. To achieve this, we decouple appearance and motion information using a self-supervised formulation. To support complex motions, we use a representation consisting of a set of learned keypoints along with their local affine transformations. A generator network models occlusions arising during target motions and combines the appearance extracted from the source image and the motion derived from the driving video. Our framework scores best on diverse benchmarks and on a variety of object categories. Our source code is publicly available.
图像动画包括生成视频序列,使得源图像中的对象根据驱动视频的运动而动画。我们的框架解决了这个问题,而不使用任何注释或有关特定对象的先验信息动画。一旦在描绘相同类别的对象(例如,对象)的一组视频上进行训练,就可以使用相同类别的对象。人脸,人体),我们的方法可以应用于这个类的任何对象。为了实现这一点,我们解耦的外观和运动信息使用自监督制定。为了支持复杂的运动,我们使用由一组学习的关键点沿着局部仿射变换组成的表示。生成器网络对在目标运动期间出现的遮挡进行建模,并且将从源图像提取的外观和从驾驶视频导出的运动进行组合。我们的框架在不同的基准测试和各种对象类别上得分最高。
方法
图2:方法概述。我们的方法假设源图像S和驱动视频帧D的帧作为输入。无监督关键点检测器提取由相对于参考帧R的稀疏关键点和局部仿射变换组成的一阶运动表示。密集运动网络使用运动表示来生成从D到S的密集光流 T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D和遮挡图 O ^ S ← D \hat{\mathcal{O}}_{\text{S}\leftarrow\text{D}} O^S←D。生成器使用源图像和密集运动网络的输出来渲染目标图像。
介绍
通过在静止图像中动画化对象来生成视频在包括电影制作、摄影和电子商务在内的感兴趣的领域中具有无数应用。更确切地说,图像动画是指通过将从源图像提取的外观与从驾驶视频导出的运动模式组合来自动合成视频的任务。例如,某个人的面部图像可以按照另一个人的面部表情进行动画。在文献中,大多数方法通过假设对象表示上的强先验(例如:3D模型)[4]和诉诸计算机图形技术[6,33]。这些方法可以被称为特定于对象的方法,因为它们假设要动画的特定对象的模型的知识。
下面为部分实现效果:
最近,深度生成模型已经成为图像动画和视频重定向的有效技术[2,41,3,42,27,28,37,40,31,21]。特别是,生成对抗网络(GANs)[14]和变分自动编码器(VAE)[20]已被用于在视频中的人类主体之间传输面部表情[37]或运动模式[3]。然而,这些方法通常依赖于预先训练的模型,以便提取对象特定的表示,例如关键点位置。不幸的是,这些预先训练的模型是使用昂贵的地面实况数据注释[2,27,31]构建的,并且通常不适用于任意对象类别。为了解决这个问题,最近Siarohin等人。[28]引入了Monkey-Net,这是第一个用于图像动画的对象不可知深度模型。
Monkey-Net通过以自我监督的方式学习的关键点对运动信息进行编码。在测试时,根据在驾驶视频中估计的对应关键点轨迹来动画化源图像。Monkey-Net的主要弱点是它在关键点邻域中对对象外观变换的建模很差,假设是零阶模型(如我们在第二节中所示)。3.1)。这导致在大对象姿态变化的情况下生成质量差(参见图1B)。4).为了解决这个问题,我们建议使用一组自学的关键点与局部仿射变换来模拟复杂的运动。因此,我们称我们的方法为一阶运动模型。其次,我们引入了一个闭塞意识的发生器,它采用了闭塞掩模自动估计,以指示对象部分,在源图像中不可见,应该推断出的上下文。当驾驶视频包含大的运动模式并且遮挡是典型的时,这是特别需要的。第三,我们扩展了常用于关键点检测器训练的等方差损失[18,44],以改善局部仿射变换的估计。第四,我们的实验表明,我们的方法显着优于国家的最先进的图像动画方法,可以处理高分辨率的数据集,其他方法通常失败。最后,我们发布了一个新的高分辨率数据集,Thai-Chi-HD,我们相信它可以成为评估图像动画和视频生成框架的参考基准。
相关工作
-
视频生成
- 关于深度视频生成的早期工作讨论了时空神经网络如何从噪声向量中渲染视频帧[36,26]。最近,几种方法解决了条件视频生成的问题。例如,Wang et al.[38]将递归神经网络与VAE相结合,以生成人脸视频。考虑到更广泛的应用,Tulyakov等人。[34]介绍了MoCoGAN,这是一种经过逆向训练的循环架构,以便从噪声,分类标签或静态图像中合成视频。条件生成的另一个典型情况是未来帧预测的问题,其中生成的视频以初始帧为条件[12,23,30,35,44]。请注意,在此任务中,可以通过简单地扭曲初始视频帧[1,12,35]来获得真实的预测。
- 我们的方法是密切相关的这些以前的作品,因为我们使用的warping公式来生成视频序列。然而,在图像动画的情况下,所应用的空间变形不是预测的,而是由驱动视频给出的。
-
图像动画
- 传统的图像动画和视频重定向方法[6,33,13]是针对特定领域设计的,例如面部[45,42],人体轮廓[8,37,27]或手势[31],并且需要动画对象的强先验。例如,在面部动画中,Zollhofer等人的方法。[45]以依赖于面部的3D变形模型为代价产生了逼真的结果。然而,在许多应用中,这样的模型不可用。图像动画也可以被视为从一个视觉域到另一个视觉域的翻译问题。例如,Wang et al.[37]使用Isola等人的图像到图像转换框架转移人体运动。[16]类似地,Bansal et al.[3]通过结合时空线索来扩展条件GAN,以改善两个给定域之间的视频转换。为了使单个人动画化,这种方法需要用语义信息标记的该人的数小时的视频,并且因此必须针对每个个体进行重新训练。
- 与这些作品相比,我们既不依赖于标签,先验信息的动画对象,也不对每个对象实例的具体培训程序。此外,我们的方法可以应用于同一类别内的任何对象(例如,面部、人体、机器人手臂等)。
- 提出了几种方法,不需要先验的对象。X2 Face [40]使用密集运动场,以便通过图像扭曲生成输出视频。与我们类似,它们采用用于获得对象的规范表示的参考姿势。在我们的公式中,我们不需要一个明确的参考姿势,导致显着更简单的优化和提高图像质量。Siarohin等人[28]介绍了Monkey-Net,这是一种通过使用稀疏关键点轨迹来为任意对象制作动画的自监督框架。在这项工作中,我们还采用了由自监督关键点引起的稀疏轨迹。然而,我们通过局部仿射变换在每个预测关键点的邻域中对对象运动进行建模。此外,我们显式地对遮挡进行建模,以便向生成器网络指示可以通过扭曲源图像和需要修复的遮挡区域来生成的图像区域。
方法
我们感兴趣的是基于驾驶视频D中的类似对象的运动来动画化源图像S中描绘的对象。由于直接监督不可用(对象移动相似的视频对),我们遵循受Monkey-Net启发的自我监督策略[28]。为了训练,我们采用了大量的视频序列,包含相同的对象类别的对象。我们的模型通过将单个帧和视频中运动的学习潜在表示相结合来重建训练视频。通过观察从同一视频中提取的帧对,它学会将运动编码为特定于运动的关键点位移和局部仿射变换的组合。在测试时,我们将我们的模型应用到由源图像和驾驶视频的每个帧组成的对,并执行源对象的图像动画。
我们的框架由两个主要模块组成:运动估计模块和图像生成模块。运动估计模块的目的是从一帧中预测出一个密集的运动场 D ∈ R 3 × H × W \mathbf{D}\in\mathbb{R}^{3\times H\times W} D∈R3×H×W将驱动视频D的维度H ×W的图像映射到源帧 S ∈ R 3 × H × W \mathbf{S}\in\mathbb{R}^{3\times H\times W} S∈R3×H×W。密集运动场稍后用于将从S计算的特征图与D中的对象姿态对准。运动场由函数 T S ← D {\mathcal T}_{\mathbf S\leftarrow\mathbf D} TS←D建模: R 2 → R 2 \mathbb{R}^{2} \to \mathbb{R}^{2} R2→R2,其将D中的每个像素位置与其在S中的对应位置进行映射。 T S ← D {\mathcal T}_{\mathbf S\leftarrow\mathbf D} TS←D通常被称为后向光流。我们采用后向光流,而不是前向光流,因为后向扭曲可以使用双线性采样以可微分的方式有效地实现[17]。我们假设存在一个抽象参考系R。我们独立地估计两个变换:从R到S( T S ← R {\mathcal T}_{\mathbf S\leftarrow\mathbf R} TS←R)和从R到D( T D ← R {\mathcal T}_{\mathbf D\leftarrow\mathbf R} TD←R)。请注意,与X2Face [40]不同,参考系是一个抽象概念,在我们后面的推导中被抵消。因此,它从未被显式地计算,也无法被可视化。这个选择允许我们独立地处理D和S。这是期望的,因为在测试时间,模型接收从不同视频采样的成对的源图像和驱动帧,其在视觉上可能非常不同。代替直接预测 T D ← R {\mathcal T}_{\mathbf D\leftarrow\mathbf R} TD←R和 T S ← R {\mathcal T}_{\mathbf S\leftarrow\mathbf R} TS←R,运动估计器模块以两个步骤进行。
在第一步中,我们从稀疏轨迹集近似两个变换,这些轨迹是通过使用以自监督方式学习的关键点获得的。D和S中的关键点的位置由编码器-解码器网络单独预测。关键点表示充当瓶颈,导致紧凑的运动表示。如Siarohin et al.[28],这样的稀疏运动表示非常适合于动画,因为在测试时,源图像的关键点可以使用驾驶视频中的关键点轨迹来移动。我们使用局部仿射变换对每个关键点的邻域中的运动进行建模。与仅使用关键点位移相比,局部仿射变换允许我们对更大的变换族进行建模。我们使用泰勒展开来表示 T D ← R {\mathcal T}_{\mathbf D\leftarrow\mathbf R} TD←R由一组关键点位置和仿射变换。为此,关键点检测器网络输出关键点位置以及每个仿射变换的参数。
在第二步中,密集运动网络结合局部近似以获得结果密集运动场( T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D)。此外,除了密集运动场之外,该网络还输出遮挡掩模 O ^ S ← D \hat{\mathcal{O}}_{\text{S}\leftarrow\text{D}} O^S←D,其指示D的哪些图像部分可以通过扭曲源图像来重建,以及哪些部分应该被修复,即从上下文推断。最后,生成模块渲染如在驾驶视频中提供的源对象移动的图像。这里,我们使用生成器网络G,它根据 T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D扭曲源图像,并对源图像中被遮挡的图像部分进行修补。
用于近似运动描述的局部仿射变换
运动估计模块估计从驱动帧D到源帧S的后向光流 T S ← D {\mathcal T}_{\mathbf S\leftarrow\mathbf D} TS←D。如上所述,我们提出在关键点位置的邻域中通过其一阶泰勒展开来近似 T S ← D {\mathcal T}_{\mathbf S\leftarrow\mathbf D} TS←D。在本节的其余部分,我们将描述这种选择背后的动机,并详细介绍 T S ← D {\mathcal T}_{\mathbf S\leftarrow\mathbf D} TS←D的近似。
我们假设存在一个抽象参考系R。因此,估计
T
S
←
D
{\mathcal T}_{\mathbf S\leftarrow\mathbf D}
TS←D包括估计
T
S
←
R
{\mathcal T}_{\mathbf S\leftarrow\mathbf R}
TS←R和
T
D
←
R
{\mathcal T}_{\mathbf D\leftarrow\mathbf R}
TD←R。此外,给定帧X,我们估计学习到的关键点的邻域中的每个变换
T
X
←
R
{\mathcal T}_{\mathbf X\leftarrow\mathbf R}
TX←R。形式上,给定变换
T
X
←
R
{\mathcal T}_{\mathbf X\leftarrow\mathbf R}
TX←R,我们考虑其在
K
K
K个关键点
p
1
,
…
,
p
K
p1,\dots,pK
p1,…,pK.这里
p
1
,
…
,
p
K
p1,\dots,pK
p1,…,pK表示参考帧R中的关键点的坐标。注意,为了简单起见,在下文中,参考姿态空间中的点位置全部由
p
p
p表示,而
X
、
S
或
D
X、S或D
X、S或D姿态空间中的点位置由
z
z
z表示。我们得到:
T
X
+
R
(
p
)
=
T
X
+
R
(
p
k
)
+
(
d
d
p
T
X
+
R
(
p
)
∣
p
=
p
k
)
(
p
−
p
k
)
+
o
(
∥
p
−
p
k
∥
)
,
(1)
\mathcal{T_{X+R}}(p)=\mathcal{T_{X+R}}(p_k)+\left(\frac{d}{dp}\mathcal{T_{X+R}}(p)\bigg|_{p=p_k}\right)(p-p_k)+o(\|p-p_k\|),\tag{1}
TX+R(p)=TX+R(pk)+(dpdTX+R(p)
p=pk)(p−pk)+o(∥p−pk∥),(1)
在该公式中,运动函数
T
X
←
R
{\mathcal T}_{\mathbf X\leftarrow\mathbf R}
TX←R由其在每个关键点
p
k
pk
pk中的值和在每个
p
k
pk
pk位置中计算的其雅可比行列式表示:
T
X
−
R
(
p
)
≃
{
{
T
X
−
R
(
p
1
)
,
d
d
p
T
X
−
R
(
p
)
∣
p
=
p
1
}
,
…
{
T
X
−
R
(
p
k
)
,
d
d
p
T
X
−
R
(
p
)
∣
p
=
p
K
}
}
.
(2)
\mathcal{T}_{\mathbf{X-R}}(p)\simeq\left\{\left\{\mathcal{T}_{\mathbf{X-R}}(p_1),\frac{d}{dp}\mathcal{T}_{\mathbf{X-R}}(p)\bigg|_{p=p_1}\right\},\dots\left\{\mathcal{T}_{\mathbf{X-R}}(p_k),\frac{d}{dp}\mathcal{T}_{\mathbf{X-R}}(p)\bigg|_{p=p_K}\right\}\right\}.\tag{2}
TX−R(p)≃{{TX−R(p1),dpdTX−R(p)
p=p1},…{TX−R(pk),dpdTX−R(p)
p=pK}}.(2)
此外,为了估计
T
X
←
R
=
T
X
←
R
−
1
{\mathcal T}_{\mathbf X\leftarrow\mathbf R}={\mathcal T}^{-1}_{\mathbf X\leftarrow\mathbf R}
TX←R=TX←R−1,我们假设
T
X
←
R
{\mathcal T}_{\mathbf X\leftarrow\mathbf R}
TX←R在每个关键点的邻域中是局部双射的。我们需要估计D中的关键点
z
k
z_k
zk附近的
T
S
←
D
{\mathcal T}_{\mathbf S\leftarrow\mathbf D}
TS←D,假定
z
k
z_k
zk是对应于
R
R
R中的关键点位置
p
k
pk
pk的像素位置。为此,我们首先估计驱动标架
D
D
D中的点
z
k
z_k
zk附近的变换
T
R
←
D
{\mathcal T}_{\mathbf R\leftarrow\mathbf D}
TR←D,例如
p
k
=
T
R
←
D
(
z
k
)
pk = {\mathcal T}_{\mathbf R\leftarrow\mathbf D}(zk)
pk=TR←D(zk)。然后我们估计参考R中
p
k
pk
pk附近的变换
T
S
←
R
{\mathcal T}_{\mathbf S\leftarrow\mathbf R}
TS←R。最后,如下获得
T
S
←
D
{\mathcal T}_{\mathbf S\leftarrow\mathbf D}
TS←D:
T
S
←
D
=
T
S
←
R
∘
T
R
←
D
=
T
S
←
R
∘
T
D
←
R
→
R
−
1
,
(3)
\mathcal T_{\mathbf S\leftarrow\mathbf D}=\mathcal T_{\mathbf S\leftarrow\mathbf R}\circ\mathcal T_{\mathbf R\leftarrow\mathbf D}=\mathcal T_{\mathbf S\leftarrow\mathbf R}\circ\mathcal T_{\mathbf D\leftarrow\mathbf R\rightarrow\mathbf R}^{-1},\tag{3}
TS←D=TS←R∘TR←D=TS←R∘TD←R→R−1,(3)
在再次计算Eq.(3),得到:
T
S
+
D
(
z
)
≈
T
S
←
R
(
p
k
)
+
J
k
(
z
−
T
D
←
R
(
p
k
)
)
(4)
\mathcal{T_{S+D}}(z)\approx\mathcal{T_{S\leftarrow R}}(p_k)+J_k(z-\mathcal{T_{D\leftarrow R}}(p_k)) \tag{4}
TS+D(z)≈TS←R(pk)+Jk(z−TD←R(pk))(4)
w i t h J k = ( d d p T S + R ( p ) ∣ p = p k ) ( d d p T D + R ( p ) ∣ p = p k ) − 1 (5) \\ with \ \ \ \ J_k=\left(\frac{d}{dp}\mathcal{T}_{\mathbf{S+R}}(p)\bigg|_{p=p_k}\right)\left(\frac{d}{dp}\mathcal{T}_{\mathbf{D+R}}(p)\bigg|_{p=p_k}\right)^{-1} \tag{5} with Jk=(dpdTS+R(p) p=pk)(dpdTD+R(p) p=pk)−1(5)
在实践中,等式(1)中的 T S ← R ( p k ) {\mathcal T}_{\mathbf S\leftarrow\mathbf R}(pk) TS←R(pk)和 T D ← R ( p k ) {\mathcal T}_{\mathbf D\leftarrow\mathbf R}(pk) TD←R(pk)。(4)由关键点预测器预测。更准确地说,我们采用标准的U-Net架构,估计K个热图,每个关键点一个。解码器的最后一层使用softmax激活,以便预测可以被解释为关键点检测置信度图的热图。使用如[28,24]中的平均运算来估计每个预期关键点位置。注意,如果我们设置 J k = 1 J_k = 1 Jk=1(1是2 × 2单位矩阵),我们得到Monkey-Net的运动模型。因此,Monkey-Net使用 T S ← D ( z ) − z . \mathcal{T}_{\mathbf{S \leftarrow D}}(z)-z. TS←D(z)−z.的零阶近似。
对于帧S和D两者,关键点预测器网络还针对每个关键点输出四个附加通道。从这些信道,我们获得矩阵系数 d d p T S ← R ( p ) ∣ p = p k \frac{d}{dp}\mathcal{T}_{\mathbf{S\leftarrow R}}(p)|_{p=p_k} dpdTS←R(p)∣p=pk和 d d p T S ← R ( p ) ∣ p = p k \frac{d}{dp}\mathcal{T}_{\mathbf{S\leftarrow R}}(p)|_{p=p_k} dpdTS←R(p)∣p=pk,在等式(5)通过使用对应的关键点置信度图作为权重来计算空间加权平均。
结合局部运动:
结合局部运动。我们采用卷积网络P来根据关键点和原始源帧S中 T S ← D ( z ) {\mathcal T}_{\mathbf S\leftarrow\mathbf D}(z) TS←D(z)的泰勒近似集合来估计 T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D。重要的是,由于 T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D将D中的每个像素位置与其在S中的对应位置映射,所以 T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D中的局部图案(例如边缘或纹理)与D逐像素对齐,但不与S对齐。这个未对准问题使得网络更难从S预测 T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D。为了提供已经与 T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D大致对齐的输入,我们根据在等式4中估计的局部变换来扭曲源帧S。因此,我们获得K个变换图像 S 1 , … , S K S_1,\dots,S_K S1,…,SK,每个在关键点附近与 T ^ S ← D \hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} T^S←D对齐。重要的是,我们还考虑用于背景的附加图像 S 0 = S S^0 = S S0=S。
对于每个关键点
p
k
pk
pk,我们额外地计算热图
H
k
H_k
Hk,其向密集运动网络指示每个变换发生的地方。每个
H
k
(
z
)
H_k(z)
Hk(z)被实现为以
T
D
←
R
(
p
k
)
{\mathcal T}_{\mathbf D\leftarrow\mathbf R}(pk)
TD←R(pk)和
T
S
←
R
(
p
k
)
{\mathcal T}_{\mathbf S\leftarrow\mathbf R}(pk)
TS←R(pk)为中心的两个热图的差:
H
k
(
z
)
=
e
x
p
(
(
T
D
+
R
(
p
k
)
−
z
)
2
σ
)
−
e
x
p
(
(
T
S
−
R
(
p
k
)
−
z
)
2
σ
)
.
(6)
\mathbf H_k(z)=exp\left(\frac{\left(\mathcal T_{\mathbf D+R}(p_k)-z\right)^2}{\sigma}\right)-exp\left(\frac{\left(\mathcal T_{\mathbf S-R}(p_k)-z\right)^2}{\sigma}\right).\tag{6}
Hk(z)=exp(σ(TD+R(pk)−z)2)−exp(σ(TS−R(pk)−z)2).(6)
在我们所有的实验中,我们采用
σ
=
0.01
\sigma = 0.01
σ=0.01遵循Jakab等人。
热图
H
k
H_k
Hk和变换图像
S
0
,
…
,
S
K
S_0,\dots,S_K
S0,…,SK被级联并由UNet处理[25]。
T
^
S
←
D
\hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D}
T^S←D使用受Monkey-Net启发的基于零件的模型进行估计[28]。我们假设一个物体是由K个刚性部分组成的,并且每个部分都是根据方程4。因此,我们估计
K
+
1
K+1
K+1个掩模
M
k
,
k
=
0
,
.
.
.
K
M_k,k = 0,...K
Mk,k=0,...K,其指示每个局部变换在哪里保持。最终密集运动预测
T
^
S
←
D
(
z
)
\hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D}(z)
T^S←D(z)由下式给出:
T
^
S
←
D
=
(
z
)
M
0
z
+
∑
k
=
1
K
M
k
(
T
S
+
R
(
p
k
)
+
J
k
(
z
−
T
D
+
R
(
p
k
)
)
)
(7)
\hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D} = (z)\mathbf{M}_0z+\sum\limits_{k=1}^K\mathbf{M}_k\left(\mathcal{T}_{\mathbf{S+R}}(p_k)+J_k(z-\mathcal{T}_{\mathbf{D+R}}(p_k))\right) \tag{7}
T^S←D=(z)M0z+k=1∑KMk(TS+R(pk)+Jk(z−TD+R(pk)))(7)
注意,考虑项 M 0 z M_0z M0z以便对诸如背景的非移动部分进行建模。
遮挡感知图像生成
如第3节中所提及的,源图像
S
S
S不与要生成的图像
D
^
\hat D
D^像素到像素地对准。为了处理这种不对齐,我们使用类似于[29,28,15]的特征扭曲策略。更准确地说,在两个下采样卷积块之后,我们获得维度为
H
′
×
W
′
H^{\prime}\times W^{\prime}
H′×W′的特征映射
ξ
∈
R
H
′
×
W
′
\boldsymbol{\xi}\in\mathbb{R}^{H^{\prime}\times W^{\prime}}
ξ∈RH′×W′。然后,我们根据
T
^
S
←
D
\hat{\mathcal T}_{\mathbf S\leftarrow\mathbf D}
T^S←D对
ξ
\xi
ξ进行扭曲。在S中存在遮挡的情况下,光流可能不足以生成
D
^
\hat D
D^。实际上,S中的遮挡部分不能通过图像扭曲来恢复,因此应该被修复。因此,我们引入了一个遮挡图
O
^
S
←
D
∈
[
0
,
1
]
H
′
×
W
′
\hat{\mathcal{O}}_{\mathbf{S\leftarrow D}}\in[0,1]^{H^{\prime}\times W^{\prime}}
O^S←D∈[0,1]H′×W′来掩盖应该修复的特征图区域。因此,遮挡掩模减小了与被遮挡部分相对应的特征的影响。变换后的特征图被写为:
ξ
′
=
O
^
S
←
D
⊙
f
w
(
ξ
,
T
^
S
←
D
)
,
(8)
\boldsymbol{\xi}'=\hat{\mathcal{O}}_{\mathbf{S\leftarrow D }}\odot f_w(\boldsymbol{\xi},\hat{\mathcal{T}}_{\mathbf{S\leftarrow D}}),\tag{8}
ξ′=O^S←D⊙fw(ξ,T^S←D),(8)
其中
f
w
(
⋅
,
⋅
)
fw(·,·)
fw(⋅,⋅)表示反向warping操作,
⊙
\odot
⊙表示Hadamard乘积。我们估计遮挡掩模从我们的稀疏关键点表示,通过添加一个通道到最后一层的密集运动网络。最后,变换后的特征图ξ被馈送到生成模块的后续网络层(参见Sup.Mat.)以呈现所寻找的图像。
训练损失函数
我们以端到端的方式结合几个损失来训练我们的系统。首先,我们使用基于约翰逊等人的感知损失的重建损失。[19]使用预训练的VGG-19网络作为我们的主要驱动损失。损失是基于实现ofWang等人。[37]。对于输入驱动帧D和对应的重构帧D,重构损失被写为:
L
r
e
c
(
D
^
,
D
)
=
∑
i
=
1
I
∣
N
i
(
D
^
)
−
N
i
(
D
)
∣
,
(9)
L_{rec}(\mathbf{\hat{D}},\mathbf{D})=\sum\limits_{i=1}^I\left|N_i(\mathbf{\hat{D}})-N_i(\mathbf{D})\right|,\tag{9}
Lrec(D^,D)=i=1∑I
Ni(D^)−Ni(D)
,(9)
其中
N
i
(
.
)
N_i(.)
Ni(.)是从特定VGG-19层提取的第
i
i
i个通道特征,并且I是该层中的特征通道的数量。此外,我们建议在许多分辨率上使用这种损失,形成通过下采样D和D获得的金字塔,类似于MS-SSIM [39,32]。分辨率分别为256 × 256、128 × 128、64 × 64和32 × 32。总共有20个损失条件。
施加等方差约束:
我们的关键点预测器在训练期间不需要任何关键点注释。这可能导致性能不稳定。等方差约束是驱动无监督关键点发现的最重要因素之一[18,43]。它迫使模型预测关于已知几何变换的一致关键点。我们使用薄板样条变形,因为它们以前用于无监督关键点检测[18,43],并且类似于自然图像变形。由于我们的运动估计器不仅预测关键点,而且雅可比,我们扩展众所周知的等方差损失,以另外包括雅可比的约束。
我们假设图像X经历已知的空间变形 T X ← Y {\mathcal T}_{\mathbf X\leftarrow\mathbf Y} TX←Y。在这种情况下, T X ← Y {\mathcal T}_{\mathbf X\leftarrow\mathbf Y} TX←Y可以是仿射变换或薄平面样条变形。在该变形之后,我们获得新的图像Y。现在,通过将我们的扩展运动估计器应用于两个图像,我们获得了 T X ← R {\mathcal T}_{\mathbf X\leftarrow\mathbf R} TX←R和 T Y ← R {\mathcal T}_{\mathbf Y\leftarrow\mathbf R} TY←R的一组局部近似。标准等方差约束写为:
T
X
←
R
≡
T
X
←
Y
∘
T
Y
←
R
,
(10)
\mathcal{T}_{\mathbf{X\leftarrow R}}\equiv\mathcal{T}_{\mathbf{X \leftarrow Y}}\circ\mathcal{T}_{\mathbf{Y\leftarrow R}},\tag{10}
TX←R≡TX←Y∘TY←R,(10)
在计算两侧的一阶泰勒展开之后,我们获得以下约束:
T
X
←
R
(
p
k
)
≡
T
X
←
Y
∘
T
Y
←
R
(
p
k
)
,
(11)
\mathcal{T}_{\mathbf{X\leftarrow R}}(p_k)\equiv\mathcal{T}_{\mathbf{X\leftarrow Y}}\circ\mathcal{T}_{\mathbf{Y\leftarrow R}}(p_k),\tag{11}
TX←R(pk)≡TX←Y∘TY←R(pk),(11)
( d d p T X ← R ( p ) ∣ p = p k ) ≡ ( d d p T X ← Y ( p ) ∣ p = T Y ← R ( p k ) ) ( d d p T Y ← R ( p ) ∣ p = p k ) , (12) \left(\frac{d}{dp}\mathcal{T}_{\mathbf{X}\leftarrow \mathbf{R}}(p)\bigg|_{p=p_k}\right)\equiv\left(\frac{d}{dp}\mathcal{T}_{\mathbf{X}\leftarrow \mathbf{Y}}(p)\bigg|_{p=\mathcal{T}_{\mathbf{Y}\leftarrow \mathbf{R}}(p_k)}\right)\left(\frac{d}{dp}\mathcal{T}_{\mathbf{Y}\leftarrow \mathbf{R}}(p)\bigg|_{p=p_k}\right),\tag{12} (dpdTX←R(p) p=pk)≡(dpdTX←Y(p) p=TY←R(pk))(dpdTY←R(p) p=pk),(12)
注意,约束Eq.(11)与关键点的标准等方差约束严格相同[18,43]。在训练期间,我们使用等式11两侧之间的简单L1损失来约束每个关键点位置。然而,实施来自Eq.(12)将迫使雅可比矩阵的大小为零,并将导致数值问题。为此,我们以如下方式重新制定该约束:
1
≡
(
d
d
p
T
X
←
R
(
p
)
∣
p
=
p
k
)
−
1
(
d
d
p
T
X
←
Y
(
p
)
∣
p
=
T
Y
←
R
(
p
k
)
)
(
d
d
p
T
Y
←
R
(
p
)
∣
p
=
p
k
)
,
(13)
\mathbb{1}\equiv\left(\frac{d}{dp}\mathcal{T}_{\mathbf{X\leftarrow R}}(p)\bigg|_{p=p_k}\right)^{-1}\left(\frac{d}{dp}\mathcal{T}_{\mathbf{X\leftarrow Y}}(p)\bigg|_{p=\mathcal{T}_{\mathbf{Y\leftarrow R}}(p_k)}\right)\left(\frac{d}{dp}\mathcal{T}_{\mathbf{Y\leftarrow R}}(p)\bigg|_{p=p_k}\right),\tag{13}
1≡(dpdTX←R(p)
p=pk)−1(dpdTX←Y(p)
p=TY←R(pk))(dpdTY←R(p)
p=pk),(13)
其中1是2 × 2单位矩阵。然后,类似于关键点位置约束采用L1损失。最后,在我们的初步实验中,我们观察到我们的模型对重建的相对权重和两个等方差损失的敏感性较低。因此,我们在所有实验中使用相等的损失权重。