KeypointNeRF: Generalizing Image-based Volumetric Avatars using Relative Spatial Encoding of Keypoints
通过用3D关键点对query point进行相对空间编码,解决全局编码对细节重建不好的缺点;以及使用pixel-aligned feature实现细节重建。
Overview
以下各步骤与图中的编号相对应:
- 通过input images得到K个2D关键点,并提升为3D keypoints;
- camera cast a ray,and sample some query points;
- 通过image encoder提取images的一些feature maps;
- 对于某个query point:将其投影到各个feature maps获得像素对齐特征(图中绿色以及蓝色长方体,绿色长方体是将query point投影到images本身);用step1中的3D keypoints对query point进行相对空间位置编码relative spatial encoding获得;
- 像素对齐特征与空间位置编码相融合;
- 使用Radiance Field预测color & density;
- 使用volume rendering得到novel view的pixel value;
重点component
基于关键点的相对空间编码(relative spatial encoding)
一些工作使用global spatial encodings和multi-view geometric consistency减少了空间模糊性spatial ambiguity,但global encodings经常会因为训练数据的分布特性而导致过拟合,或者很难从稀疏视角sparse views学习multi-view consistent reconstruction(由于global encodings固有特点而导致)。
本文一个关键的idea是使用sparse 3D keypoints编码相对空间3D信息,相对空间编码的特点是局部local,它更多学习的是局部特征之间的关系(有点类似于IBRNet中送入MLP的不是raw view direction,而是与camera direction的一个角度差。NeRF送入MLP是view direction,它只是一个坐标,不包含任何关于scene的特征,导致泛化性较差。而使用角度差,就像告诉MLP,谁离我比较近(角度差),就多学习一点特征)。
如何得到:
N张input views,计算得到K个关键点。对于一个3D query point X,将K+1个点投影到第n张input view上去,计算深度差值(是指相机参数,投影用),并使用位置编码。计算X在第n张input view上的相对空间编码如下([*]即列表,[]):
像素对齐特征(pixel-aligned feature)
是什么?一张input view,通过卷积或其它操作得到一些feature map,如feat_geometry_map, feat_appearance_map,将query point投影到这些特征平面上(会使用双线性插值确保一定有投影点),会得到投影点,这些投影点就是像素对齐特征。
本文的特征平面包括4种:
前两个特征是用HourGlass网络得到的,第三个特征用带残差连接的卷积网络得到。X是一个3D query point,将其投影到各个特征平面可得像素对其特征,记为,F取上面的4种特征(n是指第n张input view)。
Multi-view Feature Fusion
为了model一个multi-view consistent radiance filed,我们需要对每张view的空间编码和像素对齐特征进行融合,具体操作如下:
Modeling Radiance Fields
density和color的预测是独立的,density的预测比较简单、直接;color的预测则是结合了多种特征,并且先得到N个blending weights,然后融合。
能保证geometrically consistent renderings。
其它
损失函数用了一个VCC感知损失,能更好地捕获high-frequency details。