— order: 4 —1 Expressive Whole-Body 3D Gaussian Avatar时间:2024.7Github 连接论文 arxiv 连接1.1 摘要、引言和相关工作Abstract面部表情和手部动作对人体表示很重要,但是目前从 casually captured video 建模 3D human avatar 的方法都忽略了这两点于是作者提出了 ExAvatar short monocular video 学习出 whole-body 3D human avatar具体方法是把参数化模型 SMPL-X 3DGS 结合起来主要困难点在于:1)视频中面部表情和姿势的多样性有限,让全新表情动画和姿势变得 non-trivial2没有 3D 观察(比如 3D 描和 RGBD 图像)会导致人体部位的不确定性,在全新动作下不可见部位产生 artifacts为了解决它们,作者提出了 mesh 3D Gaussians 的混合表示方案,把每个 3D Gaussian 看作是 SMPL-X mesh 的一个顶点。这样就可以用 SMPL-X 的面部表情参数驱动 ExAvatar 的面部表情,另外由于遵循三角形的 topology 获得了额外的连接信息,可以用来正则化从而减少 artifactsIntroduction除了身体的运动,面部表情和手部动作也很重要巴拉巴拉。已经有一些方法去建模这种 whole body geometry其中 SMPL-X 是应用最广的为了超越那种仅穿着基本服装的参数化模型,personalized 3D human avatars 最近被广泛研究,它结合了 geometry 和特定人物的appearance 并且要求可动画化、可渲染新姿势。然而,目前的从任意视频建模的方法都忽略了面部表情和手部动作。而最近虽然有一个可以建模这两者的方法 (X-Avatar) setting 比较高(需要 3D 扫码或 RGBD 图像),因此不是很实用于是作者提出了 ExAvatar困难、解决方式同摘要。这里多了一句是说,现存的 volumetric avatars 没有用到这种 connectivity 息(少了这种 geometry 先验的利用)使用这种 hybrid 方法之后,即使在训练帧中没有见过(缺少多样性),也可以凭借 SMPL-X FLAME 的编码来驱动任何表情,另一个好处就是减少 artifacts (e.g. floating 3D Gaussians)总的来说,作者的贡献有三点1.提出了 ExAvatar一个可以从短单目视频学习出富有表现力的 whole-body 3D human avatar 的方法2.提出了 mesh 3D Gaussians 的混合表示方案3.提出了 connectivity 信息的使用Related Works3D human avatarsHuman avatar 这个领域还算比较火的,发展到现在积累有不少方法Video Based Reconstruction of 3D People Models 使用 per-vertex offsets SMPL 扩展;Driving-Signal Aware Full-BodyAvatars 使用 conditional VAE 达成逼真的结果;Drivable Volumetric Avatars using Texel-Aligned Features 提出使用 texel-aligned 特征,即一种局部表征;NeRF 兴起之后,许多 volumetric and implicit representation-based 方法开始涌现,这里就不一一列举(跟我之前看的单视图重建应该是差不多的思路,手工特征很多)与这些方法相比,最近的工作更关注抛弃 3D 观察数据(扫描、RGBD多视图),而只用简短的单目视频。NeuMan 搞了一个数据集和一个从 in-the-wild 环境的视频重建人体的方法;Vid2Avatar 提出一个自监督的解耦了 scene human 的系统;InstantAvatar 顾名思义就是注重系统的实时性而基于最近提出的 3DGS又有不少新方法。比如 HUGS GaussianAvatar后面我自己展开说说)除此之外,还有 Authentic hand avatar 使用 universal hand model(UHM) 专注于手的动画;后续 URHand 扩展到可照明的情境跟之前的这些工作相比,本文的不同就在于 whole-bodyWhole-body 3D human modeling and perception。虽然重建人体已经是一个比较 challenge 的事情,但更进一步把 face, body,hands 一起建模就更难了可以想见这在 geometry 方面的要求非常高,不然人体会变得歪七八扭、表情出现恐怖谷、手部交叉扭曲等等。已经有不少parametric 方法,把人体表示成 pose, facial, shape code (parameters)其中 SMPL-X 是使用最广泛的(因为它最完整)。然后基于此,又有不少 3D whole-body pose estimation 的工作。我们可以利用 SMPL-X 之类参数化模型的先验来得到人体 geometry约束 avatars 里面也有一些做了 whole-body 的工作。这里着重说了 X-Avatar 的不足,一是需要结合了 SMPL-X registrations 3D观察数据,因此不适用于 in-the-wild 环境;二是它还需要 3D 观察的视频数据包含 diverse facial expressions这是因为他们对FLAME/SMPL-X 的表情空间利用得不好,需要把 mesh-based 表示使用可学习模块转化到 implicit representation 上。另外还有一个也是基于 3DGS whole-body 的工作 GEA,但是脸部表情不能动(自添加)跟先前 3DGS-based 方法的比较 CV 社区的卷度,3DGS 2023.8 提出到本文 2024.7,肯定已经有 3DGS-based 的方法了,比如 GaussianAvatar参考解读 HUGS参考解读而且 SMPL-X 先验的使用在人体领域已经是一件很普遍的事情,我粗看了一下,它们都是一个顶点一个高斯球的驱动方法(说明这个 idea 还是比较好想的x个人觉得从 high level 的角度它们以及这篇做的都差不太多,都是 SMPL mesh + 3D Gaussians 的混合表示并用 LBS 驱动。具体的高斯球特征表征,GaussianAvatar 是用的一个平面 UV map怎么感觉看着就效果一般x),HUGS 用的跟本文差不多的triplane 表征。我觉得本文做得比他们好的地方就是着重突出了 whole-body 的属性以及大量细节的处理(比如 offsets 的提出、FLAME 局部替代 SMPL-Xidentity-dependent pose-dependent 的解耦、connectivity 的正则化等等),最终效果上实现超越但从后文方法部分的分析也可以看到,本文对 3DGS 的利用还处于一个较初级的阶段。从我个人的品味来说,我可能会更希望探 3DGS 更高级的特性在人体重建能否有用武之地1.2 方法1.2.1 Accurate co-registration of SMPL-X TL;DR加入 jointsΔ𝑱 face verticesΔ𝑽face两个 offsets更进一步把 SMPL-X FLAME 2D keypoints 对齐所谓 short monocular video假定是在 in-the-wild (one person in natural background) 环境下拍摄的 30s frames在训练 ExAvatar 之前,需要做前处理也就是用 SMPL-X regressor 粗估计每一帧的 SMPL-X 参数,即poses𝜃55×3,shape𝛽100,facial code𝜓50,translation𝑡3其中 shape 参数对所有帧是共享的,而另外几个是 per-frame 然后额外解释一下,pose 跟之前一样是关节点的位置,hand 归入 shape 里面,(facial code 独立出来,是 FLAME face identitycode),translation 是全局平移即整个人体的位置whole-body avatar 跟一般 avatar 所不同的独特挑战在于,它需要准确地同时优化 face, body, hands但事实是,由于 SMPL-X 终究还是不够 expressive body registration accuracy 比较差的情况下会对 face hands 造成负面影响(我理解这里的意思应该是,当人体重建得一团糟的时候,脸部和手部可能压根都没有方向、没法优化)为了解决这个问题,作者为引入了两个 optimizable offsets它们初始化为零,在所有帧之间共享,并且与 pose, shape, face 参数独立,依赖于 identity(ID) 也就是每个人,因此,它们在执行 LBS 之前被直接加到 SMPL-X T-pose 模板上Δ𝑱for joints,andΔ𝑽facefor faceΔ𝑱被加到关节点上,这对 fit hands perfectly 非常重要,因为 SMPL-X shape 参数对手部骨架表现力有限,具体怎么做呢?SMPLX registration。从 Hybrid-X 输出的 SMPL-X 参数,进一步优化对齐到 2D keypoints来自 mmpose 这个 off-the-shelf工具的估计),并且同时也会对齐到 FLAME 参数(Δ𝑱Δ𝑽face其实是一起优化的),见下面Δ𝑽face被加到 SMPL-X T-pose mesh 脸部区域的顶点上。具体怎么做呢?FLAME registration。首先 FLAME 是一个 3D face-only model 的参数化表示,用一个叫做 DECA 的方法回归它(得到FLAME 参数,也就是 face shape parameter, facial expression code, and jaw pose)。然后进一步优化这些参数对齐到 2Dposes2D keypoints也是来自 mmpose),最小化这个损失𝐿FLAME=𝐿kpt+0.1𝐿init从而 DECA 回归出的 FLAME 参数跟图像进行了 pixel-aligned 对齐,并且正则化保证不会偏离太远之后 SMPL-X facial expression space 直接替换为 FLAME 的,其可行性来自于它们共享同一个 facial expression spaceSMPLX registration。从 Hybrid-X 输出的 SMPL-X 参数,对齐到 2D keypoints 并且融合脸部的 FLAME 参数表示。T-pose的关节点加上Δ𝑱,脸部区域 vertices 加上Δ𝑽face,优化它们最小化这个损失𝐿SMPLX=𝐿kpt+0.1𝐿init+𝐿face+𝐿reg再具体就不写了,太太太细节了(这里之所以要这种两阶段优化(先脸部再全身)的策略,主要有两个考虑:一是 FLAME 这种 face-only model space SMPL-X 这种 whole-body model 更具有表现力;二是 face-only model 并不受 body registration 的影响从结果上来看,论文的 Fig 2 Fig 3 指出二者的效果很显著(虽然我没看出来x),而且那个两阶段的方案之前方法从来没提过1.2.2 Architecture TL;DR预处理得到 canonical mesh𝒱triplane 3DGS 表征 identity-dependent 特征,每帧的 pose facial expr 驱动 pose-dependentdeformationsCanonical mesh𝒱𝑁×3本文在 canonical space 下建模人体,拥有𝑁=167𝐾 vertices 335𝐾triangle faces那这玩意儿哪来呢?首先 SMPL-X 本身就预定义了一个 template mesh 和关节点位置,然后用前面预处理估计出的 SMPL-X shape parameters 去变形调节体型;接着再加上本文提出的 joint offsets face offsets细节上再优化了一些;最后作者还嫌精度不够(至于为什么,之后会理解的),用 PyTorch3d subdivision function曲面细分)以consistent 的方式进行上采样,最终得到这个𝒱PyTorch3d facebook现在应该叫 meta x开源的一个面向 3DV 的工具箱,里面有很多针对 mesh 常用的操作,比如这里的曲面细分Per-vertex Gaussian assets regression本文使用经典的 triplane 特征表示(NeRF 延伸工作 EG3D 提出) ——𝑻3×𝐶×𝐻×𝑊其中𝐶=32,𝐻=128,𝑊=128代表 channel dimension, height, width of the triplanes三平面初始化为零然后,准备一个 -pose 下的 positional encoding mesh𝒫𝑁×3,并且没有 shape parameters用同样的 subdivision function上采样到𝒱的分辨率(或者按论文的话叫 the same mesh topology疑问:这个𝒫不就是 SMPL-X 自带的 template mesh 吗?为什么叫 prepare为什么不用之前微调过的 canonical mesh𝒱来做 feature extraction这是因为它的 shape parameters𝛽 joint offsetΔ𝑱会继续在训练过程中优化。vertex 位置的变化会导致提取出的特征不稳定注:这里个人感觉会导致两边略 mis-aligned或许是一个可以优化的点。怎么避免这个震荡问题或许可以限制每次更新的步长,让每次位置更新得很小;或者用强化学习的思路做进行平稳接下来就是常规的把𝒫每个顶点(正交)投影到三平面并双线性插值得到 per-vertex feature三平面的表示很有用,因为它自然地强化了邻近 vertex 之间的 similarity然后还有一个实践上的优化 (practical trick)由于面部在整个身体的占比很小,对应到 triplane physical size 就不大,因此为脸部的 geometry appearance 额外创建了一个 triplane 表示采样出的特征被 concatenated标记为𝑭𝑁×9696=3𝐶𝑁个顶点但脸部来自另外的 triplane),然后送入两个 MLP分别回归出用于 3DGS 的:1.3D offsetΔ𝑽tri𝑁×3, scale𝑺tri𝑁×12.RGB values𝑪tri𝑁×3MLP 对所有顶点共享参数(想想也知道不可能单独x GaussianAvatar 的启发,为了更好的新视图的泛化性,把所有高斯限制为各向同性,具体来说回忆 Gaussians 的属性,3D position均值𝜇)、用 scale 和四元数𝑞来表达的协方差矩阵Σ、不透明度𝛼、用球谐函数表示的颜色𝒄这里把位置表示成对每个 vertex offset不透明度设置为1(这两个比较好理解,毕竟现在是跟 mesh 混合的方法,mesh也是不透明的),并且把 scale 自由度限制到1(这下是真高斯而非椭球了),用单位矩阵删去了旋转(既然变成了纯粹的球,那旋转就没有任何卵用)这是因为单目视频缺少多视角的监督,对于一个视频帧而言,神经网络更容易将高斯球过拟合到当前视角,而当高斯球各项同性时会减小过拟合的影响特征表示了什么?从前面 feature extraction 是用 fixed𝒫也能知道,triplane 表征的是在所有帧中共享的 identity(ID) 特征,因此是 pose-independent 的。进一步提取出来的 Gaussians 当然也是,然后它们随每一帧的 pose 变化用 LBS 牵引注:这里说的另外一点是 triplane 特征跟 environment 也是相关的(比如说光照),这我就觉得有点扯了。既然这么说,那就表明他们视频的 in-the-wild 程度还不够,而且人物动作变化应该不大,这样才有可能一整个视频的光照都没怎么变(不然的话随便走动一下光照条件肯定会有变化的)从上面的分析,pose 的特征并没有在 triplane 中体现出来,但从 SMPL 我们知道 pose 也是会影响人体形状的。因此这里我们需要额外建模 pose-dependent deformations额外引入两个 MLP1.第一个 MLP 接受特征矩阵𝑭 3D pose𝜃(但不包含 root pose),输出 3D vertex offsetsΔ𝑉pose𝑁×3以及 scale offsetΔ𝑆pose𝑁×12.第二个 MLP 接受同样的𝑭𝜃,再加上 mesh 每个 vertex normal vector输出 RGB offsetsΔ𝐶pose𝑁×3额外的 normal vector 可以提供 view-dependent shading information且在解耦 geometry appearance 方面很有帮助(这句不是很理解)per-vertex normal vector 的获取得益于 hybrid 表示,通过把每个顶点参与的面的法向进行加权平均得到后一节会说,最后把这些 offsetΔ𝑽加到每个 vertex 本身的位置上得到高斯球的位置,预测出的 scale𝑺 scale offsets 为高斯球的大小,预测出的 RGB values𝑪 RGB offsets 为高斯球的颜色,不透明度设置为1。这样就得到了𝑁个高斯球 (per-vertex)相比起直接预测 pose-dependent Gaussians本文方法采用 hybrid 方法,基于本就有的 vertex 加上预测出的 offsets个人理解其好处在于: mesh vertex 基于 offsets 生成 Gaussians 的位置,本身就已经有一个 geometry 先验,且易于驱动 triplane 抽特征得到 pose-independent Gaussians 的属性,这样就已经有了合理的表现力。随后 pose-dependent 需要承担的责任就变小,且被解耦出来,能更多地专注于 pose-dependent deformations这种设计在从短视频中生成 3D avatar 的时候尤为重要,因为视频内 pose diversity 有限,泛化到新 pose 很困难。本文的这种框架能够提高 Gaussians novel pose 的泛化性1.2.3 Animation and rendering TL;DR高斯球加上偏移量,用 LBS 驱动 per-vertex Gaussians然后渲染出来,另外还可以做风格迁移AnimationSMPL-X shape parameters 已经在𝒱用上了,然后我们需要用 facial expression code𝜓 3D poses𝜃来驱动高斯球offsets 处理首先我们用 MLP 预测出的手部和脸部的 pose-dependent vertex offsetΔ𝑉pose直接替代掉 SMPL-X vertices offsetsSMPL本身所建模的 pose 引起的 shape 变化)这是因为手部和脸部通常是裸露的,因此我们可以直接使用 SMPL-X vertex offsets没懂什么意思?)然后把来自 facial code𝜓 vertex offsetsΔ𝑉expr加到 SMPL-X 的脸部 vertices 通过直接使用 SMPL-X facial expression offsets我们不需要学习一个新的 facial expression space这种直接利用基于mesh 3D Gaussians hybrid 表示如下式子描述了 canonical space 下的 vertex deformations𝒱tri=𝒱+Δ𝑉tri+Δ𝑉expr𝒱pose=𝒱+Δ𝑉tri+Δ𝑉pose+Δ𝑉expr其中Δ𝑉triΔ𝑉pose分别是 triplane pose-dependent vertex offsetspose 引起的 canonical space 形体变化),Δ𝑉expr SMPL-X facial expression offsets从而所有这些偏移量(包括一开始配准 (registration) 阶段加入到𝒱里的,以及这里优化预测的)都会参与 LBS 的牵引然后,对 body vertices我们取自 downsampled𝒱的最近 vertices skinning weight而对 hand face vertices使用原始的skinning weight这是因为,对于 body vertices由于 cloth geometry 的影响,它们的语义含义可能会发生变化最终的 animated geometry𝑉triand𝑉pose用下面的方程表示𝑉tri=LBS(𝒱tri,𝜃,𝑊tri),𝑉pose=LBS(𝒱pose,𝜃,𝑊pose)𝑉pose很好理解就是经过 LBS 变换的带位姿的高斯球;而𝑉tri一直保留(即 pose-independent 的部分),这是因为后面要一直用不带位姿信息的高斯球来做渲染并做 loss从而反向优化 triplane 部分可能会难以理解𝑉tri后续是怎么跟 captured image 对齐的,实际上如果细看过 SMPL 的话就知道,pose 引起的 shape 变化并不明显,因此𝑉pose相比𝑉tri差得并不算多,经过 LBS 驱动后大体上还是类似的Rendering渲染就是 3DGS rendering pipeline不多赘述𝐼tri=𝑓(𝑉tri,exp(𝑆tri),𝐶tri,𝐾,𝐸)𝐼pose=𝑓(𝑉pose,exp(𝑆tri+Δ𝑆pose),𝐶tri+Δ𝐶pose,𝐾,𝐸)其中𝑓代表 3DGS 的渲染方程(但就像上面说的一样略有调整 —— 各向同性 + 不透明),𝐾,𝐸是相机的内外参矩阵Pose and Garment Transfer然后补充一下,论文里所没有提到的是,现在 Github ExAvatar 的最新版本,已经支持类似姿势和服装迁移的效果怎么实现呢?注意到 co-registration of SMPL-X Per-vertex Gaussian assets regression 本身就是两个独立的模块。我们完全可 preprocess 一个视频去 Fit SMPL-X作为 geometry 指导(动作);然后另一个视频去 fit Gaussians作为 geometry 调整和texture 指导这样就能实现 github 上那个视频迁移的效果(作者把自己的形体迁移到另一个街舞舞者的动作上,或者也可以说把动作迁移到自己的形体上,差不多)1.2.4 Loss functions TL;DR image 为粒度做 loss额外加上 face loss 增强脸部约束,以及 connectivity-based 正则化整个优化过程的目标triplane𝑻、用于回归 Gaussians MLP每一帧的 3D pose𝜃 facial code𝜓以及 3D translation𝑡shapeparameters𝛽joint offsetΔ𝑱同时渲染背景除了优化人体之外,也会通过现成的 mask-RCNN 这种分割工具标出 human mask借此同时优化 background 3DGS可能是因为 3DGS 的代码来自原论文,所以渲染背景部分比较自然就加上了?同时建模 background 的好处在于,(遵循 Vid2Avatar),它能产生更好的 foreground mask因为 off-the-shelf 的分割工具会有误差,尤其是手的部分(疑问:不用现成工具而用 gaussian splatting 的话,这个 mask 具体如何区分来自前景还是背景?)这样,前面渲染出来的𝐼tri加上用作背景的高斯球渲染的结果,记作𝐼tri𝐼pose加上背景记作𝐼pose然后优化以下 lossImage loss跟原始 3DGS 一样,渲染出的𝐼tri,𝐼pose captured image 之间的 L1 loss, 1-SSIM 做图像粒度的对齐但额外加上了 LIPIPS loss sharper textures 更有帮助为了节省 image loss 计算量,把图像裁剪到 human region疑问: background 还怎么优化?)Face lossface 跟其它区域不一样的地方在于,它需要 geometry texture 之间比较强的一致性。比如 Fig 6 里面,嘴唇 geometry 通常有红色的纹理,如果其它 face geometry 需要唇部纹理,在 novel 表情或下巴姿势下可能不会正确变化,导致显著的 artifacts简单地最小化上述 image loss 并不能保证这种脸部一致性,这里采取的做法是用另一个渲染器得到的 face image capturedimage 之间的 L1 loss这个渲染器是 standard differentiable mesh renderermesh vertex 哪来?脸部高斯球的位置作为优化变量,它被调整来减小 losstexture 哪来?小节 1.2.1 处优化来的 FLAME 模型同时输出了一个 unwrapped UV texture这个 texture 被固定总之这里相当于是说,重利用了先前步骤的结果,为脸部区域加入额外约束Regularizers由于训练集中 pose diversity 有限,可能存在一些人体部位不可见,会导致 occlusion ambiguity 并最终导致 novel pose and face artifacts为了更好地利用 SMPL-X facial expression offsets我们需要让 face geometry SMPL-X face geometry 一致受之前一些工作的启发,为了解决这一问题,本文使用 connectivity-based regularizers(Laplacian regularizer)效果如 Fig 7这个感觉效果很明显最小化这二者之间的差距1.canonical space deformed 高斯球的 Laplacian𝒱tri,𝒱pose2.最开始的 canonical mesh𝒱 Laplacian可以看到这跟𝒱tri=𝒱+Δ𝑉tri+Δ𝑉expr,𝒱pose=𝒱+Δ𝑉tri+Δ𝑉pose+Δ𝑉expr是恰恰相反的,这就是正则化,它限制了这个 offset是局部小范围的而不能到处乱飘拉普拉斯是什么意思?是指拉普拉斯微分算子,用来描述一个图的局部性质,即论文 introduction 部分说的 connectivity 信息(但不知道为什么这里反而没展开讲)这种 connectivity-based regularizer 比广泛使用的 L2 regularizer(e.g. GaussianAvatar)更有效,因为能利用 mesh topology 息。而本文的 hybrid 表示使这种正则项的引入非常自然且容易除了正则化 3D Gaussian 的位置,还会计算它们的 scales RGBs具体需要看 supplementary material1.3 实验DatasetsNeuMan 提供了 in-the-wild short monocular video每个视频包含单个人在大约15秒内四处走动的画面。使用跟先前的工作(GaussianAvatar)一样的视频,遵循官方实现的训练测试集划分,这些视频展示了大部分人体区域,包含最少的模糊图像X-Humans 提供了实验室内采集的包含 3D scans RGBD 数据的 multiple subjects videos NeuMan 相比,它提供了更多样的facial expressions hand poses这个数据集只跟 X-Avatar 做了比较,它使用了额外的 depth maps而本文不使用Comparison to SOTA methodsTable 1, Table 2 NeuMan 的测试集上进行,跟多种方法对比。二者分别是有没有考虑 backgrounds 时的指标计算我们知道 ExAvatar 是个基于优化而非学习的方法,那这个训练测试是什么意思呢?理论上来说应该是直接用前面估计出来的 smplx_smoothed avatar 训练出来的东西直接 lbs但是先前的工作有点偷鸡,这里为了公平起见也这样做了。具体来说,在测试图片上根据 loss 进一步进行 optimizing SMPL-Xparameters fixing the pre-trained avatars代码 readme 里这样说,但论文里说 freezing all other parameters?)Fig 8 可视化展示了 NeuMan novel views and poses 下渲染结果的对比。一方面可以明显看到衣服上的印花变得 sharper andclearer另一方面可以看到由于本文建模了 whole-body在脸部和手部有更强的 controllibility纹理也更尖锐,不像之前工作一样只能嵌入模糊的纹理Table 3 Fig 9 X-Humans 上进行,跟 X-Avatar 对比,在缺失 3D 观察的情况下甚至结果更好这里的测试跟 X-Avatar 一样,对测试帧直接用了给定标值且没有进一步优化它Ablation studies测了两个方法 —— face loss(Fig 6 and Table 5) Laplacian regularizer(Fig 7 and Table 4)结论是都有效果提升,不赘述然后讨论几个 failure cases1.如果 off-the-shelf regressor 估计的 SMPL-X facial expression code𝜓不准确,会导致 artifacts研究更高级的 facial model 和更高精度的 regressor 应该恁更解决这个问题2.比如输入视频的人一直在微笑,那么需要迁移到的人如果皱眉的话,并不能正确变换我个人觉得这好像不是特别严重的问题?因为你如果把这个微笑看作是动作的话,那么就像 demo 一样,既然是迁移,这个皱眉被改成微笑是可以理解的;这里作者的意思应该是把皱眉和微笑理解成 appearance希望皱眉能像其它 texture 比如皮肤、衣服之类的一样被迁移此时可以说,微笑的 facial appearance 已经被嵌入到我们的 avatar 了。更进一步深究这个事情的话,个人觉得有点像是 out-of-distribution(OOD) 问题相比起 body mesh 具有整个 body template mesh在其上进行 LBSfacial expression code canonical space 只是template mesh 的一小部分,其分辨率跟脸部要求的高精度表示是严重不吻合的个人理解:而且我认为这里作者所没说的是,他加的Δ𝑽face其实加剧了这种情况我们做一个类比,facial expression code 把脸部表情在 canonical 的基础上进行变换,可以理解成围绕空间的原点进行旋转(只不过空间的维度比较低)那么加一个 identity-specific offset 可以说是导致了原点的偏移。也就是上面脸部表情空间分布完全趋向于微笑的情况,而不是一个标准化的空间从短单目视频 Canonicalize facial appearance 是很困难的事情,尤其是在本文这种 whole-body setting 下,脸部只占视频的很少一部分 pixels这就导致 2D key points 的生成变得 noisy进而导致 SMPL-X/FLAME co-registration 阶段有一定的misalignment这种误差会进一步累计/传播到后面的 ExAvatar learning stage导致上述 failure case作者认为,使用生成式方法得到 canonical facial appearances 的先验或许能解决这个问题1.4 结论Summary提出了 ExAvatar一个 expressive whole-body 3D human avatar 方法,能从短单目视频建模,它能完全适应 SMPL-X facialexpression space 并且显著减少了 novel pose face 下的 artifacts使用了 hybrid 的方法,作者声称这解决了 —— 1) 视频中 facial expressions and poses limited diversity; 2) 3D 观察的缺失但我个人觉得最重要的还是因为 SMPL-X 提供了一个强有力的 geometry prior它自然而然地提供了 animatable 的能力,而且比较能无视 input diversity参数化表示本身就提炼出了人体的很多特征和动作,见得够多了)如果要一句话概括方法的话,就是 SMPL-X 每个顶点上绑一个高斯球,允许一定的局部小范围偏移,从 triplane 预测高斯球们的(部分)特征这是 high level 的想法,至于具体的参数哪来,怎么提取特征和怎么融合,就都属于 technical details 了,回看 小节 1.2 部分再然后就是 3DGS 渲染(都不叫 volumetric 了感觉)之类;而且也不涉及 3DGS 的分裂合并,只是简单的一一配对(所以才需要上采样,但这个就感觉比较机械过程了,没能根据结果融入优化过程里面)因此个人感觉这里对 3DGS 的应用还不是特别深入,有待进一步探索Limitations一是说,对于视频里几乎不出现的区域(比如张开的嘴巴和手掌心),模型只能幻视出一个看似合理的猜测二是说,就跟之前的 avatars 方法一样,难以建模 dynamic cloths比如宽松的衣物、以及它们的材质信息比如速度加速度Future works既然视频里没有信息,那就只能从预训练生成式(大)模型拿先验信息咯,比如 DreamFusion一个利用 2D Difussion Model 实现text-to-3D 的工作)的分数蒸馏采样(score distillation sampling, SDS)就可以用来生成图像并用于监督其实生成模型仅使用 DensePose 2D 姿态做驱动,也已经甚至能从单张图像生成 3D avatar 了,但问题在于这个更多是基于生成而不是重建。前者有其合理性和一定的逼真性,但总归不太真实,至少目前完全不如基于重建的方法真实(最大的问题就是幻觉)另外,给 ExAvatar 加上 relightability 也是一个有前途的方向(目前的光照是完全耦合在建模出的 texture 里的,也就是 Gaussians RGBsSupplementary Material1.Details of co-registration of SMPL-X2.Architecture of MLPs3.Regularizers4.Running time comparison5.Geometry comparison6.Comparison to generative AIs7.Implementation details8.Failure cases着重看了看 1, 6, 7,融合在了上述笔记中,其它部分感觉比较浅显就没太细看