FrankMocap:A Monocular 3D Whole-Body Pose Estimation System via Regression and Integration 2021阅读理解

ICCV Workshop 2021.

Facebook AI research

Btw, why the name FrankMocap? Our pipeline to integrate body and hand modules reminds us of Frankenstein's monster!

读后感:

  1.  可以认为这个文章主要解决手部预测的精度。当你的需求为要求脸部,身体,手部都准确,可以参考一下这个网络,但是显然相比端到端,这个有点费网络。
  2. 这篇论文更多可以看作一篇侧重方案解决文章,提出如何更好的输出一个SMPL-X效果,作者认为直接端到端训练SMPL-X(ExPose),人脸,身体,手部联合训练会相互影响,因此作者将这三个模块单独训练,最终进行整合,人脸是基于Flame模型训练,因此整合阶段直接复制脸部形状参数和下巴的姿态。身体则基于SPIN进行微调。手部模块则是稍做改变,没有直接采用MANO模型,而是用SMPL-X的手部相关参数,同时增加一个手腕全局姿态。因此最终整合阶段主要整合的就是将手部输出的全局手腕点转换到身体的局部手腕点上。这里就存在一个问题,在图像空间角度,手部模块输出的手相比身体模块输出的手更加准确,同时各个手指也更加精准,但是在手腕pose角度,手部模块输出的手腕是一个全局pose,而身体模块输出的手腕一个局部pose,显然身体模块输出的pose会更加准确点。因此需要去获取这两个优点。
  3. 手腕整合方案:一共三个方案,第一个就是简单将手模块输出的手腕pose,各个手指关节的pose去转化到身体模块上,这样提高了身体手部的pose精度。但是第一个方案忽略了图像空间位置的准确性,也就是贴合度,因此方案二设计了一个迭代优化的方法,继续fintune训练整合后的SMPL-X模型,使手部模块输出的mesh和 2d点以及3d点(EFT里面的先验策略),形状先验作为监督信息使得手部贴合度提升。但是方案二这种迭代方案耗时,因此提出了方案三,即通过网络替换迭代,通过方案二构建训练集,输入为方案1整合的到的肩部pose,手腕pose,以及手部模块输出的手腕点与整合后的手腕点之间的位移,输出则是调整后的肩部pose和手腕pose。
  4. 从这个文章可以学到的: 对于手部预测,作者对于数据增强和数据混合做了多个实验,可以发现对数据进行运动模糊增强,有利于手部效果,另外对于不同数据集,需要进行协议同意处理。对于SPIN 网络,作者采用EFT数据进行fintune训练。

    效果秀一波:

简要概述全文:

       大多数现有的单目3D姿势估计方法只关注单个身体部位,忽视了人类运动的本质细微差别是通过脸部、手和身体的微妙运动来传达的。在本文中,我们提出了FrankMocap,一个快速和准确的全身三维姿态估计系统,可以从野外单目图像同时生成三维脸、手和身体。FrankMocap的理念是它的模块化设计:我们首先独立运行面部、手部和身体的3D姿态回归方法,然后通过集成模块组合回归输出。独立的回归模块允许我们充分利用其最先进的性能,而不损害原来的准确性和可靠性在实践中。我们开发了三个不同的集成模块来权衡延迟和准确性。他们都能够提供简单而有效的解决方案,统一独立的输出-放入无缝的全身姿态估计结果。我们从定量和定性的角度证明了我们的模块化系统优于基于优化和端到端的全身姿态估计方法。代码、模型和演示视频已公布。

        然而,估计整个身体的3D姿势,包括脸和手,仍然是一个挑战。其中一个主要的困难来自于脸和手的尺寸远小于躯干和四肢的尺寸。此外,在运动中的手容易受到由突然的视点变化、自我遮挡和运动模糊造成的伪影。这些因素极大地增加了用全身3D姿势创建大规模数据集的难度。缺乏全身三维数据是阻碍建立统一的全身三维姿态同时估计系统的主要障碍。我们的系统建立在这样一种认识之上:训练一个单一的模型来联合估计整个部分本质上是受到缺乏准确和多样化的全身运动数据的限制的。相反,我们设计了一个模块化的系统,首先独立运行面部、手部和身体的三维姿态回归方法。然后通过集成模块组合这三个回归输出。

   三维参数化人体模型被广泛使用,它是估计人体三维姿态和形状的有力先验。其主要思想是通过低维参数对三维人体(包括脸、手和身体)的变形进行建模  。SCAPE-》SMPL-〉SMPL-X等,本文最终合并的模型为SMPL-X。

