文章目录
- 摘要
- abstract
- [一、SMPLify 的两阶段算法框架](#一、SMPLify 的两阶段算法框架)
-
- [1.1 优化的目标函数 E ( β , θ ) E(\beta, \theta) E(β,θ)](#1.1 优化的目标函数 E ( β , θ ) E(\beta, \theta) E(β,θ))
- [1.2 底层代码映射:SMPL 模型的机制](#1.2 底层代码映射:SMPL 模型的机制)
- 1.3总结
- 总结
摘要
学习 ECCV 的《Keep it SMPL: Automatic Estimation of 3D Human Pose and Shape from a Single Image》(即 SMPLify 算法框架)
abstract
Studying the ECCV paper "Keep it SMPL: Automatic Estimation of 3D Human Pose and Shape from a Single Image" (i.e., the SMPLify algorithm framework).
一、SMPLify 的两阶段算法框架
论文提出了第一个从单张无约束图像中自动估计人体 3D 姿态及其 3D 形状的方法 。此外,结合了底层的 smpl-pytorch 源代码进行了逆向工程分析,深入理清了 3D 人体模型从低维参数输入到高维 3D 网格输出的确定性数学映射与可微计算流向 。
SMPLify 采用了一个经典的自下而上(bottom-up)估计随后自上而下(top-down)验证的范式 。
自下而上:首先使用基于卷积神经网络(CNN)的方法(DeepCut)预测单张图像中 2D 人体关节的位置 。
自上而下:将高质量的统计人体形状生成模型 SMPL 拟合到预测出的 2D 关节上,通过模型自身包含的形状和姿态约束来推断 3D 信息 。 为了实现完全自动化且防止性别错误,在不知道照片人物性别的情况下,论文引入了中性(gender-neutral)模型进行拟合是最稳妥的策略 。
1.1 优化的目标函数 E ( β , θ ) E(\beta, \theta) E(β,θ)
为了让 3D 模型完美贴合 2D 照片且不违背物理常识,论文构建了一个由五个误差项总和组成的复杂目标函数 :
基于关节的数据项 (Data Term):惩罚 3D 模型投影到平面的关节与 CNN 估计出的 2D 关节之间的加权距离 。
姿态先验 (Pose Priors):为了处理 2D 到 3D 的深度模糊性,论文利用 CMU 动作捕捉数据训练了一个多峰值高斯混合模型姿态先验,能够强烈惩罚诸如肘部和膝盖过度伸展等不自然弯曲的姿态 。
形状先验 (Shape Prior):通过主成分分析(PCA)计算,用来惩罚和防止体型出现畸变 。
防穿模胶囊体惩罚 (Interpenetration Penalty):传统算法中计算复杂非凸的人体穿模非常昂贵 。
论文通过从形状参数线性回归出一组"胶囊体"(capsules)来近似身体部位 。这一设计极其精妙地提供了一个相对于形状和姿态可微的误差项,用以惩罚 3D 空间中不可能出现的身体交叉部位 。
1.2 底层代码映射:SMPL 模型的机制
结合 PyTorch 的代码实现,深入理解了 SMPL 模型为何能够支撑起这篇论文的 3D 生成。SMPL 的核心在于它解决了传统线性混合蒙皮(LBS)在关节弯曲时产生的"体积坍塌"伪影(太妃糖效应) 。
它由三个核心部分组成:
形状混合形变 (Shape Blend Shapes, B S B_S BS):由形状参数 β \beta β(10维或300维)控制,将胖瘦高矮特征注入标准模板 。
动态关节回归器 (Dynamic Joint Regressor, J \mathcal{J} J):3D 骨骼关节不是硬编码定死的,而是根据皮肤表面的凹凸情况按比例加权推算出来的 。通过修改代码验证得知,如果剥离此项,人体变胖时就会出现严重的"手臂撕裂、脱臼"的生物力学错误 。
姿态混合形变 (Pose Blend Shapes, B P B_P BP):这是解决坍塌的灵魂设计。代码在执行蒙皮前,会根据骨骼的旋转计算出一个"肌肉鼓包"叠加在顶点上,从而完美抵消蒙皮坍塌 。
完全可微性 (Differentiability):底层全是纯粹的张量加法和矩阵乘法,没有不可导的物理碰撞逻辑,这使得 3D 误差带来的梯度可以毫无阻碍地向后回传,成为了深度学习的完美基础层 。
1.3总结
SMPLify证明了即便输入极其稀疏且包含噪声的 2D 关节数据,只要有一个利用真实人类 3D 扫描数据训练出的强大统计学先验模型(SMPL),就能出乎意料地恢复出逼真的 3D 姿态和体型 。
总结
实验代码还没有跑。计划下周跑。
内容的话打通了"底层张量流动"和"基于优化的 3D 重建(SMPLify)"的核心逻辑,下一步计划先跑人体的重建,然后学习NeRF 。