论文地址:Expressive Body Capture: 3D Hands, Face, and Body from a Single Image
知乎大佬的讲解:https://zhuanlan.zhihu.com/p/137235901
另一位大佬的讲解:https://posts.careerengine.us/p/5f23a5898988c12b4302afb6
和一些仅重构 head 或 hand 的部分重构模型相比,整体模型的推理更具鲁棒性,全身的环境稳定了头部对遮挡或非正面视图的估计(见图 A.3)。整体 SMPL-X 在顶点到顶点误差方面比我们的 EHF 数据集的仅头部拟合提高了 17%。
图 A4 显示了一些有代表性的错误案例;由于简单的 2D 重投影数据项,深度模糊可能导致躯干姿势的错误估计或身体部位的错误顺序深度估计。此外,遮挡的关节使某些身体部位不受约束,这目前会导致错误。我们计划在未来的工作中通过在目标中使用可见性术语来解决这个问题。
在左边的例子中,2D 关键点是合理的,但是由于深度模糊,躯干姿势是错误的,而且头部形状被低估了。右边的例子,手臂和手被遮挡,由于缺乏约束,手臂和手的姿势是错误的。脚的顺序深度也被错误地估计,而类似于左边的情况,躯干姿势和头部形状没有被正确地估计。左:输入 RGB 图像。中间:来自 OpenPose 的 2D 关键点。右图:叠加在 RGB 图像上的 SMPL-X 结果。
\quad\quad 对于技术细节和可视化,读者可以阅读[4,28],但为了完整起见,我们也在这里包括数学公式。
……
\quad\quad 为了使优化易于处理,我们采用 PyTorch 实现并使用拟牛顿法之 L-BFGS优化器。设置学习率为 1.0,最多迭代 30 次。
\quad\quad 退火方法使用以下三步:
\quad\quad 从高正则化开始,主要细化全局躯干姿态,( Υ b = 1 , Υ h = 0 , Υ f = 0 \Upsilon_b=1,\Upsilon_h=0,\Upsilon_f=0 Υb=1,Υh=0,Υf=0)逐渐增加手关键点的影响来细化手臂的姿态( Υ b = 1 , Υ h = 0.1 , Υ f = 0 \Upsilon_b=1,\Upsilon_h=0.1,\Upsilon_f=0 Υb=1,Υh=0.1,Υf=0)。在收敛到一个更好的姿态估计后,我们增加双手和面部关键点的影响来捕捉表情( Υ b = 1 , Υ h = 2 , Υ f = 2 \Upsilon_b=1,\Upsilon_h=2,\Upsilon_f=2 Υb=1,Υh=2,Υf=2)。在上述步骤中,目标函数 E E E中的权重 λ α 、 λ β 、 λ ε λ_α、λ_β、λ_ε λα、λβ、λε从高正则化开始,该高正则化逐渐降低以允许更好的拟合。唯一的例外是 λ C λ_C λC逐渐增加,同时手和面部关键点在 E J E_J EJ的影响变得更强,因此会有更大的姿态变化和更多的碰撞被预测。
\quad\quad 关于优化的权重,它们是根据经验设置的,优化每个阶段的确切参数将随我们的代码一起发布。为了更直观,我们通过将每个权重 λ λ λ分别扰动高达 ± 25 \pm25 ±25%来进行灵敏度分析。这导致顶点间误差度量的相对变化小于 6%,这意味着我们的方法对重要的权重范围是稳健的,对微调不敏感,见图 A.7。
[图 A.7]
\quad\quad 在主论文中,我们提出了一个数据集,称为Expressive hands and faces dataset(EHF),同时表达了身体,手和脸的真实形状。
\quad\quad 由于最相关的模型是[13],我们还使用了作者的“Total Capture”数据集[8],重点是“点云数据库”部分,其中包括所有身体、面部和手的伪真实。这种伪真实数据是通过使用 OpenPose 从多视角进行三角化 3D 联合检测来创建的[23]。我们根据图像中身体的遮挡程度、有趣的手部姿势和面部表情,精选了 200 幅图像。在下文中,我们将该数据称为“total hands and faces”(THF)数据集。图 A.8 显示了 THF 上的定性结果。
第一行:参考 RGB 图像。第二行:使用伪真实 OpenPose 关键点(从多视角估计并投影到 2D 的 3D 关键点[8])的SMPLify-X结果。第三行:使用 2D OpenPose 关键点估计的 SMPLify-X 结果[23]。灰色表示自信的性别检测结果对应的模型,蓝色表示性别分类器不确定时使用的性别中性模型。
该数据集的定量结果见表 A.1
在 CMU 全景摄影棚选取的帧上的定量结果,使用 SMPLify-X 对伪真实 3D 关节的 2D 重投影,以及分别由 OpenPose 检测的 2D 关节。这些数字是 Procrustes alignment (谁和谁对齐???)后的平均 3D 关节误差。第一行:仅仅使用 body 对齐,仅仅计算 body 的关键点误差。第二行:仅仅使用 body 对齐,但是评估所有身体+手+脸关键点的关节误差。第三行:使用所有的身体+手+脸关键点对齐,并计算所有关键点的平均误差。
\quad\quad 在表 1 中,我们证明了使用 3D 身体关节计算的重建精度并不能代表一种方法重建的精度和细节。然而,许多方法确实基于 3D 身体关节度量进行定量评估,因此在这里我们将我们的结果与 SMPLify [5]进行比较,以证明我们的方法不仅更自然、更具表现力和更详细,而且在常见的度量中结果也更准确。在表 A.2 中,我们使用 Human3.6M [10]数据集展示了我们的结果。我们遵循与[5]相同的评估方案,并在伪真实 3D 姿势 Procrustes alignment 后报告结果。尽管有几个因素改进了我们对 SMPLify 的方法,并且这个实验没有说哪个更重要,但是我们仍然优于最初的 SMPLify,使用这个基于 3D 关节的粗略度量。
Human 3.6M 数据集的定量结果[10]。这些数字是 Procrustes alignment 后的平均 3D 关节误差。我们使用[5]的评估方案。
\quad\quad 在主论文的第 3.1 节中,我们描述了 SMPL-X 模型。SMPL-X 模型的 shape space 是在 CAESAR 数据库上训练得到的[26]。图 A.9 计算累计相对方差,解释了所有网格模型都可以用 10 个主成分解释 95%以上的差异。
\quad\quad 我们进一步评估了一组 180 个不同姿势的男性和女性受试者的模型。男性模型根据男性比对进行评估,女性模型根据女性比对进行评估,而中性模型根据男性和女性比对进行评估。我们报告了模型顶点对顶点平均绝对误差,作为所用主成分数量的函数,如图 A.10 所示。
所以 SMPL-X 使用了 300 个 shape 系数。
\quad\quad 在主论文第 3.3 节中,我们介绍了一种新的人体姿态参数化,以及这种参数化的先验知识,称为 VPoser。在本节中,我们将进一步介绍数据准备和实施的细节。
\quad\quad 我们使用从 CMU [7]、Human 3.6M [10]和 PosePrior [2]的人体运动序列中提取的 SMPL 姿态参数作为数据集。这些参数最初由[19,21]发布。随后,我们将 Human 3.6M 的受试者 9 和 11 的参数作为我们的测试集。我们随机选择 5%的训练集作为我们的验证集,并以最小的验证损失来制作模型的快照(什么是模型快照,我理解是保存最小验证损失对应的模型)。我们为我们的姿态参数化选择矩阵旋转。
\quad\quad 使用 TensorFlow 训练,然后将训练好的模型和权重移植到 PyTorch。图 A.11 显示了训练和测试期间的网络架构。我们仅使用全连接层,具有 LReLU [20]非线性,并保持编码器和解码器对称。编码器有两个 dense layer,分别有 512 个单元,其中一个 dense layer 用于均值,另一个 dense layer 用于 VAE 后验正态分布的方差。解码器权重的 shape 与编码器相同,只是顺序相反。使用 Adam 求解器[15],更新网络的权重,以最小化损失。根据经验选择损失权重值为: c 1 = 0.005 , c 2 = 1.0 − C 2 , c 3 = 1.0 , c 4 = 1.0 , c 5 = 0.0005 c_1= 0.005,c_2 = 1.0- C_2,c_3= 1.0,c_4= 1.0,c_5= 0.0005 c1=0.005,c2=1.0−C2,c3=1.0,c4=1.0,c5=0.0005。以下每个学习率进行了 60 轮训练:[5e−4,1e−4,5e−5]。
\quad\quad 经过训练后,潜在空间描述了一系列看似合理的人体姿势,可用于有效的 2D-3D 提升。图 A.13 显示了从模型的潜在空间中抽取的一些随机样本。
来自 VPoser 潜在空间的随机姿态样本。我们从一个 32 维正态分布中采样,并将该值馈送给 VPoser 的解码器:如图 A.11b 所示。然后,在转换成轴角表示后,SMPL 以解码器输出设定 pose。