目录
今天读的是CVPR 2022 oral的一篇文章,文章由UW和Google合作,旨在使用NeRF基于单目视频渲染合成运动的人体。
项目地址:https://grail.cs.washington.edu/projects/humannerf/
Abstract
引入了一种自由视点渲染方法——HumanNeRF。它适用于人类进行复杂身体运动的单目视频。该方法可以在任何帧暂停视频,并从任意新的摄像机视点甚至是该特定帧和身体姿势的完整 360 度摄像机路径渲染主体。这项任务特别具有挑战性,因为它需要合成身体的细节,从输入视频中可能不存在的各种角度看,以及合成精细的细节,如布料褶皱和脸部细节。我们的方法优化了人在规范 T 姿势中的体积表示,与运动场相一致,该运动场通过向后扭曲将估计的规范表示映射到视频的每一帧。运动场被分解为由深度网络产生的骨骼刚性和非刚性运动。文章展示了性能改进和在随意的场景中移动人类的单目视频的渲染示例。
1.Introduction
给定一个人类运动的视频,我们想要在任何帧暂停并能够360度旋转在任何角度观察这个视频里的表演者。这个问题长期以来都是一个挑战,因为它需要合成一些摄像机完全没有涉及到的角度,并且还需要合成诸如衣服折叠、头发摆动、复杂肢体运动等等细节。
先前的工作可以在拥有小心拍摄的多个视图的情况下合成新视角,但在人类的合成上表现不好,因为人类的动作包含非刚体运动。针对人类的合成会把SMPL模板当作先验条件,这虽然有助于限制运动空间,但也会在服装和复杂运动中引入 SMPL 模型未捕获的伪影。最近,可变形的 NeRF 方法对于小的变形表现良好,但不适用于像跳舞这样的大的全身运动。
我们创造了一种名为 HumanNeRF 的方法,该方法将运动的人的视频作为输入,并在使用现成的估计器提取每帧 3D 姿势后,优化人体的典型体积 T-pose和通过backward warping将估计的规范体积映射到每个视频帧的motion field。运动场结合了骨骼刚性运动和非刚性运动,每一个都以体积表示。标准体积和运动场源自视频本身,并针对大的身体变形进行了优化,端到端训练,包括 3D 姿势细化,无需模板模型。在测试时,我们可以在视频中的任何帧暂停,并根据该帧中的姿势,渲染生成从任何角度来看的体积表示。
我们展示了各种示例的结果:现有的实验室数据集、我们在实验室外捕获的视频以及从 YouTube 下载的内容。我们的方法在数值上优于最先进的方法,并产生显着更高的视觉质量。
2.Related work
自由视点渲染的物理特性涉及对几何和表面属性进行建模,然后从新的相机视图进行渲染。但是,仍然很难重新创建复杂的几何形状和微妙的照明效果。 另外,基于图像的渲染提供了基于图像域中给定视图集的新视图,并在过去几十年中进行了大量研究。
Human specific rendering
Kanade 等人的工作是对人类自由视点渲染的最早研究之一。,它引入了一个配备相机的圆顶来恢复深度图和网格,通过重投影和混合不同的视图来渲染新的视图,以解决由于遮挡引起的网格空洞。 后来,Matusik 等人从对象的轮廓中重建了一个visual hull,并通过仔细选择没有辅助几何表示的像素来渲染它。 Carranza等人使用参数化的身体模型作为先验并组合无标记运动捕捉和依赖于视图的纹理。紧接着的工作带来了非刚性变形、纹理扭曲以及基于体积或球体的各种表示。Collet等人和Guo等人建立了一个系统和pipeline来生成高质量的视频中的移动人物。这些基本都依赖多个视角的视频和昂贵的采集装置,但我们想用简单的单目相机来达到这个效果。
Neural radiance fields
神经辐射场使得高质量渲染成为可能。文章将会把提出的方法与一些动态和可变形NeRF进行了对比。
Human-specific neural rendering
Lingjie 等人的工作从预先捕获的身体模型开始,学习对时间相关的动态纹理进行建模并强制执行时间连贯性。Martin-Brualla等人训练了一个 UNet 来改善体积捕获引入的artifacts。 Pandey 等人的后续工作通过半参数学习将所需输入帧的数量减少到单个 RGBD 图像。Wu和Peng等人探索了使用嵌入点云(来自 MVS)或 reposed mesh vertices(来自SMPL),并学习了一个随附的基于 UNet 或 NeRF 的神经渲染器。Zhang等人将场景分解为背景和表演者,并用分离的 NeRF 表示它们,从而实现场景编辑。除了自由视点渲染,还有另一个相关的活跃研究领域,专注于 2D或 3D 中的人类移动重定位。我们的方法与那些的主要区别在于,我们将包含复杂人体运动的单目视频作为输入,并可以进行高质量 3D 渲染。
Concurrent work
Xu等人的工作能够同时学习隐式几何以及图像的外观, 他们主要关注多视图设置,其中有一些简单的人体运动(A-pose)单目视频示例。 Su等人使用过度参数化的 NeRF 来严格转换 NeRF 特征,以优化身体姿势,从而进行最终渲染。 非刚性运动没有显式建模,所以渲染质量不高。 Noguchi等人发现了类似的方法但效果也不够理想。
3.Representing a Human as a Neural Field
我们将一个移动的人物表达为
F
c
F_{c}
Fc,转换为观察的姿势下能看到的样子
F
o
F_{o}
Fo:
其中
F
c
:
x
−
>
(
c
,
σ
)
F_{c}:x->(c,\sigma)
Fc:x−>(c,σ)表示位置
x
x
x和颜色
c
c
c体积密度
s
i
g
m
a
sigma
sigma,
T
:
(
x
0
,
p
)
−
>
x
c
T:(x_{0},p)->x_{c}
T:(x0,p)−>xc定义了一个motion field,把点从观察空间映射回canonical space,由观察姿态
p
=
(
J
,
Ω
)
p=(J,\Omega)
p=(J,Ω)引导,其中
J
J
J包含
K
K
K个标准3D联合位置,
Ω
=
{
w
i
}
\Omega=\{w_{i}\}
Ω={wi}是表示为轴角向量的local joint rotations。
我们通过将运动场分解为两部分来处理具有复杂变形的复杂人体运动:
其中
T
s
k
e
l
T_{skel}
Tskel表示skeleton驱动的变形,基本上就是逆linear-blend skinning,
T
N
R
T_{NR}
TNR从骨架驱动的变形开始,并对其产生偏移
Δ
x
Δx
Δx。实际上,
T
s
k
e
l
T_{skel}
Tskel提供由标准skinning驱动的粗略变形,而
T
N
R
T_{NR}
TNR 提供更多非刚性效果,比如由于服装的变形。
对于野外图像,我们使用现成的 3D 身体+相机姿势估计器。 由于姿势估计的不准确,我们还求解了一个姿势校正函数
P
p
o
s
e
(
p
)
P_{pose} (p)
Ppose(p),它可以更好地解释观察结果,并将这种改进应用于骨架驱动的变形,即,我们将
T
s
k
e
l
(
x
,
p
)
T_{skel} (x, p)
Tskel(x,p) 替换为
T
s
k
e
l
(
x
,
P
p
o
s
e
(
p
)
)
T_{skel}(x, P_{pose} (p))
Tskel(x,Ppose(p)) 。整体架构如下图所示:
Canonical volume
我们把canonical volume
F
c
F_{c}
Fc表示为具有MLP的连续场,在给定点
x
x
x 的情况下输出颜色
c
c
c 和密度
σ
\sigma
σ:
其中y是和NeRF当中一模一样的位置编码方式。
Skeletal motion
我们计算了骨骼形变
T
s
k
e
l
T_{skel}
Tskel作为一种逆向linear blend skinning,将观察空间中的点映射到规范空间:
其中
w
0
i
w^{i}_{0}
w0i是第
i
i
i个骨骼的混合权重,
R
i
R_{i}
Ri和
t
i
t_{i}
ti是旋转和平移,将骨骼的坐标从观察映射到规范空间。
R
i
R_{i}
Ri 和
t
i
t_{i}
ti 可以从
p
p
p 显式计算,我们的目标是针对
w
i
o
w^{o}_{i}
wio 进行优化。
在实践中,我们通过将 K 个混合权重存储为一组体积
w
c
i
(
x
)
{w_{c}^{i} (x)}
wci(x) 来求解在规范空间中定义的
w
c
i
w_{c}^{i}
wci,从中导出观察权重为:
求解规范空间中的一组权重体积
w
c
i
(
x
)
{w_{c}^{i} (x)}
wci(x),而不是观察空间中的
N
N
N 组
w
o
i
(
x
)
{w_{o}^{i} (x)}
woi(x)(对应于
N
N
N 个输入图像),可以导致更好的泛化,因为它避免了过拟合。
我们将
w
c
i
(
x
)
{w_{c}^{i} (x)}
wci(x)的集合打包成具有 K 个通道的单个volume
W
c
(
x
)
W_{c} (x)
Wc(x)。 我们没有使用 MLP 对
W
c
W_{c}
Wc 进行编码,而是出于两个原因选择显式体积表示:(1) 等式 5 表明需要
K
K
K 个 MLP 评估来计算每个
w
o
i
(
x
)
w_{o}^{i} (x)
woi(x),这对于优化是不可行的(在我们的工作中
K
=
24
K = 24
K=24); (2) 通过三线性插值重新采样的具有有限分辨率的显式体积提供了平滑度,有助于以后对优化进行正则化。 在实践中,在优化过程中,我们不是直接求解
W
c
W_{c}
Wc ,而是求解从随机(恒定)潜在代码 z 生成体积的 CNN 的参数
θ
s
k
e
l
θ_{skel}
θskel :
我们还添加了一个通道,一个背景类,并将
W
c
W_{c}
Wc 表示为具有
K
+
1
K + 1
K+1 个通道的volume。然后,我们将channel-wise的 softmax 应用于 CNN 的输出,在通道之间执行统一分区。然后可以使用等式5的分母来近似相似度
f
(
x
)
f (x)
f(x)(作为主体的一部分),其中
f
(
x
)
=
f (x) =
f(x)=
当
f
(
x
)
f (x)
f(x) 接近于零时,我们很可能在远离主体的自由空间中,我们将在体绘制期间使用它。
优化混合权重的主意其实并不新颖,相似的方法在human modeling上也有被使用过。
Non-rigid motion
我们使用非刚体运动
T
N
R
T_{NR}
TNR作为骨骼驱动的运动的一个偏移量
Δ
x
\Delta x
Δx,比如:
∆
x
(
x
,
p
)
=
T
N
R
(
T
s
k
e
l
(
x
,
p
)
,
p
)
)
∆x(x, p) = T_{NR} (T_{skel} (x, p), p))
∆x(x,p)=TNR(Tskel(x,p),p))。为了获取细节,我们使用MLP来表示
T
N
R
T_{NR}
TNR:
其中,我们再一次使用了位置编码,并将 MLP 设置在
Ω
Ω
Ω 上,身体姿势
p
p
p 的joint angles。
Pose correction
身体的姿态
p
=
(
J
,
Ω
)
p= (J, \Omega)
p=(J,Ω)如果通过图片估算的话经常是不准的。为了解决这个问题,我们使用这个方法对pose进行更新:
我们将关节
J
J
J 固定并优化关节角度的相对更新,
Δ
Ω
=
(
Δ
ω
0
,
.
.
.
,
Δ
ω
K
)
ΔΩ = (Δω_{0} , ..., Δω_{K} )
ΔΩ=(Δω0,...,ΔωK),然后将其应用于
Ω
Ω
Ω 以获得更新的旋转向量。
根据经验,我们发现,不直接针对
∆
Ω
∆Ω
∆Ω 进行优化,而是求解 MLP 的参数
θ
p
o
s
e
θ_{pose}
θpose,该 MLP 生成以
Ω
Ω
Ω 为条件的
∆
Ω
∆Ω
∆Ω 会导致更快的收敛:
通过这种姿势校正,我们可以将从观察空间扭曲到规范空间的方程重写为:
4.Optimizing a HumanNeRF
在本节中,我们描述了我们最小化的总体目标函数、我们的体积渲染过程、我们如何规范优化过程、具体的损失函数细节和光线采样方法。
HumanNeRF objective
给定一些视频帧
{
I
1
,
I
2
,
.
.
.
,
I
N
}
\{I_{1},I_{2},...,I_{N}\}
{I1,I2,...,IN},身体姿态
{
p
1
,
p
2
,
.
.
.
,
p
N
}
\{p_{1},p_{2},...,p_{N}\}
{p1,p2,...,pN}和相机
{
e
1
,
e
2
,
.
.
.
,
e
N
}
\{e_{1},e_{2},...,e_{N}\}
{e1,e2,...,eN},我们要解决的问题是:
其中L是loss函数,
Γ
\Gamma
Γ是体积渲染器,我们最小化所有网络参数
Θ
=
{
θ
c
,
θ
s
k
e
l
,
θ
N
R
,
θ
p
o
s
e
}
Θ = \{θ_{c} , θ_{skel} , θ_{NR} , θ_{pose} \}
Θ={θc,θskel,θNR,θpose}的loss。
F
c
F_{c}
Fc 由参数
θ
c
θ_{c}
θc 确定,而从观察空间到规范空间的变换
T
T
T 依赖于参数
θ
s
k
e
l
θ_{skel}
θskel 、
θ
N
R
θ_{NR}
θNR 和
θ
p
o
s
e
θ_{pose}
θpose 。
4.1 Volume rendering
我们使用的渲染神经场的方式如下,对于一条射线
r
r
r,采样
D
D
D个样本,那么期望颜色
C
(
r
)
C(r)
C(r)可以被表示为:
其中
Δ
t
i
\Delta t_{i}
Δti是第
i
i
i和
i
+
1
i+1
i+1个采样点之间的间距。
当近似前景概率
f
(
x
)
f (x)
f(x) 较低时,我们进一步扩大
α
i
α_{i}
αi 的定义:
我们应用了NeRF提出的stratified sampling。 我们不使用hierarchical sampling,因为可以从他们的 3D 身体姿势估计对象的bounding box。 然后我们只对box内的点进行采样。
4.2 Delayed optimization of non-rigid motion field
当一次求解等式11中的所有网络参数时,我们发现优化的骨架驱动和非刚性运动没有解耦,对象的一部分骨骼运动由非刚性运动场建模,这是由于将非刚性运动过拟合到了输入图像。 于是,在渲染看不见的视角时就会质量下降。
我们通过管理优化过程来解决问题。 具体来说,我们在优化开始时禁用非刚体运动,然后以coarse to fine的方式将它们恢复。 为了实现这一点,对于非刚性运动 MLP,我们将截断的 Hann window应用于其位置编码的频带,以防止过度拟合数据,随着优化的进行增加窗口大小。 继 Park 等人之后,我们定义了位置编码的每个frequency band j 的权重:
其中
α
∈
[
0
,
L
)
α ∈ [0, L)
α∈[0,L)定义了窗口的宽度,
L
L
L是位置编码中频带的总个数。接着,我们定义了
α
α
α 作为优化迭代的函数:
其中
t
t
t是当前的迭代,
T
s
T_{s}
Ts和
T
e
T_{e}
Te是超参,定义了何时启用非刚体运动优化,何时使用位置编码的full frequency bands。我们从位置编码中删除了位置标识,但并不影响性能。通过这种方式,我们可以设置
α
=
0
\alpha=0
α=0,来完全地禁用非刚体运动优化。
4.3 Loss and ray sampling
我们使用 MSE 损失来匹配像素级外观和感知损失 LPIPS,以提供对轻微错位和阴影变化的鲁棒性,并改善重建中的细节。我们的最终loss函数是这两个loss之和。我们使用
λ
=
2
\lambda=2
λ=2并选择VGG作为LPIPS的backbone。
Patch-based ray sampling
如果像在NeRF中所做的那样,对随机射线样本进行训练,并不能最大限度地减少我们的损失,因为 LPIPS 使用卷积来提取特征。因此,我们在图片上取
G
G
G个
H
×
H
H×H
H×H大小的patch,然后在每个patch中渲染总共
G
×
H
×
H
G×H×H
G×H×H个光线。将渲染的patch与输入图像上相同位置的patch进行比较。我们在实验中使用
G
=
6
G=6
G=6,
H
=
32
H=32
H=32。
5.Results
5.1 Evaluation dataset
在ZJU-MoCap,自己拍的视频和YouTube下载的视频上进行了测试。对ZJU-Mocap,选择了6个物体,采用由相机1拍摄的照片训练,用另外22个相机来测试。数据集直接提供了相机参数、人体姿态和语义分割结果,所以可以直接使用。对于自己采集的视频和网上下载的视频,使用SPIN得到近似的相机参数和人体姿态,自动分割前景物体,然后手动调整分割结果。并且我们把视频帧resize了以保证物体高度大概在500像素。
5.2 Optimization details
一些参数的设置。
5.3 Evaluation method
我们的方法适用于静态或移动的单个摄像机; 我们专注于使用静态相机和移动主体的结果,这是最自然的捕捉人表现的方法。
5.4 Comparisons
我们发现HyperNeRF在我们的实验当中不能产生有意义的新视角合成,这有可能是因为它依赖于多个视角(移动的相机)来构建三维模型。对于静态相机和移动的物体,它无法恢复有意义的深度图所以看起来是在记忆输入图片而非从输入图片泛化合成新图片。我们发现人物运动剧烈的时候HyperNeRF也无法正常工作了。
定量地来说,如表1所示,HumanNeRF 在所有主题和所有指标下都优于Neural body,除了 PSNR指标在主题 393上的数值(已知有利于平滑结果的指标)。 感知度量 LPIPS 的增益尤其显着,平均提高了近 40%。 对于ZJU-MoCap这个数据集,HumanNeRF 的视觉质量明显优于 Neural Body。 即使在完全未观察到的视图上,我们的方法也能够产生类似于基本事实的高保真细节,而Neural body往往会产生更模糊的结果。 自拍视频和 YouTube 视频的结果也显示了使用 HumanNeRF 进行的始终如一的高质量重建。
5.5 Ablation studies
做了一些消融实验。
表 3 说明,对于 ZJU-MoCap 数据,仅skeletal deformation就足以显着改善Neural body。 添加非刚性变形可提供更多收益。 (为此数据集提供了准确的姿势,因此我们没有在此处对姿势优化器执行消融。)
图 6 直观地显示了对于野外数据,考虑非刚性运动以及对看不见的视图进行姿势校正的重要性。
图 7 显示了delayed optimization对于解耦骨骼变形和非刚性变形的重要性。 当解耦得不好时,对新视图的泛化要差得多,如图 8 所示。
6.Discussion
Limitations
当视频中未显示身体的一部分时,方法会出现artifacts。 姿势校正改善了图像对齐,但如果初始姿势估计较差或图像包含运动模糊等强伪影,则可能会失败。 我们假设非刚性运动是姿势相关的,但这并不总是正确的(例如,由于风或动态主体运动后的跟进导致衣服移动)。 我们还假设了漫射的照明,因此当对象上的点旋转时,外观不会发生显着变化。 最后,对于随意采集的视频,我们依靠人工干预来纠正分割错误。 这些限制为未来的工作指明了一系列有趣的途径。
Conclusion
HumanNeRF为单目视频中的移动人物的自由视角渲染生成了最先进的结果。 我们通过仔细建模身体姿势和运动以及规范优化过程来展示这种具有挑战性的场景的高保真结果。 我们对运动中的人类进行建模,并最终从随意的捕捉中实现完全逼真的、自由视角的人物渲染。