实验定位 Chamfer 正向 / F-score 负向
A66 把 A65 的区域残差信号从“后验选 mesh”推进到“在线预算动作”的近似验证:把 A58 的同拓扑 iterative mesh 当作 sampler trajectory proxy,每一步根据 visible damage、region spread 和 carrier uncertainty 决定接受、停止或 damp 更新。
主策略 a66_uncertainty_damped_budget 在 replay 口径下达到 mean ΔChamfer=-0.0004091,优于 A65 replay 的 -0.0001127;但 mean ΔF@5=-0.000644,说明 micro-step damping 牺牲了覆盖/召回。
注意:A66 对 counterfactual damped mesh 重新采样评测,已有候选的精确排序会受 surface sampling seed 影响。因此这里重点看同一 replay 口径下的 policy 对比和 gso008 lambda sweep,不把 replay oracle 当作最终上界。
实验设计(Image-2 风格)
模块设计(Image-2 风格)
Online Budget Actions
strict_visible_stop:一旦 local damage 或 visible damage 超预算就停止。uncertainty_damped_budget:低/中冲突 case 取最新 low-spread update;高冲突饱和 case 只允许 micro-step。lambda sweep:对 gso008 的 iter1 做 0 到 1 的 update blending,验证 damp 幅度。
Design Constraint
visible damage 不能直接当硬 veto,因为 gso002 的真实改善也伴随 visible residual 轻微变差;但 gso008 的 high-conflict/low-unobserved carrier 不能 full-step 接收,需要按 uncertainty taxonomy 缩小更新幅度。
实验结果(表格)
policy 汇总
| policy | mean ΔChamfer | mean ΔF@5 | watertight | mean faces | iters | lambdas |
|---|---|---|---|---|---|---|
| carrier_control | 0.0000000 | 0.000000 | 100.0% | 355229 | {'gso_000_input4': 0, 'gso_002_input4': 0, 'gso_008_input4': 0} | {'gso_000_input4': 1.0, 'gso_002_input4': 1.0, 'gso_008_input4': 1.0} |
| a65_min_region_spread | -0.0001127 | 0.000077 | 100.0% | 355229 | {'gso_000_input4': 3, 'gso_002_input4': 8, 'gso_008_input4': 1} | {'gso_000_input4': 1.0, 'gso_002_input4': 1.0, 'gso_008_input4': 1.0} |
| a66_strict_visible_stop | -0.0000010 | -0.000537 | 100.0% | 355229 | {'gso_000_input4': 1, 'gso_002_input4': 0, 'gso_008_input4': 0} | {'gso_000_input4': 1.0, 'gso_002_input4': 1.0, 'gso_008_input4': 1.0} |
| a66_uncertainty_damped_budget | -0.0004091 | -0.000644 | 100.0% | 355229 | {'gso_000_input4': 8, 'gso_002_input4': 8, 'gso_008_input4': 1} | {'gso_000_input4': 1.0, 'gso_002_input4': 1.0, 'gso_008_input4': 0.125} |
| gt_chamfer_oracle | 0.0002434 | 0.002906 | 100.0% | 355229 | {'gso_000_input4': 3, 'gso_002_input4': 8, 'gso_008_input4': 8} | {'gso_000_input4': 1.0, 'gso_002_input4': 1.0, 'gso_008_input4': 1.0} |
case 路由
| case | conflict | unobserved | A65 iter | A66 iter | lambda | A66 ΔChamfer | strict ΔChamfer | route reasons |
|---|---|---|---|---|---|---|---|---|
| gso_000_input4 | 13.1% | 23.59% | 3 | 8 | 1.000 | -0.0001521 | -0.0000029 | moderate/low conflict route; pick latest iter under region_spread_budget=0.00125 |
| gso_002_input4 | 20.2% | 2.65% | 8 | 8 | 1.000 | -0.0008495 | 0.0000000 | moderate/low conflict route; pick latest iter under region_spread_budget=0.00125 |
| gso_008_input4 | 70.5% | 0.02% | 1 | 1 | 0.125 | -0.0002257 | 0.0000000 | saturated conflict route; conflict_ratio=0.7050 >= 0.55; unobserved_ratio=0.0002 <= 0.02; damp iter001 update with lambda=0.12 |
关键 mesh 输出
| case | policy | iter | lambda | ΔChamfer | ΔF@5 | conflict abs Δ | visible abs Δ | region spread | mesh file |
|---|---|---|---|---|---|---|---|---|---|
| gso_000_input4 | a65_min_region_spread | 3 | 1.000 | 0.0000655 | -0.004062 | 0.0002761 | 0.0003195 | 0.0002792 | mesh_a65_min_region_spread_iter003_lambda1.00.obj |
| gso_000_input4 | a66_strict_visible_stop | 1 | 1.000 | -0.0000029 | -0.001611 | -0.0001892 | 0.0008157 | 0.0003996 | mesh_a66_strict_visible_stop_iter001_lambda1.00.obj |
| gso_000_input4 | a66_uncertainty_damped_budget | 8 | 1.000 | -0.0001521 | -0.007187 | 0.0025821 | 0.0004275 | 0.0011234 | mesh_a66_uncertainty_damped_budget_iter008_lambda1.00.obj |
| gso_002_input4 | a65_min_region_spread | 8 | 1.000 | -0.0008495 | 0.006471 | 0.0009929 | 0.0017563 | 0.0016559 | mesh_a65_min_region_spread_iter008_lambda1.00.obj |
| gso_002_input4 | a66_strict_visible_stop | 0 | 1.000 | 0.0000000 | 0.000000 | -0.0000104 | 0.0001337 | 0.0020622 | mesh_a66_strict_visible_stop_iter000_lambda1.00.obj |
| gso_002_input4 | a66_uncertainty_damped_budget | 8 | 1.000 | -0.0008495 | 0.006471 | 0.0027893 | 0.0019506 | 0.0022070 | mesh_a66_uncertainty_damped_budget_iter008_lambda1.00.obj |
| gso_008_input4 | a65_min_region_spread | 1 | 1.000 | 0.0004460 | -0.002176 | -0.0001142 | 0.0005031 | 0.0006793 | mesh_a65_min_region_spread_iter001_lambda1.00.obj |
| gso_008_input4 | a66_strict_visible_stop | 0 | 1.000 | 0.0000000 | 0.000000 | -0.0001835 | -0.0004461 | 0.0003931 | mesh_a66_strict_visible_stop_iter000_lambda1.00.obj |
| gso_008_input4 | a66_uncertainty_damped_budget | 1 | 0.125 | -0.0002257 | -0.001215 | 0.0000897 | 0.0000339 | 0.0001448 | mesh_a66_uncertainty_damped_budget_iter001_lambda0.12.obj |
gso008 lambda sweep
| lambda | ΔChamfer | ΔF@5 | conflict abs Δ | visible abs Δ | region spread |
|---|---|---|---|---|---|
| 0.000 | 0.0000000 | 0.000000 | -0.0001996 | -0.0004517 | 0.0006088 |
| 0.125 | -0.0002257 | -0.001215 | 0.0000982 | -0.0001759 | 0.0002125 |
| 0.250 | 0.0006682 | -0.002225 | -0.0001148 | -0.0002928 | 0.0002953 |
| 0.500 | 0.0002535 | -0.002242 | -0.0006283 | 0.0003035 | 0.0003595 |
| 0.750 | 0.0003967 | -0.001393 | 0.0000312 | 0.0000135 | 0.0002887 |
| 1.000 | 0.0004460 | -0.002176 | -0.0002343 | 0.0004445 | 0.0006104 |
可视化结果
实验结论
- 严格 visible-lock stop 是负结果:mean ΔChamfer=-0.0000010、ΔF@5=-0.000537,说明保护可见区不能简单做硬规则。
- uncertainty-conditioned damping 是更合理的方向:在 gso008 这类 conflict ratio 高、unobserved ratio 极低的饱和冲突 case,只允许 λ=0.125 micro-step,避免 A65 full-step 直接接收错误局部更新。
- 主策略在 Chamfer 上显著正向,但 F@5 负向,说明它更像“防止平均表面漂移”的预算,还没有解决召回/覆盖。
- 论文主线进一步收窄:不是后验 selector,也不是全局 visible lock,而是 per-vertex/per-region 的 sampler-time damping,需要同时约束 Chamfer-like distance 和 coverage-like recall。
下一步想法
- A67:把 A66 的 global λ 改成 per-vertex λ,对 visible-damage 区和 conflict 区分别 damp,而不是整 mesh blending。
- 加入 F-score/coverage 代理:用 silhouette recall 或 GT-free surface support recall 防止 micro-step 只优化 Chamfer 却损失覆盖。
- 把 A66 的 saturated-conflict route 前移到 sparse sampler:高冲突低 unobserved 的 case,每步限制 support expansion 和 depth residual step。
- 扩大到 10-case active/defer set,验证 λ=0.125 是否只是 gso008 的单例现象。