ArtiPhys · 冻基座 + 关节头:把"翻轴"治下去

稳定线 · LLM 点云→关节 · 灾难性遗忘 + 轴 90° 翻转 两个坑一起填 · 2026-06-26
← 返回 portal 首页
一句话结果:把基座全冻(保住它的分割/泛化)、只训一个轻量关节头、轴改用回归 + 几何角度损失(直接惩罚 90°), 关节轴误差中位 90° → 10.1°翻轴率 0.65 → 0.18≤15° 占比 24% → 53%——而且是在更难的评测协议上(全 94 个关节精确配对)。

背景:两个互相纠缠的坑

ArtiPhys 是在同学的分割基座(Qwen3-VL + 点云编码器 + mask decoder, 110 万样本训)上加关节(type/axis/limit)。先前用全参微调 959 个窄域(PhysXVerse 游戏资产)样本,撞到两堵墙:
灾难性遗忘 — 窄数据全参微调把基座"读点云"的能力覆写成"套游戏资产模板",在 Objaverse 上分割崩。
轴 90° 翻转 — 自回归吐"主轴码 token",损失(token-CE)不知道 90° 是几何灾难,模型塌成"猜主轴",62% 翻 90°。

① 为什么必须冻基座:基座本来就好,是我们的窄微调搞坏了

同一个 table(训练没见过的类),基座原生分割 vs 我们全参微调版,逐点 mask 对比。这个对照实验定了"冻基座"的方向。

基座原生分割(未动)— mask 贴合真实几何
我们全参微调版 — 悬空模板,脱离 mesh
左:基座把薄板正确切成 Base/Tabletop,逐点贴几何。右:全参微调后吐出脱离 mesh 的"桌面+4腿+床头板"家具模板,全标"wood"。结论:formulation 和基座都好,是 959 窄数据全参微调造成灾难性遗忘。→ 基座全冻,只加关节头。

② 关节头 + 几何损失:把翻轴压下去

指标idea1(全参 SFT, 自回归吐 token)关节头(冻 base + 角度损失)
轴误差 中位90.0°10.1°
轴误差 均值61.3°26.7°
翻轴率 (>60°)0.650.18
轴 ≤15° 占比24%53%
轴心误差 中位0.180.12
limit 误差(revolute)82°18°
类型准确率0.97(n=37匹配)0.83(n=94全配对)
分类型:prismatic 轴中位 3.6°、revolute 轴中位 16.8° / 类型 0.96。关节头仅 1.46M 可训参数,基座一个权重没动。

干净成功例(绿=GT 轴,红=预测轴,几乎重合)

axis_err ≈ 0.8°(2 关节)
axis_err ≈ 0.1°
绿色 GT 轴和红色虚线预测轴基本重合 → 角度损失让头把轴钉准了。

诚实的尾部例(残留翻轴)

toilet,axis_err=[76°, 17°]——一个关节仍翻、一个接近。残留约 18% 翻轴 + p75 尾部(~49°), 疑似单态真歧义(从单一静态姿态本就判不出哪个主轴是铰链)——这一层训练跨不过,得靠多态/螺旋从运动测轴

意义 & 诚实弱点

两个坑一起填:冻 base → 分割/泛化由构造保住(防遗忘);轴用连续回归 + 角度损失 → 直接惩罚 90°,治翻轴。
坐实翻轴真因:idea1 的"先选主轴码 + abs() + token-CE 不惩罚 90°"是元凶;换连续回归 + 角度损失,大部分翻轴消失 = 翻轴大头属"训练可救"层。
残留 18%:疑似单态信息论下限 → 接多态/螺旋(与本组螺旋不变量方向首尾呼应)。
弱点说明 / 下一步
稀有类型分类prismatic 类型 0.68 / continuous 0.125(仅 68 训练样本)→ 类别均衡采样 / focal loss / 补数据
关节"存在"头不锐正 0.45 / 负 0.13,可用但不够分 → 校准
残留翻轴尾巴~18% + p75 长尾 → 上多态/螺旋,验证是否真·单态歧义
ArtiPhys 稳定线 · 冻基座+pairwise关节头(SEG隐状态特征+轴角度损失) · 评测 N=94 teacher-forced 精确配对(独立核实) · 渲染 matplotlib 3D 亲眼验证 · 全档 _train_data/joint_head/{DESIGN.md,EVAL,viz}