基于单目的3D人体姿态估计

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者:彡枫| 来源:知乎

https://zhuanlan.zhihu.com/p/148251873

本文仅做学术分享,如有侵权,请联系删除。

针对单目的姿态估计(单人或多人),目前的主要方法有直接回归3D坐标,先回归2D坐标在lift到3D

Directed Regression

(一)Human3.6M

下载地址:http://www.maths.lth.se/sminchisescu/media/papers/human36-pami.pdf

这篇文章就是Human3.6M的数据集那篇,主要提出了一个大型的室内人体数据集,包含RGB,ToF获取的深度,以及3D pose和body surface

Human3.6M是目前3D姿态估计中应用最广泛的数据集,涵盖了360万张图像,由4个不同视角的相机拍摄得到(50fps的视频)。包含15个动作“directions, discussion, eating, greeting, phoning, posing, purchases, sitting, sitting down, smoking, taking photo, waiting, walking, walking dog, walking together”。一共包含11个人,但是只有7个有3D标签,所以一般会采用train:S1,S5,S6,S7,S8;test:S9,S11的设定。

扫描二维码关注公众号,回复: 11441059 查看本文章

需要注意的是从视频中提取的帧数会比标签多几帧(从1帧到十几帧不等),在使用时需要丢弃视频最后的那些帧来保证标签对齐。

(二)Corase-to-Fine

下载地址:https://arxiv.org/pdf/1611.07828.pdf

这篇文章将2Dpose中的做法沿用到3D中来,回归一个3D的heatmap,考虑到z轴深度的一个值域范围很大,所以采用了一种coarse-to-fine的结构来逐步回归。有点类似于2D Pose Estimation中的stacked Hourglass结构。

(三)Compositional Human Pose Regression

下载地址:https://openaccess.thecvf.com/content_ICCV_2017/papers/Sun_Compositional_Human_Pose_ICCV_2017_paper.pdf

这篇文章认为以往的基于回归的方法没有取得较好的原因是因为没有很好地获取结构信息,所以文章提出了一种structure-aware regression的方式。其实就是training的时候不再回归root-related joint而是parent-related joint,因为这种方式数据的方差较小,对网络较容易回归,但是这样会带来累计误差,所以网络在损失函数方面除了对每个bone做均方误差外,还对一些长距离的joint pairs做了约束。

(四)Camera Distance-aware Top-down Approach for 3D Multi-person Pose Estimation from a Single RGB Image

下载地址:https://arxiv.org/abs/1907.11346

这篇主要是做多人的,它需要预测出每个人的绝对位姿。整体结构也是一个top-down的方式,先由一个DetectNet检测出人体,并获得crop后的图像。

