UnderPressure 论文简单解读
论文:UnderPressure: Deep Learning for Foot Contact Detection, Ground Reaction Force Estimation and Footskate Cleanup
整体概述
研究背景
在角色动画与动作捕捉中,脚滑(footskating)是最影响真实感的伪影之一。传统方法通常依赖于 启发式规则(阈值法) 来检测脚是否接触地面,但这些方法存在三大问题:
需要提前知道地面高度;
阈值要手动调节,不同动作和人物差异很大;
检测精度和鲁棒性差,常常需要人工修正。
因此,论文目标是提出一种 自动、鲁棒、物理合理 的方法来解决脚接触检测和脚滑清理问题。
方法概述
论文分为两部分工作:
1.足底力估计与接触检测
通过训练深度神经网络,从动作骨架中直接预测脚底的垂直地面反作用力(vGRFs),并据此推导出可靠的接触标签。
提出并公开了一个新的数据库 UNDERPRESSURE,包含动作捕捉与压力鞋垫同步数据,是这一任务的重要支撑。
2.脚滑清理(footskate cleanup)
在获得精确接触标签后,提出了一个基于 逆运动学优化 的方法去修正脚滑。
创新点在于:优化中不仅加入接触约束,还要求修正后的动作与网络预测的 vGRFs 保持一致,从而增强物理合理性。
数据与模型
1.UNDERPRESSURE 数据集
10 个受试者,5.6 小时动作,涵盖走、跑、跳、上下楼梯、跨障碍等多种场景。
同时记录 动作捕捉骨架 和 足底压力分布。
压力数据经过处理可得到 足跟和脚趾的接触标签,作为训练真值。
2.深度网络设计
输入:每帧 23 个关节位置序列。
输出:每帧两只脚各 16 个压力值(vGRFs)。
网络结构:4 层一维时序卷积 + 3 层全连接,参数约 110 万。
损失函数:均方对数误差 (MSLE),保证大力和小力的相对误差都能被重视。
数据增强:包括平移、旋转、镜像、缩放,以及骨架形态扰动,提高泛化能力。
实验一:足接触检测
通过把预测的 vGRFs 转换为接触标签,评估检测精度。
与传统阈值法和一些学习基线对比,结果表明:
本方法的平均 F1 值 ≈ 0.947,明显优于阈值法(≈0.909)。
在不同动作类型(走、跑、跳、楼梯等)中表现稳定。
在噪声和动作失真情况下依然鲁棒。
结论:深度网络比启发式方法更可靠,尤其适合复杂动作和低质量输入。
实验二:脚滑清理
在检测到接触帧后,构建一个 逆运动学优化框架 去修正脚滑。
优化目标由四部分组成:
保持关节四元数合法;
在接触帧约束脚底不动;
保持全局轨迹速度合理;
保持修正后动作与预测 vGRFs 一致(创新点)。
在混合动作生成的脚滑测试中,优化后:
脚在接触期的水平速度降低约一半;
视觉效果显著更自然;
保持了物理一致性。
创新点总结
提出并公开了 UNDERPRESSURE 数据集:首个规模化的“动作捕捉 + 压力鞋垫”数据集。
从骨架预测 vGRFs:相比直接预测接触标签,预测力分布更符合物理规律,也更鲁棒。
高精度的接触检测方法:在各种动作和噪声条件下均优于传统方法。
vGRFs 约束的脚滑优化:首次在 IK 脚滑清理中引入力学一致性,提升了动作的物理合理性和视觉质量。
论文意义
这篇工作不仅提出了一个新的方法去解决脚接触和脚滑问题,还展示了 “物理信号(力)” 对动画和动作处理的重要性。它证明:
学习到的物理量可以替代启发式标签,提升检测精度和鲁棒性。
物理量还能指导后续任务(如脚滑清理),为未来的动作重建、仿真和生成提供更可靠的约束。
数学表达
约定与符号
- Xt∈RJ×3X_t\in\mathbb{R}^{J\times3}Xt∈RJ×3:时刻 ttt 的关节位置(论文用 J=23J=23J=23)。
- 整段动作:X∈RT×J×3X\in\mathbb{R}^{T\times J\times 3}X∈RT×J×3。
- 网络输出:F^=Ψθ(X)∈RT×2×16\hat{F}=\Psi_\theta(X)\in\mathbb{R}^{T\times 2\times 16}F^=Ψθ(X)∈RT×2×16,每帧每只脚 16 个压力单元(相对于体重归一化,非负)。
- FK 表示正向运动学:FK(Q,S,P)\mathrm{FK}(Q,S,P)FK(Q,S,P)(从关节角 QQQ、骨架 SSS、全局轨迹 PPP 得到关节位置)。
1 接触函数 Γ\GammaΓ(从 vGRF 得到二值接触)
论文的处理流程可以写成(形式化):
- 先对每个压力单元的 vGRF 做高斯平滑:
f~t,c=(G∗f)t,c\tilde f_{t,c} = (G * f)_{t,c}f~t,c=(G∗f)t,c(卷积表示)。 - 将单元分组为heel 和 toe 两组(集合记为 HHH 与 TTT),计算每组合力:
Sheel(t)=∑c∈Hf~t,c,Stoe(t)=∑c∈Tf~t,cS_{\text{heel}}(t)=\sum_{c\in H}\tilde f_{t,c},\quad S_{\text{toe}}(t)=\sum_{c\in T}\tilde f_{t,c}Sheel(t)=∑c∈Hf~t,c,Stoe(t)=∑c∈Tf~t,c. - 对 Sheel(t),Stoe(t)S_{\text{heel}}(t),S_{\text{toe}}(t)Sheel(t),Stoe(t) 做重缩放使其之和等于总 vGRF(以忽略噪声单元,论文描述了这一步)。
- 原始二值标签(raw)由阈值判定:若某组 > 0.05⋅BW>\!0.05\cdot\text{BW}>0.05⋅BW(体重的 5%)则标为接触;同时若该只脚的总 vGRF < 0.1·BW 则丢弃(避免噪声);接触阶段短于 0.1s 也丢弃。
这整套二值化/后处理就是论文所说的接触函数 Γ\GammaΓ。
2 网络(vGRF 估计)与训练损失
-
输出维度与激活:最后一层用 softplus 输出非负的 16 个单元/脚(总共 32 个)。 架构细节:4 层 1D conv(kernel=7,filters = 128,128,256,256),后接 3 层 FC(256 each),ELU 激活;dropout 前 FC,参数约 1.1M。
-
训练损失(MSLE)(论文式子,等号右侧为等价形式):
LMSLE=1N∑i=1N(ln(Fi+1)−ln(F^i+1))2=1N∑i=1Nln2 (Fi+1F^i+1), \mathcal{L}_{\text{MSLE}} =\frac{1}{N}\sum_{i=1}^N\big(\ln(F_i+1)-\ln(\hat F_i+1)\big)^2 =\frac{1}{N}\sum_{i=1}^N \ln^2\!\Big(\frac{F_i+1}{\hat F_i+1}\Big), LMSLE=N1i=1∑N(ln(Fi+1)−ln(F^i+1))2=N1i=1∑Nln2(F^i+1Fi+1),
其中 FiF_iFi 是真实 vGRF 分量,F^i\hat F_iF^i 是网络预测。加 1 保证对数定义(vGRF 可为 0)。
- 训练细节(实验设置):Adam, batch=64, lr=3e-5, 约 2500 epochs(论文中给出)。
3 footskate cleanup 的优化目标(完整损失)
论文把 IK 优化写成四项加权和(Equation (2)):
L=ωqLquat+ωfLfoot+ωtLtraj+ωvLvGRFs. \mathcal{L}=\omega_q L_{\text{quat}}+\omega_f L_{\text{foot}}+\omega_t L_{\text{traj}}+\omega_v L_{\text{vGRFs}}. L=ωqLquat+ωfLfoot+ωtLtraj+ωvLvGRFs.
该式即为优化目标,ω\omegaω 为权重超参(论文给出实验中用的数值,见下)。
下面把每项写清:
(a) 四元数正则(保持单位四元数)
Lquat=∑t∑j(∥Qj(t)∥−1)2, L_{\text{quat}}=\sum_t\sum_j\big(\|Q_j(t)\|-1\big)^2, Lquat=t∑j∑(∥Qj(t)∥−1)2,
其中 Qj(t)Q_j(t)Qj(t) 是关节 jjj 在时刻 ttt 的四元数(强制单位范数)。
(b) 脚接触项(把“接触关节”固定到接触位置)
论文引入contact joints(在 T-pose 下垂直位于脚下的虚拟关节),对每个接触期 ccc(从 t0(c)t_0(c)t0(c) 到 t1(c)t_1(c)t1(c))定义接触位置 pcp_cpc,并最小化 contact-joint 与该 pcp_cpc 之间的平方距离(带窗函数 Π(t)\Pi(t)Π(t) 做平滑):
Lfoot=∑c=1C∑t=t0(c)t1(c)Π(t) ∥FK(Q,S,P)jc(t)−pc∥2. L_{\text{foot}}=\sum_{c=1}^C\sum_{t=t_0(c)}^{t_1(c)} \Pi(t)\,\big\| \mathrm{FK}(Q,S,P)_{j_c(t)} - p_c\big\|^2. Lfoot=c=1∑Ct=t0(c)∑t1(c)Π(t)FK(Q,S,P)jc(t)−pc2.
说明:jc(t)j_c(t)jc(t) 表示该接触期对应的 contact joint(通过 FK 得到其世界坐标);Π(t)\Pi(t)Π(t) 是矩形波但有平滑边缘以避免突变。
(c )全局轨迹(速度一致性)
论文避免直接约束位置以防引入不自然加减速,转而约束根轨迹速度的变化:
Ltraj=∑t(∥V(t)∥−∥V~(t)∥)2,V(t)=P(t+ΔT)−P(t)ΔT, L_{\text{traj}}=\sum_t\big(\|V(t)\|-\|\tilde V(t)\|\big)^2,\quad V(t)=\frac{P(t+\Delta T)-P(t)}{\Delta T}, Ltraj=t∑(∥V(t)∥−∥V~(t)∥)2,V(t)=ΔTP(t+ΔT)−P(t),
其中 V~(t)\tilde V(t)V~(t) 是输入(待修正前)轨迹速度。
(d) vGRFs 不变性约束(关键创新项)
把网络 Ψθ\Psi_\thetaΨθ 嵌入到优化中,要求优化后动作的 vGRF 与原始由网络对输入动作估计的 F~\tilde FF~ 保持一致:
LvGRFs=MSLE(F, F~),F=Ψθ(FK(Q,S,P)),F~=Ψθ(FK(Q~,S,P~)). L_{\text{vGRFs}}=\mathrm{MSLE}\big(F,\ \tilde F\big), \quad F=\Psi_\theta\big(\mathrm{FK}(Q,S,P)\big), \quad \tilde F=\Psi_\theta\big(\mathrm{FK}(\tilde Q,S,\tilde P)\big). LvGRFs=MSLE(F, F~),F=Ψθ(FK(Q,S,P)),F~=Ψθ(FK(Q~,S,P~)).
也就是用 MSLE 来衡量 Ψθ\Psi_\thetaΨθ 在修正后动作和原始估计之间的 vGRF 差异,允许梯度通过 Ψθ\Psi_\thetaΨθ 回传到 Q,PQ,PQ,P。
4 实验中用的超参与实现细节
-
优化迭代次数 N=100N=100N=100。
-
权重(论文实验值):ωq=10−3, ωf=10−5, ωt=102, ωv=5⋅10−5.\omega_q=10^{-3},\ \omega_f=10^{-5},\ \omega_t=10^{2},\ \omega_v=5\cdot10^{-5}.ωq=10−3, ωf=10−5, ωt=102, ωv=5⋅10−5. 这些在论文里用于生成表征性结果(脚在接触期速度约减半)。
-
优化流程简述(实现顺序):
- 以原始 Q~,P~Q̃,P̃Q~,P~ 初始化 Q,PQ,PQ,P。
- 计算 F~=Ψθ(FK(Q~,S,P~))\tilde F=\Psi_\theta(FK(Q̃,S,P̃))F~=Ψθ(FK(Q~,S,P~)) 与 C=Γ(F~)C=\Gamma(\tilde F)C=Γ(F~)。
- 用梯度下降(可用 Adam/SGD)最小化 L\mathcal{L}L,每步通过 FK 与 Ψθ\Psi_\thetaΨθ 计算 FFF 以获得 LvGRFsL_{\text{vGRFs}}LvGRFs 的梯度并回传到 Q,PQ,PQ,P。
5 细节注释(容易糊掉但很关键)
- Π(t)\Pi(t)Π(t) 要“平滑”接触边缘,避免接触起止瞬间产生不连续位置约束。
- pcp_cpc(接触位置)一般来源于输入序列在该 contact phase 的足底位置估计(论文把它当作该相位的 contact positions);你实现时通常用接触期中足底位置的时间加权平均或首帧位置作为 pcp_cpc。论文用符号 pcp_cpc 但并未把这个估计细化到一个唯一公式(他们在文中以“contact position during contact phase”描述)。
- 把 Ψθ\Psi_\thetaΨθ 也用作优化中的“可微模块”是关键:这允许优化在满足几何约束的同时,保留与力学一致性的触觉信息(论文强调这一点)。