【计算机图形学】CLA-NeRF: Category-level Articulated Neural Radiance Field

阅后总结-写在前面

实际上这篇论文做的事情就是在通常的NeRF方法(预测density field和color)上多预测了一个part分割场,文中称作part segmentation field。
然后通过这个part segmentation field,找到两个part之间的临界点,也就是part与part连接的地方,获取这连接部分周围的点后,通过线性回归,回归出铰接轴(本文仅考虑了rotation axis)的direction(铰接轴所指方向)和pivot point(位置)。
最后就是将这个分割场的信息以权重的方式加入到颜色渲染方程中去。
关于渲染出角度变换的结果,大致就是通过用户指定的角度得到一个Deformation matrix,来变换渲染光线的方向,进一步渲染出结果。

1. 为什么做这件事?之前方法存在的问题?

之前的工作在估计铰接物体属性时通常假设物体的CAD模型,故不能泛化到训练中未见过的物体(这句话感觉说的不是特别清楚,但是我理解这句话的意思应该是,铰接物体属性的估计,只能估计那些在训练集见过的类别的物体,不能泛化到未见过的物体)。

但是这个问题已经被一些category-level的工作解决了,通过一些category-level的工作,可以使得方法泛化到类别内的物体,如ANCSH,将不同的物体align到一个手动设定的canonical space下。又如ASDF能够分解出shape code和pose code,但这些方法的弊端在于都需要GT的3D数据进行训练。同时类似的方法还需要深度图作为输入,需要深度图的方法无法泛化到那些存在很细part的物体,或者高度反射的物体,如剪刀。

本文的工作希望找到一种铰接物体的类别级表达,不需要3D CAD模型或深度图在训练或测试期间作为输入,仅需要带有相机视角的RGB图像部件分割标签用于训练,测试时仅需要RGB图像

2. 做了件什么事?

提出了Category-Level Articulated NeRF representation——CLA-NeRF。文中提出的方法支持多个下游任务:新视角合成、部件分割、铰接姿态估计(不知道是否支持铰接物体在新姿态下的生成?)。

NeRF原本需要为每一个场景都要进行长时间的优化,这里follow最近的工作,直接通过神经网络,以前向传播的方式,直接从多张RGB图像中来预测NeRF。为了捕捉铰接关节的属性,除了NeRF原有的密度和颜色之外,还预测了部件分割场(part segmentation field),进而铰接关节属性可以从这个部件分割场中进一步推理出来。

所以第三段中提及的下游任务:新视角合成、部件分割、铰接姿态估计,第一个是NeRF本身的属性,第二个是通过部件分割场得到的,第三个是通过部件分割场进一步推理的。另外,CLA-NeRF还可以做铰接感知的体渲染,来合成未见过铰接姿态下的结果,这个与现有NeRF工作的区别在于,现有工作的NeRF只是解耦了视角,没办法对铰接姿态解耦,因为本文是针对于Articulated object的工作,所以进一步对相机姿态进行了解耦。本文的工作解耦了相机姿态、部件姿态、部件分割及关节属性,从而允许对多个属性的控制。

论文提到:它们是第一个使用NeRF来建模铰接物体的工作。

注意:该论文只关注旋转运动。

3. 相关工作与存在问题

铰接物体的3D表达

以往铰接物体都是使用水密的网格进行表达的,但是这种表达需要大量的劳动来建立铰接物体的mesh。

NASA(Neural Articulated Shape Approximation)在人体铰接上做了一些工作,通过神经指示函数(占用率)来表达铰接,从而绕开了复杂的水密网格。

A-SDF使用神经网络来编码SDF用于铰接物体建模,通过在类别上训练该类别下的物体,解耦出了shape space和pose space,进而可以生成在未见过角度下的铰接物体。

但是上面这两个工作都需要用GT的3D模型来训练。所以其实不好的地方就在这里。

