利用单个视图建模,做新视图合成,对每个实例物体在标准物体空间中建模radiance field。在unseen objects和跨数据集的现实世界街道场景具有良好的泛化性。
大多数视图合成任务都是在充足的视图、未遮挡的可见性、几乎完美的相机参数、物体位于中心区域、高分辨率等等条件下实施的,当应用于实际数据时,现有的域差距变得明显,通常会导致性能大幅下降。
本文方法只对单张图片进行处理,并且只关注街道场景中的物体,比如车(在尺度上变化很大,并且对于全图分辨率来说很小,还可能出现遮挡和由于数据采集导致的运动模糊)。本文方法利用machine-generated 3D object detection / instance or panoptic segmentation的结果作为输入,这使得本文需要处理3D object detector中的标签噪声和instance segmentation model中不完美的mask。
本文方法采用encoder-decoder架构,其中encoder从实际姿态(任意姿态)的训练样本中学习到规范的、以物体为中心的encodings(shape、appearance);decoder则将这些encodings转换为以物体为中心的隐式神经场表达(occupancy、color)。segmentation mask提供物体前景的像素区域来应对潜在的遮挡、3D BBox来保证以物体为中心的表达。Test time会利用photometric loss来进一步拟合渲染与输入图像,从而提高模型表达在跨域上的泛化性(未证实)。
在可微渲染方面,一些工作只建模了shape,但是同时建模shape和appearance的好处在于:(1)可以生成图像级别的逼真渲染。(2)可以只用RGB图像进行监督。PixelNeRF 利用局部图像特征来合成新视图,但是它是在同一实例的至少两个视图上进行训练的。CodeNeRF与本文工作最为相像,但是其架构是auto-decoder,需要在test time提取优化好shape和appearance的latent code,但是本文工作没有这个限制,encoder-deocder架构可以在训练时回归好相应的latent code,test time只需refine即可。
GT或者预训练模型给出的语义MASK和3D Bounding Box作为输入。其中3D BBox用来将物体空间规范化到标准物体坐标空间(Normalized Object Coordinate Space,NOCS),这将前景物体的pose解耦出来,使得NeRF训练不用受困于物体的pose和scale。语义MASK用于提取物体对应区域的特征,通过共用Encoder(ResNet34)和任务Encoder(Shape Encoder、Appearance Encoder)得到代表该物体的形状表征(Shape code)和外观表征(Appearance code)。
Shape Decoder和Appearance Decoder用来生成NOCS空间中的3D点属性表征,它们都是有条件(Conditioned)的。其中Shape Decoder的输入是3D点位置x和形状表征Shape code,Appearance Decoder的输入是3D点位置x、观察方向d、外观表征Appearance code,其中Appearance Decoder的hidden layer还会接收来自Shape Decoder的hidden layer的feature。
上述两个Decoder会生成NOCS空间中的体密度 $\alpha(x)$ 和颜色 $\phi(x,d)$,最终进行体渲染,得到NOCS空间的渲染结果。将NOCS逆变换回世界空间,就能得到场景中前景的新视图渲染表示。
为了做到跨数据域的泛化性,本文还进行了Test-Time Optimization,即在推理阶段,根据输入视图,进一步调整Shape code、Appearance code、3D BBox。根据3D预训练模型和AutoRF模型本身提供良好的初始化变量。同时还可以固定其他变量,来对单一变量进行调整(比如固定Shape code和3D BBox,仅调整Appearance code修改外观)。
由于单目设置中,尺度存在模糊性,所以在调整3D BBox时,仅修改3D BBox的pose(rotation & translation),scale直接由3D预训练模型给出。
$u$代表前景像素,$\gamma_u$代表经过变换后的像素(NOCS空间)。