HumanNeRF:从单目视频中实现移动人物的自由视点渲染

2023-11-22 14:18:54 浏览数 (1)

来源:Arxiv 题目:HumanNeRF:Free-viewpoint Rendering of Moving People from Monocular Video 作者:Chung-Yi Weng,Brian Curless,Pratul P. Srinivasan,Jonathan T. Barron,Ira Kemelmacher-Shlizerman 论文链接:https://arxiv.org/abs/2201.04127 内容整理:桂文煊 本文介绍了一种自由视点渲染方法HumanNeRF,它适用于给定的人类进行复杂身体运动的单目视频。其方法可以在任何一帧暂停视频,并从任意新的摄像头时代的视点渲染对象,甚至可以为特定的帧和身体姿势绘制完整的360度相机路径。这项任务特别具有挑战性,因为它需要合成从输入视频中可能不存在的各种相机角度观察到的身体的真实细节,以及合成布料褶皱和面部外观等精细细节。其方法优化了处于规范T姿势的人的体积表示,以及通过向后扭曲将估计的规范表示映射到视频的每一帧的运动场。通过深度网络将运动场分解为骨骼刚性运动和非刚性运动。本文展示了与先前工作相比的显著性能改进,以及在具有挑战性的不受控制的捕捉场景中移动人类的单目视频中的自由视点渲染的令人信服的例子。

介绍

给定一个人类表演活动的单个视频,我们希望能够在任何一帧暂停,并围绕表演者旋转360度,以便在那个时刻从任何角度观看(图1)。这个问题——移动物体的自由视点渲染——是一个长期存在的研究挑战,因为它涉及到合成以前看不见的相机视图,同时考虑布料褶皱、头发运动和复杂的身体姿势。这个问题对于在本文中所讨论的用单个相机拍摄的“现场”视频(单目视频)来说尤其困难。以前的神经渲染方法通常假设多视图输入、仔细的实验室捕捉,或者由于非刚体运动而在人类身上表现不佳。特定于人类的方法通常假设SMPL模板作为先验,这有助于约束运动空间,但也会在服装中引入SMPL模型无法捕捉到的伪影和复杂运动。最近可变形的NeRF方法对于小的变形表现良好,但在舞蹈等大型全身运动中表现不佳。本文介绍了一种称为HumanNeRF的方法,该方法将移动的人的单个视频作为输入,在每帧、现成的分割(通过一些手动清理)和自动3D姿势估计之后,优化人体的标准体积T姿势,以及通过后向扭曲将估计的标准体积映射到每个视频帧的运动场。运动场结合了骨骼刚性运动和非刚性运动,每种运动都以体积表示。其解决方案是数据驱动的,标准体积和运动场源自视频本身,并针对大型身体变形进行了优化,端到端训练,包括3D姿势细化,无需模板模型。在测试时,可以在视频中的任何一帧暂停,并根据该帧中的姿势,从任何视点渲染生成的体积表示。

图1 舞者某帧的多角度图像

方法

pipeline

方法pipeline如图2

图2 pipeline

该方法以视频帧为输入,表示为连续场,以及从观察到规范空间的运动场映射。运动场被分解为骨骼刚性和非刚性运动,分别表示为离散网格和连续场。除此之外,还改进了使用现成的身体姿势估计器初始化的身体姿势,从而获得更好的对齐。在观察空间和输入图像中的体绘制之间施加损失,将优化引导到解。

将人用神经场表示

将具有canonical appearance volume Fc的移动的人表示为warp到观察空间中的姿势以产生输出外观体积Fo:

F_o(x,p)=F_c(T(x,p)) quad(1)

其中

F_c:x→(c,σ)

将位置x映射到颜色c和密度σ,

T:(x_o,p)→x_c

定义了从观测空间到规范空间的运动场映射点,由观察到的姿势

p=(J,Ω)

指导,其中J包括K个标准的3D关节位置,

Ω={ω_i}

是表示为轴角向量

ω_i

的局部关节旋转。

通过将运动场分解为两部分来处理具有复杂变形的复杂人体运动:

T_(x,p)=T_{skel}(x,p) T_{NR}T_{skel}((x,p),p) quad (2)

其中

T_{skel}

表示骨架驱动的变形,

T_{NR}

从骨架驱动的变形开始,并产生偏移∆x到它。实际上,

T_{skel}

