End-to-end Recovery of Human Shape and Pose
论文的中文翻译下载
文章主要干了什么:
此文章提出了一个以端到端的方法实现从二维人体图像恢复出三维人体模型的框架。在此之前,绝大多数的方法或是只关心三维骨架的重建,或是采用两段式的方法,即先从二维图像推断出2D-joint location,再从2D-joint来预测三维模型或计算三维参数。
两阶段法:
1、用2D pose检测,预测2D关节位置
2、通过回归分析和model fitting从2D关节去预测3D关节,其公共方法是利用一个学习的3D骨架库。
这些方法为了约束2D-to-3D的固有歧义,用了不同的先验:
1、假定四肢长度,或比例
2、学习一个姿势先验,获得了与姿势独立的关节角度限制。
特点:对于域的转变更鲁棒,过度依赖2D关节点侦测,丢掉了图片的信息。
在实现端到端的从二维人体图像恢复出三维人体模型框架中遇到的难题
1、缺少足够数量的带有ground truth 3D annotation的自然获取的实况图像,目前已有的自带3D结构注解的图像都是在特定的实验环境下获得的,并不足以反映真实世界可能出现的所有情况。
2、从二维到三维存在着固有的模棱两可性,因为缺少了深度信息,许多不同的三维模型都可以映射为同一个二维图像,而由二维图像映射到三维时,也不一定能够符合人体结构学。
难题的解决
1、解决方案思路出发点是使用两个数据集来进行训练
一个是带有2D annotation的实况二维图像集,另一个是人体的3D mesh模型集,这两个数据集是没有配对关系的。当获得一副图像,先预测该图像对应的3D mesh参数,然后使推断出来的3D mesh的3D Joint映射到2D时能够与原图的2D-joint契合。通过这样一个从2D到3D再到2D的过程,我们就可以使用海量的不带三维信息的二维图像来作为数据集进行训练。在预测模型参数方面,以前的多数方法是把这个问题当做分类问题来处理,这样做得到的误差是离散化的,所以在精度上有不足。这篇文章在参数预测上则采用了iterative regression with feedback的方法。
2、为了使生成的模型符合真实的人体结构,使用GAN的网络结构,把生成模型的参数输入到一个Discriminator中,Discriminator在训练中学习每个joint之间的角度限制,由Discriminator来判断模型是否真实。
文章方法的优越之处
1、直接从图像特征中推断出三维网格参数,而之前的方法是从2D中推断出来的要点。这就避免了两个阶段的训练同时也避免浪费有价值的信息。
2、输出的是三维网络而不是骨架
3、提高精度,减少运行时间
4、不需要有配对的2D-3D数据集,打开了从大量的2D数据中学习3D的可能性
重要的相关知识:
1、关于SMPL(A Skinned Multi-Person Linear Model)
2015年提出了这一模型,该模型可分离为shape和pose,只需要输入一个10-D的vector β(代表shape,即个人体高矮胖瘦、头身比等比例的10个参数。由PCA对数据集人体进行主成分分析得到)和一个3K-D的vector θ(代表pose,代表人体整体运动位姿和24个关节相对角度的75个参数。其中K为骨架节点数,3是每个关节具有的3个自由度),就可以输出对应的三维人体模型。
SMPL骨架的节点个数为14,标注了人体影响姿态的几个主要关节,即:
smpl_names = [
'Left_Hip', 'Right_Hip', 'Waist', 'Left_Knee', 'Right_Knee',
'Upper_Waist', 'Left_Ankle', 'Right_Ankle', 'Chest',
'Left_Toe', 'Right_Toe', 'Base_Neck', 'Left_Shoulder',
'Right_Shoulder', 'Upper_Neck', 'Left_Arm', 'Right_Arm',
'Left_Elbow', 'Right_Elbow', 'Left_Wrist', 'Right_Wrist',
'Left_Finger', 'Right_Finger'
]
加上camera的三个维度,则该模型最终总的输入就是10+3+3x14=85-D的数据。
关于SMPL(A Skinned Multi-Person Linear Model)的文档可以在官网上学习
SMPL官网
SMPL模型
看懂论文可以参考的相关文章:
1、基于3D关节点的人体动作识别综述
2、人体骨骼关键点检测综述