diff --git a/artifacts/README.md b/artifacts/README.md index 8166f2b..d3a5d5a 100644 --- a/artifacts/README.md +++ b/artifacts/README.md @@ -7,8 +7,7 @@ | `experiments/baseline/fixed/SV100-*/` | 9 次固定相机训练的配置、指标、数据解析变换和元数据 | | `experiments/pose_optimization/{naive,camp}/SV100-*/` | 18 次无 warm-up 训练的配置、指标、优化位姿、预条件诊断和完成标记 | | `experiments/warmup/{naive,camp}/SV100-*/` | 18 次 warm-up 训练的同类资料 | -| `experiments/alignment_full/<方法>/SV100-GT/` | GT 条件五种设置的完整对齐评估变换 | -| `experiments/alignment_preview/<方法>/SV100-GT/` | GT 条件五种设置的预览对齐评估变换 | +| `experiments/alignment_full/<方法>/SV100-GT/` | GT 条件五种设置的对齐评估变换 | | `analysis/<实验类别>/` | 汇总表、分析报告、对比图;`pose_audit/` 保存 36 组位姿审计的汇总与变换集合 | | `records/<实验类别>/` | 批次级状态、manifest 和环境记录 | | `analysis/training_curves/` | 45 次训练的精简 TensorBoard 标量(训练 loss、eval PSNR、相机学习率)与 36 份位姿诊断 `diagnostics/*.jsonl` | @@ -21,11 +20,10 @@ | 内容 | 入口 | |---|---| -| 固定相机基线 | [9 条件汇总](analysis/baseline/SV100_full_summary.csv)、[平移对照](analysis/baseline/SV100_translation_sweep.csv)、[旋转对照](analysis/baseline/SV100_rotation_sweep.csv) | +| 固定相机基线 | [9 条件汇总](analysis/baseline/SV100_full_summary.csv) | | 首轮三方法比较 | [27 行汇总](analysis/pose_optimization/summary.csv) | | Warm-up 配对比较 | [汇总](analysis/warmup/summary.csv)、[配对差值](analysis/warmup/paired_metrics.csv)、[统计](analysis/warmup/aggregate_metrics.json)、[阶段报告](analysis/warmup/report.md) | | GT 完整对齐评估 | [汇总](analysis/alignment_full/summary.csv)、[报告](analysis/alignment_full/report.md)、[结论](analysis/alignment_full/findings.md) | -| GT 预览对齐评估 | [汇总](analysis/alignment_preview/summary.csv)、[报告](analysis/alignment_preview/report.md)、[结论](analysis/alignment_preview/findings.md) | | 全条件位姿审计 | [36 组汇总](analysis/pose_audit/summary.csv)、[变换集合](analysis/pose_audit/transforms.json) | ## 配置与图片入口 @@ -35,8 +33,7 @@ | Naive GT 配置对照 | [无 warm-up](experiments/pose_optimization/naive/SV100-GT/config.yml)、[有 warm-up](experiments/warmup/naive/SV100-GT/config.yml) | | 优化位姿示例 | [Naive GT + warm-up](experiments/warmup/naive/SV100-GT/optimized_poses.json) | | Warm-up 对比图 | [重建指标](analysis/warmup/quality_comparison.png)、[早期漂移](analysis/warmup/gt_early_pose_drift.png) | -| 对齐指标图 | [完整评估](analysis/alignment_full/metrics_comparison.png)、[低分辨率预览](analysis/alignment_preview/metrics_comparison.png) | -| 对齐前后预览 | [视角 0](analysis/alignment_preview/comparison_000.png)、[视角 50](analysis/alignment_preview/comparison_050.png)、[视角 100](analysis/alignment_preview/comparison_100.png) | +| 对齐指标图 | [完整评估](analysis/alignment_full/metrics_comparison.png) | ## 展示素材 @@ -46,8 +43,10 @@ README 中的渲染图和视频由服务器在同一批 checkpoint 上推理生 在仓库根目录运行 `uv run python scripts/analysis/analyze_warmup_results.py`,可从归档 CSV 重新计算配对统计,默认输出到 `results/published_analysis/`。加 `--plots` 可重画质量对比图,加 `--diagnostics` 可用 `analysis/training_curves/diagnostics/` 中归档的 GT 轨迹重画早期漂移图,两者都需要 NumPy 和 Matplotlib。 -发布档案不含原始数据、checkpoint、TensorBoard、原始渲染数组或完整训练日志。重新渲染需要原模型和数据,7 个最终 checkpoint 见 [v1.0.0 Release](https://github.com/chu-jiaming/PoseGuard-NeRF/releases/tag/v1.0.0)。完整评估使用 200 张 800×800 图,预览使用 20 张 200×200 图,两者的指标应分开比较。 +发布档案不含原始数据、checkpoint、TensorBoard event 文件、原始渲染数组或完整训练日志;TensorBoard 标量只保留了精简后的 `analysis/training_curves/tb_scalars.csv`。重新渲染需要原模型和数据,7 个最终 checkpoint 见 [v1.0.0 Release](https://github.com/chu-jiaming/PoseGuard-NeRF/releases/tag/v1.0.0)。对齐评估使用全部 200 张 800×800 测试图。 Warm-up 阶段报告早于对齐诊断,其中 GT 对齐的后续工作已完成,多种子实验未执行;后续对齐解释见对应 findings。 -`records/`、配置及完成标记中的服务器绝对路径属于历史来源信息,不能在新机器直接用于恢复。所有现存记录均保留,目录整理没有重新训练或重新计算图像指标。通过 Git status 和 Git diff 查看档案变更。 +`records/showcase/DELIVERY_REPORT.md` 是服务器交付报告原文:其中“CSV标签行数”统计的是服务器上的完整标量 CSV,不是仓库里的精简版;提到的 `gates/`、`archive_receipt.json` 只在服务器交付包中。 + +`records/`、配置及完成标记中的服务器绝对路径属于历史来源信息,不能在新机器直接用于恢复。档案中的指标均来自原始评估,整理时没有重新训练或重新计算。 diff --git a/artifacts/analysis/alignment_preview/comparison_000.png b/artifacts/analysis/alignment_preview/comparison_000.png deleted file mode 100644 index 4767166..0000000 Binary files a/artifacts/analysis/alignment_preview/comparison_000.png and /dev/null differ diff --git a/artifacts/analysis/alignment_preview/comparison_050.png b/artifacts/analysis/alignment_preview/comparison_050.png deleted file mode 100644 index 58450b5..0000000 Binary files a/artifacts/analysis/alignment_preview/comparison_050.png and /dev/null differ diff --git a/artifacts/analysis/alignment_preview/comparison_100.png b/artifacts/analysis/alignment_preview/comparison_100.png deleted file mode 100644 index b2305c2..0000000 Binary files a/artifacts/analysis/alignment_preview/comparison_100.png and /dev/null differ diff --git a/artifacts/analysis/alignment_preview/findings.md b/artifacts/analysis/alignment_preview/findings.md deleted file mode 100644 index d17d364..0000000 --- a/artifacts/analysis/alignment_preview/findings.md +++ /dev/null @@ -1,28 +0,0 @@ -# GT 条件评估诊断 - -范围、分辨率及评估视角见 [协议与结果表](report.md)。以下数字仅在该次评估协议内比较。 -只拟合训练相机中心的全局 Sim(3),不使用测试图像拟合、不更新网络。 - -| 方法 | 原坐标 PSNR | 对齐后 PSNR | 对齐提升 | 对齐后相对 fixed | -|---|---:|---:|---:|---:| -| fixed | 28.306 | 28.306 | +0.000 | +0.000 | -| naive | 18.929 | 25.786 | +6.857 | -2.520 | -| camp | 21.356 | 28.598 | +7.242 | +0.292 | -| naive_warmup | 24.994 | 29.029 | +4.035 | +0.723 | -| camp_warmup | 22.970 | 28.488 | +5.518 | +0.182 | - -## Warm-up 的配对收益 - -- naive:原坐标收益 +6.065 dB;对齐后收益 +3.243 dB。 -- camp:原坐标收益 +1.614 dB;对齐后收益 -0.110 dB。 - -## 解释边界 - -- 对齐收益说明原坐标评估对全局漂移敏感,不能将全部指标下降直接归因为场景本身变差。 -- 对齐后与 fixed 的差距是残留性能差距;单凭此实验无法在局部位姿误差、场景拟合不足等原因之间做因果判定。 -- 中心拟合不保证相机朝向或图像误差最优;这是诊断性对齐,不是利用测试图像求出的最佳结果。 -- dB 差值不能用来严格分解各原因的误差占比,也不能作为跨场景、跨种子稳定性的证据。 - -![指标对比](metrics_comparison.png) - -![相同视角对齐前后](comparison_000.png) diff --git a/artifacts/analysis/alignment_preview/metrics_comparison.png b/artifacts/analysis/alignment_preview/metrics_comparison.png deleted file mode 100644 index e1e7814..0000000 Binary files a/artifacts/analysis/alignment_preview/metrics_comparison.png and /dev/null differ diff --git a/artifacts/analysis/alignment_preview/report.md b/artifacts/analysis/alignment_preview/report.md deleted file mode 100644 index f04027a..0000000 --- a/artifacts/analysis/alignment_preview/report.md +++ /dev/null @@ -1,16 +0,0 @@ -# GT-condition alignment diagnostic - -Alignment is fitted using GT and optimized TRAIN camera centers only. No test-image fitting, no retraining. -The same transform rotates test orientations and scales/translates test centers. Sampling bounds scale consistently. -A center-fit Sim(3) cannot remove local pose errors; residual degradation does not identify its cause. - -Resolution scale: 0.25; test views: 20. Single scene and training seed. -Raw metrics source: paired rerender. - -| Method | Raw PSNR | Aligned PSNR | Delta | Raw SSIM | Aligned SSIM | Raw LPIPS | Aligned LPIPS | Scale | -|---|---:|---:|---:|---:|---:|---:|---:|---:| -| fixed | 28.306 | 28.306 | +0.000 | 0.9430 | 0.9430 | 0.0478 | 0.0478 | 1.00000 | -| naive | 18.929 | 25.786 | +6.857 | 0.7275 | 0.9115 | 0.0797 | 0.0499 | 1.01081 | -| camp | 21.356 | 28.598 | +7.242 | 0.8073 | 0.9428 | 0.0631 | 0.0397 | 1.01028 | -| naive_warmup | 24.994 | 29.029 | +4.035 | 0.8902 | 0.9472 | 0.0514 | 0.0393 | 1.00370 | -| camp_warmup | 22.970 | 28.488 | +5.518 | 0.8492 | 0.9426 | 0.0554 | 0.0384 | 1.00833 | diff --git a/artifacts/analysis/alignment_preview/summary.csv b/artifacts/analysis/alignment_preview/summary.csv deleted file mode 100644 index 858ec5e..0000000 --- a/artifacts/analysis/alignment_preview/summary.csv +++ /dev/null @@ -1,6 +0,0 @@ -method,raw_psnr,aligned_psnr,delta_psnr,raw_ssim,aligned_ssim,raw_lpips,aligned_lpips,scale,center_residual,rotation_residual_deg -fixed,28.30604991912842,28.30604991912842,0.0,0.9429537445306778,0.9429537445306778,0.0477625641040504,0.0477625641040504,1.0,2.2684100686397057e-15,0.017298686562287634 -naive,18.92907953262329,25.78596477508545,6.856885242462159,0.7274786114692688,0.9114585220813751,0.07971747554838657,0.04989573527127504,1.010813823413412,0.00741564949869966,0.14284777839317395 -camp,21.355582618713377,28.598061752319335,7.242479133605958,0.8072862714529038,0.9427566856145859,0.06309019941836595,0.03968929471448064,1.010282702088706,0.009555511542795929,0.1229797394021819 -naive_warmup,24.99407567977905,29.028827476501466,4.034751796722414,0.8901891589164734,0.9471689224243164,0.05136512611061335,0.03931124964728951,1.003703465561039,0.0069897351710478915,0.10706608841581806 -camp_warmup,22.969599437713622,28.487572765350343,5.517973327636721,0.849230882525444,0.9426049053668976,0.05536329708993435,0.03843734785914421,1.0083270028353262,0.011329275382551645,0.14545046596913205 diff --git a/artifacts/analysis/baseline/SV100_pipeline_summary.txt b/artifacts/analysis/baseline/SV100_pipeline_summary.txt deleted file mode 100644 index 496837c..0000000 --- a/artifacts/analysis/baseline/SV100_pipeline_summary.txt +++ /dev/null @@ -1,13 +0,0 @@ -2026-10-01T08:00:27.115148+00:00 SUCCESS -Nerfstudio 1.1.5; vanilla-nerf; 100 views; 30000 iterations -Translation magnitude unit: ratio of mean camera radius; rotation unit: degrees. -GT is evaluated once and shared by both sweep tables. Metrics: fine_psnr/fine_ssim/fine_lpips from fresh ns-eval test split. -SV100-GT SUCCESS PSNR=27.117351531982422 SSIM=0.9003052115440369 LPIPS=0.07902220636606216 -SV100-T0.5 SUCCESS PSNR=23.16393280029297 SSIM=0.8242353796958923 LPIPS=0.19025984406471252 -SV100-T1 SUCCESS PSNR=20.352632522583008 SSIM=0.7836681604385376 LPIPS=0.24935901165008545 -SV100-T2 SUCCESS PSNR=17.410005569458008 SSIM=0.7545003890991211 LPIPS=0.3104111850261688 -SV100-T5 SUCCESS PSNR=14.144984245300293 SSIM=0.7271924018859863 LPIPS=0.38807252049446106 -SV100-R0.5 SUCCESS PSNR=20.094165802001953 SSIM=0.7804862260818481 LPIPS=0.24594688415527344 -SV100-R1 SUCCESS PSNR=17.114395141601562 SSIM=0.7534263134002686 LPIPS=0.31077659130096436 -SV100-R2 SUCCESS PSNR=14.811619758605957 SSIM=0.7333740592002869 LPIPS=0.3723008334636688 -SV100-R5 SUCCESS PSNR=12.007059097290039 SSIM=0.6993001103401184 LPIPS=0.47173792123794556 diff --git a/artifacts/analysis/baseline/SV100_rotation_sweep.csv b/artifacts/analysis/baseline/SV100_rotation_sweep.csv deleted file mode 100644 index 74900a4..0000000 --- a/artifacts/analysis/baseline/SV100_rotation_sweep.csv +++ /dev/null @@ -1,6 +0,0 @@ -case,perturbation_type,perturbation_magnitude,dataset_path,training_views,nerfstudio_version,max_iterations,output_path,config_path,checkpoint_path,evaluation_result,psnr,ssim,lpips,status -SV100-GT,gt,0.0,/root/workspace/data/nerf_synthetic/lego,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100/vanilla-nerf/2026-09-30_141114,/root/workspace/poseguard-nerf/outputs/lego_sv100/vanilla-nerf/2026-09-30_141114/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100/vanilla-nerf/2026-09-30_141114/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-GT/metrics.json,27.117351531982422,0.9003052115440369,0.07902220636606216,SUCCESS -SV100-R0.5,rotation,0.5,/root/workspace/data/nerf_synthetic/lego_sv100_rnoise_0p5deg,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_0p5deg/vanilla-nerf/2026-10-01_043150,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_0p5deg/vanilla-nerf/2026-10-01_043150/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_0p5deg/vanilla-nerf/2026-10-01_043150/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-R0.5/metrics.json,20.094165802001953,0.7804862260818481,0.24594688415527344,SUCCESS -SV100-R1,rotation,1.0,/root/workspace/data/nerf_synthetic/lego_sv100_rnoise_1deg,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_1deg/vanilla-nerf/2026-10-01_072344,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_1deg/vanilla-nerf/2026-10-01_072344/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_1deg/vanilla-nerf/2026-10-01_072344/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-R1/metrics.json,17.114395141601562,0.7534263134002686,0.31077659130096436,SUCCESS -SV100-R2,rotation,2.0,/root/workspace/data/nerf_synthetic/lego_sv100_rnoise_2deg,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_2deg/vanilla-nerf/2026-10-01_101553,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_2deg/vanilla-nerf/2026-10-01_101553/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_2deg/vanilla-nerf/2026-10-01_101553/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-R2/metrics.json,14.811619758605957,0.7333740592002869,0.3723008334636688,SUCCESS -SV100-R5,rotation,5.0,/root/workspace/data/nerf_synthetic/lego_sv100_rnoise_5deg,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_5deg/vanilla-nerf/2026-10-01_130748,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_5deg/vanilla-nerf/2026-10-01_130748/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100_rnoise_5deg/vanilla-nerf/2026-10-01_130748/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-R5/metrics.json,12.007059097290039,0.6993001103401184,0.47173792123794556,SUCCESS diff --git a/artifacts/analysis/baseline/SV100_translation_sweep.csv b/artifacts/analysis/baseline/SV100_translation_sweep.csv deleted file mode 100644 index a6c85c8..0000000 --- a/artifacts/analysis/baseline/SV100_translation_sweep.csv +++ /dev/null @@ -1,6 +0,0 @@ -case,perturbation_type,perturbation_magnitude,dataset_path,training_views,nerfstudio_version,max_iterations,output_path,config_path,checkpoint_path,evaluation_result,psnr,ssim,lpips,status -SV100-GT,gt,0.0,/root/workspace/data/nerf_synthetic/lego,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100/vanilla-nerf/2026-09-30_141114,/root/workspace/poseguard-nerf/outputs/lego_sv100/vanilla-nerf/2026-09-30_141114/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100/vanilla-nerf/2026-09-30_141114/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-GT/metrics.json,27.117351531982422,0.9003052115440369,0.07902220636606216,SUCCESS -SV100-T0.5,translation,0.005,/root/workspace/data/nerf_synthetic/lego_sv100_tnoise_0p5pct,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_0p5pct/vanilla-nerf/2026-09-30_170408,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_0p5pct/vanilla-nerf/2026-09-30_170408/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_0p5pct/vanilla-nerf/2026-09-30_170408/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-T0.5/metrics.json,23.16393280029297,0.8242353796958923,0.19025984406471252,SUCCESS -SV100-T1,translation,0.01,/root/workspace/data/nerf_synthetic/lego_tnoise_1pct,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_tnoise_1pct/vanilla-nerf/2026-09-30_195553,/root/workspace/poseguard-nerf/outputs/lego_tnoise_1pct/vanilla-nerf/2026-09-30_195553/config.yml,/root/workspace/poseguard-nerf/outputs/lego_tnoise_1pct/vanilla-nerf/2026-09-30_195553/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-T1/metrics.json,20.352632522583008,0.7836681604385376,0.24935901165008545,SUCCESS -SV100-T2,translation,0.02,/root/workspace/data/nerf_synthetic/lego_sv100_tnoise_2pct,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_2pct/vanilla-nerf/2026-09-30_224750,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_2pct/vanilla-nerf/2026-09-30_224750/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_2pct/vanilla-nerf/2026-09-30_224750/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-T2/metrics.json,17.410005569458008,0.7545003890991211,0.3104111850261688,SUCCESS -SV100-T5,translation,0.05,/root/workspace/data/nerf_synthetic/lego_sv100_tnoise_5pct,100,1.1.5,30000,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_5pct/vanilla-nerf/2026-10-01_013952,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_5pct/vanilla-nerf/2026-10-01_013952/config.yml,/root/workspace/poseguard-nerf/outputs/lego_sv100_tnoise_5pct/vanilla-nerf/2026-10-01_013952/nerfstudio_models/step-000029999.ckpt,/root/workspace/poseguard-nerf/results/SV100-T5/metrics.json,14.144984245300293,0.7271924018859863,0.38807252049446106,SUCCESS diff --git a/artifacts/analysis/warmup/report.md b/artifacts/analysis/warmup/report.md index 6a7dd38..45c7fef 100644 --- a/artifacts/analysis/warmup/report.md +++ b/artifacts/analysis/warmup/report.md @@ -1,5 +1,7 @@ # Warm-up 配对实验分析 +> 状态说明:本报告写于对齐诊断之前,下面的数字仍然有效。文中“Sim(3) 对齐没有作用于渲染评估”和“下一步”第 2 条已过时:GT 条件的对齐渲染评估已完成,见 [对齐结论](../alignment_full/findings.md);多种子(第 3 条)与 delay 对照(第 4 条)未执行。 + 范围:Lego 单场景、SV100 九种扰动条件、seed 42、每组 30,000 步。18/18 个实验成功。 已核对两轮 manifest:数据、固定相机基线、环境一致,仅代码指纹不同。18 对保存配置仅 warmup_steps(0→2500)及输出路径不同。 diff --git a/artifacts/experiments/alignment_preview/camp/SV100-GT/alignment.json b/artifacts/experiments/alignment_preview/camp/SV100-GT/alignment.json deleted file mode 100644 index e50e8d7..0000000 --- a/artifacts/experiments/alignment_preview/camp/SV100-GT/alignment.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "scale": 1.010282702088706, - "rotation": [ - [ - 0.9999993042376777, - -0.000844467346638347, - -0.0008236498412371449 - ], - [ - 0.0008463201180124913, - 0.9999971067537536, - 0.0022517163188025885 - ], - [ - 0.0008217459573101618, - -0.0022524118235740737, - 0.9999971256831487 - ] - ], - "translation": [ - 0.014455384446599717, - -0.013319145242008362, - -0.013946465064670566 - ], - "direction": "GT parser world -> reconstruction world", - "fit": "training camera centers only", - "center_residual_mean": 0.009555511542795929, - "rotation_residual_deg_mean": 0.1229797394021819 -} diff --git a/artifacts/experiments/alignment_preview/camp_warmup/SV100-GT/alignment.json b/artifacts/experiments/alignment_preview/camp_warmup/SV100-GT/alignment.json deleted file mode 100644 index 5abffd2..0000000 --- a/artifacts/experiments/alignment_preview/camp_warmup/SV100-GT/alignment.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "scale": 1.0083270028353262, - "rotation": [ - [ - 0.9999998475959048, - -0.0003589908282835776, - 0.00041944457510370407 - ], - [ - 0.00035897876364221444, - 0.9999999351512977, - 2.883830560502608e-05 - ], - [ - -0.0004194549005904222, - -2.8687729514971897e-05, - 0.999999911617296 - ] - ], - "translation": [ - 0.001914234884047572, - -0.007444929493718402, - -0.010386396513576202 - ], - "direction": "GT parser world -> reconstruction world", - "fit": "training camera centers only", - "center_residual_mean": 0.011329275382551645, - "rotation_residual_deg_mean": 0.14545046596913205 -} diff --git a/artifacts/experiments/alignment_preview/fixed/SV100-GT/alignment.json b/artifacts/experiments/alignment_preview/fixed/SV100-GT/alignment.json deleted file mode 100644 index 3498c04..0000000 --- a/artifacts/experiments/alignment_preview/fixed/SV100-GT/alignment.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "scale": 1.0, - "rotation": [ - [ - 0.9999999999999999, - -4.9356961220750604e-17, - -7.393140740902768e-16 - ], - [ - 7.103151251338053e-18, - 1.0, - -8.349098048683171e-16 - ], - [ - 6.946397677463524e-16, - 7.754684985324063e-16, - 0.9999999999999999 - ] - ], - "translation": [ - 1.609823385706477e-15, - 1.9012569296705806e-15, - 4.440892098500626e-16 - ], - "direction": "GT parser world -> reconstruction world", - "fit": "training camera centers only", - "center_residual_mean": 2.2684100686397057e-15, - "rotation_residual_deg_mean": 0.017298686562287634 -} diff --git a/artifacts/experiments/alignment_preview/naive/SV100-GT/alignment.json b/artifacts/experiments/alignment_preview/naive/SV100-GT/alignment.json deleted file mode 100644 index a69eabd..0000000 --- a/artifacts/experiments/alignment_preview/naive/SV100-GT/alignment.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "scale": 1.010813823413412, - "rotation": [ - [ - 0.9999995933297489, - -0.0006230708398642337, - -0.000652014620779334 - ], - [ - 0.0006220896500600996, - 0.9999986755220602, - -0.00150398091516831 - ], - [ - 0.0006529508438522332, - 0.001503574691996772, - 0.9999986564582685 - ] - ], - "translation": [ - 0.011436172668270794, - 0.0072401320563654226, - -0.021991289179164042 - ], - "direction": "GT parser world -> reconstruction world", - "fit": "training camera centers only", - "center_residual_mean": 0.00741564949869966, - "rotation_residual_deg_mean": 0.14284777839317395 -} diff --git a/artifacts/experiments/alignment_preview/naive_warmup/SV100-GT/alignment.json b/artifacts/experiments/alignment_preview/naive_warmup/SV100-GT/alignment.json deleted file mode 100644 index a2da64e..0000000 --- a/artifacts/experiments/alignment_preview/naive_warmup/SV100-GT/alignment.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "scale": 1.003703465561039, - "rotation": [ - [ - 0.9999999527317018, - -0.00011439205109357903, - 0.0002853963066987502 - ], - [ - 0.00011504117970901546, - 0.9999974044229305, - -0.002275502785700844 - ], - [ - -0.00028513526649962684, - 0.002275535510469502, - 0.9999973703145514 - ] - ], - "translation": [ - -0.0026199740438381802, - 0.012197618766314602, - -0.00374118482095831 - ], - "direction": "GT parser world -> reconstruction world", - "fit": "training camera centers only", - "center_residual_mean": 0.0069897351710478915, - "rotation_residual_deg_mean": 0.10706608841581806 -} diff --git a/artifacts/records/alignment_preview/manifest.json b/artifacts/records/alignment_preview/manifest.json deleted file mode 100644 index 3564131..0000000 --- a/artifacts/records/alignment_preview/manifest.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "full": false, - "resolution": 0.25, - "jobs": [ - { - "name": "fixed", - "config": "/root/workspace/poseguard-nerf/outputs/lego_sv100/vanilla-nerf/2026-09-30_141114/config.yml", - "checkpoint": "/root/workspace/poseguard-nerf/outputs/lego_sv100/vanilla-nerf/2026-09-30_141114/nerfstudio_models/step-000029999.ckpt", - "metrics": "/root/workspace/poseguard-nerf/results/SV100-GT/metrics.json" - }, - { - "name": "naive", - "config": "/root/workspace/poseguard-nerf/results/poseopt_sv100/experiments/naive/SV100-GT/attempt_001/outputs/SV100-GT/poseguard-naive/run/config.yml", - "checkpoint": "/root/workspace/poseguard-nerf/results/poseopt_sv100/experiments/naive/SV100-GT/attempt_001/outputs/SV100-GT/poseguard-naive/run/nerfstudio_models/step-000029999.ckpt", - "metrics": "/root/workspace/poseguard-nerf/results/poseopt_sv100/experiments/naive/SV100-GT/attempt_001/metrics.json" - }, - { - "name": "camp", - "config": "/root/workspace/poseguard-nerf/results/poseopt_sv100/experiments/camp/SV100-GT/attempt_001/outputs/SV100-GT/poseguard-camp/run/config.yml", - "checkpoint": "/root/workspace/poseguard-nerf/results/poseopt_sv100/experiments/camp/SV100-GT/attempt_001/outputs/SV100-GT/poseguard-camp/run/nerfstudio_models/step-000029999.ckpt", - "metrics": "/root/workspace/poseguard-nerf/results/poseopt_sv100/experiments/camp/SV100-GT/attempt_001/metrics.json" - }, - { - "name": "naive_warmup", - "config": "/root/workspace/poseguard-nerf/results/poseopt_sv100_warmup2500/experiments/naive/SV100-GT/attempt_001/outputs/SV100-GT/poseguard-naive/run/config.yml", - "checkpoint": "/root/workspace/poseguard-nerf/results/poseopt_sv100_warmup2500/experiments/naive/SV100-GT/attempt_001/outputs/SV100-GT/poseguard-naive/run/nerfstudio_models/step-000029999.ckpt", - "metrics": "/root/workspace/poseguard-nerf/results/poseopt_sv100_warmup2500/experiments/naive/SV100-GT/attempt_001/metrics.json" - }, - { - "name": "camp_warmup", - "config": "/root/workspace/poseguard-nerf/results/poseopt_sv100_warmup2500/experiments/camp/SV100-GT/attempt_001/outputs/SV100-GT/poseguard-camp/run/config.yml", - "checkpoint": "/root/workspace/poseguard-nerf/results/poseopt_sv100_warmup2500/experiments/camp/SV100-GT/attempt_001/outputs/SV100-GT/poseguard-camp/run/nerfstudio_models/step-000029999.ckpt", - "metrics": "/root/workspace/poseguard-nerf/results/poseopt_sv100_warmup2500/experiments/camp/SV100-GT/attempt_001/metrics.json" - } - ] -} diff --git a/artifacts/records/alignment_preview/state.json b/artifacts/records/alignment_preview/state.json deleted file mode 100644 index 67aa8df..0000000 --- a/artifacts/records/alignment_preview/state.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "status": "SUCCESS" -} diff --git a/docs/EXPERIMENTS.md b/docs/EXPERIMENTS.md index 305c2ed..74e626d 100644 --- a/docs/EXPERIMENTS.md +++ b/docs/EXPERIMENTS.md @@ -9,7 +9,7 @@ independent training from scratch; no run was tuned on test images. | --- | --- | | Training runs | 9 pose conditions × 5 methods = **45 runs**, 30,000 steps each, seed 42 | | Pose audit | 9 conditions × 4 pose-optimizing methods = **36 saved pose sets**, no training | -| Aligned evaluation | GT condition × 5 methods, preview (20 views) and full (200 views), no training | +| Aligned evaluation | GT condition × 5 methods, all 200 test views, no training | | Showcase renders | GT, T1, T5 and R5 conditions × 5 methods, 4 views, plus 4 orbit videos, no training | ## Shared training configuration @@ -95,7 +95,6 @@ Results: [`artifacts/analysis/pose_audit/`](../artifacts/analysis/pose_audit/). | Evaluation | Condition | Methods | Test views | Resolution | Raw metrics | Aligned metrics | | --- | --- | --- | --- | --- | --- | --- | -| Preview | SV100-GT | all 5 | indices 0, 10, …, 190 (20) | 200 × 200 | re-rendered | re-rendered | | Full | SV100-GT | all 5 | all 200 | 800 × 800 | reused from the original evaluation of the same checkpoint | re-rendered | | Item | Setting | diff --git a/docs/RUNNING.md b/docs/RUNNING.md index cd081d2..d9bdb37 100644 --- a/docs/RUNNING.md +++ b/docs/RUNNING.md @@ -134,13 +134,7 @@ These reuse the trained models and poses; nothing is retrained. # Audit all 36 optimized pose sets (CPU + NumPy). uv run --no-sync python scripts/evaluation/audit_pose_alignment.py -# GT condition, low-resolution preview. -bash scripts/evaluation/run_alignment_diagnostic.sh \ - --output "$POSEGUARD_RUN_ROOT/results/alignment_preview" -uv run --no-sync python scripts/analysis/summarize_alignment.py \ - "$POSEGUARD_RUN_ROOT/results/alignment_preview" - -# GT condition, full test set. +# GT condition, full test set (without --full: a quick 20-view, 200 x 200 check). bash scripts/evaluation/run_alignment_diagnostic.sh \ --output "$POSEGUARD_RUN_ROOT/results/alignment_full" --full uv run --no-sync python scripts/analysis/summarize_alignment.py \