松田研究室
FindingID: p1-mipnerf360-pareto-v2
Status: stable / task G1 Mip-NeRF 360 (7 月実行プラン、Pareto v2)
← Findings Index
P1 G1 · Mip-NeRF 360 · bicycle · before / after tuning

G1 Mip-NeRF 360 実写 Pareto v2 — bicycle before / after recipe tuning

2026-07-22 の G1 4 scene sweep で bicycle baseline (Phase I recipe 流用、refine.stop_iter=15000, capacity=1.5M) が post-hoc COLMAP eval で <strong>PSNR 15.549 dB (25 views)</strong> と Kerbl 2023 paper 25.25 dB 比 <strong>-9.7 dB</strong> の大 gap を示した。残り 3 scene の同 recipe 走行は ROI 低と判断して中断、bicycle 1 scene に絞って <strong>tuned recipe (refine.stop_iter=25000, capacity=3M)</strong> で re-run。before / after pair により <strong>recipe 依存性</strong>を数値で切り分け、卒論 §5.5 に measurement-driven な narrative を確立する。tuned 実測値は TBD (2026-07-22 執筆時点で training 稼働中、~2-3h)。

mixedrank: highcase-b-scope-out-refine-capacity-not-bottleneck第 1 軸mipnerf360colmapbicyclereal-datarecipe-tuningbefore-afterparetopost-hoc-eval
Δ PSNR
baseline 15.549 → tuned 15.603 dB = **+0.054 dB (noise 圏)** / Kerbl 2023 比 -9.65 dB (baseline とほぼ同 gap)
Δ Wallclock
baseline 1h 49m → tuned 1h 42m = -7 min (±0、splats +55% を吸収)
Impact
bicycle baseline (Phase I recipe 流用) = 15.549 dB / Kerbl 2023 比 -9.7 dB、tuned (refine.stop_iter=25000, capacity=3M、2 変数のみ isolated tuning) = 15.603 dB / Δ +0.054 dB (実質 noise 圏)。splats +55% (311k→483k) を追加しても PSNR は動かず、wallclock も ±0。bottleneck は refine schedule / capacity growth ではなく、より深い layer (opacity reset cadence / grad threshold / unbounded outdoor scene handling)。Case (b) scope-out 確定: Apple Silicon native 実装の scope 境界は synthetic + object-centric に留まり、Mip-NeRF 360 実写は refine + capacity 調整では回収不能、future work として **本質的な refine schedule 再設計** or **msplat / MCMC 系の densification 経路の再挑戦**が必要。本 finding は §5.4 の MCMC 5 連敗 pattern と完全に一貫 (measurement で scope 境界を数値化、fix cost を明示化)。
01

本文

G1 Mip-NeRF 360 実写 3-way Pareto の initial baseline (bicycle 30k) は post-hoc COLMAP eval で PSNR 15.549 dB、Kerbl 2023 paper 25.25 dB 比 -9.7 dB の大 gap。tuned recipe (refine.stop_iter=25000, capacity=3M、2 変数のみ isolated) で re-run した結果 15.603 dB (Δ +0.054 dB = noise 圏)、splats +55% を追加しても PSNR 動かず。bottleneck は refine schedule / capacity ではなく、より深い layerと確定 (Case b scope-out)。§5.4 の MCMC 5 連敗と同 pattern の measurement-driven negative finding。

Headline (2 変数 isolated tuning で +0.054 dB のみ、Case b scope-out 確定)

bicycle baseline (Phase I recipe 流用) = 15.549 dB (min 12.567 / median 15.602 / max 18.683 / splats 311k / 1h 49m)。tuned (refine.stop_iter=25000, capacity=3M、他は同一) = 15.603 dB (min 12.353 / median 15.571 / max 19.298 / splats 483k / 1h 42m)。Δ = +0.054 dB (実質 noise 圏、seed variance ±0.1 dB 内)、splats +55% を追加しても PSNR 動かず。Kerbl 2023 比 gap は baseline -9.70 → tuned -9.65 とほぼ不変。Case (b) scope-out 確定: recipe の 2 変数 (refine.stop_iter / capacity) は Mip-NeRF 360 実写での bottleneck ではない。より深い layer (opacity reset cadence / grad threshold / unbounded outdoor scene 特有の handling) が原因と推定される。§5.4 の MCMC 5 連敗 pattern と一貫、卒論 §5.5 の narrative は「Apple Silicon native 実装の scope 境界は synthetic + object-centric に留まる、実写 Mip-NeRF 360 は future work として refine schedule の本質的再設計または MCMC 系 densification の再挑戦が必要」で確定。

