枢纽
数据集PoseTrack, 3DPW
输入模态vision

PHALP:先把人「抬进 3D 世界」,再跟踪——遮挡就不再是问题

Jathushan Rajasegaran, Georgios Pavlakos, Angjoo Kanazawa, Jitendra Malik(UC Berkeley)。arXiv:2112.04477 (2021, CVPR 2022)。 motion priormonocular 3D trackingobject permanence

🧠 一句话心智模型:2D 跟踪里「人被遮挡」=「人消失了」,因为图像里没有像素可跟。但在 3D 世界里人不会消失——只是被挡住了。PHALP 把每个人都「抬」到 3D(姿态 + 外观 + 位置),像卡尔曼滤波一样预测他下一帧的 3D 状态,遮挡时状态继续按动力学演化,等他再次出现就用 3D 距离做匹配。这就是「object permanence」内建进系统的样子。

🎯 为什么重要:2D 跟踪的根本痛点是「投影」

2021 年前,多人跟踪的主流是「2D 检测 + 关联」——每帧用 detector 检出框,再用 Re-ID 特征或 2D 运动模型把框连起来。Rajasegaran 等人 2021 年的 HMAR [32] 已经证明 3D 表示更适合跟踪。PHALP 把这个想法做成完整系统,并用控制论的「状态估计 + 预测 + 关联」框架重写跟踪问题。

2D 跟踪的三个根本痛点
  1. 遮挡 = 消失:图像里没像素就跟不住。但婴儿都知道物体被遮挡并不消失(object permanence)。
  2. 外观依赖姿态:同一个人的衣纹、形状在「站」和「蹲」下完全不同,2D 像素特征会误判为两个人。
  3. 深度丢失:远处的人「靠近镜头」时在 2D 里加速,2D 运动模型(CVA)失效。

PHALP 的回答:把所有跟踪对象都放进 3D 世界,用 3D 状态做预测和匹配。这样三个痛点一起解决:3D 状态在遮挡下持续演化;外观在 UV map 上与姿态解耦;深度用「nearness」$n = \log(1/z)$ 显式建模。

💡 核心思想:Perception → Tracklet → Prediction → Association(控制论标准管线)

PHALP 把跟踪严格翻译成「状态估计 + 数据关联」经典框架,每一步都有明确的概率解释。

① 单帧 3D 抬升(HMAR+mask) 3D 姿态 p(SMPL) 3D 外观 a(UV map + 可见) 3D 位置 l = (x, y, n) nearness n = log(1/z) + mask 输入应对拥挤 ② Tracklet 时序聚合 + 预测 外观 Φ_A UV 空间加权平均(visibility 自适应 α) 位置 Φ_L 线性回归 + 预测区间 δ 姿态 Φ_P Transformer 聚合(HMMR 改) 可处理缺失帧(mask attention) ③ 概率关联(5 个参数) 每属性单独条件分布: P_A, P_P ∝ Cauchy(Δ) P_XY, P_N ∝ Exp(Δ/δ) 联合(假设独立): P = P_A · P_P · P_XY · P_N Cost = -log P → Hungarian 算法 ④ 身份标签 每框一个 ID 遮挡后仍能恢复 关键:object permanence 内建 人被遮挡 → 单帧 detector 没输出 → 但 tracklet 的 3D 状态依然在按动力学演化 → 人重新出现时,预测的 3D 状态和单帧检测做关联 → 身份自动恢复 "It is not the case that 'Out of sight, out of mind'!" —— 论文原话
图 1:PHALP 把跟踪严格分成四步。最关键的是②和③:tracklet 维护一个随时间演化的 3D 状态,关联阶段用概率视角把四个属性的距离变成统一 cost。

🛠️ 五个关键设计选择

设计具体做法为什么这样做
① 用 nearness $n=\log(1/z)$ 代替深度 z3D 位置写成 $l=(x, y, n)^T$,对三维分别独立线性回归透视投影是 $1/z$ 缩放,深度大时小扰动→图像大位移;nearness 让「线性回归 + 常速假设」在 3D 上仍然成立(虽然 2D 上不成立)
② 外观在 UV 空间聚合每帧把可见像素贴到 SMPL 的 UV map,tracklet 用加权平均 $\hat{A}_t = (1-\alpha)\hat{A}_{t-1} + \alpha A_t$,α 由可见性决定UV map 把外观从姿态中解耦——同一个人不同姿态的 UV 贴图可以对齐相加,2D 像素做不到
③ 姿态用 Transformer 聚合HMMR 的「movie strip」改用 Transformer,通过 mask attention 处理缺失帧遮挡时单帧 detector 没输出,tracklet 必须能处理「中间缺帧」的时序建模
④ 不同属性用不同距离分布外观/姿态用 Cauchy 分布(重尾),位置/深度用 Exponential 分布(按预测区间归一化)从 PoseTrack 数据上经验拟合:外观/姿态的 inlier 分布有长尾(同人多角度),位置则更紧凑
⑤ Shot change 时扔掉位置 cost检测到镜头切换后,关联 cost 只保留 P_A · P_P(外观 + 姿态)外观和 3D 姿态对视角不变,但镜头切换后 3D 位置完全无效
🔮 直觉:为什么 PHALP 只要 5 个超参就能调好?
因为四个属性的距离→概率映射都有闭式分布(Cauchy / Exp),分布形状是数据经验决定的,每个分布只剩一个 scale 参数 β。最后加一个 Hungarian 阈值 β_th,共 5 个。作者用 Nelder-Mead 在 PoseTrack 上一次性优化完,然后所有数据集共用——不需要 per-dataset 调参。这种「少超参 + 概率解释」的设计,让系统非常 robust。

