导图社区 基于深度学习的人体位姿估计发展2024年报告
这个是目前利用深度学习进行人体位姿估计一个报告,基于深度学习的人体姿态估计技术在2024年取得了显著进展。随着深度学习技术的不断发展和完善,人体姿态估计的准确性和鲁棒性将得到进一步提升。
编辑于2024-07-29 16:04:04人体位姿估计发展 2023Deep Learning-Based Human Pose Estimation: A Survey
二维人体位姿识别
内容
定位并识别出人体关键点,这些关键点按照关节顺序相连
人体姿态估计主要可以分为单人姿态估计(Single Person Pose Estimation, SPPE)和多人姿态估计(Multi-person Pose Estimation, MPPE)两个子任务
在多人姿态估计中,我们得到的是一张多人的图,我们需要找出这张图中的所有人的关键点。对于这个问题,一般有自上而下(Top-down)和自下而上(Bottom-up)两种方法。 Top-down: (从人到关键点)先使用detector找到图片中的所有人的bounding box,然后在对单个人进行SPPE。这个方法是Detection+SPPE,往往可以得到更好的精度,但是速度较慢。 Bottom-up: (从关键点到人)先使用一个model检测(locate)出图片中所有关键点,然后把这些关键点分组(group)到每一个人。这种方法往往速度可以实时,但是精度较差。
算法
传统方法
pictorial structure
精心设计的特征来处理
深度方法
SPPE
可以分为heatmap方法和回归方法
回归方法可以通过端到端的框架学习从输入图像到关键点坐标的非线性映射,这提供了一种快速的学习模式和亚像素级的预测精度。但由于高度非线性的问题,通常给出的是次优解。 而基于热图的框架,在2D HPE中得到了更广泛的应用,因为(1)热图中每个像素的概率预测可以提高关键点定位的准确性;(2)热图通过保存空间位置信息提供更丰富的监控信息。但预测关键点的精度取决于热图的分辨率。使用高分辨率热图时,计算成本和内存占用显著增加。
DeepPose (Google, 2014)
使用AlexNet作为backbone 直接回归关节点的坐标 使用级联的结构来refine结果
oint training with CNN and Graphical Model(LeCun, 2014)
开始使用heatmap
CPM (CMU, 2016)
SPPE中的首篇经典之作,全卷积网络,可以端到端训练,他的输入由两部分组成,一个是上一个stage预测出的heatmap,一个是自己这个stage中得到的feature map
Stacked Hourglass Network (Jia Deng组, 2016)
网络结构hourglass影响深远,是常用的backbone,时至今日,效果依然很能打。
Fast Human Pose (2019)
把知识蒸馏用在了pose问题上
MPPE
Top-down 这种我觉得很容易寄
G-RMI (Google, 2017)
RMPE (上交卢策吾老师组, 2017)
上交卢策吾老师组的工作,是国内比较好的姿态估计方面的工作,AlphaPose开源代码影响广泛。
CPN (旷视,2018)
MSPN (旷视,2018)
MultiPoseNet (2018)
Enhanced Channel-wise and Spatial Information (字节跳动, 2019)
Crowd Pose (上交卢策吾老师组,2019)
Single-Stage Multi-Person Pose Machines (NUS, 2019)
Bottom-up
DeepCut (Germany, 2016)
最早的两步自底向上方法之一。它首先检测所有候选身体部位,然后标记每个部位,并使用整数线性规划(ILP)将这些部位组合到最终姿态。但DeepCut模型的计算成本很高。
DeeperCut (Germany, 2017)
Associative Embedding (Jia Deng组,2016)
OpenPose (CMU, 2017)
可以做到实时,作者在CVPR上的报告直接拿笔记本现场对着观众演示,十分惊艳,不仅可以估计姿态,还可以估计脸、手和脚的关键点,也就是全身都估计了遍。是目前Bottom-up方法中影响最大的工作。
PersonLab (2018)
HigherHRNet (字节跳动,2020)
Alphapose (上交卢策吾老师组)
实时全身多人姿势估计与跟踪系统。它是第一个开源系统,性能非常好
热度图HeatMap
三维人体位姿估计
内容:
主要有两种输出形式: 1)3D skeleton,与2D类似,只是骨架信息展示在三维的坐标系中; 2)3D shape or mesh,使用参数化人体模型或是三角化网格的方式展示预测的结果。
主要有三种估计方法
a) 直接估计法:直接从2D图像估计3D人体姿态。
b) 2D到3D提升法:利用预测的2D人体姿势(中间表示)进行3D姿势估计。
c) 人体网格恢复法:结合参数化身体模型来恢复高质量的3D人体网格。由3D姿势和形状网络推断出的3D姿势和外形参数被馈送到模型回归器中以重构3D人体网格。
基于单目RGB图像和视频的3DHPE
3D skeleton
a) 直接估计法
3D Human Pose Estimation from Monocular Images with Deep ConvolutionalNeural Network. In ACCV.提出一种深度学习方法,采用浅层网络,通过同步滑动窗口和姿态坐标回归训练身体部位检测
h36m-fetch:Compositional Human Pose RegressionICCV 2017提出一种结构感知回归方法。没有使用基于关节的表示法,而是采用更稳定的基于骨骼的表示法。通过利用基于骨骼表示的3D骨骼结构定义成分损失,骨骼表示由骨骼之间的远程交互进行编码。
ordinal-pose3d:Ordinal Depth Supervision for 3D Human Pose Estimation引入了体积表示法,将高度非线性的3D坐标回归问题转化为离散空间中可管理的形式。体积中每个关节的体素可能性由卷积网络预测。
b) 2D到3D提升法:
得益于SOTA2D姿态检测器的出色性能,2D到3D提升方法通常优于直接估计方法
open-mmlab/mmpose:A simple yet effective baseline for 3d human pose estimation ICCV 2017还有一个una-dinosauria/3d-pose-baseline,提出一种简单但有效的全连通残差网络,以基于2D关节位置回归3D关节位置。尽管当时取得了最先进的结果,但由于过度依赖2D姿态检测器而导致重建模糊,该方法可能会失败。
redrock303/HEMlets:HEMlets Pose: Learning Part-Centric Heatmap Triplets for Accurate 3D Human Pose Estimation. In ICCV.使用2D热图而不是2D姿态作为估算3D姿态的中间表示
DRPose3D: Depth Ranking in 3D Human Pose Estimation开发一种成对排序卷积神经网络(PRCNN),用于预测成对人类关节的深度排序。然后,使用由粗到精的姿态估计器从2D关节和深度排序矩阵回归3D姿态。
图卷积网络(GCN)
Optimizing Network Structure for 3D Human Pose Estimation. In ICCV.提出一个通用框架,名为局部连接网络(LCN),利用全连接网络和GCN来编码局部关节邻域之间的关系。LCN可以克服GCN的局限性,即权重共享方案有损姿态估计模型的表示能力,并且结构矩阵缺乏灵活性,无法支持定制的节点依赖。
garyzhao/SemGCN:Semantic Graph Convolutional Networks for 3D Human Pose Regression. In CVPR.也解决了GCN中所有节点卷积滤波器共享权重矩阵的局限性。为了研究语义信息和语义关系,提出了语义GCN。语义图卷积(SemGConv)操作用于学习边缘的信道权重。由于SemGConv和非局部层是交错的,因此捕获了节点之间的局部和全局关系。
基于视频的
单视图多人3D HPE
Top-down 这种我觉得很容易寄
LCR-Net定位每个人的候选区域以生成潜在姿势,并使用回归器联合细化姿势提议。这种定位-分类-回归方法称为LCR-Net,在受控环境数据集上表现良好,但在野外图像中泛化能力较差。
LCR-Net++通过使用合成数据增强训练数据以提高性能。
还有其他的不爱找了
Rogez等人 [207] 定位每个人的候选区域以生成潜在姿势,并使用回归器联合细化姿势提议。这种定位-分类-回归方法称为LCR-Net,在受控环境数据集上表现良好,但在野外图像中泛化能力较差。为了解决这个问题,Rogez等人 [208] 提出了LCR-Net++,通过使用合成数据增强训练数据以提高性能。Zanfir等人 [279] 在3D多人体姿势估计模块中添加了语义分割和场景约束。此外,针对基于视频的多人体3D姿势估计,采用匈牙利匹配方法解决了3D时间分配问题。Moon等人 [165] 在自顶向下流程下引入了一种相机距离感知方法。RootNet估计了人体根部的以相机为中心的坐标。然后,通过提出的PoseNet估计每个裁剪的人体的根相对3D姿势。Benzine等人 [8] 提出了一种称为PandaNet的单次拍摄方法(姿势估计和基于锚点的检测网络)。引入了低分辨率基于锚点的表示来避免遮挡问题。开发了一个姿势感知的锚点选择模块,通过移除模糊的锚点来解决重叠问题。使用自动加权损失来处理不同人体尺寸之间的不平衡问题。Li等人 [113] 解决了自顶向下方法中缺乏全局信息的问题。他们采用了层次化多人体顺序关系方法,利用体级语义和全局一致性来层次化编码交互信息。
Bottom-up
自底向上方法的一个关键挑战是如何将属于每个人的人体关节分组。
Deep Network for the Integrated 3D Sensing of Multiple People in Natural Images. In NeurIPS. Zanfir等人 [280] 将人物分组问题表述为二进制整数规划(BIP)问题。他们使用了一个肢体评分模块来估计检测到的关节的候选运动连接,并通过解决BIP问题的骨架分组模块将肢体组装成骨架。
Single-Stage Multi-Person Pose Machines. In ICCV. Nie等人 [175] 提出了一种单阶段多人姿势机器(SPM),为每个人定义了唯一的身份根关节。通过使用密集位移图将身体关节对齐到每个根关节。然而,这种方法的局限性在于只能使用成对的2D图像和3D姿势注释进行监督学习。
Self-Supervised 3D Human Pose Estimation via Part Guided Novel Image Synthesis. In CVPR. 在没有成对的2D图像和3D姿势注释的情况下,Kundu等人 [106] 提出了一个冻结网络来利用两种不同模态之间的共享潜在空间,在实际部署范式下,学习可以被建模为跨模型对齐问题。
Compressed Volumetric Heatmaps for Multi-Person 3D Pose Estimation. In CVPR. Fabbri等人 [53] 开发了一种基于距离的启发式方法,用于在多人环境中连接关节。具体来说,从检测到的头部(即置信度最高的关节)开始,其余关节通过选择在3D欧氏距离上最接近的关节来连接。
Monocular 3D Multi-Person Pose Estimation by Integrating Top-Down and Bottom-Up Networks. In CVPR. Chen等人 [33] 在他们的方法中集成了自顶向下和自底向上的方法。首先,一个自顶向下网络在每个边界框内估计关节热图,然后一个自底向上网络整合估计的关节热图来处理尺度变化。
Single-Shot Multi-Person 3D Pose Estimation From Monocular RGB. In 3DV. 自底向上方法的另一个挑战是遮挡问题。为了应对这一挑战,Mehta等人 [159] 开发了一种抗遮挡姿势映射(ORPM)方法,将冗余性纳入位置映射的制定中,这有助于在热图中进行人物关联,特别是在遮挡场景中。
SMAP: Single-Shot Multi-Person Absolute 3D Pose Estimation. Zhen等人 [300] 利用深度感知部件关联算法,通过推理人际遮挡和骨长约束来为关节分配个体。
XNect: Real-time Multi-Person 3D Motion Capture with a Single RGB Camera. Mehta等人 [158] 快速推断可见身体关节的中间3D姿势,而不考虑精度。然后,通过学习的姿势先验和全局上下文推断遮挡关节来重建完整的3D姿势。最终的3D姿势通过应用时间一致性和拟合运动骨骼模型进行精化。
多视图3D HPE
前面的方法都有缺点
广泛使用的3D图像结构模型 [12] 就是这样一种模型。然而,这些方法通常需要大量内存和昂贵的计算成本,特别是在多视角设置下进行多人3D人体姿势估计时。 Rhodin等人 [206] 在网络中引入了多视角一致性约束,但这需要大量的3D地面真值训练数据。为了克服这一限制,Rhodin等人 [205] 进一步提出了一个编码器-解码器框架,通过多视角图像和背景分割学习具有几何感知的3D潜在表示,而无需3D注释。 Chen等人 [20]、Mitra等人 [162]、Zhang等人 [292] 和Huang等人 [69] 提出了多视角匹配框架,通过一致性约束在所有视角重建3D人体姿势。 Pavlakos等人 [185] 和Zhang等人 [295] 将多视角图像的2D关键点热图聚合到基于所有校准相机参数的3D图像结构模型中。然而,当多视角摄像机环境发生变化时,模型需要重新训练。 Qiu等人 [198] 和Kocabas等人 [100] 利用极线几何来匹配配对的多视角姿势进行3D姿势重建,并将其方法推广到新的多视角摄像机环境。需要注意的是,没有循环一致性约束的单独匹配每一对视角可能会导致不正确的3D姿势重建 [48]。
Cross View Fusion for 3D Human Pose Estimation, ICCV 2019 提出一种跨摄像头的特征融合算法,将三维人体姿态估计的误差从当时的 52mm 大幅降低到了 26mm。考虑到“如果一个关节点在某个视角下发生了遮挡,那么它可能在其他视角下是可见的”,将不同视角下对应的特征进行融合,从而提升存在遮挡时姿态估计的准确性。针对一个视角下的某点,找到其在另外一个视角下的对应点并不简单,我们利用 heatmap 表达的稀疏特性对问题进行了简化,只需将对应的极线上的特征加和即可。我们通过实验发现,很多遮挡的节点都能够通过融合其他摄像机中的信息被正确地检测出来,并在多个数据集上对该方法进行了验证。而该方法的一个限制是模型依赖于相机间的相对位置,相机发生变化时需要重新训练模型,文章中对此有所讨论。目前代码已开源。
VoxelPose: Towards Multi-Camera 3D Human Pose Estimation in Wild Environment. In ECCV.在3D体素空间中聚合了每个摄像机视图中的所有特征,以避免在每个摄像机视图中进行不正确的估计。他们设计了一个长方体提议网络和一个姿势回归网络,分别用于定位所有人和估计3D姿势。
支持多视角,多人,视频输入
基于 voxel 表达方式,直接在三维空间进行推理,而不需要在二维图像上进行任何决策。简单来说,我们从多个摄像机的图像中构建基于 voxel 的对场景(包括人)的表达,然后提出一个proposal 网络用来检测人在三维空间中的大概位置,最后利用 regression 网络在每一个检测出来的位置附近检测精细的三维人体姿态。 该方法在 Campus 和 Shelf 数据集上结果都得到大幅提升。即使在存在非常多的遮挡的场景下,VoxelPose 依然能够稳定估计出所有人的姿态。
Domes to Drones: Self-Supervised Active Triangulation for 3D Human Pose Reconstruction. In NeurIPS.当提供足够多的视角(超过十个)时,使用所有视角进行3D姿势估计并不实际。提出了一种自监督强化学习方法,通过三角测量选择少量视角重建3D姿势
openxrlab/xrmocap:Direct Multi-view Multi-person 3D Human Pose Estimation. In NeurIPS引入了基于Transformer的模型,直接从多视角图像回归3D姿势,无需依赖任何中间任务。他们提出的多视角姿势Transformer(MvP)旨在通过一种新颖的几何引导注意机制融合多视角信息。
如何提高速度
Cross-View Tracking for Multi-Human 3D Pose Estimation at Over 100 FPS. In CVPR.应用了迭代处理策略,将每个视角的2D姿势与3D姿势进行匹配,同时通过迭代更新3D姿势。与以往可能随着摄像机数量增加而运行时间爆炸的方法相比,他们的方法具有线性时间复杂度。
Lightweight Multi-View 3D Pose Estimation Through Camera-Disentangled Representation. In CVPR将每个视角的图像编码为统一的潜在表示,使特征图从摄像机视角解耦。作为轻量化的标准融合,这些2D表示通过基于GPU的直接线性变换提升到3D姿势以加速处理。
MetaFuse: A Pre-trained Fusion Model for Human Pose Estimation. In CVPR.提出了预训练的多视角融合模型(MetaFuse),可以通过少量标记数据有效地适应新的摄像机设置。他们采用了模型无关的元学习框架,学习通用融合模型的最优初始化以进行适应。
Faster VoxelPose: Real-time 3D Human Pose Estimation by Orthographic Projection. In ECCV.为了降低VoxelPose [235] 的计算成本,该方法将特征体积重新投影到三个二维坐标平面上,分别从中估计X、Y、Z坐标。Faster VoxelPose 的帧率为31.1,与VoxelPose 相比几乎提高了10倍速度。
建立相机视角两两间的点对应是处理三维视觉任务的常见思路,可以在此基础上利用三角几何(triangulation)等方法估计三维人体姿态。然而,这类方法对于每个视角的估计误差较为敏感。相比之下,将产生的热力图重投影到三维空间的做法具有更强的鲁棒性。我们希望保留这个优点,因此沿用了 VoxelPose 的体素特征表示。 作者:北大前沿计算研究中心 https://www.bilibili.com/read/cv18004304/ 出处:bilibili
分为三种: 基于单目RGB图像和视频的3DHPE 单视图多人3D HPE 多视图3D HPE
数据集
2D HPE数据集
基于图像的数据集
FLIC:该数据集是通过对30部电影的每10帧运行一个人检测器SOTA模型,从好莱坞受欢迎的30部电影中获得的。这些图像包含穿着不同服装的不同姿势的个体。从数据集中,每个个体被标记为10个身体关节。在大多数情况下,该图像数据集被用于单人和多人姿态估计模型。
LSP(&LSPE):这些图像大多来自体育活动,这使得它们的外观非常具有挑战性。除此之外,图像中的大多数个体的长度已经缩放到大约150个像素。在LSP数据集中,每个人的全身都标有总共14个关节,这表明与FLIC相比,关节的数量增加了。具体来说,LSP数据集总共有2000个带注释的图像,其中有10000个图像。在大多数情况下,这两个数据集都用于单人姿势估计模型。
MPII人体姿态数据集[22]包含约25,000幅图像,其中包括40,000多名带有注释的身体关节的个体。这些图像是为了展示人类日常活动而收集的。在MPII中,每个人的身体都标有15个身体关节,如引言部分所述。MPII人体姿态数据集也被用于单人和多人姿态估计模型。
MS-COCO(Microsoft Common Objects in Context)或通常称为COCO(上下文中的公共对象)是使用最广泛的大型数据集。它有超过33万张图像和20万个带有关键点的标注对象,每个人都有17个关节。COCO数据集不仅用于姿态估计和分析,还用于自然环境目标检测和图像分割、上下文识别等。COCO数据集有两个版本:COCO keypoints 2016和COCO keypoints 2017
CrowdPose数据集在拥挤环境下2D HPE的最新数据集之一这个数据集包含的人更多,也更密集,某些方法在这个数据集上的指标比前几个数据集要下降0.2左右。甚至openpose会下降0.3.
基于视频的数据集
Penn Action数据集:包含带有运动动作标注的框架:棒球场、棒球挥杆、网球正手、网球发球、板凳推举、保龄球、挺举、高尔夫挥杆、跳绳、跳高、引体向上、俯卧撑、仰卧起坐、蹲下和弹拨吉他。图像的标注使用Amazon Mechanical Turk进行标记。
Joint-annotated Human Motion Database(J-HMDB),用于动作识别、人体检测和HPE的完全标注视频数据集。共有21个动作类别,包括刷毛、接球、拍手、爬楼梯、高尔夫、跳跃、踢球、挑、倒、上拉、推、跑、投篮、射弓、射枪、坐、站、挥棒、扔、走和挥手。
PoseTrack数据集:用于视频分析中的多人姿态估计和关节跟踪的大型数据集。视频中的每个人都有一个带有标注的唯一跟踪ID。
2D HPE评估指标
Percentage of Correct Parts (PCP) [51]:2D HPE早期工作中常用的一种测量方法,它评估棍状预测,用来报告肢体的定位精度。当预测关节和gt关节之间的距离小于肢体长度的一部分(介于0.1到0.5之间)时,确定肢体的定位。在一些工作中,PCP测量也被称为PCP@0.5,其中阈值为0.5。
Percentage of Correct Keypoints (PCK) [268]:用于测量给定阈值内不同关键点的定位精度。阈值设置为每个测试图像头段长度的50%,表示为PCKh@0.5。当检测到的关节和真实关节之间的距离小于躯干直径的0.2倍时,表示为PCK@0.2。PCK值越高,模型性能越好。
Average Precision (AP) and Average Recall (AR)。AP测量是根据精确度(TP结果与总TP结果的比率)和召回率(TP结果与总的gt Positive结果的比率)来衡量关键点检测准确性的指标。AP计算召回率在0到1之间的平均精度值。A
3D HPE数据集
Human3.6M[77]是从单目图像和视频中提取的用于3D HPE的室内数据集。11名专业演员(6男5女)在室内实验室环境中,从4个不同的角度表演17项活动(如吸烟、拍照、打电话)。带有3D ground truth 注释的3D人体姿势,由精确的基于标记的动作捕捉系统捕获。
MPI-INF-3DHP[156]由多摄像机工作室中的商业无标记动作捕捉系统捕获。
MuPoTS-3D[158]是一个多人3D测试集,它的ground truth 3D姿势由一个包含20个真实场景(5个室内和15个室外)的多视图无标记动作捕捉系统捕获。在一些户外镜头中,有一些带有遮挡、剧烈光照变化和镜头耀斑的具有挑战性的样本。
还有一些其他的数据集包括 HumanEva [215], CMU Panoptic Dataset [94], TotalCapture [232],MuCo-3DHP Dataset [158], 3DPW [240], AMASS [151], NBA2K [304], GTA-IM[14],和Occlusion-Person[287]。
3D HPE评估指标
MPJPE是利用估计的三维关节与ground truth位置之间的欧氏距离计算的,目前应用最广泛的评价三维HPE性能的指标
PMPJPE又称重建误差(Reconstruction Error),是对估计姿态和真实姿态进行后处理后的刚性对齐后的MPJPE。
MPVE (Mean Per Vertex Error)[185]用于度量ground truth顶点与预测顶点之间的欧氏距离。
CrowdPose数据集[6]包含约20000张图片和总计80000个人体姿势,其中有14个标记关键点.与前几个数据集相比,这个数据集包含的人更多,也更密集,某些方法在这个数据集上的指标比前几个数据集要下降0.2左右。甚至openpose会下降0.3.
JTA是Fabbri等人[3]通过从视频游戏《侠盗猎车手v》中提取视频,收集到的用于行人姿态估计和跟踪的合成数据集。JTA中对人体姿态的标注包括22个关键点、一个跟踪id和可见度标志。可见性标志区分关键点是可见的、遮挡的还是自聚焦的。为了在不同的数据集之间比较方法,JTA的注释通过简单地丢弃和重新排序关键点来匹配CrowdPose的格式。
MS-COCO或通常称为COCO(上下文中的公共对象)是微软(MS)的产品。COCO数据集是一个非常大的数据集的集合,具有对象检测、关键点检测、填充分割、全景分割和图像字幕的注释类型。JSON文件用于存储注释。COCO数据集包含总共200,000幅图像,这些图像包含250,000个具有关键点的人,每个人的实例都用17个关节进行标记。COCO数据集从2014年开始大量生产数据集。
MPII人体姿态数据集[22]包含约25,000幅图像,其中包括40,000多名带有注释的身体关节的个体。这些图像是为了展示人类日常活动而收集的。在MPII中,每个人的身体都标有15个身体关节,如引言部分所述。MPII人体姿态数据集也被用于单人和多人姿态估计模型。
LSP(&LSPE):这些图像大多来自体育活动,这使得它们的外观非常具有挑战性。除此之外,图像中的大多数个体的长度已经缩放到大约150个像素。在LSP数据集中,每个人的全身都标有总共14个关节,这表明与FLIC相比,关节的数量增加了。具体来说,LSP数据集总共有2000个带注释的图像,其中有10000个图像。在大多数情况下,这两个数据集都用于单人姿势估计模型。
FLIC:该数据集是通过对30部电影的每10帧运行一个人检测器SOTA模型,从好莱坞受欢迎的30部电影中获得的。这些图像包含穿着不同服装的不同姿势的个体。从数据集中,每个个体被标记为10个身体关节。在大多数情况下,该图像数据集被用于单人和多人姿态估计模型。