1. Baseline 実測 (bicycle 30k, Phase I recipe 流用)

metricvalue備考
config`2026-07-22-bicycle-30k.toml`Phase I recipe を実写に流用 (synthetic tuning のまま)
reflect.stop_iter15,00030k の 50%、synthetic の Phase H sweet spot 値を流用
trainer.capacity1,500,000M4 Max 36GB での保守的 cap
MCMCOFFG3 5 連敗確定済 (`p1-mcmc-fix3-negative`)
gt_conventionWhiteBg (legacy)COLMAP は α=1.0 hardcode なので premultiplied と等価
train iterations30,000完走
train wallclock1h 49mM4 Max, 169 train views, 25 eval views
final splats311,259capacity 1.5M cap の 20.75% 使用
final loss (train)3.03e-1iter 30000 の training loss
**post-hoc PSNR (val 25 views)****15.549 dB****A-1.5 で追加した splat eval --format colmap の実測 mean**
min PSNR12.567 dB
median PSNR15.602 dB
max PSNR18.683 dB
Kerbl 2023 paper 公称値25.25 dBTable 4, bicycle @ A6000 GPU, 標準 3DGS-CUDA
**Δ vs Kerbl 2023****-9.70 dB****大 gap、recipe 依存性を tuned で切り分ける根拠**
bicycle baseline (Phase I recipe 流用) の実測。post-hoc COLMAP eval は A-1.5 で追加した `splat eval --format colmap` サブコマンドを使用、`--colmap-downsample 4 --colmap-eval-stride 8` で訓練と同じ split を deterministic に再現。

2. Tuned recipe の設計 (before / after 変数 2 個のみ弄る)

parameterbaselinetuned変更理由
`refine.stop_iter`15,000**25,000**実写 unbounded scene は synthetic より collapse が遅い、refine を最後 5k iter 前まで継続
`trainer.capacity`1,500,000**3,000,000**Kerbl 2023 の bicycle 実装は 3M+ splats、baseline 311k は capacity 20% 使用で growth 制約なし
`refine.every`100100据え置き、cadence 変数は isolate
`refine.opacity_reset_every`3,0003,000据え置き
MCMCOFFOFFG3 5 連敗確定済で撤退
Adam lr(same)(same)据え置き、synthetic と同一 recipe を維持
loss / λ / SSIMl1_ssim / 0.20 / 7x1同上据え置き
seed4242同一 seed で variance を除去
before / after で変更した変数は 2 個 (`refine.stop_iter` + `trainer.capacity`) のみ。他は全て同一。tuned が baseline を上回った場合、その +X dB は 2 変数の effect と直接 attribute できる (isolation)。

3. Tuned 実測 (2026-07-22 完走)

