ArtiPhys · 语义件 → 运动部件:合并 + 关节读出 + 端到端可动 MJCF

稳定线 · 冻结同学的分割基座,只训一个 pairwise 头(merge+joint) · PhysXVerse 监督 · 2026-06-27
← 返回 portal 首页
一句话结果:一个轻量 pairwise 头(base 全冻)同时学会 ① 把过分割的语义件合并成真运动部件(合并 ARI 0.616,中位 1.0,≈ 现状基线 0.32 的两倍;过半物体完美恢复)、 ② 在运动部件间读出关节(轴误差中位 11.1° vs idea1 自回归 90°)。 两者拼成端到端 带真 <joint> 的可动 MJCF,mujoco 里关节绕预测轴真的动起来。

为什么需要这一步:语义分割 ≠ 运动部件

同学的管线把网格切成语义部件,再写 MJCF——但当前是每语义件一个静态 body、零关节。两个真问题:
一个刚体常被切成多个语义件(机身=9件、桌子=桌面+4腿)。PhysXVerse 上 78.9% 的物体存在至少一个多部件运动组(中位 6 语义件 → 3 运动组)。直接喂关节模块 = "每件一关节",错。
Objaverse 无关节 GT → 必须在有关节标注的 PhysXVerse 上训"关节读出"。

统一管线(本工作把中间两步补上)

单图/网格 基座分割
语义件(点mask)
merge 头
语义件→运动组
joint 头
组间 type/轴/limit
带 <joint> 的
可动 MJCF
关键洞察:关节"存在" = 合并的反面。两相邻语义件"无关节/刚性相连"→合并;"有关节"→保留+读关节。 故共享 trunk,统一输出 {merge, exist, type, axis, origin, limit}(~1.5–4M 参数,base 一个权重没动)。

① 合并:把过分割的语义件收缩回运动部件(新能力)

指标学到的 merge 头现状基线
(语义件=运动件)
邻接启发全合一
合并 ARI 均值0.6160.320.020.00
合并 ARI 中位1.000
精确划分率56%
运动组数完全对58%
合并 ARI 0.616 ≈ 现状的 2×,过半物体(中位 ARI=1.0)完美恢复运动部件。 对称合并概率 → 阈值 → 并查集 收缩。GT 来自 PhysXVerse group_info 全成员映射。

② 关节读出(冻基座 + 几何角度损失)

指标idea1(全参SFT自回归)独立关节头统一头(本工作)
轴误差 中位90.0°10.1°11.1°
翻轴率 (>60°)0.6490.1810.245
类型准确率0.97(n=37)0.830.84(n=94)
continuous 类型0.1250.38
prismatic 轴中位3.6°3.5°
统一后关节几乎不退(轴 11.1° vs 独立 10.1°,均碾压 idea1 的 90°),type 反升、continuous 大改善(类别均衡)。 轴用连续回归 + 几何角度损失 1−|cos|(直接惩罚 90° 翻转)。备选(强轴权重):轴中位 5.6°,但合并略弱。

③ 端到端:带真 <joint> 的可动 MJCF(亲眼验证)

每个预测运动组 = 一个刚体(同组同色 = 合并可见),组间写真 <joint>(预测 axis/origin/limit), mujoco 无头扫掠渲染。box 几何取自 target_bboxes(与关节同在 [−0.5,0.5] 系,零对齐风险)。 每张:oracle(GT组+GT关节,坐标系/组装正确性对照) vs pred(我们的合并+关节);右侧 gif = 预测关节真实摆动。

诚实弱点

弱点说明 / 下一步
合并 ~28% 过度合并闭合抽屉/盖看似与机身融合 = 单态信息论下限(与轴翻转同源)→ 需多态/运动观测
残留翻轴 24.5%p75 长尾,疑单态真歧义;备选强轴权重模型可压到 5.6°
Objaverse 推理路未接当前端到端在 PhysXVerse GT 件演示;Objaverse 需把 base 特征提取从 teacher-force GT 换成 forward 预测 layout(同机器,待接)
ArtiPhys 稳定线 · 冻基座 pairwise 头(merge+joint) · 评测 N=94 关节精确配对 + 50 物体合并 ARI/baseline · mujoco 渲染亲眼验证 · 全档 _train_data/joint_head/{REPORT_MERGE_ARTICULATE.md, unified_dataset.py, integrate_partseg.py, mjcf_pipeline.py}