实验定位 区域信号正向 / risk 公式待修正
A65 针对 A64 的核心反例:gso008 iter1 在所有输入视角 depth residual 都改善的情况下,GT Chamfer 反而变差。这里不再只按视角聚合,而是把 A58 candidate mesh 的可见表面采样点投影回输入相机,并按 A51/A35 继承的 face label 统计 surface_improved、surface_conflict、surface_neutral、unobserved_closable 四类区域的 signed depth residual。
结果:最佳 no-GT selector 是 a65_min_region_spread,active-case mean ΔChamfer=-0.0001943、ΔF@5=0.005121,比 A64 best 的 ΔChamfer=-0.0001264 更好;但手写的 a65_per_region_signed_risk 过度偏向早停,mean ΔChamfer=0.0002961,因此不能作为最终公式。
实验设计(Image-2 风格)
模块设计(Image-2 风格)
Residual Decomposition
- 对每个 candidate mesh 采样 70k 个带 face label 的表面点。
- 投影到 4 个输入相机,并用 z-buffer 过滤被遮挡点。
- 与 VGGT depth 做 scale-aligned signed residual:candidate depth - VGGT depth。
- 按 inherited surface region 统计 mean abs、mean signed、positive/negative ratio 和 delta vs carrier。
Selector Audit
min_conflict_abs:只奖励 conflict 区 residual 变小。min_visible_damage:优先保护可信可见区。min_region_spread:压低区域间 residual 变化分歧。signed_risk:线性组合 conflict gain、visible damage、spread 与 signed drift。safe:只有 conflict 改善且 visible 不恶化才接受,否则回 carrier。
实验结果(表格)
selector 汇总
| selector | mean ΔChamfer | mean ΔF@5 | mean conflict abs Δ | mean visible abs Δ | mean region spread | selected iters |
|---|---|---|---|---|---|---|
| a65_min_conflict_abs | 0.0002672 | 0.000399 | -0.0006944 | 0.0004425 | 0.0012124 | {'1': 2, '2': 1} |
| a65_min_visible_damage | -0.0001714 | 0.004988 | 0.0005034 | -0.0002707 | 0.0016574 | {'1': 1, '2': 1, '6': 1} |
| a65_min_region_spread | -0.0001943 | 0.005121 | -0.0003549 | 0.0008399 | 0.0005894 | {'1': 1, '3': 1, '8': 1} |
| a65_per_region_signed_risk | 0.0002961 | 0.000594 | -0.0005525 | 0.0002324 | 0.0011832 | {'1': 3} |
| a65_conflict_gain_visible_safe | -0.0000707 | -0.000080 | -0.0000854 | -0.0000489 | 0.0001189 | {'0': 2, '1': 1} |
| gt_chamfer_oracle | -0.0005581 | 0.011463 | 0.0024179 | -0.0016432 | 0.0023407 | {'3': 1, '8': 2} |
| gt_fscore_oracle | -0.0005167 | 0.011628 | 0.0025958 | -0.0016427 | 0.0024107 | {'4': 1, '8': 2} |
case-level 定位
| case | GT Chamfer iter | risk iter | safe iter | local-damage iters |
|---|---|---|---|---|
| gso_000_input4 | 3 | 1 | 1 | [5, 7] |
| gso_002_input4 | 8 | 1 | 0 | [] |
| gso_008_input4 | 8 | 1 | 0 | [1, 2, 3, 4, 5, 6, 7, 8] |
关键选择明细
| case | selector | iter | ΔChamfer | ΔF@5 | conflict abs Δ | visible abs Δ | region spread | risk |
|---|---|---|---|---|---|---|---|---|
| gso_000_input4 | a65_min_region_spread | 3 | -0.0004159 | 0.000512 | -0.0001724 | 0.0004229 | 0.0002309 | 0.0053993 |
| gso_000_input4 | a65_per_region_signed_risk | 1 | -0.0002122 | -0.000240 | -0.0002562 | -0.0001466 | 0.0003566 | 0.0016828 |
| gso_000_input4 | a65_conflict_gain_visible_safe | 1 | -0.0002122 | -0.000240 | -0.0002562 | -0.0001466 | 0.0003566 | 0.0016828 |
| gso_000_input4 | gt_chamfer_oracle | 3 | -0.0004159 | 0.000512 | -0.0001724 | 0.0004229 | 0.0002309 | 0.0053993 |
| gso_002_input4 | a65_min_region_spread | 8 | -0.0016053 | 0.015600 | -0.0008441 | 0.0019445 | 0.0011549 | 0.0163967 |
| gso_002_input4 | a65_per_region_signed_risk | 1 | -0.0003376 | 0.002772 | -0.0013530 | 0.0006916 | 0.0028106 | 0.0050377 |
| gso_002_input4 | a65_conflict_gain_visible_safe | 0 | 0.0000000 | 0.000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| gso_002_input4 | gt_chamfer_oracle | 8 | -0.0016053 | 0.015600 | -0.0008441 | 0.0019445 | 0.0011549 | 0.0163967 |
| gso_008_input4 | a65_min_region_spread | 1 | 0.0014382 | -0.000748 | -0.0000483 | 0.0001523 | 0.0003823 | 0.0040817 |
| gso_008_input4 | a65_per_region_signed_risk | 1 | 0.0014382 | -0.000748 | -0.0000483 | 0.0001523 | 0.0003823 | 0.0040817 |
| gso_008_input4 | a65_conflict_gain_visible_safe | 0 | 0.0000000 | 0.000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| gso_008_input4 | gt_chamfer_oracle | 8 | 0.0003468 | 0.018277 | 0.0082700 | -0.0072970 | 0.0056363 | 0.0286227 |
gso008 iter1 区域残差
| region | samples | mean abs | abs Δ | mean signed | signed Δ | positive ratio |
|---|---|---|---|---|---|---|
| surface_improved | 18938 | 0.0382949 | 0.0001523 | 0.0007283 | 0.0004034 | 54.6% |
| surface_conflict | 99507 | 0.0289694 | -0.0000483 | 0.0128415 | 0.0012869 | 71.9% |
| surface_neutral | 17797 | 0.0118270 | 0.0004865 | 0.0062121 | 0.0002498 | 83.8% |
| unobserved_closable | 99 | 0.0498781 | -0.0005681 | -0.0355004 | -0.0108477 | 47.5% |
区域信号与 GT Chamfer 相关性
| case | signal | Spearman rho | p-value |
|---|---|---|---|
| gso_000_input4 | conflict_abs_delta | 0.6667 | 0.0499 |
| gso_000_input4 | visible_abs_delta | -0.4833 | 0.1875 |
| gso_000_input4 | region_abs_delta_spread | 0.2833 | 0.4600 |
| gso_000_input4 | per_region_signed_risk | 0.2167 | 0.5755 |
| gso_000_input4 | local_damage_flag | 0.0913 | 0.8153 |
| gso_002_input4 | conflict_abs_delta | -0.1333 | 0.7324 |
| gso_002_input4 | visible_abs_delta | -0.6333 | 0.0671 |
| gso_002_input4 | region_abs_delta_spread | -0.2167 | 0.5755 |
| gso_002_input4 | per_region_signed_risk | -0.9667 | 0.0000 |
| gso_002_input4 | local_damage_flag | -0.2739 | 0.4758 |
| gso_008_input4 | conflict_abs_delta | 0.4167 | 0.2646 |
| gso_008_input4 | visible_abs_delta | -0.2167 | 0.5755 |
| gso_008_input4 | region_abs_delta_spread | 0.4333 | 0.2440 |
| gso_008_input4 | per_region_signed_risk | 0.3000 | 0.4328 |
| gso_008_input4 | local_damage_flag | 0.5477 | 0.1269 |
可视化结果
实验结论
- A65 的核心正结果是:区域级 signal 比 A64 的 view-level signal 更接近 GT,best no-GT ΔChamfer 从 A64 的 -0.0001264 改善到 -0.0001943,gap-to-GT 从 0.0004317 降到 0.0003638。
- gso008 iter1 被 A65 标成 local damage:它的 GT ΔChamfer=0.0014382,同时 visible abs residual 变差 0.0001523,说明 A64 的 all-view-improve 确实掩盖了局部可信区损伤。
- 只看 conflict 区 residual 会选错:
a65_min_conflict_abs的 mean ΔChamfer=0.0002672,说明“冲突区更像 VGGT”不等于整体 mesh 更对。 - 手写
signed_risk也是负结果:它偏向 iter1,证明下一步不能靠人工线性公式,要做 sampler-time residual budget 或学习式校准。
下一步想法
- A66:把 A65 的 per-region signed residual 从后验 selector 前移到 sparse sampler hook,作为每步可观测预算,而不是最后选 mesh。
- 在 gso008 上优先验证:当 visible 区出现 signed/abs damage 时,是否能 damp outward update 或缩小局部 step。
- 把
region_spread从 hard selector 改成 differentiable/continuous budget:约束每一步不制造区域间 residual 分歧。 - 补充 silhouette residual 与 normal residual,验证是否能区分“depth 变好但轮廓/法线变差”的局部错觉。