[paper | code | proj]
- 本文提出INSTA。INSTA是一种backward mapping方法。该方法基于NeRF建立标准空间,形变空间(任意表情)通过映射回标准空间,实现渲染。
- 为实现形变空间中任意点向标准空间的映射,对形变空间中的任意点:1)找到最近邻三角面片;2)通过该三角面片和对应标定空间中的三角面片计算形变梯度;3)通过形变梯度将该点映射回标准空间;
- 给定一段单目RGB肖像视频,该视频记录了目标人物的不同表情和视角,实现对未见表情和视角的渲染。
快速可变形神经辐射场
- 任务设置:给定单目视频、相机内参、FLAME meshes 、FLAME表情系数和FLAME相机位姿,生成基于神经辐射场(NeRF)表征的可控制头部虚拟人
- 本文方法属于Backward Mapping。本文基于NeRF建立标准空间,为了渲染特定面部表情,将形变空间中采样的点,映射回标准空间中。相较而言,经典的Dynamic NeRF是将不同时间的点映射回标准空间。
体渲染
其中,是透明度,是密度,是位置的颜色。任意点,在预测其密度和颜色时,会受该帧对应的3DMM表情系数影响。
标准空间
本文通过计算形变梯度(deformation gradient),将形变空间中点映射到标准空间中。
- 给定第个形变空间中的任意点,其FLAME最近邻三角面片(triangle)是,对应标准空间中的FLAME三角面片是;
- 通过三角面片切向量(tangent vector)、双切向量(bitangent vector)和法向量(normal vector),计算旋转矩阵;
- 通过三角面片顶点可以计算位移
- 通过旋转矩阵和位移矩阵,可以计算Frenet坐标系统帧和,两者大小都是:
- 考虑到三角面片在形变空间和标准空间中的差异,本文通过对应三角面片的面积比,计算各向同性的放缩变量:
- 最终,形变梯度定义如下:
- 为了避免变化的不连续性,本文额外执行了相邻面片转换的指数加权平均:
- 其中,,A是T的相邻面片,其中心点为。
- 值得一提的是,所有顶点的位置都以米为单位(FLAME的度量单位)
为了加速渲染,本文借助经典的bounding volume hierarchy (BVH),提高最近邻三角面片的搜索速度。同时,为了减缓FLAME中高度密集区域的三角面片搜索,本文简化了研究和眼睛区域;
训练目标
任意点颜色为:
其中,,,
借助FLAME模型,实现脸部区域的深度损失:
最终损失为: