Neural Scene Graphs for Dynamic Scenes:动态场景的神经场景图
提出了一种将动态场景分解为场景图的神经渲染方法。提出了一种学习的场景图表示,它编码了物体的变换和辐射,以便高效地渲染场景的新排列和视图。为此,隐式学习场景,结合了一个共同学习的潜在表示,用于用单一的隐式函数描述物体。
NeRF的缺点:将整个场景表示编码到单个静态网络中,不允许传统方法支持的分解单个物体表示或动态场景。
创新点
1.将动态的、多物体场景分解为一个学到的场景图,其中物体的变换和场景的表示是解耦的。
2.直接从一组视频帧和相应的跟踪数据中学习每个场景图节点的物体表示。使用共享的体积表示来对一类对象的实例进行编码。
3.通过呈现所表示场景的新的未见过的视图和未见动态场景排列,使用标记和生成的跟踪数据。
场景图表示(Scene Graph)
将场景建模为有向图,将对象表示为叶节点,以图的形式表达了场景中各个元素之间的关系。
节点(Nodes): 场景图的节点表示场景中的元素,通常是物体或者物体的一部分。每个节点都包含有关物体的信息,如几何形状、材质、光照属性等。在场景图中,节点可以表示为有向图中的顶点。
边(Edges): 场景图的边表示节点之间的关系。这些关系可以包括空间关系(例如一个物体是另一个物体的子部分)、运动关系、或者其他语义关系。边是连接节点的有向图中的边。
层次结构(Hierarchy): 场景图通常是一个层次结构,其中节点按照父子关系组织起来。这种层次结构有助于对场景的组织和管理。例如,一个汽车节点可以包含子节点表示车轮、车身等。
变换(Transformations): 场景图中的节点之间的关系可以通过变换来表示,如平移、旋转、缩放等。这些变换被应用于节点的局部坐标系,以便更好地组织和描述场景的复杂性。
将神经渲染与传统的场景图相结合的方法,以实现对动态场景的分解和表示。这种结合可以充分利用传统场景图的层次结构和关系表示的优势,同时使用神经网络学习场景中物体的表示。这对于在计算机图形学和计算机视觉领域中处理复杂动态场景具有挑战性的问题是有希望的。
Latent Class Encoding(潜在类编码)
描述符可以在类似对象之间推广隐式场景表示。通过在输入的3D查询点中添加潜在向量 z,可以使用相同的网络对类似的对象进行建模。这种方法通过为对象引入潜在向量,使得网络能够泛化到同一类别的对象。
神经场景图
下图所示的场景图S由摄像机、静态节点和一组动态节点组成,动态节点表示场景的动态组件,包括对象外观、形状和类别。
(a)三维视图 和 (b)投影视图
图a:场景图的节点被可视化为盒子,每个盒子带有它们的局部笛卡尔坐标轴。这表示了场景中的不同物体或元素,每个节点都有一个局部坐标系。
图b:节点被可视化为盒子,并显示它们的局部坐标轴。是在某个视角下的投影,用于更清晰地了解场景的排列。
边用箭头表示,箭头之间带有它们的变换和缩放矩阵。这些箭头表示父坐标系和子坐标系之间的变换和缩放关系,使用了变换矩阵
T
o
W
.
T_{o}^{\mathcal{W}}.
ToW.和缩放矩阵
S
o
S_{o}
So。
相应的潜在描述符由lo表示,单位缩放边界框的表示节点由Fθ表示。
使用有向非循环图S(一个无回路的有向图)来唯一地定义场景,S由下式给出:S = <W, C, F, L,E>,
C 是表示相机及其内部参数 K 的叶节点。
F 是表示场景中静态和动态元素模型的叶节点集合,包括背景 Fθbckg 和每个类别 c 对应的Nclass个动态表示模型 Fθc。
L 是叶节点的集合,用于为每个表示叶节点分配潜在对象编码。
E 是边的集合,这些边表示从节点 u 到节点 v 的仿射变换或属性赋值。
姿态和位置的提取:对于给定的场景图,可以提取所有对象的姿势和位置。
根节点的边:对于所有从根节点 W 出发的边,作者分配了从全局世界空间到局部对象或相机空间的变换,表示为
T
v
W
.
T_{v}^{\mathcal{W}}.
TvW.这些变换描述了对象或相机在全局坐标系下的位置和朝向。
共享的表示模型:表示模型是共享的,因此在一个共享、单位缩放的坐标系中定义。为了表示相同对象类型的不同尺度,计算了非均匀缩放
S
o
S_{o}
So,该缩放被分配给对象节点和其共享的表示模型 F 之间的边
e
o
,
f
e_{o,f}
eo,f
检索对象的本地变换和位置:为了检索对象的本地变换和位置
p
o
=
[
x
,
z
,
y
]
o
p_{o}=[x,z,y]_{o}
po=[x,z,y]o 可以从根节点 W开始遍历,应用相应的变换,直到达到所需的对象节点
F
θ
F_{\theta}
Fθ
对于模型表示节点F,遵循NeRF,将场景对象表示为增强的隐式神经辐射场。在下图中,描述了用于神经辐射场的两个增强模型。
背景节点:
该辐射场与先前的工作不同,存在于稀疏平面而不是体积上。静态背景节点函数Fθbckg:(x,d)→(c,σ)将点x映射到其体积密度,并结合观察方向映射到发射颜色。
动态节点
一个动态对象用o表示, 每个动态对象都用其节点和位置 po的局部空间中的神经辐射场表示。
具有相似外观的对象被组合成一个类别 c,并共享表示函数
F
θ
c
F_{\theta_{c}}
Fθc的权重
θ
c
θ_{c}
θc,这种共享可以帮助模型更好地捕捉相似对象之间的共同特征。
通过学习的潜在编码向量 lo区分了各个对象的神经辐射场。这个潜在编码表示了对象类别,它被用于生成对应于对象 o 的神经辐射场。
表示函数
F
θ
c
F_{\theta_{c}}
Fθc将潜在编码lo,位置po,对象o的局部坐标xo,和时间do作为输入,生成颜色和光照信息
潜在类别编码:
通过引入一个潜在向量lo,用于编码对象的表示。这有助于减少所需的模型数量,同时允许考虑共享的对象特征,并分离全局光照效果与各个对象的辐射场。
添加潜在向量相当于:一种从类别c的表示函数到对象o的辐射场的映射,可以实现在全局光照效果上的共享。在训练中,一些对象可能显示出特定的全局光照效果,这将在同一类别的所有对象之间共享。所以第一阶段表示为
对象坐标系:
解决动态对象的坐标框架以及它们的全局位置随时间变化的情况
动态对象的全局位置po 在每帧之间变化,辐射场也会变化,引入局部三维坐标框架,该框架与对象的姿态固定且对齐,坐标可以帮助描述对象相对于全局坐标系的变化,全局坐标 x 到对象坐标xo的变换公式:
S
0
S_{_{0}}
S0是与对象的边界框大小相关的缩放矩阵,
T
v
o
T_{\boldsymbol{v}_{o}}
Tvo是将点从全局坐标系Fw变换到对象坐标系Fo的变换矩阵,这种变换考虑了对象的尺寸,使模型能够学习与边界框大小无关的相似性。
最终的体积场函数
F
θ
c
F_{\theta_{c}}
Fθc,接受对象类别 c 的输入
l
o
,
x
o
,
d
o
,
p
o
l_o,x_o,d_o,p_o
lo,xo,do,po 并输出对应的颜色c和体密度
σ
\sigma
σ
神经场景图渲染
根据场景图分辨背景与动态物体
静态节点:多平面采样,定义多个平面,均匀采样
动态节点首先检查射线是否与动态节点相交,如果相交,计算射线与box的入口和出口点,在其中均匀采样
输入静态网络或者动态网络进行预测颜色和体密度
积分计算每个点的体密度和颜色 渲染图片
损失函数
局限性: 由于隐式方法的性质,所提方法的学到表示质量受到训练数据的变化和数量的限制。未来可能通过从大规模视频数据集学到的场景先验来处理更大的视图外推。
未来展望: 作者认为所提方法开启了神经渲染动态场景的领域,并在检测结果的支持下,可能在未来作为计算机视觉模型的无监督训练方法。