第一步:定义全身的模型和独立的手部模型

Whole-Body Parameterization

采用SMPL-X的参数表示方法: 依次为1*3的global pose,52*3的全身各个关节的pose(21 * 3的身体pose,15 * 3的左手各个手关节,15 *3的右手各个手关节,1 *3 的下巴pose),10 *1 的身体形状参数,10*1 的面部表情参数。所有的pose姿态参数都定义在轴-角表示中,它存储了在运动学映射中定义的父关节的相对旋转。作为输出,SMPL-X最终会输出一个10475*3的网格,通过一个角度回归矩阵是可以从这个网格中获取相应的各个关节点的3D坐标。

Stand-Alone Hand Model:作者基于SMPL-X定义了一个关于单个手的模型参数表示,参数依次为,1*3的手部全局pose,15 *3的手的各个手关节的pose(5个手指,每一个手指三个关节),1*10的手部形状参数(和身体的shape参数一致)。这样通过这个手的参数模型,可以获得一个778*3的mesh输出,通过一个3D手部回归矩阵,可以得到一个21*3的3D关节坐标,依次包含手腕,5个手指的三个关节,5个手指尖。我们的手部表示的主要优点是,这个3D手部模型的组件,包括姿态参数、顶点和3D关节,直接与全身参数兼容。这使我们能够有效地集成来自身体模块和手模块的输出。

第二步:依次完成手部,身体,脸部的姿态估计

2.1 手部模块估计:

       输入为裁剪好的局部手掌区域,对于左手会进行额外的处理,左手的图像首先被翻转和处理成和右手一样,输出的结果会逆向回到左手的表示空间。整个训练框架参考HMR,通过resnet-50进行特征提取,然后采用多层全连接来进行参数回归参数。基于SMPL-X可以得到21*3的3D手部关节坐标,通过学习到的正交投影参数s和t,得到关于手部的2d坐标。训练细节:一共存在三种标注信息,一种是fitting的到的smpl-x参数,一种是采集得到的真实空间的3d点,一种是2d点。这样训练过程中存在三种loss。特别地,2D关键点损失被用来估计相机参数,并便于手模块推广到只有2D关键点注释的野外成像。关于shape的监督,我们在使用FreiHAND数据集的时候,不使用其提供的shape参数,因为这些是为MANO模型[58]定义的,与SMPL-X中的手模型不兼容(SMPL-X应该是提供了转换机制)。

         

1 通过随机缩放、平移、旋转、颜色抖动和合成运动模糊对每个训练图像进行数据增强。

2  针对不同数据集的协议存在不一致问题:缩放所有3D关键点注释,以兼容我们的手模型,通过使用中指的关节长度作为参考。(2)重新排序3D关键点,使之与我们的手模型的骨架层次相同。

3  手模块的输入图像是围绕手的中心裁剪,其中用于裁剪的边界框是由2D手关键点给出的。

4  采用学习率为1e4的亚当优化器[35]对模型进行训练。手模被训练到收敛,大约需要100个纪元。

5.数据集方面:一共使用了6个数据集,其中MPII+NZSL仅作为验证集。

6  实验数据:数据真香,前提是数据协议使用得体。

2.2 身体模块估计:

      选择SPIN框架,训练则是基于SPIN训练好的模型进行fintune,finetune过程不采用SMPL来输出结果,而是采用SMPLX输出,,finetune过程采用的是EFT数据和HM3.6,在微调过程中,我们只使用标注的位姿参数和2D关键点,不实用shape参数(即使SMPL和SMPL- x的三维关节位置不完全相同,我们发现这种区别在实践中不是很明显)

2.3 3D人脸估计模块

      这里直接使用基于FLAME模型的RingNet网络来估计脸部表情和人脸姿态。

2.4 整个身体整合模块

我们的集成模块将来自面部、手部和身体模块的输出组合成SMPL-X[56]的统一表示。其中脸部的输出模块可以很容易地应用到SMPL-X,直接复制表情参数和下巴pose即可, 关于手和身体因为都有手腕的pose输出,因此需要对这里进行一个处理。针对这一目标,我们提出了三种策略:(1)简单的复制-粘贴合成以获得最快的处理速度,(2)采用优化框架,(3)通过集成网络逼近简单神经网络的优化。