提供了粗变形的影响,而

T_{NR}

提供了更非刚性的影响,例如衣服。

规范体积

F_c(x)=MLP_theta(gamma(x)) quad (3)

规范体积Fc表示为一个连续的场,MLP输出给定点x的颜色可密度σ,

gamma

为位置编码。

骨骼运动

计算骨骼变形

T_{skel}

作为一种逆线性混合蒙皮,它将观察空间中的点映射到规范空间:

T_{skel}(x,p)=Sigma omega_o^i(x)(R_ix t_i)quad (4)

其中

omega_o^i

是第 i 个骨骼的混合权重,Ri、ti 分别是旋转和平移,它将骨骼的坐标从观察映射到规范空间;Ri 和 ti 可以从 p 显式计算。然后我们的目标是优化

omega_o^i

非刚性运动

将非刚性运动

T_{NR}

表示为骨架驱动运动的偏移量 Δx,即

Δx(x, p) = T_{NR}(T{skel}(x, p), p))quad (5)

为了捕捉细节,用 MLP 表示 T_{NR}:

T_{NR}(x,p)=MLP_theta(gamma(x);Ω)quad (6)

姿势校正

从图像估计的身体姿势

p=(J,Ω)

通常不准确。为了解决这个问题,对姿势进行了更新:

P_{pose}(p)=(J,Delta_Ω(p)⊗Ω) quad (7)

实验证明用MLP来表示这一过程会更好,

Delta_Ω(p)=MLP_theta(Ω) quad (8)

优化HumanNeRF

渲染方程可以写为:

C(r)=Sigma(prod(1-alpha_j))alpha_ic(x_i)quad (9)

其中

alpha_i=1-exp(-sigma(x_i)Delta t_i)

, 当近似前景概率f(x)较低时,对

alpha_i

进行改写:

alpha_i=f(x_i)(1-exp(-sigma(x_i)Delta t_i))quad (10)

非刚性运动场的延迟优化

优化的骨架驱动和非刚性运动不是解耦的——主体骨骼运动的一部分由非刚性运动场建模——由于非刚性运动对输入图像过度拟合。因此,在渲染看不见的视图时,质量会降低。为了解决该问题,采用优化方法如下:开始时禁用非刚性运动,然后将它们以粗到细的方式返回。为此,对于非刚性运动 MLP,作者将截断的 Hann 窗口应用于其位置编码的频带,以防止对数据的过度拟合,随着优化的进行,增加窗口大小。论文定义了位置编码的每个频带j的权重:

omega(tau)=frac{1-cos(clamp(tau-j,0,1)pi)}{2} quad (11)

其中

τ∈[0,L)

确定截断的 Hann 窗口的宽度,L是位置编码中频带的总数。然后,将 τ 定义为优化迭代的函数:

tau(t)=Lfrac{max(0,t-T_s)}{T_e-T_s} quad (12)

其中t是当前迭代,

T_s

T_e

是决定何时实现非刚性运动优化以及何时使用位置编码的完整频带的超参数。

损失函数和射线采样

采用MSE损失来匹配像素级外观,并且使用感知损失

L_{PIPS}

,最终的损失函数为:

L=L_{PIPS} lambda L_{MSE}

,其中

lambda

设置为0.2。在图像上采样大小为H×H的G个patch,并在每个批次中渲染总共G×H×H射线。将渲染的patch与输入图像上位置相同的patch进行比较。在具体实施中,使用G=6和H=32。

实验结果

如图3所示,HumanNeRF在所有受试者和所有指标上都优于方法Neural Body,除了PSNR上的受试者393。

图3 定量测试结果

HyperNeRF在实验中并没有为新视图合成产生有意义的输出,如图4所示,这可能是因为它依赖于多个视图(移动相机)来构建连贯的 3D 模型。对于移动主体的静态摄像机情况,它无法恢复有意义的深度图,似乎仅仅只是记住输入图像,而不是从它们进行泛化。

图4 定性测试结果

总结

该论文提出了HumanNeRF,为从单目视频中移动的人的自由视点渲染产生了较好的结果。通过仔细建模身体姿势和运动以及正则化优化过程来展示这种具有挑战性的场景的高保真结果。实验结果指向了在运动中对人类进行建模的一个有希望的方向,并最终从随意捕捉中实现完全逼真的、自由视点的人渲染。

0 人点赞