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。

相关推荐
AI机器学习算法7 小时前
深度学习模型演进:6个里程碑式CNN架构
人工智能·深度学习·cnn·大模型·ai学习路线
AI医影跨模态组学7 小时前
如何将深度学习MTSR与膀胱癌ITGB8/TGF-β/WNT机制建立关联,并进一步解释其与患者预后及肿瘤侵袭、免疫抑制的生物学联系
人工智能·深度学习·论文·医学影像
SomeB1oody10 小时前
【Python深度学习】3.4. 循环神经网络(RNN)实战:预测股价
开发语言·人工智能·python·rnn·深度学习·机器学习
ACCELERATOR_LLC10 小时前
【DataWhale组队学习】DIY-LLM Task2 PyTorch 与资源核算
人工智能·pytorch·深度学习·大模型
Theodore_102211 小时前
深度学习(15):倾斜数据集 & 精确率-召回率权衡
人工智能·笔记·深度学习·机器学习·知识图谱
林恒smileZAZ12 小时前
Three.js实现更真实的3D地球[特殊字符]动态昼夜交替
开发语言·javascript·3d
li星野13 小时前
词嵌入技术、注意力机制、MoE架构、主流Transformer架构
深度学习·架构·transformer
Omics Pro15 小时前
华大等NC|微生物多样性与抗菌物质发现
大数据·人工智能·深度学习·语言模型·excel
传说故事15 小时前
【论文阅读】Being-H0.7: A Latent World-Action Model from Egocentric Videos
论文阅读·人工智能·具身智能
YMWM_15 小时前
论文阅读《Diffusion Policy: Visuomotor Policy Learning via Action Diffusion》
论文阅读·diffusion·policy