方案一:粘贴复制,对于身体,手腕只是一个局部关节点,对于手,手腕则是去全局pose。因此考虑见手部估计得到的全局pose转为相对于身体的局部pose。那么这个转化怎么实现,可以对比当前身体估计出的手腕pose和手掌估计出的手腕全局pose。这是可以通过遵循身体骨架层次结构的正向运动学来计算。这种策略几乎不需要额外的计算,使我们的sep- arate模块同时提供一个共同的全身模型。我们发现这种简单的集成可以产生令人信服的结果,特别是对于我们的现场演示中存在计算瓶颈的场景。

方案二:优化方法,作为一种提高精度的替代集成方法,我们建立了一个优化框架来拟合身体和手模块输出的整体模型参数。这个策略是特别有帮助的,以减少围绕手腕部分的人工制品,而不是复制粘贴策略。它还可以利用二维关键点估计输出[13],以获得更好的二维定位质量。我们的优化框架找到了最小化以下目标代价函数的整体模型参数。

其中2D点是人脸,身体,手的2d loss,mesh则是手部检测得到的网格和身体模块输出的手部网格之间的loss。先验loss则是确保产生的3d pose和 shape符合正常的人体运动学。这里使用先验loss原则和eft里面使用的差不多,3d pose使用其他网络输出的。因此这里先验只考虑形状的监督。在优化的时候,采用多个阶段,第一个阶段没有F_mesh的监督,第二个阶段会增加一个额外的约束即输出的3d点维持第一阶段的位置上。

方案三:手腕整合网络:

手模块的结果显示了精确的二维定位质量,如图6所示。但是,由于手腕关节的位置是由身体模块决定的,因此采用复制-粘贴集成策略会降低其精度,如图5(倒数第二列)所示。虽然优化方法可以达到较好的精度,解决这一问题,但由于需要迭代梯度计算,计算速度相对较慢。作为另一种实现精度和快速运行性能的替代策略,我们引入了一个集成网络,在不进行梯度计算的情况下,将整个身体模型的手臂姿态调整到给定的2D位置。具体来说,我们开发了一个小型神经网络来实现这一点。

可以发现手部模块输出的mesh与原图的贴合度很好,但是讲手掌整合到全身后,贴合度就会变差,手腕集成网络的作用是调整手臂的姿态,将手移动到手模块所确定的位置。因此可以认为手模块预测的位置上正确的,将手模块输出的手pose转接到身体模块会导致手部贴合度下降,希望通过调整肩膀和手肘的pose来影响手腕的空间位置。因此手腕整合网络的输入为关于整个手臂的pose和一个二维向量,这个二维向量是计算手部输出的手腕2d点和整合后的手腕2d点之间的图像空间位移关系,并且给予手臂长度进行归一化。整个手臂pose为复制粘贴集成后肘关节和肩关节的位姿参数。因此可以理解增加了一个手臂网络模块。原始的肩位姿θsw和肘位姿θew均为人体骨骼运动学中定义的相对于其参数的局部旋转。为了简化腕部整合网络的训练,我们将肩部姿态转换为全局姿态φsw,这样腕部整合网络就不需要考虑身体其他部位的姿态。肘部的姿势保持为局部旋转。这样输入为全局的肩关节和局部手肘关节,以及手腕位移向量。输出则是认为正确的全局的肩关节和局部手肘关节。

为了训练这个网络,生成了对应的数据集,即通过比较耗时的方案2生成伪标签,这样构建了训练集,这是一种常见的手法,通过网络来替代耗时的迭代方案。

4.实验:

1.我们首先展示了我们的手部模块的高性能,与之前最先进的3D手部方法相竞争,以及消融研究,以检验我们的方法的设计。然后,我们证明了我们的全身姿势估计方法优于之前的方法在公共基准。

2 我们的body模块可与以前的先进水平相媲美,包括ExPose[18]。我们的身体模型是一个微调版本的SPIN[37]和EFT[30]。略微下降的性能可能是由于我们只使用较少的数据集,COCO和Human3.6M数据集。我们只比较了基于HMR[33]的方法。我们认为,如表3所示的实验结果可以证明,将以往基于smpl的方法扩展到基于SMPL-X的body模块是可行的。由于我们的模块化设计,我们也可以轻松地利用最新的3D身体。

3.整合模块的验证:通过对FrankMocap不同版本的比较发现,经过优化的模型总体上取得了最好的性能。应用我们的手腕集成网络还可以带来比复制粘贴版本更好的性能。我们还在图8中提供了不同集成模型之间的定性比较。结果表明,采用腕部集成网络可以获得更好的手部定位,而采用优化算法则可以进一步改善手部定位

 CSDN: @为什么先生2012

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值