📊 关键结果(论文 Table 1 / Table 2)

实验对比关键数字
SOTA 对比 · PoseTrack
(Table 2)
IDs↓541(T3DP 655;Tracktor 702;Trackformer 1263;AlphaPose 2220)
MOTA↑ / IDF1↑ / HOTA↑58.9 / 76.4 / 52.9(HOTA 也是最佳)
SOTA 对比 · MuPoTS
(Table 2)
IDs↓22(T3DP 38;Tracktor 53;Trackformer 43)
MOTA↑ / IDF1↑ / HOTA↑66.2 / 81.4 / 59.4
SOTA 对比 · AVA
(Table 2,含镜头切换)
IDs↓227(T3DP 240;Tracktor 289;FlowPose 452)
IDF1↑62.7
消融 · PoseTrack
(Table 1)
w/o 3D appearanceIDs 541 → 632(+91)
w/o 3D poseIDs 541 → 558(+17,最小影响)
w/o 3D locationIDs 541 → 948(+407,影响最大
w/o nearness(仅 xy)IDs 541 → 622(+81,证明深度必要)
两个最值得记的结论
(1) 3D location 是最重要的 cue(去掉 IDs 涨 407),而 nearness(深度)单独贡献 81——这正面回答了「2D 跟踪的根本缺陷」。
(2) 3D pose 单独看贡献小(17),但它在「外观相似的人」和「镜头切换」场景下不可替代——AVA 数据集(电影,大量镜头切换)上的优势正来自此。

🌐 在领域中的位置

HMR(单帧 SMPL 回归) HMMR(视频姿态 + 「movie strip」时序) HMAR(HMR + 外观头) PHALP(3D 跟踪 = 状态估计 + 关联)⭐ 4D Humans / TRACIE / SLAHMR(PHALP 成标准 3D 跟踪器)

横向:vs Tracktor / Trackformer(2D 跟踪 SOTA)—— PHALP 在 IDs 上大幅减少(如 PoseTrack 上 Trackformer 1263 → PHALP 541,约 57% 降幅)。vs T3DP(HMAR 同组的早期 3D 跟踪)—— PHALP 加了姿态预测 + 概率关联,IDs 再砍 17%。这篇论文之后,PHALP 成了视频人体 3D 重建的事实标准预处理器(4D Humans 直接用 PHALP 跟踪 + SMPL 输出)。

❓ 常见误区

PHALP 是「3D 人体重建」方法吗?

不是,它是跟踪方法。它确实为每个被跟踪的人生成 3D SMPL 参数,但这只是中间表示——目标是从视频里给每个人一个稳定的 ID。当然,它的副产品(每帧 3D 网格)非常好用,所以后来被很多 4D 重建工作直接拿来当 backbone。

为什么位置预测用线性回归这么「朴素」?

因为作者在 3D(nearness 空间)里做线性化——3D 上的常速对应 2D 上的非常速(人靠近相机会看起来加速),但 3D 局部线性化永远合理。再用预测区间 $\delta$ 表达「这个预测有多不确定」,把这个不确定性传到关联阶段。这就是经典卡尔曼滤波的思路,只是用 nearness 参数化让线性假设重新成立。

外观用 UV map,姿态用 Transformer——为什么不用端到端大模型?

因为各属性的时间动力学本质不同:外观变化慢(衣服不变)→ 简单加权平均就够;姿态变化快且有周期 → 需要 Transformer 建模;位置常速 → 线性回归。把所有这些塞进一个大模型反而难训,模块化让每块用最合适的工具。

「object permanence」是怎么实现的,需要专门训练吗?

不需要专门训练。这是架构带来的涌现属性:tracklet 的状态在遮挡时继续按动力学演化(外观不变、姿态用 Transformer 预测、位置线性外推),等检测重新出现时做关联。论文强调「It is not the case that "Out of sight, out of mind"」——因为系统不在 2D 像素上跟踪,而在 3D 状态上跟踪。