返回 portal 首页

从 Optimal Transport 到 SceneTransporter,再到 PAct

这页是路线二的持续讲义:先把 OT 当成“在保留总质量的前提下寻找最便宜匹配”的数学工具讲清楚,再解释 SceneTransporter 为什么用 transport 思想处理场景变化,最后落到我们能怎样把它变成 PAct 的结构先验,而不是凭空改网络。

\[ \min_{\mathbf P \in \mathbb R_+^{n\times m}} \langle \mathbf C,\mathbf P\rangle \quad \text{s.t.}\quad \mathbf P\mathbf 1_m=\mathbf a,\quad \mathbf P^\top\mathbf 1_n=\mathbf b \]
source patch: door panel
source patch: handle
source patch: cabinet body

1. OT 到底解决什么

给定源分布 \(\mathbf a\)、目标分布 \(\mathbf b\) 和运输代价矩阵 \(\mathbf C\),OT 求一个 transport plan \(\mathbf P\)。\(\mathbf P_{ij}\) 表示把第 \(i\) 个源 token 的多少质量分配到第 \(j\) 个目标 token。约束保证每个源 token 都被解释,每个目标 token 也被填满。

在铰链物体里,token 可以是 mesh patch、part proposal、joint hypothesis 或语义节点。代价矩阵可以同时编码几何距离、法向一致性、语义相似度、运动可解释性。

2. 为什么需要 Sinkhorn

原始 OT 是线性规划,直接解会慢且不可微。加熵正则后得到:

\[ \min_{\mathbf P \in U(\mathbf a,\mathbf b)} \langle \mathbf C,\mathbf P\rangle +\varepsilon \sum_{ij}\mathbf P_{ij}(\log \mathbf P_{ij}-1) \]

它能用 Sinkhorn 迭代高效求解,形式是 \(\mathbf P=\operatorname{diag}(\mathbf u)\mathbf K\operatorname{diag}(\mathbf v)\),其中 \(\mathbf K=\exp(-\mathbf C/\varepsilon)\)。

3. SceneTransporter 的关键启发

SceneTransporter 的精神不是“预测一个位姿就完事”,而是把场景变化看成 source structure 到 target structure 的可解释搬运。对我们来说,它启发了两层东西:part 间对应关系应当显式建模,运动变化应当沿着结构图传播。

如果只有独立 part 预测,PAct 容易出现“零件是对的但关节轴乱飞”。OT 可以作为连接 patch、part、joint 的软约束,让局部证据汇总成全局一致的 articulation graph。

交互模块:看 \(\varepsilon\) 和代价如何影响对应关系

越小的 \(\varepsilon\) 越接近硬匹配,越大的 \(\varepsilon\) 越平滑。真实训练时我们希望前期平滑、后期变尖锐,避免模型一开始就被错误对应锁死。

融入 PAct 的三条具体路线

Patch-to-Part Transport

把图像/点云 patch 到候选 part 的 assignment 作为可微中间层,约束每个 part 的几何证据来源,减少孤立薄片、错贴纹理和零件漂移。

Part-to-Joint Transport

将候选 part 对映射到 joint hypothesis。代价项包含轴线到接触边界距离、闭合状态装配误差、开合状态碰撞与脱节惩罚。

Graph-to-Graph Transport

把生成的 articulation graph 与真实数据集中的结构模板做 soft matching。这里更接近 Gromov-Wasserstein:保留节点间关系,而不是只看点到点距离。

\[ \mathcal L = \mathcal L_{\text{recon}} + \lambda_1 W_\varepsilon(\text{patch},\text{part}) + \lambda_2 W_\varepsilon(\text{part-pair},\text{joint}) + \lambda_3 \operatorname{GW}_\varepsilon(G_{\text{pred}},G_{\text{native}}) \]

下一步实验设计

1. 只读复现:保留 PAct 官方推理代码,先记录每个输出的 part、joint、axis、range 失败类型。 2. 离线 benchmark:用我们发布的原生铰链资产库构造 patch/part/joint 三层 GT。 3. 轻量插拔:先在后处理和 loss probe 层验证 OT assignment 是否能解释失败,再决定是否进入模型训练。 4. 不碰源数据:所有 transport 结果单独保存为 method output,不覆盖统一数据集。