目的:
将语言嵌入辐射场,明确的说,将CLIP嵌入到Nerf中,支持在3D空间中进行开放式语言查询
方法:
通过沿训练光线进行体积渲染来学习一个密集的,多尺度的语言场,监督以实现多视图一致性
LERF体积渲染:
Nerf接受一个位置x和视角方向d,输出对应的颜色c和密度\sigma,通过沿射线进行体渲染,可以生成一个像素的颜色
Lerf修改了 Nerf的输入,改为输入位置x和物理尺度s,输出一个d维的语言嵌入,并且,该输入与方向无关,因为语义应该对视角变化具有不变性,因此,允许多个不同的视角对相同的场输入做工i西安,并且将输出的嵌入平均
尺度s表示了以x为中心的立方体在世界坐标中的边长,类似Mip-Nerf中利用集成位置编码来包含的不同尺度
Lerf与Nerf类似,利用沿射线的方式渲染语言嵌入,不过由于Lerf是一个体积上的场,需要为射线上的每个位置定义一个尺度参数
在图像平面固定一个初始尺度S_{img},并定义S(t)随着焦距和采样点距射线的距离成比例增加
类似的,采用Nerf的方法来渲染权重
然后对Lerf进行积分获得原始输出
最后将每个输出规范化为单位球面上
多尺度监督:
为了监督Lerf,注意到我们并不是查询单个像素的语言嵌入,而是查询一个图像块
实际操作中,为每个射线计算一个CLIP非常困难,因此预先计算多个图像块尺度的图像金字塔
采样范围在s_{min}和s_{max}之间
训练时,在输入试图均匀随机采样射线起点,并且为每个图象块随机选择s_{img}\in(s_{min},s_{max})
对于没有落入到图像金字塔中心的图像块的样本,采用对上层和下层最近的4个图像块的嵌入进行三线性插值,来生成最终的真实值嵌入\phi_{gt}^{lang}
训练目标是最小化渲染谦和和真实嵌入之间的余弦相似度
DINO正则化:
在视图较少的时候或者前景和背景分离较少的情况下,会出现斑块和离群点
为了解决这一问题,额外训练一个场F_{dino}(x),为每一个点输出一个DINO特征
F_{dino}不接受尺度作为输入,直接用对应的DINO特征来监督每条射线
渲染方法和语言嵌入类似,将DINO的渲染结果和真实值做MSE损失来训练网络
总结:
1.为nerf设计一个语言嵌入模块,实现3d空间中的语言查询
2.将nerf的渲染输出和CLIP的语言嵌入结果做余弦相似度损失,本质上还是在对CLIP的信息进行蒸馏
3.添加DINO正则化稳定网络,考虑点的特征