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。

相关推荐
编程小白_正在努力中16 小时前
神经网络深度解析:从神经元到深度学习的进化之路
人工智能·深度学习·神经网络·机器学习
无风听海16 小时前
神经网络之经验风险最小化
人工智能·深度学习·神经网络
H***997618 小时前
月之暗面公开强化学习训练加速方法:训练速度暴涨97%,长尾延迟狂降93%
人工智能·深度学习·机器学习
DuHz18 小时前
无线通信与雷达感知融合的波形设计与信号处理——论文阅读(上)
论文阅读·信号处理
棒棒的皮皮19 小时前
【Python】Open3d用于3D测高项目
python·3d·open3d
DuHz19 小时前
无线通信与雷达感知融合的波形设计与信号处理——论文阅读(下)
论文阅读·汽车·信息与通信·信号处理
FL162386312920 小时前
无人机视角航拍河道漂浮物垃圾识别分割数据集labelme格式256张1类别
深度学习
青瓷程序设计1 天前
昆虫识别系统【最新版】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积神经网络算法
人工智能·python·深度学习
小殊小殊1 天前
DeepSeek为什么这么慢?
人工智能·深度学习
Coding茶水间1 天前
基于深度学习的路面坑洞检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·计算机视觉