与本篇论文最相近的工作是NARF,这篇工作在NeRF内显式地考虑了铰接,同时在人体的视角合成上展示出了不错的效果,本文与NARF区别在于:

  1. NARF输入是RGB图像和关节属性。本文的输入是RGB图像和部件分割标签;

  2. NARF更关注人体姿态生成这种铰接固定的情况。而本文的方法并不假设已知的关节属性(人体的关节是固定的,但是铰接物体的关节是多变的),本文通过推理的part segmentation field来推理关节属性。

铰接物体姿态估计

早期铰接物体姿态估计需要实例级的信息。在早期的工作中,推理铰接物体姿态之前需要一些可以的交互来生成物体的运动,对于每一个实例,机器人都要从头开始学习这些物体,即使这些物体是之前见过的。

为了解决这个问题,就有工作(Normalized object coordinate space for category-level 6d object pose and size estimation, CVPR 2019)提出预测类别级的canonical的物体坐标,用于类别级铰接物体姿态估计。但这类工作的缺陷是,这是为了铰接物体姿态估计而专门设计的方法,没有办法做一些其他如shape重建或视角合成的任务。除此之外,它还需要3D几何的信息用于训练,测试时需要深度图像。

进一步地,有方法(Learning to generalize kinematic models to novel objects,ICRL 2020)提出一个混合密度网络,只需要一张RGB-D图像,从中预测关节属性和铰接姿态。

ScrewNet(Screwnet: Category-independent articulation model estimation from

depth images using screw theory)以多张相同相机视角、不同铰接姿态下的深度图作为输入,来预测关节属性和铰接姿态。

与上述方法不同,本文的方法只需要2D监督,来构建类别级的表达。

Preliminaries:NeRF

NeRF的本质是:将场景表达成一个密度 σ σ σ和RGB颜色 c c c的体积域。使用一个由权重 Θ Θ Θ参数化的MLP,以3D位置 x = ( x , y , z ) x=(x,y,z) x=(x,y,z)和单位视角方向 d d d作为输入,有: ( σ , c ) ← F Θ ( γ ( x ) , d ) (σ,c)←F_Θ(γ(x),d) (σ,c)FΘ(γ(x),d),其中 γ ( x ) γ(x) γ(x)是一个高频位置编码。

为了渲染某个视角下的像素,NeRF假想一条从相机视角 o o o发出的,方向为 d d d的光线 r ( t ) = o + t d r(t)=o+td r(t)=o+td,在这条光线上采样 K K K个点 { x k = r ( t k ) } k = 1 K \{x_k=r(t_k)\}^K_{k=1} {xk=r(tk)}k=1K,来作为MLP的输入,输出则是一组密度和颜色 { σ k , c k } k = 1 K \{σ_k,c_k\}^K_{k=1} {σk,ck}k=1K。这些值被用于估计像素的颜色 C ^ ( r ) \hat{C}(r) C^(r),follow一个计算遮挡对颜色贡献影响的求和函数:

C ^ ( r ) = ∑ k = 1 K T ^ k ( 1 − e x p ( − σ k ( t k + 1 − t k ) ) c k ,其中 T ^ k = e x p ( − ∑ k ′ < k σ k ′ ( t k ′ + 1 − t k ′ ) ) \hat{C}(r)=\sum^{K}_{k=1}\hat{T}_k(1-exp(-σ_k(t_{k+1}-t_k))c_k,其中\hat{T}_k=exp(-\sum_{k'<k}σ_{k'}(t_{k'+1}-t_{k'})) C^(r)=k=1KT^k(1exp(σk(tk+1tk))ck,其中T^k=exp(k<kσk(tk+1tk))

进一步解释,实际上 T ^ k \hat{T}_k T^k表示的就是随着光线到达表面的那一刻开始,遮挡就逐渐变大,遮挡大的位置颜色的表现就不会比刚接触到表面的那一刻明显,对总体颜色的贡献就比较少。

使用2D supervision的函数 L = ∑ r ∈ R ∣ ∣ C ^ ( r ) − C ( r ) ∣ ∣ L=\sum_{r∈R}||\hat{C}(r)-C(r)|| L=rR∣∣C^(r)C(r)∣∣,就是图像之间颜色做差。为了进一步提高渲染的效率,NeRF训练了一个coarse MLP和一个finexp(\hat{S}^i®) MLP中的采样提供一些必要的信息,course MLP中的采样是均匀采样的,就会导致采样到一些空气中的点,或者在物体内部一些不展示颜色的点,导致浪费,通过第一个coarse MLP我们得知了这些信息,在fine MLP中就减少在空气中和物体内部的点采样,提高在接触物体表面和离开物体表面处的点采样。

由于NeRF需要为每一个场景训练一次MLP,就会导致它成为一个instance-level的表达,所以还有工作提出类别级的NeRF,也就是使用一张或少量输入图像来直接预测原始NeRF神经网络所表达的信息。

4. 具体方法

在这里插入图片描述
尽管NeRF在合成新视角下静态物体外观方面取得了了不起的结果,但它在渲染的过程中只能够对相机视角进行控制。因此,它无法渲染铰接物体(如电脑)在不同铰接状态下(关闭或打开),因为其具有>6个自由度。而CLA-NeRF就是为了解决这个问题。

与以往NeRF只预测 σ σ σ c c c不同,CLA-NeRF进一步估计了部件分割 s s s;与以往NeRF仅仅基于相机视角来追踪光线不同,CLA-NeRF基于查询的铰接姿态变换相机光线,在体渲染过程中预测部件分割并推理关节属性。这些修改都有利于CLA-NeRF渲染未见过铰接姿态下的铰接物体。

类别级的语义NeRF

通常的NeRF是 ( σ , c ) ← F Θ ( γ ( x ) , d ) (σ,c)←F_Θ(γ(x),d) (σ,c)FΘ(γ(x),d),CLA-NeRF这里是多预测了一个部件分割场,也就是 ( σ , c , s ) ← F Θ ( γ ( x ) , d ) (σ,c,s)←F_Θ(γ(x),d) (σ,c,s)FΘ(γ(x),d),其中 s s s的维度是 P + 1 P+1 P+1维( P P P个部件和背景)。 s s s就是预测当前pixel属于哪个part,具体渲染这个图使用了上面和颜色类似的求和函数:

S ^ ( r ) = ∑ K ∗ k = 1 T ^ k ( 1 − e x p ( − σ k ( t ∗ k + 1 − t k ) ) s k , 其中 T ^ ∗ k = e x p ( − ∑ ∗ k ′ < k σ k ′ ( t k ′ + 1 − t k ′ ) ) \hat{S}(r)=\sum^{K}*{k=1}\hat{T}_k(1-exp(-σ_k(t*{k+1}-t_k))s_k, 其中\hat{T}*k=exp(-\sum*{k'<k}σ_{k'}(t_{k'+1}-t_{k'})) S^(r)=Kk=1T^k(1exp(σk(tk+1tk))sk,其中T^k=exp(k<kσk(tk+1tk))

新的Loss包括原本NeRF用的2D图像监督的Color loss,除了这个以外,还有一个分割loss,使用part label来做监督:

L c o l o r = ∑ r ∈ R [ ∣ ∣ C ^ c ( r ) − C ( r ) ∣ ∣ 2 2 + ∣ ∣ C ^ f ( r ) − C ( r ) ∣ ∣ 2 2 ] L_{color}=\sum_{r∈R}[||\hat{C}_c(r)-C(r)||^2_2+||\hat{C}_f(r)-C(r)||^2_2] Lcolor=rR[∣∣C^c(r)C(r)22+∣∣C^f(r)C(r)22]

L s e g = − ∑ r ∈ R [ ∑ i = 1 P + 1 p i ( r ) l o g p ^ c i ( r ) + p i ( r ) l o g p ^ f i ( r ) ] ,其中 p i ( r ) = e x p ( S ^ i ( r ) ) ∑ j = 1 P e x p ( S ^ i ( r ) ) L_{seg}=-\sum_{r∈R}[\sum^{P+1}_{i=1}p^i(r)log\hat{p}^i_c(r)+p^i(r)log\hat{p}^i_f(r)],其中p^i(r)=\frac{exp(\hat{S}^i(r))}{\sum^P_{j=1}exp(\hat{S}^i(r))} Lseg=rR[i=1P+1pi(r)logp^ci(r)+pi(r)logp^fi(r)],其中pi(r)=j=1Pexp(S^i(r))exp(S^i(r))

这里下标 c c c f f f分别表示coarse network和fine network。 p p p表示的是GT part label。 r r r表示的是光线 r r r下预测出来的结果。 L c o l o r L_{color} Lcolor就是一个L2 loss, L s e g L_{seg} Lseg就是多类别的交叉熵loss。

但是这样的NeRF仍然需要给对每个铰接物体做较长时间的优化,没有办法在不同的物体之间共享一些共有的知识,为了让方法能够在同一类别内泛化,参考了之前的工作,在一张/多张输入图像的情况下,直接预测语义NeRF,具体做法如下

  1. 通过图像编码器 E E E来提取图像特征,构建特征图 W = E ( I ) W=E(I) W=E(I);

  2. 将采样的三维点 x x x投影到输入的图像平面上,获得投影坐标 π ( x ) π(x) π(x)

  3. 最后,通过从特征图中查询特征 W ( π ( x ) ) W(π(x)) W(π(x))来增强NeRF的输入,得到:

( σ , c , s ) ← F Θ ( γ ( x ) , d , W ( π ( x ) ) ) (σ,c,s)←F_Θ(γ(x),d,W(π(x))) (σ,c,s)FΘ(γ(x),d,W(π(x)))

铰接关节属性估计

本篇工作中,只考虑旋转关节。关节属性由旋转轴的方向u以及轴点v组成。给定铰接物体的输入图像,从预测出的segmentation field中推理关节属性。

具体地做法是,针对于采样的点 { x k = r ( t k ) } k = 1 K \{x_k=r(t_k)\}^K_{k=1} {xk=r(tk)}k=1K,通过网络可以求得密度和部件分割结果 { σ k , s k } k = 1 K \{σ_k,s_k\}^K_{k=1} {σk,sk}k=1K。因为旋转关节的位置是在两个部件之间交叉的位置,所以采样处那些距离交叉位置很近的点: X i n t e r s e c t i o n = { x k ∣ a r g m a x ( s k ) ≠ a r g m a x ( s k + 1 ) ∧ σ k ≥ H } X_{intersection}=\{x_k|argmax(s_k)≠argmax(s_{k+1})∧σ_k≥H\} Xintersection={xkargmax(sk)=argmax(sk+1)σkH},从所有像素中收集 X i n t e r s e c t i o n X_{intersection} Xintersection,然后在这些点上直接通过线性回归的方式得到旋转轴的方向u以及轴点v

铰接感知的体渲染

给定人为指定的铰接姿态 a a a,构建出变换矩阵 { D i ( a , J ) } i = 1 P + 1 \{D^i(a,J)\}^{P+1}_{i=1} {Di(a,J)}i=1P+1用以描述根部件和部件 i i i之间的刚性变换。在体渲染过程中,使用逐部件的变形矩阵来变形光线,以收集 P + 1 P+1 P+1个部件的输出:

${σi,ci,si=F_Θ(γ(D_ix),d,W(π(D_ix)))}{P+1}_{i=1} $

合并的输出用于铰接感知的体渲染。使用预测的部件分割 p ^ \hat{p} p^来给所有的fields加权, p ^ i \hat{p}^i p^i指的是被分类为部件 i i i的概率:

C ^ ( r ) = ∑ k = 1 K T ^ ( t k ) ∑ i P + 1 p ^ i ( t k ) ( 1 − e x p ( − σ k i ( t k + 1 − t k ) ) c i ( t k ) \hat{C}(r)=\sum^{K}_{k=1}\hat{T}(t_k)\sum^{P+1}_i\hat{p}^i(t_k)(1-exp(-σ_k^i(t_{k+1}-t_k))c^i(t_k) C^(r)=k=1KT^(tk)iP+1p^i(tk)(1exp(σki(tk+1tk))ci(tk)

S ^ ( r ) = ∑ k = 1 K T ^ ( t k ) ∑ i P + 1 p ^ i ( t k ) ( 1 − e x p ( − σ k i ( t k + 1 − t k ) ) s i ( t k ) \hat{S}(r)=\sum^{K}_{k=1}\hat{T}(t_k)\sum^{P+1}_i\hat{p}^i(t_k)(1-exp(-σ_k^i(t_{k+1}-t_k))s^i(t_k) S^(r)=k=1KT^(tk)iP+1p^i(tk)(1exp(σki(tk+1tk))si(tk)

p ^ i ( t k ) \hat{p}^i(t_k) p^i(tk)属于部件i的概率,一个点只属于一个部件,应该是一个分部件渲染的操作吧,一条光线渲染一个部件之类的。

铰接姿态估计

这一步的目标是在给定输入图像 I I I的情况下估计铰接姿态 a a a。这里就是相较原网络解一个逆问题,在给定网络权重和输入图像的情况下,推理铰接姿态 a a a

a ^ = a r g m i n a ∈ A L c o l o r ( a ∣ Θ , d , J ) \hat{a}=argmin_{a∈A}L_{color}(a|Θ,d,J) a^=argminaALcolor(a∣Θ,d,J)

解这个优化问题的方法就是,迭代地执行梯度优化,最小化渲染图像和观察图像之间的残差。从图像中理解得更清楚一些,就是通过优化这个铰接姿态,不断更新铰接姿态,不断渲染在新铰接姿态下的图像,通过残差来逼近真实姿态。这个工作是基于相机视角、铰接状态解耦的情况下能够做的。我的理解是source image和target observation的相机视角要保持一致,才能够做到铰接姿态的估计。

5. 实验

数据集

合成数据集用的SAPIEN的数据,每个实例以200×200的分辨率渲染200张图像。
真实数据集用的作者手工创建的数据集,在0,30,60,90等角度下。

视角合成和部件分割

上面是合成部分数据集,下面是真实世界数据集
在这里插入图片描述
在这里插入图片描述
作者提到他们是第一个以NeRF的形式来做铰接物体重建的,所以可能没有其他的比较方法。

铰接姿态估计

这里指的是铰接关节定位,和ANSCH和ScrewNet来比较了一下。
在SAPIEN数据集上:
在这里插入图片描述
直接泛化到Shape2Motion数据集上:
在这里插入图片描述
Key Obeservation:
角度差异过大的时候效果就会比较差,角度小的时候差异最小
在这里插入图片描述

失败案例

在这里插入图片描述
(a)指的是相机视角变化太大了,导致重建出来的纹理会有问题,但是分割是没有问题的,所以不会影响铰接物体姿态的估计,以及新角度的生成。
(b)指的是如果使用不带纹理的几何来预测的话,可能没有办法很好地去得到新视角下的图像,分割也会产生问题。另外,对于关闭的0度电脑,没有办法正确预测它的铰接(可以理解,电脑太薄了,关闭的时候,part之间分界不明显,导致 X i n t e r s e c t i o n X_{intersection} Xintersection得到的结果不对,进一步导致错误的结果)

6. 总结

在这篇论文中,提出了一个仅需铰接物体在多视角下的图片作为输入,从而重建出能够预测其他视角下图片和部件分割的方法。同时还做了一个铰接物体发生角度变换后,通过计算一个deformation matrix来变形光线的方向,进一步获得其他铰接状态下的结果。

通过上面建立的网络,通过逆优化可以推理给定图像中的物体姿态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值