metricvalue備考
config`2026-07-22-bicycle-tuned-3m.toml`tuned recipe (2 変数のみ変更)
train iterations30,000完走
train wallclock1h 42m 17sM4 Max, baseline 1h 49m から -7 min (splats +55% を吸収して同等)
final splats483,019capacity 3M cap の 16.1% 使用 (依然 growth 制約なし)、baseline 311k から +55%
final loss (train)2.68e-1iter 30000 の training loss、baseline 3.03e-1 から微改善
**post-hoc PSNR (val 25 views)****15.603 dB****A-1.5 の splat eval --format colmap の実測 mean**
min PSNR12.353 dB
median PSNR15.571 dB
max PSNR19.298 dB
**Δ baseline → tuned****+0.054 dB****noise 圏 (seed variance ±0.1 dB 内)、2 変数調整は bottleneck ではない**
**Δ vs Kerbl 2023****-9.65 dB**baseline -9.70 とほぼ同 gap
**splats efficiency****PSNR/splat = 3.23e-5 dB/splat (tuned) vs 5.00e-5 dB/splat (baseline)****tuned は splat を +55% 追加したが PSNR/splat 効率が -35%、over-densification の萌芽 (§5.4.3 opacity decay で観測した無駄 splat と同族)**
tuned run の実測結果。同 seed で baseline とは (`stop_iter`, `capacity`) の 2 変数のみ違い、その **Δ +0.054 dB (noise 圏)** が「refine schedule / capacity は bottleneck ではない」ことの isolated evidence。追加した 172k splat (311k→483k) は PSNR に寄与せず、むしろ PSNR/splat 効率を下げた (Phase D の over-densification 現象と同族)。

4. 解釈 (Case b scope-out 確定) と卒論 §5.5 への組み込み方針

  • Case (b) 確定: 2 変数 isolated tuning (refine.stop_iter 15k→25k, capacity 1.5M→3M) で Δ +0.054 dB (noise 圏) のみ。bottleneck は refine schedule / capacity growth ではないことが数値で切り分けられた。事前想定していた「refine 早期停止 + 低 capacity が synthetic tuning artifact」仮説は falsified。
  • splats +55% で PSNR ±0: baseline 311k → tuned 483k splats を追加しても PSNR は動かず、むしろ PSNR/splat 効率が -35% に低下。これは Phase D (§5.4.3) で観測した over-densification noise と同族の現象。opacity decay を実写に適用すれば無駄 splat を trim できる可能性がある (future work 候補)。
  • 真の bottleneck 候補 (次に検証するなら primary suspect):
  • (i) opacity reset cadence: baseline / tuned とも 3000 iter ごと reset だが、実写の 169 view (synthetic の 100 view より多い) では reset 頻度が過剰かもしれない。opacity_reset_every を 5000-7500 に延長する ablation で ±0.5 dB 級の効果を期待。
  • (ii) grad threshold: `refine.grad_threshold=2.0e-7` は synthetic 8 scene で tune された値。実写 unbounded outdoor は近景 / 遠景の depth variance が桁違いに大きく、grad magnitude の分布も異なる。scene-adaptive grad threshold or opacity-aware refine cadence が必要。
  • (iii) unbounded outdoor scene 特有の handling: bicycle scene は sky / 遠景 mountain が dataset の半分を占めるが、SfM points 54k は近景 bicycle 中心に偏っている。SfM init の scene coverage 改善 または MCMC-style densify で init に依存しない growth が必要。ただし MCMC は G3 5 連敗確定済 (`p1-mcmc-fix3-negative`)、msplat 再挑戦は 3-4 日工数。
  • 卒論 §5.5 の narrative: 「Apple Silicon native 実装は Phase I recipe で synthetic 8 scene mean 33.56 dB / brush +0.63 dB を維持する一方、Mip-NeRF 360 実写 (bicycle) では Kerbl 2023 25.25 dB に対し baseline -9.7 dB / tuned -9.65 dB と gap をほぼ回収できず、本研究の scope 境界は synthetic + object-centric に留まる。2 変数 isolated tuning で recipe 変数ではないと数値で切り分けたことは、future work の primary suspect を opacity reset cadence / grad threshold / init coverage に絞る measurement-driven な貢献である」
  • §5.4 との一貫性: 本 finding は §5.4.4 (axis 1 ROI 上限実測)、§5.4.7 (Apple Silicon Metal 最適化 ROI 階層)、§5.4.X (MCMC 5 連敗) と同じ pattern を踏襲する — 事前 commit した仮説を実測で falsify し、次に必要な investigation の primary suspect を signals として encode する。卒論全体の方法論的一貫性を守る。
  • msplat / brush との対比: 本 finding は本実装単独の recipe 依存性を切り分けるもの。msplat / brush の Mip-NeRF 360 実測は本セッションでは実施しない (msplat spike は synthetic のみ)。Pareto plot v2 は「本実装 baseline + tuned + Kerbl 2023 reference (paper 公称値)」の 3 系列で作る。他実装の Mip-NeRF 360 実測は Track D-1 (来週以降) の future work。

