Drivable 3D Gaussian Avatars 论文笔记

Drivable 3D Gaussian Avatars 论文笔记

主要的算法架构和贡献是什么?

这篇文章主要使用了两个当前流行的概念,一是3D高斯溅射,二是cage-based deformation。 这篇文章主要是通过多视角视频来实现逼真的人体三维建模 (3D Human Avatar modeling)。 首先大致记录一下对cage-based deformation 的理解。首先这种方法是将一个object 看成是很多 cages, 然后每一个cages 只负责在它里面的点。比如说,把一个3D人体模型看成是一个密集点云, 我们将人体模型拆分成 脸,手,身体,和腿,每一个部位用不同的cages来表示,比如之前表示脸的点,现在都在表示脸的cage里面,当cage发生形变到时候,里面所有的点也会跟着发生形变。 所以cage 可以被看成是一个proxy。

那么在这篇文章里是如何来使用这个概念的呢? 这个方法是如何工作的? 为了提取出关键的语义信息,比如哪里是人的手,哪里是人的身子。 首先会将输入帧进行语义分割,分割的目的是提取出图片当中人的脸,四肢,身子,和衣服,为之后的cage-based deformation 做准备。 文中使用的网络结构是 EfficientNet backbone with PointRend refinement。在得到了语义信息之后,将sementic map 投射到一个 human mesh M 上 去获得 per vertices labels。换句话来说就是通过以上的操作,Human mesh 也间接的被做了segmentation。那么既然是整个Mesh的segmentation, 可见这里肯定是需要用到多张照片的semantic map的同时投射,如果只使用一张照片的话,很难判断其他视角的语义信息是什么样的。(我感觉这里可能成为拓展成单张照片的一个点)。这个3D human mesh 实则是一个低分辨率的LBS Model, 现将这个LBS 模型 fit 到 3D scan里面,然后再把这个LBS模型 fit 到segmentation map里面。 所以现在的这个human mesh 是一个低分辨率的, 有posed的 triangle surface。

为了使用 cage-based deformation, 文中首先将这个低分辨率的人体模型从姿态空间(pose space )转移到 canonical space 里面。 我的理解就是通过一变换将human mesh 变成 T pose。 接下来就是cage-based deformation 很重要的一个步骤,就是把vertices mesh 变成 tetrahedral meshes。 我个人的理解是这里需要一个volume的概念, 因为cage-based deformation的核心其实是将cage看成是coarse proxy,所以在cage里面的点就显得很重要,而一般triangle surface 它很难提供volume的概念,因为一个triangle在空间中只是平面的一个小部分, 而四面体 tetrahedra 本身就可以提供volume的概念。很多需要volume信息的人体三维重建的论文,都会有将triangle surface 变成 tetrahedral surface 的步骤,比如 Pamir, 在求取volume之前,也有将SMPL Mesh 变成 tetrahedral 的步骤。 这篇文章使用的是TetGen 来将unposed 的Mesh变成 tetrahedral meshes。转换出来的Mesh 就包括了三个板块,cages for garments, cages for body, and cages for face。每一个cage的形变是根据之前triangle surface的 LBS weights来的,这也就意味这每一个cage里的点也都是按照LBS weights 来做的形变。 文中将在tetrahedron 中的点定义为如下:

b j b_j bj指的就是这个点的重心坐标 (barycentric coordinates) 以上公式,在 tetrahedral surface 根据LBS weights 从canonical space 转到 pose space的时候,依然成立。这就给形变转移(deformation transfer)提供了可能性

以上公式中的 E i E_i Ei , E ^ i \hat{E}_{i} E^i 分别表示 形变前后的 tetrahedra, J i J_i Ji表示的是形变梯度(deformation gradient)。这个也是之后引导3D 高斯形变的核心。

如何使用这个deformation 呢?

文中把形变的表示方式和3D高斯溅射联系到了一起。 文中首先对3D高斯进行了初始化,说白了就是将3D 高斯和一些特定的特征输入联系到了一起。 比如文中将 3D 高斯的Mean 表示成了从低分辨率的Mesh 采样的点的位置。 Rotation的前两个axes 和triangle surface联系了起来,最后一个axe和和相对应的法向量(normal)联系了起来. Scale 就是根据 inter-point distance 的距离做的初始化(现在有一些论文是将3D高斯的covariance 拆分成了rotation和scale)。 文中将3D高斯的covariance和之前提到的deformation gradient 通过一下方程联系到了一起:

这么做就等于是将之前的形变表示,转移到的高斯上。

最后就是将上述提到的方法在整合到神经网络中。 文中提到了三个主要的结构,都是MLP。第一个 Cage node correction network 它只要控制的是形变,它的输入是pose 还有vertices的positional encoding, 输出的是cage nodes的offset。 听上去很想 deformation field 的感觉。第二是Gaussian correction network 它只要掌管是高斯参数的预估,它的输入是canonical space里面的高斯参数,输出的是对这些参数的矫正(correction)。 最后一个就是 Shading network 主要是预测3D 高斯里的成color 和 opacity, 它的输入是原始的颜色以及view direction。

相关推荐
Lihua奏3 天前
从单核到多核:CPU为什么不能再只靠提频变快
深度学习
拾年2753 天前
大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿
人工智能·深度学习·机器学习
饼干哥哥7 天前
开源Skills|搭建亚马逊动态关键词库系统,每天抓SSS级机会词
人工智能·深度学习·数据分析
武子康9 天前
调查研究-191 SenseVoice 不只是 ASR:把语音从“转文字“升级成“理解状态“
人工智能·深度学习·openai
武子康10 天前
调查研究-189 Kronos 调研:金融 K 线基础模型,是真突破,还是量化圈的新玩具?
人工智能·深度学习·openai
xiao5kou4chang6kai416 天前
MATLAB机器学习、深度学习--从数据预处理到模型训练
深度学习·机器学习·matlab·数据预处理
renhongxia116 天前
世界模型作为AGI落地底层底座的作用
人工智能·深度学习·生成对抗网络·自然语言处理·知识图谱·agi
计算机科研狗@OUC16 天前
(cvpr26) AIMDepth: Asymmetric Image-Event Mamba for Monocular Depth Estimation
人工智能·深度学习·计算机视觉
cqbzcsq16 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
凌晨一点的秃头猪16 天前
论文阅读 GTI(Graph-based Tree Index): 面向高维空间最近邻搜索的动态图-树混合索引结构
论文阅读