1.主要目标:
对动态场景进行渲染,完成动态前景与背景分离、背景inpainting、动态前景编辑和新视角生成。
2.贡献:
这篇文章主要是基于nerf的自动驾驶仿真的偏工程化实现,创新性比较缺乏。主要贡献就在于是第一个开源的基于nerf框架的自动驾驶仿真器。
这篇文章的显著特征是
1.实例化:将动态前景与静态背景使用独立的网络分别进行建模,这样的目的是使得动态实例的静态特征(如外观尺寸)和动态特征(如轨迹)能够分别控制。
2.模块化:能够灵活切换不同的基于nerf的backbones、采样策略、输入形式等。
3.真实性:能够实现当前sota效果并给出了最好的模块配置选择。
3.方法:
该系统的输入包含一系列的RGB图像,传感器姿态,物体的追踪信息。深度图与语义分割图也可以在训练时用作监督。
网络结构:
首先计算给定光线与所有可见实例的3Dbbox的交点,获取光线在其上的起点与终点。之后对背景和所有的实例前景进行光线上的3D点采样,再经过对应的渲染网络模型输出点的信息。对于前景实例,首先根据实例的跟踪信息将光线的起点与方向转换到实例坐标系。最终,所有的前景与背景节点将会集合在一起共同经过体渲染生成最终的结果。
同样是将前景与背景进行分离,对背景使用一个nerf模型,对前景使用多个nerf模型。
代码中默认使用的同样是采用条件隐变量编码模式,即对相同的类别实例使用同一个nerf模型,对每个类别的具体实例加入一段专属的隐变量编码进行表征。
采样光线上的3D点:
合成渲染:
三个分别代表RGB,深度,和语义。
渲染公式中加入了天空渲染项。因为天空是无限远区域,和任何不透明表面都没有交点,所以这里使用MLP对某个光线方向进行预测一个天空颜色,然后带入渲染。(作者说仅仅使用这个天空颜色会导致潜在不一致性,并加入了一个损失用来约束?不太懂why)。
解决冲突的采样点:
由于采样背景点的时候可能会有些点落在前景bbox中,如上图中的Background Truncated samples。这些点不做处理的话,会影响最终背景的渲染结果。所以文中使用了一个正则化函数损失:
使得这些点的体密度尽可能小,减小影响。
训练优化流程策略:
color loss:
Depth loss:
Semantic loss:
4.实验结果:
图像重建结果的评估:
新视角合成结果的评估:
对实例物体的编辑结果:
对本文的ablation study:
background/foreground