scripts/report_observability_supervision.py
#!/usr/bin/env python3
"""Chinese scientific report from saved statistics only; never load query media or states."""
# ruff: noqa: E501 -- preserve Chinese scientific report sentences for editorial review
import argparse
import json
from pathlib import Path
VARIANTS = ("S0", "S1", "S2", "S3")
REGIONS = ("OBS0", "OBS1", "OBS2PLUS")
def read(root, name):
return json.loads((root / (name + ".json")).read_text())
def number(value):
return "UNDEFINED" if value is None else f"{value:.6f}"
def stat(value):
if value["mean"] is None:
return "未定义(空区域;不填零)"
ci = value["ci95"]
return (
f"{value['mean']:.6f},95% CI [{ci[0]:.6f}, {ci[1]:.6f}]"
if ci is not None
else number(value["mean"])
)
def direction(observability, supervision):
if supervision["GEOMETRY_AWARE_CARRIER_RECOMMENDED"]:
return "下一轮单独研究16³ geometry-aware carrier,并保留显式 ray free-space/surface 监督与独立验证;本轮不训练。"
if observability["OBSERVABILITY_STATUS"] == "UNOBSERVED_REGION_DOMINANT":
return "优先研究 geometry completion / learned prior;有限可见约束不能直接确定未观察表面,仍需独立实验区分先验与真实恢复。"
if observability["OBSERVABILITY_STATUS"] in ("OBSERVED_REGION_FAILURE", "MIXED"):
return "优先研究 visibility-aware multi-view lifting / cost volume / MVS-style geometry reasoning;若联合监督未稳定缩小 gap,不继续堆叠 loss。"
return "证据不足以选择单一机制。先保留已冻结定义,研究多视图几何推断、可见性与证据充分性;不直接启动 carrier 训练。"
def run(root, docs=None):
root = Path(root)
docs = Path(docs) if docs else root
obs = read(root, "observability_analysis")
sup = read(root, "supervision_analysis")
gap = read(root, "gap_closure_analysis")
control = read(root, "wrong_scene_analysis")
bootstrap = read(root, "bootstrap_results")
cost = read(root, "cost_analysis")
decisions = read(root, "decision_summary")
if sup["primary_variant"] != "S3" or decisions["BEST_SUPERVISION"] != "S3_PREDECLARED_PRIMARY":
raise PermissionError("Report cannot select a hindsight supervision winner")
if any(
decisions[k] is not False
for k in ("FINAL_HOLDOUT_TOUCHED", "NEW_CARRIER_TRAINED", "DYNAMIC_TTT_RUN")
):
raise PermissionError("Forbidden experiment activity recorded")
groups, references, regions = sup["groups"], sup["reference_groups"], obs["regions"]
contrasts = sup["overall_absrel_comparisons"]
main_gain = contrasts["S0_minus_S3"]
main_closure = gap["variants"]["S3"]
recommendations = direction(obs, sup)
tests = read(root, "tests") if (root / "tests.json").exists() else {"status": "PENDING"}
integrity = (
read(root, "integrity") if (root / "integrity.json").exists() else {"status": "PENDING"}
)
baseline = (
read(root, "baseline_reproduction")
if (root / "baseline_reproduction.json").exists()
else {"status": "PENDING"}
)
terminal = {
"N_SCENES": len(obs["scene_ids"]),
"BASELINE_REPRO_STATUS": baseline["status"],
"BASELINE_QUERY_ABSREL": number(
groups["S0|direct"]["query_metrics"]["depth_absrel"]["mean"]
),
"QUERY_ORACLE_ABSREL": number(
references["ORACLE|direct"]["query_metrics"]["depth_absrel"]["mean"]
),
"BASE_CONTEXT_ORACLE_GAP": number(gap["base_gap"]["mean"]),
}
for region in REGIONS:
terminal[f"{region}_FRACTION"] = number(regions["S0"][region]["pixel_fraction"]["mean"])
for region in REGIONS:
terminal[f"{region}_BASE_ABSREL"] = number(
regions["S0"][region]["conditional_absrel"]["mean"]
)
terminal[f"{region}_ORACLE_ABSREL"] = number(
regions["ORACLE"][region]["conditional_absrel"]["mean"]
)
terminal["OBSERVABILITY_STATUS"] = obs["OBSERVABILITY_STATUS"]
for variant, label in zip(
VARIANTS, ("RENDER_ONLY", "FREE_SPACE", "SURFACE", "FREE_SURFACE"), strict=True
):
terminal[f"{variant}_{label}_ABSREL"] = number(
groups[f"{variant}|direct"]["query_metrics"]["depth_absrel"]["mean"]
)
terminal.update(
BEST_SUPERVISION="S3_PREDECLARED_PRIMARY_NOT_HINDSIGHT_WINNER",
BEST_SUPERVISION_GAIN=number(main_gain["mean"]),
BEST_SUPERVISION_CI=main_gain["ci95"],
GAP_CLOSED=number(main_closure["gap_closed"]["mean"]),
GAP_CLOSED_FRACTION=number(main_closure["gap_closed_fraction"]["value"]),
WRONG_SCENE_DAMAGE_BEST=number(control["contrasts"]["S3|wrong_scene"]["mean"]),
GEOMETRY_SUPERVISION_STATUS=sup["GEOMETRY_SUPERVISION_STATUS"],
VISIBILITY_AWARE_FUSION_RECOMMENDED=sup["VISIBILITY_AWARE_FUSION_RECOMMENDED"],
GEOMETRY_AWARE_CARRIER_RECOMMENDED=sup["GEOMETRY_AWARE_CARRIER_RECOMMENDED"],
NEXT_CARRIER_DIRECTION=recommendations,
FINAL_HOLDOUT_TOUCHED=False,
NEW_CARRIER_TRAINED=False,
DYNAMIC_TTT_RUN=False,
TESTS=tests["status"],
FINAL_INTEGRITY=integrity["status"],
REPORT_DIR=str(docs),
)
lines = [
"# EXP-3D-CONTEXT-OBSERVABILITY-SUPERVISION-V1",
"",
f"预先指定的主比较 S0−S3 query AbsRel gain={stat(main_gain)}。"
f"OBSERVABILITY_STATUS={obs['OBSERVABILITY_STATUS']};GEOMETRY_SUPERVISION_STATUS={sup['GEOMETRY_SUPERVISION_STATUS']}。",
"",
"本轮是17个 CAPACITY_DEV_EXPOSED 场景上的可观测性与几何监督归因,不是独立 validation、final test 或资格确认。BEST_SUPERVISION 固定指 S3(PREDECLARED_PRIMARY),没有根据 query 分数更换主方法。",
"",
"保持16³、renderer64、旧 frozen GT-free bounds、10000 steps、Adam/LR/clip/RGB loss/rendered-depth loss/regularization、context/query IDs 不变。lambda_free=lambda_surface=0.1,tau_surface=0.5×||bounds extent/16||,epsilon=1e-8,均预先冻结,未按 query 调参。",
"",
"| Variant | Context AbsRel | Overall query AbsRel (95% CI) | RGB MSE | RMSE | δ1 | Opacity | Coverage |",
"|---|---:|---|---:|---:|---:|---:|---:|",
]
for variant in VARIANTS:
cell = groups[f"{variant}|direct"]
q = cell["query_metrics"]
values = " | ".join(
number(q[m]["mean"])
for m in ("rgb_mse", "depth_rmse", "depth_delta1", "opacity", "coverage")
)
lines.append(
f"| {variant} | {number(cell['context_metrics']['depth_absrel']['mean'])} | {stat(q['depth_absrel'])} | {values} |"
)
lines.extend(
[
"",
"Coverage 是预测 opacity>1e-6 的比例,不等于真实表面可见性。下面区域标签是 query GT surface 与 context GT nearest-depth 一致性诊断,只有全部136 states 完成并 seal 后才计算。",
"",
"| Region | Pixel fraction (scene equal) | S0 conditional AbsRel | Oracle conditional AbsRel | S0−oracle gap | Covered scenes / all | Empty scenes |",
"|---|---:|---|---|---|---:|---:|",
]
)
for region in REGIONS:
conditional = regions["S0"][region]["conditional_absrel"]
lines.append(
f"| {region} | {number(regions['S0'][region]['pixel_fraction']['mean'])} | {stat(conditional)} | {stat(regions['ORACLE'][region]['conditional_absrel'])} | {stat(obs['base_conditional_context_oracle_gaps'][region])} | {conditional['n_covered_scenes']}/{conditional['n_scenes']} | {conditional['empty_mask_scene_count']} |"
)
angle_regions = ("ANGLE_0_5", "ANGLE_5_15", "ANGLE_15_30", "ANGLE_GT30")
angle_text = ";".join(
f"{r}: {stat(regions['S0'][r]['conditional_absrel'])},scene coverage={number(regions['S0'][r]['conditional_absrel']['scene_coverage'])}"
for r in angle_regions
)
contribution_text = ";".join(
f"{r}={stat(regions['S0'][r]['additive_error_contribution'])}" for r in REGIONS
)
regional_gain_text = ";".join(
f"{r}: conditional gain={stat(sup['regional_gains'][r]['S3']['conditional_gain'])},overall additive gain contribution={stat(sup['regional_gains'][r]['S3']['additive_gain_contribution'])}"
for r in REGIONS
)
context_changes = "; ".join(
f"{v} context={number(groups[v + '|direct']['context_metrics']['depth_absrel']['mean'])}, query={number(groups[v + '|direct']['query_metrics']['depth_absrel']['mean'])}"
for v in VARIANTS
)
answers = [
(
"query geometry 中多少属于 OBS0 / OBS1 / OBS2PLUS?",
"见上表场景等权 pixel fractions;三类保留全部 GT-valid pixels,未因低可观测性删掉 query。OBS0 不等同于物理上绝对不可见,只表示该容差/采样近似下没有 visible support。",
),
(
"当前误差主要集中在哪种可观测性区域?",
"总体 AbsRel 的可加区域贡献分别为 "
+ contribution_text
+ "。贡献相加重建 overall,不能只凭某个小区域 conditional error 很高就说它主导总体误差。正式状态="
+ obs["OBSERVABILITY_STATUS"]
+ "。",
),
(
"OBS2PLUS 上 context-direct 与 query oracle 还差多少?",
stat(obs["base_conditional_context_oracle_gaps"]["OBS2PLUS"])
+ "。这是覆盖场景上的条件差值,空区域/低覆盖会限制分类;不把 A/B 或像素当独立 scene。",
),
(
"triangulation angle 与 error 有什么关系?",
angle_text
+ "。只对>=2 visible views计算;主 bins基于最大夹角[0,5],(5,15],(15,30],>30,median angle及bins另存。这里只描述关联,不推断视差因果。",
),
(
"occluded regions 的 error 是否更高?",
"OCCLUDED_ANY S0 conditional="
+ stat(regions["S0"]["OCCLUDED_ANY"]["conditional_absrel"])
+ ";CONFLICT_ANY="
+ stat(regions["S0"]["CONFLICT_ANY"]["conditional_absrel"])
+ ";overall="
+ stat(groups["S0|direct"]["query_metrics"]["depth_absrel"])
+ "。这些是重叠区域的描述性比较,没有额外预注册的遮挡因果检验;不能把条件均值差自动解释为显著因果伤害。",
),
(
"Free-space supervision 是否改善 query?",
"S0−S1="
+ stat(contrasts["S0_minus_S1"])
+ ";正值代表净总体收益,稳定 practical gain 还需均值≥.02、CI下界>0、≥75%场景不变差。",
),
(
"Surface supervision 是否改善 query?",
"S0−S2="
+ stat(contrasts["S0_minus_S2"])
+ ";使用同一冻结 practical gate,不能仅凭方向为正宣布有效。",
),
(
"两者联合是否互补?",
"S0−S3="
+ stat(main_gain)
+ ";S1−S3="
+ stat(contrasts["S1_minus_S3"])
+ ";S2−S3="
+ stat(contrasts["S2_minus_S3"])
+ f"。预注册分类={sup['GEOMETRY_SUPERVISION_STATUS']};不把联合均值最低自动称为互补。",
),
(
"主 geometry supervision 缩小多少 context→oracle gap?",
"S3 GAP_CLOSED="
+ stat(main_closure["gap_closed"])
+ ";GAP_CLOSED_FRACTION="
+ number(main_closure["gap_closed_fraction"]["value"])
+ ",比例CI="
+ str(main_closure["gap_closed_fraction"]["ci95"])
+ "。比例是描述性 gap closure,不是恢复理论最优的百分比;bootstrap 分母非正的未定义抽样数="
+ str(main_closure["gap_closed_fraction"]["undefined_nonpositive_base_draws"])
+ "。",
),
(
"改善来自 observed 还是 unobserved regions?",
regional_gain_text
+ "。用有符号可加贡献判断总体来源;OBS0改善可能由regularization/prior/间接一致性引起,没有证据时不能称为从观察恢复了未见真值。",
),
(
"是否牺牲 context fit 但改善 query?",
context_changes
+ "。同时检查上方paired query gain,不因context误差单独升高就拒绝方法,也不因context更好就接受。",
),
(
"wrong-scene damage 是否仍然成立?",
"S0="
+ stat(control["contrasts"]["S0|wrong_scene"])
+ ";S3="
+ stat(control["contrasts"]["S3|wrong_scene"])
+ ";S3 spatial shuffle damage="
+ stat(control["contrasts"]["S3|spatial_shuffle"])
+ ";zero damage="
+ stat(control["contrasts"]["S3|zero"])
+ "。所有差值为control−direct,recipient camera保持不变。Wrong-scene沿旧定义连同donor原bounds一起替换,因此敏感性不能完全归为density内容的独立贡献;S3 spatial shuffle保持recipient同bounds,补充空间结构证据。不能把CI跨0当scene-specific或空间结构成立。",
),
(
"当前问题更像 observability、supervision、completion、lifting 或混合?",
f"冻结证据分类:{obs['OBSERVABILITY_STATUS']} / {sup['GEOMETRY_SUPERVISION_STATUS']}。"
+ recommendations
+ " 这些是本次归因条件下的研究方向,不是单一原因的排他证明。",
),
(
"下一版 carrier 应具体增加什么?",
recommendations
+ f" GEOMETRY_AWARE_CARRIER_RECOMMENDED={sup['GEOMETRY_AWARE_CARRIER_RECOMMENDED']};VISIBILITY_AWARE_FUSION_RECOMMENDED={sup['VISIBILITY_AWARE_FUSION_RECOMMENDED']}。没有在本轮启动carrier训练。",
),
]
for i, (question, answer) in enumerate(answers, 1):
lines.extend(["", f"**{i}. {question}**", "", answer])
lines.extend(
[
"",
"区域总体贡献与条件均值是不同估计量:每scene先平均query和A/B的区域fraction、error contribution,再以贡献/fraction得到该scene条件均值。空scene的条件值为null,完整scene名单、coverage和empty counts保留;bootstrap每次重采样所有scene并重算有效覆盖分母。未对空区域填零误差,亦未静默删除场景。",
"",
"low-support positive gap share="
+ str(obs["positive_low_support_gap_share"])
+ "。该量截取正gap后计算比例,不等于有符号净gap贡献。对应有符号区域gap见observability_analysis.json/signed_additive_gap_by_region。",
"",
"visible support是投影在前/图内、有效context depth且ray-distance差≤0.05m+1%context depth的nearest-depth近似,不是表面可见性证明。occlusion与front-conflict分别保存,可在不同context views同时发生,不是可加分区。",
"",
"free loss只作用于t<d−tau的sample,surface后方未知不标为空。surface loss为−log(band内rendering mass+eps),有效hit但空band/miss仅从这个新增term排除并计数;旧任务loss和总体评价仍保留所有合法ray/pixel。surface目标band局部,但梯度通过transmittance还会影响band之前density。",
"",
"S0–S3使用相同初始化、seed、ray minibatch stream和固定10k终态。full context objective仅用于诊断,query GT只在seal后标注区域;未用于optimizer、lambda、tau、bounds、checkpoint或scene选择。旧oracle是使用query GT的特权诊断,不是可部署方法,也不是数学能力上界。",
"",
f"BASELINE_REPRO_STATUS={baseline['status']};新S0先完成再通过复现门控,S1–S3才允许启动。正常CUDA浮点复算不承诺bitwise;正式预锁AbsRel容差为scene mean .001、每row .01,实际差值见baseline_reproduction.json。CPU精确回归与CUDA容差检查、state文件/tensor SHA完整性各有不同含义,不能混称。",
"",
f"统计单位={bootstrap['unit']};draws={bootstrap['draws']}、seed={bootstrap['seed']}、95% percentile CI。mean/median/CI/improved-tied-worse/LOSO/top1/top3贡献见bootstrap_results.json。像素不是独立统计样本。",
"",
"| Variant | Worker optimization seconds | Seconds/state | Peak allocated bytes | Peak reserved bytes | Direct render seconds |",
"|---|---:|---:|---:|---:|---:|",
]
)
for variant in VARIANTS:
value = cost["variants"][variant]
lines.append(
f"| {variant} | {value['optimization_seconds_total']:.3f} | {value['optimization_seconds_per_state']:.3f} | {value['peak_cuda_allocated_bytes']} | {value['peak_cuda_reserved_bytes']} | {value['render_seconds_total']:.3f} |"
)
lines.extend(
[
"",
f"136个state的worker optimization累计={cost['actual_optimization_seconds']:.3f}秒;这是累计worker时间,不是墙钟总耗时。phase wall-time单独记录:"
+ json.dumps(
cost.get("phase_wall_times", {"status": "NOT_RECORDED"}), ensure_ascii=False
)
+ "。四进程共享GPU,不能当作独占GPU benchmark;旧参考预测复用,未来carrier成本未实测。",
"",
"七类曲线见figures/。完整raw、mask NPZ、配置/锁定、访问日志、测试、state/prediction hashes和复现命令保存在本实验目录;发布归档checkpoint索引指向本地outputs。",
"",
"FINAL_HOLDOUT_TOUCHED=false;NEW_CARRIER_TRAINED=false;DYNAMIC_TTT_RUN=false。未打开保护集,未新训练learned carrier。",
]
)
summary = (
"CONTEXT GEOMETRY OBSERVABILITY + SUPERVISION FINAL\n"
+ "\n".join(
f"{k}={str(v).lower() if isinstance(v, bool) else v}" for k, v in terminal.items()
)
+ "\n"
)
(root / "README.md").write_text("\n".join(lines) + "\n")
(root / "STATUS.md").write_text("```text\n" + summary + "```\n")
(root / "terminal_summary.txt").write_text(summary)
print(summary)
return terminal
if __name__ == "__main__":
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--root", type=Path, required=True)
parser.add_argument("--docs", type=Path)
args = parser.parse_args()
run(args.root, args.docs)