Nerfies:Deformable NeRF

NeRF只能对static scene学习,因此,为了同大多数dynamic NeRF一样,本文也是增加一个deformation field将observation frames先转换到canonical frames,然后再使用NeRF进行学习重建。

Problem

hand-hold camera拍摄图片所存在的问题:非刚性,在拍摄过程中无法保持静止,如表情、头发、衣服等都会有变化。

  1. 刚性:仅有旋转和平移;
  2. 非刚性:透射、映射、仿射等复杂变换;

Solution-Deformation Field

本文的解决方法是将具有非刚性的observation frames先变换到canonical frames,然后再使用NeRF-like方法进行渲染重建。Overview of Nerfies如下:

Deformation Field的功能就是实现从observation frames到canonical frames的变换。考虑到hand-held camera拍摄的照片中即存在刚性与非刚性,文中提出了对应的solution。

对于刚性部分,也就是仅含平移和旋转时,使用一个SE(3) Field来表示,公式如下,记为T(x):xxT(x):x{\rightarrow}x'

x=eSx=erx+per:rotationp=Gv:translation\Large x' = e^Sx=e^rx+p \\ \Large e^r:rotation \\ \Large p=Gv:translation

对于非刚性部分,如脸部表情的细微变化,用elastic regularization进行约束。原理:T(x)T(x)变换对应的雅各比矩阵JT(x)J_T(x)描述了在点x处,对于该变换最好的线性估计。所以,可以通过JT(x)J_T(x)控制T(x)T(x)的局部行为,也就是非刚性变换。

JTSVDJT=UΣVTR=VUTpenalizationLelastic(x)=logΣlogIF2\Large J_T的SVD:J_T = U{\Sigma}V^T \\ \Large R = VU^T \\ \Large penalization:L_{elastic}(x) = ||\log{\Sigma}-\log{I}||^2_F

为了增加robustness,使用Geman-McClure robust error function:

Lelasticr(x)=ρ(logΣF,c),ρ(x,c)=2(x/c)2x/c2+4\Large L_{elastic-r}(x) = \rho({||\log{\Sigma}||_F},c), \\ \Large \rho(x,c) = \frac{2(x/c)^2}{x/c}^2+4

Background Regularization

另一个问题是:Deformation Field是欠约束的unconstrained,所以T(x)T(x)变换会对observation frames中的所有对象都起作用,包括背景,但是背景应该保持不动,所以本文提出background regularization,让背景在变换过程中保持不变。

设我们已经知道一些应该保持不动的点(如背景关键点)为X={x1,...,xK}X=\{x_1,...,x_K\},通过Deformation Field之后得到T(X)={T(x1),...,T(xK)}T(X)=\{T(x_1),...,T(x_K)\},则惩罚项就是让X,T(X)X,T(X)尽可能相等,公式如下:

Lbg=1Kk=1KT(xk)xk2\Large L_{bg} = \frac{1}{K}\sum_{k=1}^K||T(x_k)-x_k||_2

Coarse-to-Fine Deformation Regularization

针对NeRF的Positional Encoding存在的问题:

  1. m较小时,欠拟合(细节不够);
  2. m较大时,过拟合;

本文提出coarse-to-fine deformation regularization,公式如下:

γα(x)=(x,.,ωk(α)sin(2kπx),ωk(α)cos(2kπx),.)ωk(α)=1cos(πclamp(αk,0,1))2α=mtN[0,m]\Large {\gamma}_{\alpha}(x) = (x,.,\omega_k(\alpha)\sin(2^k{\pi}x),\omega_k(\alpha)\cos(2^k{\pi}x),.) \\ \Large \omega_k(\alpha) = \frac{1-\cos({\pi}clamp(\alpha-k,0,1))}{2} \\ \Large \alpha=\frac{mt}{N} {\in}[0,m]

总损失:

Ltotal=Lrgb+λLelasticr+μLbg\Large L_{total} = L_{rgb} + {\lambda}L_{elastic-r} + {\mu}L_{bg}

赞赏