Loading... > 这是在实验室做的 CVPR 2021 Paper Sharing ,配合 [PPT](https://blog.co1in.me/usr/uploads/2021/08/2675805917.pdf) 的文字解释。 # 简介 文章的标题是“SCANimate: Weakly Supervised Learning of Clothed Avatar Networks”,是 CVPR 2021 的文章。这篇文章的主要工作是提出了一种弱监督的学习方法,输入扫描得到的穿衣服的人体的原始点云,从中学习出一个模型,该模型可以对输入的点云做人体的三维重建,即输出 mesh ,并且能改变人体的姿态,实现自定义动画 mesh 的输出。 # 前人工作 以前完成该任务的工作都需要将输入和已有 mesh 模型做一个表面的配准(surface registration)。但是该方法受限于以下两点效果不好: - 已有模型的分辨率; - 配准简单模型和复杂输入的复杂度(不好做;需要人力;因此可拓展性不高)。 # 主要方法 整个过程可以拆分为两步:学习 Skinning Weights 、学习 SDF 。这个拆分是这篇文章的一个重要思想:对于生成任意姿态人体 mesh ,也就是完成从输入到输出的变换,我们将人体结构上的变形和局部的形状变形分开进行处理。 ## Skinning Weights 整体姿态的变换本质上是点云坐标的变换。我们引入 Skinning Weights 这个概念对变换进行建模。 Skinning Weights 描述的是在变换过程中各个控制单元对单个点的影响力。如果有 J 个控制单元,那么对于每个点就有一个 J 维向量,它描述了这个点在多大程度上受到各个控制单元的影响。更进一步,我们可以把 J 维向量看做线性叠加系数,那么单个点的变换就是各个控制单元变换的线性叠加。 这篇文章中, Skinning Weights 将会使用一个网络去表达,即输入三维坐标,输出 J 维 Skinning Weights 。而这也使得我们的 Skinning Weights 不局限于一个物体表面的点,而是对于空间中的任意一点都有。这点在后面会用到。 ### 原始姿态和标准姿态之间的变换 如何训练 Skinning Weights 网络呢?因为我们无法得到人体任意姿态扫描模型上 Skinning Weights 的真实值,所以只能采用无监督或者弱监督的方式。核心方法有两点: 1. 将 SMPL 模型 fit 到点云上,这比 surface registration 要简单。之后我们可以借助 SMPL 模型在 body surface 上的 Skinning Weights 对 scan surface 上的 Skinning Weights 做监督。 2. 利用“循环一致性”做自监督。扫描的原始姿态可以通过一个反 LBS 函数变换到标准姿态,标准姿态可以通过 LBS 函数变换回原始姿态。如果我们将要提到的 LBS 变换函数中的参数正确,那么变换前后应该会很接近。类比 Encoder-Decoder ,利用二者的相似度就可以做自监督学习。 LBS 是一个给三维点做变形的函数。它的表达式就是利用了 Skinning Weights ,即每个控制单元的变换 T 做线性叠加作用到输入点上。在这篇文章中,欧式空间中的变换 T 是从 SMPL 模型得到的,是已知的。因此只要我们训练出 Skinning Weights 就可以对点,对人体姿态做任意变换。 ### 训练 Skinning Net 接下来我们主要关注训练 Skinning Weights Network 中的损失函数。 #### Consistency Loss Consistency Loss 分为两部分: - 原始点云和经过反 LBS 、 LBS 函数之后的点云二者之间的坐标差距。 - 原始姿态空间和标准姿态空间中 Skinning Weights 的差距。(Skinning Weights 在任意姿态下应该是一样的。) #### Body-guided Loss 这部分 Loss 细分为: - body surface 上我们预测的 Skinning Weights 和 SMPL 给出的 Skinning Weights 的差距 - 标准姿态下的 - 原始姿态下的 - scan surface 上我们预测的 Skinning Weights ,和 SMPL 在 body surface 上给出的距离 scan surface 最近的点的 Skinning Weights 的差距 - 标准姿态下的 - 原始姿态下的 再加上正则化 Loss ,最终加权和就是总 loss 。 ## SDF 得到 Skinning Weights 之后就可以做变换了。但是要生成 mesh 做重建还要训练 SDF 。 因为原始扫描有洞,不是 water-tight 的,所以不好得到 occupancy value 的真实数据。因此我们采用 SDF 。 SDF 的训练就是标准的方法,利用了 SDF 场的性质。 我们想让姿态信息融入 SDF 网络,也就是 SDF 网络的输入是坐标和姿态特征的某种叠加。注意这里姿态特征是由每个关节的四维特征共同组成的。 直接的方法就是二者直接拼上,但是这样会导致 overfitting ,一个重要原因是局部的变形收到了无关关节变换的影响。为此引入 attention 机制, attention 的权重由 Skinning Weights 线性变换得到,然后作用到姿态特征上,再作为第二个参数输入。 # 评估 经过实验,发现 Cycle Consistency 和 Local-aware 的注意力机制对效果提升有着重要作用。而这也是这篇文章最重要的两个的思想。 Last modification:August 23rd, 2021 at 04:34 pm © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 Appreciate the author