5. 実施ログ (2026-07-22)

  1. 07:06:37 — 4 scene sweep 開始 (bicycle → garden → counter → room)。runner: `bash splat/scripts/run-mipnerf360-4scene-30k.sh`。
  2. 08:55:48 — bicycle 30k 完走 (1h 49m)。garden 開始。
  3. 09:00 頃 — bicycle `result.toml.psnr = 0.0` を発見。train.rs の final eval は `transforms_val.json` 前提で COLMAP dataset では skip されると判明。
  4. 09:15 頃 — `splat eval` に `--format colmap` を追加 (A-1.5)。cargo build --release 成功、running training には影響なし。
  5. 09:20 頃 — bicycle final.ply で post-hoc COLMAP eval を実行 → **PSNR 15.549 dB** 確定 (Kerbl 2023 比 -9.7 dB)。
  6. 09:30 頃 — 「残り 3 scene 同 recipe で回すのは ROI 低」と判断、sweep 中断。bicycle 1 scene に絞って tuned re-run に方針転換 (案 B)。
  7. 09:40 頃 — tuned config `2026-07-22-bicycle-tuned-3m.toml` を作成、`splat check` で validate 通過、`Bash(run_in_background)` で launch (PID 41409、log: `runs-logs/bicycle-tuned-3m-20260722-094055.log`)。
  8. 09:40 頃 — tuned config launch (1 回目、Bash run_in_background)。iter 16500 で unintentional kill。
  9. 10:37 頃 — tuned run 再起動 (2 回目、同 config、Bash run_in_background)。iter 10000 で再び unintentional kill。
  10. 11:05 頃 — nohup + disown で detached 起動 (3 回目、PPID=1)、harness kill 対象外。以降 iter 15000 / 20000 / 25000 全て通過。
  11. 12:48 頃 — tuned run 完走 (1h 42m 17s、final splats 483k、final loss 0.268)。
  12. 12:50 頃 — post-hoc COLMAP eval 実行、**PSNR mean 15.603 dB / Δ baseline +0.054 dB (noise 圏)** 確定 → **Case (b) scope-out**。
  13. 12:55 頃 — 本 finding doc + §5.5 LaTeX を Case (b) narrative で更新。Pareto plot v2 (bicycle before/after) 生成。

6. 関連

  • baseline config: splat/configs/2026-07-22-bicycle-30k.toml
  • tuned config: splat/configs/2026-07-22-bicycle-tuned-3m.toml
  • baseline result: splat/runs/bicycle-mipnerf-30k/result.toml (psnr=0.0、post-hoc で 15.549 dB) + final.ply (73 MB, 311k splats)
  • baseline log: runs-logs/bicycle-mipnerf-30k-20260722-070637.log
  • tuned log: runs-logs/bicycle-tuned-3m-20260722-094055.log
  • post-hoc eval 実装: splat/crates/splat-cli/src/cmd/eval.rs + src/main.rs (A-1.5)
  • harvest スクリプト (post-hoc eval 統合済): splat/scripts/harvest-mipnerf-4scene.sh
  • Pareto v2 plot 生成器: docs/strategy/make_pareto_v2_12scene.py (現状は 4 scene 用、bicycle 2 点対応に修正予定)
  • Phase I (synthetic 対比): docs/findings/p1-axis1-phase-i-scene-adaptive.toml
  • msplat spike (synthetic 対比): docs/findings/p1-msplat-baseline-spike.toml
  • G3 5 連敗 (同 pattern の negative finding): docs/findings/p1-mcmc-fix3-negative.toml
  • 7 月実行プラン: docs/strategy/2026-07-execution-plan.md
  • 残タスク list: docs/strategy/2026-07-final-tasklist.md
02

関連する run

この finding が観測された / 言及している実験 run。

03

関連 finding

© 2026 大竹律輝 — 松田研究室