RootNet则预测该人体在相机坐标系下root的位姿 , 这里  为图像坐标,  则是深度值。图像坐标可以用深度值反投影到相机坐标系下的真实坐标上。考虑到在图像上估计root的x,y是很容易的,但是估计depth会比较困难,因此文章引入了一个新的distance measure  :

 这个设定是根据针孔成像模型来的,这里的前两项就是相机内参中的focal length(以像素为单位, 是人体在真实世界中的大小,在文中设定为一个固定值,而  为人体在图像中的像素大小。实际上做了某种归一化,因为输入来源是crop之后的图像,大小都是一样的,但回归的深度的范围却不一样,这里相当于是利用了人体在原始图像上的大小做一个scale,越小则人离相机越远。这样能使得Z回归的值得方差变小。

但实际上人体在真实世界的大小并不是每个人都是相同的,这取决于人本身的大小以及人的姿势。所以rootNet回归一个系数  来进行纠正最终的到的  。

PoseNet用来回归所有节点相对于根节点的坐标,所有的Loss function都是用的L1 loss。

(五)Towards 3D Human Pose Estimation in the Wild: a Weakly-supervised Approach

下载地址:https://openaccess.thecvf.com/content_ICCV_2017/papers/Zhou_Towards_3D_Human_ICCV_2017_paper.pdf

这篇文章主要也是通过联合训练的方式希望获得一个能估计野外人体3D pose的网络。将预测2D关节点的heatmap和当时的feature作为回归depth的输入。主要针对loss function,2D pose estimation部分都是由label的,和以往的loss一样。针对depth,有两种情况,一种是原图像是有depth的groundtruth的情况下直接用MSE,在原图没有depth的groundtruth的情况下,文章提出了一种geometric loss。作者认为人体骨骼的比例是保持不变的,它通过整个数据集得到每个bone的长度的均值作为基准,然后通过约束每个实际回归的bone的长度比基准的比值相同来作为损失函数。

2D to 3D

(一)Distance Matrix

下载地址:https://openaccess.thecvf.com/content_cvpr_2017/papers/Moreno-Noguer_3D_Human_Pose_CVPR_2017_paper.pdf

这篇文章也可以算是一种2D to 3D的做法,先利用CPM得到2D pose,然后根据标准化后的2D pose构建了一个Euclidean Distance Matrix(EDM)用来衡量关键点对之间的距离。然后利用CNN对这个矩阵进行特征提取,并回归得到一个3D pose 的EDM。文章指出EDM的好处是相比于原始的坐标,它具有一些平移旋转不变形。最后通过MDS算法解优化问题来还原最终的3D pose。

(二)3D Human Pose Estimation = 2D Pose Estimation + Matching

下载地址:https://openaccess.thecvf.com/content_cvpr_2017/papers/Chen_3D_Human_Pose_CVPR_2017_paper.pdf

这篇文章的做法是假设在给定图像的情况下,3D pose和2D pose是条件独立的,即从2D pose估计3D pose不再需要图像的信息(当然这种假设是存在误差的),所以可以通过一种模型直接从2D pose去估计3D pose。而这篇文章的做法不是构建一个神经网络去实现,而是在预先存在的一个3D pose库的情况下,用最邻近搜索算法去做matching,通过将pose库中的pose投影到像平面来和2D pose计算相似度来进行3D pose的匹配(估计)。

(三)A simple yet effective baseline for 3d human pose estimation

下载地址:https://openaccess.thecvf.com/content_ICCV_2017/papers/Martinez_A_Simple_yet_ICCV_2017_paper.pdf

这篇文章主要是提供了一个2D to 3D的baseline,方法很简单,即直接使用2D pose通过神经网络回归3D pose(相对根节点)。文章中使用的方法也很简单,即用了一些FC,BN,Dropout就达到了不错的效果。

(四)Semantic Graph Convolutional Networks for 3D Human Pose Regression

下载地址:https://openaccess.thecvf.com/content_CVPR_2019/papers/Zhao_Semantic_Graph_Convolutional_Networks_for_3D_Human_Pose_Regression_CVPR_2019_paper.pdf

文章基本延续了上述baseline的做法,只不过将网络换成了GCN的形式进行特征提取。

标题中提到的Semantic应该是将在进行2D pose estimation中的语义信息也作为GCN的输入,但从其提供的code来看,只是将2D pose 的归一化坐标作为GCN的输入来进行3D pose的回归,在使用2D groundtruth的情况下就已经达到了论文中提到的最好效果。

(五)3D human pose estimation in video with temporal convolutions and semi-supervised training

下载地址:https://arxiv.org/pdf/1811.11742.pdf

这篇文章主要不再是针对单帧坐预测,而是用到了一些时序的信息,实际的做法也很简单就是把第二个baseline中的NN换成了TCN(Temporal Convolutional Network),来对整个视频或者一个clip来进行推断。为了获得更大的感受野,文章中用了dilated convolution,同样为了能够进行real-time的推断,code中还给出了causal convolution的方式。

文章还有一个contribution就是提出了一种半监督的学习方式:

文章利用一些2D pose estimator提取的一些unlabeled 2D pose也加入进行训练,对于labeled 2D pose也用原来的supervised loss function就行了,对于这些unlabeled 2D pose则将其预测的3D pose反投影到相机平面,看他和原始估计的2D pose之间的差距。而为了正确地进行反投影,还需要知道每个3D pose的global position(因为在实际的3D pose estimation中都是估计的root-related coordinates)。这里对trajectory的WMPJPE loss是进行了一种加权,由于当被摄体离相机越远时其位置越不好估计,所以用深度的倒数进行加权。然后为了使得对于那些unlabeled 2D pose预测出来的3D pose看起来更自然而不只是投影相同,所以利用labeled的数据中的bone来对unlabeled数据预测处理的bone的长度进行约束。

(六)RepNet: Weakly Supervised Training of an Adversarial Reprojection Network for 3D Human Pose Estimation

下载地址:https://openaccess.thecvf.com/content_CVPR_2019/papers/Wandt_RepNet_Weakly_Supervised_Training_of_an_Adversarial_Reprojection_Network_for_CVPR_2019_paper.pdf

该文章利用GAN来构造一个pose generator将2D pose作为输入来生成3D pose,同时也构建了一个camera network来估计相机参数。Reprojection Layer则是将生成的3D pose通过估计的相机参数重投影到2D,和输入的2D pose构成reprojection loss。

后面用KCS(kinematic chain space)做了一个critic network用来评判生成的3D pose是否真实。

这个KCS matrix的对角元素能表示每个bone的长度,其他元素也能表示bone之间的夹角。并利用Wasserstein GAN来进行训练。

(七)3D Human Pose Estimation using Spatio-Temporal Networks with Explicit Occlusion Training

下载地址:https://www.aaai.org/Papers/AAAI/2020GB/AAAI-ChengY.4425.pdf

相比于直接使用2D坐标,文章提出使用heatmap,其认为heatmap能蕴含更多的spatial information。对每帧得到的heatmap,通过一个embedding network进行降维,最后得到一个embedded featuresequence。然后用TCN进行特征提取,考虑到不同的动作人体变化的速率不同,文章使用了multi-scale的方式用了不同stride的TCN。同时在training的过程中,还加入了一个multi-view loss,即要求在不同视角下预测的pose经过变换后是相同的。以及用了联合训练的方式,加入了一些没有3D label的数据,对于这些数据则利用其预测结果在图像平面的投影与2D的label构成一个loss。

文章后面还利用了一个Pose discriminator来评判生成的骨架是否合理。也是参考了上面那篇文章的KCS,同时本文还构建了一个TKCS:

将KCS,TKCS和预测的pose同时输入一个TCN,通过GAN进行训练。

(八)Motion Guided 3D Pose Estimation from Videos

下载地址:https://arxiv.org/pdf/2004.13985.pdf

这篇主要是针对视频序列做了一些时序上的约束。

整体的backbone是用了ST-GCN的结构,然后在时间维上用了U-Net这种跳跃连接的方式,网络细节可看论文。这里主要做了一些时序上的约束,即原来针对单帧图像所做的estimation在时序上不够平滑,所以这里希望引入一些时序上的约束来更好地生成pose。

对于预测的结果作者在时序上构建了一些motion encoding:  ,这里的  可以subp,inner product or corss product,文章也分别对这几种encoding方式做了实验。最后通过这些encoding在时序上的GT来做约束:

Combination (regression and lifting)

(一)VNect: Real-time 3D Human Pose Estimation with a Single RGB Camera

下载地址:http://gvv.mpi-inf.mpg.de/projects/VNect/content/VNect_SIGGRAPH2017.pdf

这篇文章的方法比较简单,即用CNN来回归一个heatmap和一个location map,这样通过heatmap获取的2D关键点坐标,就能直接搜寻到location map中的3D pose。

具体做法上中间先预测一个kinematic parent-relative location map,再通过这个map计算每个bone的长度,并和之前的feature一起concat起来,最后同时输出heatmap和root-relative location map。

由于这种3D pose estimation是逐帧做的,在时间维上没法达到动作的一致性,所以需要一些后端优化,细节见论文,最终解出人体在相机坐标系中的具体位置和各个关节的转角。

(二)XNect: Real-time Multi-Person 3D Motion Capture with a Single RGB Camera

下载地址:https://arxiv.org/pdf/1907.00837.pdf

这一篇和上一篇是同一个团队,可以看作方法的一些改进吧。主要分为三个stage,stage1是利用一个CNN网络,用两个分支来分别预测2d pose(heatmap+part affinity)和3d pose encodings;stage2用一个轻量级的全连接层来进行3d pose 推断。stage3对前面2d和3d的预测来进行序列建模。

这里stage1中2D和3D部分的regression的思路和前一篇很相似,只不过这里是分开做了regression,只是共享了一些高层特征。然后这里的3D encoding也不再是之回归对应joint的3D 坐标,相应地还蕴含了一些相邻点的关系信息。

这里每个位置的feature vector是一个3J的向量,这里只预测自身节点相对于父节点的相对位姿以及子节点对自己的相对位姿。比如右肩j=3,其父节点j=2,所以预测的(x3,y3,z3)是其相对于j=2的相对位姿,而其子节点为j=4,所以(x4,y4,z4)为j=4相对于j=3的相对位姿,而其他地方在训练时不做约束。

stage2这一阶段用针对每一个detected的个体,输入的特征为每个关节点的2d位置,置信度,以及3d encodings的concatenation。然后利用multi fully connected layers来预测该个体的root-relative 3d pose。

stage3:
这一阶段主要是identity trackingand Re-identification
在计算相邻帧不同个体之间的相似性的时候,主要利用上班躯体的HSV颜色直方图的均方误差,各关节点2d pose的均方误差,以及3d encodings的均方误差。这是通过优化能量函数的方式来解旋转角 
 ,细节见论文。

推荐阅读

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

猜你喜欢

转载自blog.csdn.net/Yong_Qi2015/article/details/107551494