Paper: Tseng W C, Liao H J, Yen-Chen L, et al. Cla-nerf: Category-level articulated neural radiance field[C]//2022 International Conference on Robotics and Automation (ICRA). IEEE, 2022: 8454-8460.
Introduction: https://weichengtseng.github.io/project_website/icra22/index.html
Code: Unreleased
CLA-NeRF 是一种基于类别的三维铰接物体表示方法,在 NeRF 的基础上增加了一个组件分割场来预测铰接物体各个组件的类别,从而进行未知 关节姿态 (articulated pose) 的视图合成、组件分割和关节姿态估计。
CLA-NeRF 所做的任务就是 未知关节姿态的视图合成或组件分割 (view synthesis / part segmentation on unseen viewpoint / articulated pose),和 关节姿态的估计 (articulated pose estimation)。1 CLA-NeRF 使用一组包含相机机位和组件标签的 RGB 图像进行训练;推理时只需要输入几张 3D 物体的 RGB 视图,就可以在已知类别上推断出物体的组件类别,从而根据输入的关节姿态重建出对应的 NeRF 场景。此外,CLA-NeRF 还可以通过逆向渲染估计物体的关节姿态。
铰接物体 (articulated object) 是指由多个刚性组件 (rigid part) 通过关节相连组成的物体,各刚性组件可以绕关节旋转或平移。铰接物体的组件属性 (part attributes) 有组件的姿态、分割等,关节属性 (joint attributes) 有关节的轴。要想让 AI 对铰接物体感知和交互,就必须掌握物体每个组件的姿态、形状和材料。因此,想要在空间中表示铰接物体就需要 基于类别 (category-level) 的场景表示方法。
于是文中提出了基于类别的三维铰接物体表示方法:CLA-NeRF (Category-Level Articulated Neural Radiance Field)。CLA-NeRF 对 NeRF 进行改进,增加一个 组件分割场 (part segmentation field) 来预测铰接物体的各种属性,从而预测铰接物体各个组件的类别。
CLA-NeRF 在 NeRF 的基础上增加了一个组件分割场,用来在 ray tracing 时预测对应像素的组件类别。训练时使用一组包含相机机位和组件标签的 RGB 图像(图 a);渲染任意视角任意关节姿态的视图时,ray tracing 不仅依赖相机机位,还会根据输入的关节姿态进行变换(图 b);估计输入图像的关节姿态时,逆向渲染最小化目标函数即可(图 c):
Category-Level Semantic NeRF 介绍了 CLA-NeRF 模型基于 NeRF 的改进;Joint Attributes Estimation 介绍了组件分割的原理;Articulation-aware Volume Rendering 介绍了未知关节姿态的视图合成方法;Articulated Pose Estimation 介绍了关节姿态的估计方法。
CLA-NeRF 按语义类别对铰接物体的刚性组件进行分类,输入空间位置 x \bold{x} x 和 2D 视角方向 d \bold{d} d,输出发射颜色 c \bold{c} c、体积密度 σ σ σ 和组件分割 s \bold {s} s,即:
F Θ : ( x , d ) → ( σ , c , s ) F_{\Theta}: (\bold{x}, \bold{d}) \rightarrow (σ, \bold{c}, \bold {s}) FΘ:(x,d)→(σ,c,s)
其中组件分割 s \bold {s} s 是 P + 1 P+1 P+1 维的,即 P P P 个组件和一个背景。
因此可以在原本 NeRF 像素渲染的同时 预测该像素的类别:
S ^ ( r ) = ∑ k = 1 K T ^ k ( 1 − exp ( − σ k ( t k + 1 − t k ) ) ) s k , with T ^ k = exp ( − ∑ k ′ < k σ k ′ ( t k ′ + 1 − t k ′ ) ) \begin{gathered} \hat{\mathbf{S}}(\mathbf{r})=\sum_{k=1}^K \hat{T}_k\left(1-\exp \left(-\sigma_k\left(t_{k+1}-t_k\right)\right)\right) \mathbf{s}_k, \\ \text { with } \quad \hat{T}_k=\exp \left(-\sum_{k^{\prime}
组件分割的损失如下:
L seg = − ∑ r ∈ R [ ∑ i = 1 P + 1 p i ( r ) log p ^ c i ( r ) + p i ( r ) log p ^ f i ( r ) ] where p ^ i ( r ) = exp ( S ^ i ( r ) ) ∑ j = 1 P exp ( S ^ j ( r ) ) \mathcal{L}_{\text {seg}} =-\sum_{\mathbf{r} \in \mathbf{R}}\left[\sum_{i=1}^{P+1} p^i(\mathbf{r}) \log \hat{p}_c^i(\mathbf{r})+p^i(\mathbf{r}) \log \hat{p}_f^i(\mathbf{r})\right]\\ \text{where} \quad \hat{p}^i(\mathbf{r})=\frac{\exp \left(\hat{\mathbf{S}}^i(\mathbf{r})\right)}{\sum_{j=1}^P \exp \left(\hat{\mathbf{S}}^j(\mathbf{r})\right)} Lseg=−r∈R∑[i=1∑P+1pi(r)logp^ci(r)+pi(r)logp^fi(r)]wherep^i(r)=∑j=1Pexp(S^j(r))exp(S^i(r))
其中 p i p^i pi 表示第 i i i 部分的真实概率, p ^ c i \hat{p}_c^i p^ci 和 p ^ f i \hat{p}_f^i p^fi 分布表示粗网络和细网络预测第 i i i 部分的概率。
对于一维旋转关节,铰接物体的关节属性包括旋转轴 u \bold u u 的方向和旋转轴上的枢轴点 v \bold v v。CLA-NeRF 输入铰接物体的图像,可以通过 segmentation field 预测关节属性,从而实现 组件分割。
对于图像上的每个像素,做 ray tracing: r ( t ) = o + t d \bold r(t)=\bold o + t \bold d r(t)=o+td,在光路上采样 K K K 个点 { x k = r ( t k ) } k = 1 K \{\mathbf{x}_k=\bold{r}(t_k)\}_{k=1}^K {xk=r(tk)}k=1K ,输入 CLA-NeRF 得到预测的 { σ k , s k } k = 1 K \{\sigma_k, \mathbf{s}_k\}_{k=1}^K {σk,sk}k=1K。因为一维旋转关节在两个组件的连接处,所以可以通过 s \mathbf{s} s 筛选出连接处的点:
X intersection = { x k ∣ arg max ( s k ) ≠ arg max ( s k + 1 ) ∧ σ k ≥ H } \mathbf{X}_{\text {intersection}}=\left\{\mathbf{x}_k \mid \arg \max \left(\mathbf{s}_k\right) \neq \arg \max \left(\mathbf{s}_{k+1}\right) \wedge \sigma_k \geq H\right\} Xintersection={xk∣argmax(sk)=argmax(sk+1)∧σk≥H}
通过 segmentation field 预测关节属性 J \bold J J 后,就可以通过修正体积渲染过程实现 未知关节姿态的视图合成。
用户输入一个关节姿态 a \bold a a,构建变形矩阵 { D i ( a , J ) } i = 1 P + 1 \{\bold D^i(\bold a, \bold J)\}_{i=1}^{P+1} {Di(a,J)}i=1P+1 来描述组件 i i i 相对于主组件的刚性形变。于是有:
{ σ i , c i , s i = F Θ ( γ ( D i x ) , d , W ( π ( D i x ) ) ) } i = 1 P + 1 \left\{\sigma^i, \mathbf{c}^i, \mathbf{s}^i=F_{\Theta}\left(\gamma\left(\mathbf{D}_i \mathbf{x}\right), \mathbf{d}, W\left(\pi\left(\mathbf{D}_i \mathbf{x}\right)\right)\right)\right\}_{i=1}^{P+1} {σi,ci,si=FΘ(γ(Dix),d,W(π(Dix)))}i=1P+1
其中 γ \gamma γ 是 NeRF 中的位置编码, W W W 和 π \pi π 是 pixelNeRF 的工作,此处不加赘述。
在使用 CLA-NeRF 对铰接物体的图像进行 关节姿态预测 时,只需要求解逆问题:根据权重 Θ \Theta Θ 和图像 I I I 恢复关节姿态 a \bold a a:
a ^ = a r g m i n a ∈ A L color ( a ∣ Θ , d , J ) \hat{\bold a}=argmin_{\bold a \in \bold A} \mathcal{L}_{\text {color}}(\bold a | \Theta, \bold d, \bold J) a^=argmina∈ALcolor(a∣Θ,d,J)
使用梯度下降法迭代求解即可。
CLA-NeRF 创造性地提出了通用建模铰接物体的 NeRF 表示方法,显式地建模了刚性组件的组件属性和关节属性。CLA-NeRF 分离了相机机位、组件姿态、组件分割和关节属性,允许在渲染过程中独立地控制每个属性。通过在 NeRF 的基础上增加组件分割场,CLA-NeRF 能够进行未知关节姿态的视图合成和组件分割,还有对输入图像关节姿态的估计。
CLA-NeRF: Category-Level Articulated Neural Radiance Field (ICRA 2022) ↩︎