基于深度学习的三维人体姿态估计

基于深度学习的三维⼈体姿态估计
⽬录
⼀、技术背景
⼀、技术背景
1.1 ⼈体姿态估计
⼈体姿态估计(human pose estimation, HPE)已经发展了⼏⼗年,⼀直围绕着从传感器的输⼊来构建⼈体姿态。在摄影领域尤为明显,⼀些基于视觉的⼈体姿态估计技术就经常被⽤于摄影技术上。随着深层级神经⽹络技术的发展,深度学习在图⽚分类,⽬标检测,语义分割等⽅⾯有着越来越好的表现。⼈体姿态估计也因为深度学习的运⽤得到了飞速发展,包括具有很强估计能⼒的神经⽹络模型,更加丰富的数据集以及构建愈加完善的⼈体模型。⼈体姿态估计的范围及其⽅法较为⼴泛,⽐如电影和动画的⼈体动作捕捉技术、虚拟现实技术、⼈机交互技术(humancomputer interaction, HCI)、视频监控和动作识别技术、医疗辅助相关技术、⾃动驾驶以及体育运动分析等。⼈体姿态估计的主要难点和挑战在于 1)灵活的⾝体拥有复杂⽽独⽴的关节以及⾼⾃由度的四肢容易造成⾃遮蔽(self-occlusions)或重叠;2)多样的外形包括不同的服饰和⾃相似的地⽅;3)复杂的环境导致前景遮蔽现象或者⼈体部位的相似
性以及不同的视⾓造成的差异。当然⼈体姿态估计也涉及⼆维和三维⼈体模型的区别,不过本⽂主要讨论的是三维⼈体模型的重建。
1.2 三维⼈体重建
三维⼈体姿态估计⽐⼆维⼈体姿态估计更具有挑战性,因为三维⼈体模型还需要去预测⾝体关节的深度信息,但对于计算机来说,由于投射投影,3D场景投射到2D空间⾥⾯,就损失了很多的信息,最明显的就是深度信息,同时诸如光照,材料特性、朝向、距离等信息都反映成唯⼀的测量值——灰度,因⽽要从这唯⼀的测量值恢复上述⼀个或⼏个反映物体本质特征的参数是⼀个解不唯⼀的问题。观测数据不⾜以约束问题的解,因此要利⽤先验知识或引⼊合适约束。所以从单张图像去理解图像场景的3D结构就很困难了。
自动拖把以前的3D模型重构,⼀般都是通过两个(模拟⼈的双眼)或者多个摄像头来获取图像,再配准的。当然,也有研究单张图像的,但是都会对场景做很多的假设,例如由明暗恢复形状shape from shading(SFS)(利⽤单幅图像中物体表⾯明暗变化恢复其表⾯各点的法向⽅向进⽽求得其相对⾼度),运⽤光学辅助等,使⽤有很⼤的局限性。现在更多地是利⽤可以探测深度的摄像头,例如Kinect,⼀个⾊彩感知摄像头,另⼀个红外摄像头⽤于测图像深度,即可以测量场景中物体到相机的距离,来获取更多的⽤于重建三维⼈体模型的信息。
⽽随着深度学习在3D⼈体分析任务取得了巨⼤的进展,例如在3D关键点估计、3D形状重建、全⾝3D姿态和形状恢复⽅⾯取得了令⼈印象深刻的效果,估计了更详细和更有表现⼒的重建。然⽽,随着对场景和在场景中互动的⼈的理解越来越全⾯,从单个图像中连贯地重建多⼈的3D图像成为重建的关键。关于多⼈姿势估计,有⾃上⽽下的⽅法。它⾸先检测场景中的所有⾝体关节,然后对它们进⾏分组,即将检测到的关节分配给适当的⼈。
当在3D中推理多⼈的姿势时,问题⽐在2D中三维重建更复杂。例如,重建的⼈可能在3D空间中相互重叠,或者在深度的估计值与实际不⼀致。这意味着,对图像进⾏多⼈三维重建不仅仅是为每个⼈单独预测⼀个合理的3D姿势,也要估计场景中所有⼈的连贯重建,考虑模型间的整体关系。整体场景的⼀致性成为这项⼯作的主要⽬标。本⽂讨论的⽅法采⽤了典型的⾃上⽽下的模型,⽬标是训练⼀个深度⽹络,学习估计场景中所有⼈的连贯重建。矩阵干扰
1.3 单幅图⽚单⼈三维⼈体重建
对于单⼈三维姿态估计,⼀般地都是在图⽚中形成⼈体的包围盒,这样就可以减少不必要的⼈物的检测过程。单⼈三维姿态估计包含⽆⼈体模型的重建⽅法和基于⼈体模型的重建⽅法。⽆⼈体模型的⽅法不采⽤⼈体模型作为最终的估计⽬标或者中间线索。⼤致的⽅法类型分为两种:1)直接映射图像到3D姿态,2)从⼆维位姿估计⽅法中,根据中间预测的⼆维位姿估计深度。基于模型的⽅法通常使⽤
参数化的⾝体模型或模板来从图像中估计⼈体的姿态和形状。这些模型通常由单独的⾝体姿势和形状组件来进⾏参数化设定。最近⼀些研究的⼈体模型是根据对不同⼈的多次扫描得到的,或者结合⼀些不同的⾝体模型得到。⽐如从图⽚中获取3D参数的SMPL的⾝体模型,就可以⽤来实现单幅图⽚单⼈三维⼈体重建。本⽂主要讨论的单⼈三维⼈体重建和多⼈三维⼈体重建都是基于⼈体模型的三维⼈体重建。
Nikos Kolotouros等⼈[1]提出的基于卷积⽹格回归的单幅图像⼈体形状重建⽅法,对单幅图⽚重建单个模型效果较好,但对单幅图⽚重建多个⼈不理想。它⽤了⼀个更加混合的学习⽅式,保留了SMPL的模板mesh,但是并没有直接回归SMPL的模型参数,⽽是通过回归模板mesh上的各个点坐标来达到⽣成想要的⼈体模型的效果。考虑到⼈体需要有很多的点来表⽰,所以⽤GCN⽹络。具体从image到mesh的变换学习过程如下图1所⽰
图1. 从image到mesh的变换学习过程
该⽅法的主要⼯作流程:
1. 给定⼀张图,⽤任何⼀个经典的2D CNN都可以提出到低维的图像特征;
2. 将低纬度的图像特征嵌⼊到template mesh的各个顶点中;
女性快乐器3. 这样每个顶点都有其坐标位置及对应的feature vector;
4. 通过GCN层来不断迭代进⾏优化;最后得到回归后的3D mesh的各个顶点坐标,对应图中的output mesh。
另外的⼀篇论⽂中提出了⼀个从图像中预测SMPL模型的shape和pose参数的框架,称之为NBF(Neural Body Fitting)[2]。NBF将3D模型和CNN相结合,利⽤了语义分割(semantic segmentation)技术,可以进⾏细粒度的全⾯的模型fitting。同时提供3D和2D的监督⽅法,可以根据可⽤数据集的情况灵活训练。
图2. NBF⽹络框架
如图2,NBF⽹络框架训练的两个阶段:
(1)使⽤CNN,从原始图像中得到segmentation图像;
(2)使⽤CNN,从segmentation图像中预测shape和pose参数,⽣成3D/2D关节点坐标,进⾏优化。
上述⽅法进⾏三维⼈体重建对⼈体位姿的预测是基于SMPL的⽅法,等⼈[3]提出可以利⽤视频的时空编码图对⼈体进⾏三维重建。⽽在此之前的构建的时空编码图都是以直接排列关节点的坐标来构建。这种时空编码图虽然能够通过归⼀化来克服平移不变性(translation)和尺度不变性(scale),但是
始终存在⼀个缺陷:就是它始终对于旋转(rotation)是敏感的。这篇⽂章为了解决这个问题,不再直接使⽤关节点的坐标,⽽是根据关节点计算平移、尺度、旋转不变性的特征,基于该特征构建时空编码图,从⽽达到⽬的。时空编码图⽹络结构如图3。
图3. 时空编码图⽹络结构
整个⽹络结构如图3所⽰,每⼀个部分都可以计算出⼀张CD时空编码图和NM时空编码图,⼀共5个部分,总共可以计算出10张图,将这些图stack输⼊到卷积神经⽹络中即可得到最终的结果。
1.4 构建多⼈场景研究情况
多⼈位姿估计通常有Bottom-up、Top-down这两种⽅法。其中B⽅法是从⼈体关节到组建关节,但缺点
是基于关节进⾏其他信息的拓展抽象且困难;⽽T⽅法是从⼈到每个⼈的位姿估计,通过结合SOTA的⼈体检测、位姿估计⽅法可以在2D上达到很好的效果。但传统的T⽅法在3D中存在肢体渗透、遮挡、深度顺序的协调不⼀致问题。
经过上述⽂献调研和分析,我们参考⽂献[4]实现⼀个从单⼀图像中连贯地重建多⼈模型。主要的⽅法是训练⼀个可学习的深度⽹络,得到协调的3D场景⼈体重建结果。利⽤基于⾃上⽽下的框架,结合上述⽂件中单⼈建模所使⽤的SMPL参数化对⼈体进⾏建模。同时,为了处理⼈物之间位姿的重叠,以及减少⼈物间深度的不⼀致的问题,构建了两个新的loss函数:
(1)距离场域冲突loss(distance field-based collision loss,针对⼈体重叠);钛合金粉末冶金加工
(2)深度顺序感知loss(depth ordering-aware loss,遮挡推断、优化⼈体深度排序,提供深度监督信号)。
⼆. 技术⽅法
本⽂选取了近期较新的⽹络模型⽅法来做探讨,从基础架构、重叠loss、深度顺序感知loss来阐述。基础架构的整体框架结构类似于R-CNN框架,使⽤的是最类似于Mask R-CNN迭代的结构。
为了改进对⾮碰撞⼈的预测,引⼊重叠loss。回归⽹络可以预测重叠,但对重叠产⽣的碰撞不做处理,
引⼊了惩罚被重构⼈之间相互重叠的损失。
在多⼈三维重建中,除了相互重叠外,另⼀个常见的问题是难以估计⼈的深度顺序。如果我们能够访问像素级的深度标注,解决这个深度排序问题就很容易了。但显然很难获得这种标注。我们这⾥的关键思想是,引⼊深度顺序感知loss,利⽤经常可⽤的实例分段标注,可以在⼤规模COCO数据集中实现。
2.1 基础架构
本⽂⽹络的基础架构主要由Backbone,RPN,Heads组成,Backbone⽤的是残差神经⽹络ResNet50, RPN (Region Proposal Network)⽤于⽣成候选区域(Region Proposal), 最后heads⽤来对候选框进⾏细分操作。⽹络训练是⼀种端到端的⽅式进⾏。R-CNN基础架构图如下图4。
图4.  架构图
具体实现步骤:
(1)输⼊⼀幅图⽚到预训练好的CNN中获得对应的feature map;
(2)RPN对feature map中的每⼀点设定多个anchor,从⽽获得多个候选框,RPN对候选框进⾏⼆值分类和B Box回归,过滤掉⼀部分候选框;
(3)进⾏ROI Align操作得到固定⼤⼩尺⼨的feature map;
pmoled(4)最后对候选框进⾏分类、B Box回归、MASK⽣成和SMPL参数回归。
功能结构图如图5.
图5. 功能结构图
作者受⽂献[5]的启发,在模型训练过程中引⼊SMPL⽹络,训练得到⼈体的姿态参数以及相机的位置等信息。利⽤SMPL参数对场景中的⼈物在深度上的遮挡关系和相互穿透关系进⾏推理,从⽽将两种
新的损失重叠损失和深度顺序损失,作为约束条件合并到三维重建中。
SMPL的训练过程如下:输⼊图⽚后,由CNN获取图⽚的特征,在RPN⽣成的每个BBOX中对SMPL中的姿势和形态参数以及相机参数进⾏迭代回归,根据每个BBOX在图⽚中的位置,更新相机参数。根据最后得到的SMPL参数⽣成三维⼈体模型并将⼈体模型再次投影到⼆维平⾯得到关节点。使⽤鉴别器,根据关节点的⾓度信息,判断三维参数在姿势和体态上是否合理,是否是真实的⼈体。
平面度怎么测量
2.2 重叠loss
与⼀般的⼀个静态的场景和⼀个⼈的相⽐,本⽂使⽤的⽅法构建的场景中包括了多个⼈,并且可以在动态场景下通过训练⽣成多⼈3D 模型形象。引⼊了⼀个loss,惩罚了重建⼈之间的相互重叠。对N⼈场景重叠loss定义如下:
ρ是Geman-McClure鲁棒误差函数。Pij是⾮负的,如果⼈物i和⼈物j之间没有碰撞,它的值为0;⽽随着⼈物j的表⾯顶点与⼈物i的距离的增加,Pij也随之增加。Pij是重叠的冲突惩罚函数,定义如下:
其中Signed Distance Field(SDF),即有向距离场。表⽰空间中某⼀点到最近平⾯的距离,在物体内部为负,在物体外部为正。如果j中的⼀点在i的外部,则惩罚为0;如果这⼀点在i的内部,惩罚为该点的距离场。
理论上,Pij本⾝可以作为避免重叠的优化⽬标。但是在⼈物形象的建模过程中容易造成梯度过⼤,从⽽使得在过度重叠的情况下⽹络模型的训练不稳定。因此结合Geman-McClure鲁棒误差函数提出Lp(即重叠loss函数),来保持⽹络模型训练具有较好的鲁棒性。
2.3 深度顺序感知loss
在多⼈三维重建中,除了互穿之外,另⼀个常见的问题是,⼈物模型的深度估计错误。这个问题在⼈们在⼆维图像平⾯上重叠的情况下更为明显。
本⽂⽅法使⽤像素级的深度注释,解决深度排序问题。实现思路是利⽤易获得的实例分割标注(⼤规
模COCO数据集),在图像平⾯上绘制所有重建⼈体的⽹格,可以显⽰每个像素对应的⼈,并在与已标注的实例注释⼀致的基础上进⾏优化。
直观的⽅法是利⽤可微渲染器the Neural Mesh Renderer (NMR),惩罚实际实例分割与渲染⽹格产⽣的分割之间的不⼀致。但是传统的NMR的error只能反向传播到可视⽹格顶点。这就存在⼀些问题,若存在深度顺序error,该⽅法不能使不可视的⽹格移动到离相机更近的距离,导致破坏训练(数值不稳定)。
为了改进这个问题,本⽂⽅法除了渲染场景语义分割,还通过NMR分别渲染每个⼈的深度图,完整深度loss函数如下:
同时,本⽂⽅法将上述loss反向传播到重叠双⽅的⼈体⽹格(最终⾄模型参数),⽽不是像传统的可微分渲染器那样,只向可见的⼈反向传播梯度。这促进了损失(和更新)具有更⼤的对称性,使这种损失变得更加实⽤。
四.存在的问题与未来研究热点
4.1 本实验⽅法存在的问题
因为该⽅法是对单幅图⽚进⾏三维⼈体建模,在处理视频数据时,也只是对单帧进⾏绘制,没有考虑到帧与帧之间的连续性,导致重建出来的视频在⼈物模型的数量和位置上不稳定。之后可以通过引⼊上下⽂的关系与时序来改进这⼀问题。
4.2 未来研究热点

本文发布于:2024-09-23 00:29:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/329956.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:深度   模型   估计   图像   重叠   场景   技术
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议