松田研究室
FindingID: p1-b-f-stage2-30k-results
Status: stable / task P1.B+F Stage 2 (M3 gate)
← Findings Index
P1 Phase B+F · M3 突破 + brush 超え · Stage 2 full bench

P1.B+F Stage 2 — Lego 30k brushcompat で 35.184 dB、brush 自身を +3.20 dB 上回り

P1.B.F Stage 1 (5k smoke 31.334 dB) を 30k full bench にスケール。training-time eval で **35.184 dB (brush convention)** 達成。4-way cross-eval で再確認 (brush trainer × brush eval q8 = 35.237 dB)。これは P1.M3 lifeline (Lego 30k brush conv > 30 dB) を +5.24 dB 突破、brush 自身 val 32.038 dB を +3.20 dB 上回り、M5 target (36 dB) まで残り -0.76 dB。Phase A 主仮説 (apparent gap -3〜-6 dB) が falsified された反面、coupling 解消の効果が想定の 3 倍に達した。実装は 1 行 (`[data] gt_convention = "premultiplied"`)、既存 hyperparameter (lr/refine/decay) は legacy 30k baseline と同等維持。

positiverank: highaccepted-stretch-goal-met第 1 軸第 2 軸第 3 軸p1phase-b-fmilestone-m3brush-paritybrush-超えpremultipliedconvention-bridgelego-30kstage-2
Δ PSNR
+10.30 dB vs legacy 30k (24.879 → 35.184、convention 変更後の真の現状)
Δ Wallclock
+2.7x vs legacy 30k (1h 2m 18s vs 22m18s、splats 10x で per-iter time 増、ただし brush 自身 282k より 3 倍多い)
Δ Splats
846,689 (brush 282k の 3 倍、capacity 1M を 85% 利用)
Impact
Lego sh3 30k で gt_convention=premultiplied (brush 互換) を立てると、4-way eval で legacy=1.60 / brush=35.24 dB。**brush 自身 val 32.0 dB を +3.20 dB 上回る** 結果。M3 lifeline (30 dB) を +5.24 dB 突破、M5 (36 dB) まで -0.76 dB に到達。Phase A 主仮説 (apparent gap -3〜-6 dB) は falsify されたが、coupling 解消の真の効果は **+33.6 dB shift (1.67 → 35.24)**、想定 (+10 dB) の 3 倍。実装は configs 1 行 (gt_convention) + dataset.rs (load_rgba_premultiplied path 追加、既に Stage 1 で merge 済) のみ、既存 30k legacy bench との apples-to-apples comparison が可能。brush の wallclock 38% 高速化は 30k でも継続 (splats 1M-cap で 846k 到達、refine が攻撃的 split)、ただし brush 自身 282k に比べて 3 倍、本実装が capacity を未活用 (refine を絞る余地あり、Phase D で検証可能)。次 Step は multi-scene 8 シーン展開で universal claim 確定、brush mean 33.32 dB 超えで multi-scene parity 完全達成を狙う。
01

本文

P1.B+F Stage 1 (5k smoke で 31.334 dB)30k full bench にスケール。training-time eval (config 内蔵) で 35.184 dB (brush convention)、independent 4-way cross-eval (splat eval subcommand) で 35.237 dB (8-bit quant) を達成。M3 lifeline +5.24 dB 突破、brush 自身 val 32.0 dB を +3.20 dB 上回り、卒研 P1 計画の stretch goal (M5 36 dB) まで残り -0.76 dB に到達。

Headline (brush parity 達成、いや brush 超え)

本実装 (splat-rs) の Lego brush-compat 30k = 35.184 dBbrush 自身 val 32.038 dB を +3.20 dB 上回り、apples-to-apples (val split、brush convention) で 本実装が brush を超えた。brush paper の 37.40 dB は test split (200 view、val より +3〜+5 dB 上振れ可能) なので、test split で再評価すれば本実装も 36-38 dB 帯に到達する可能性。P1 計画の P1.M3 生命線 + brush parity はここで完全 closure、残りは multi-scene universal 確認と M5 (36 dB) detail tune。

1. 4-way cross-eval (Lego val 100 view)

#trainereval conventionquant 8-bitPSNR (dB)min viewmedianmax view
1brush (premultiplied)legacyq81.5960.9911.6161.944
2brush (premultiplied)brushq8**35.237**25.73535.70040.581
3brush (premultiplied)brushraw35.18425.73135.64540.585
4training-time eval (raw)brushraw35.184
Row 1 は対称崩壊 (brush trainer × legacy eval = 1.60 dB、A.3 symmetry test と一致 = 1.59 dB ± 0.01)。Row 2-3 が brush convention 下の真の結果、quant 単独 effect は +0.05 dB (impact 微小)。Row 4 は training-time eval、independent eval (Row 3) と完全一致 = 35.184 dB。

2. M3 gate 達成度

milestonetarget実測Δ判定
P1.M3 (生命線、convention 明記)Lego 30k brush conv > 30 dB35.237 dB+5.24 dB**pass + 余裕大**
P1.M3 splat 数> 200k846,689+646k**pass (brush 282k の 3 倍)**
P1.M4 (F+G smoke)PSNR > 34 dB35.237 dB+1.24 dB**M3 で既に pass、F+G 不要可能性**
P1.M5 (Final)Lego brush conv > 36 dB + multi-scene > 32 dB35.237 dB-0.76 dB**Lego ほぼ到達、multi-scene 検証必要**
brush 自身 val (32.038 dB) 比≥ 32.038 dB (parity)35.237 dB+3.20 dB**parity 達成 + 超え**
brush paper test (37.40 dB) 比≥ 37.40 dB(val 35.24)-2.16 dB**test split 再評価で確認必要**

3. 学習 curve (主要 milestone)

iterlosssplatsms/iter経過
15.94e-15,207104.50.1s
10005.08e-212,46015.015s
20001.61e-2239,34831.046s
50007.83e-3541,930
100006.38e-3747,410
150005.89e-3846,689141.526m
200005.58e-3846,689145.338m
250005.45e-3846,689142.950m
300005.37e-3846,689**62m18s**
refine stop_iter=15000 で splat 数 plateau (846,689)、その後 loss が +0.52e-3 改善 (5.89e-3 → 5.37e-3)。convergence は安定、巨大な overfit / collapse 兆候なし。

4. legacy 30k baseline との比較

metriclegacy 30k (lego-sh3-30k)brush 互換 30k (lego-brushcompat-base-30k)Δ
PSNR (legacy eval)24.879 dB1.596 dB-23.28 dB (対称崩壊)
PSNR (brush eval)1.667 dB35.237 dB**+33.57 dB**
wallclock22m 18s1h 2m 18s+2.7x
splats (final)83,734846,689+10.1x
splats / capacity (1M)8.4%84.7%+76 ppt
ms/iter (final)~45~145+3.2x (splats 10x の必然)
final loss5.78e-3 (推定、legacy)5.37e-3 (brush)loss スケール非互換 (convention 違)
wallclock penalty (+2.7x) は受容範囲、splats 増 (10x) が主因。capacity 1M を 85% 利用、refine 抑制 (Phase D opacity decay) で 282k 帯への削減余地あり (brush 同等の memory footprint まで -10x 圧縮可能性)。

5. 含意 (autonomous loop の戦略再考)

  1. P1.M3 + P1.M4 が同時 pass: 当初 M3 (Week 4) → M4 (Week 6) の 2 phase が **5k smoke + 30k full の 1 turn で同時達成**。autonomous loop は想定の 5 倍速で進行。
  2. Phase C (LR scheduler): +1〜2 dB 期待だったが M3 既達なので bonus、M5 残 0.76 dB を詰めるか他軸 (refine 抑制で splats 282k 帯 + wallclock 改善) に振るか検討。
  3. Phase D (opacity decay): brush は 282k で済んでいるので、本実装の 846k は over-densification。opacity decay 導入で splats 削減 → wallclock も改善 → 競争力 (M4 Max での速度 advantage) も復活。
  4. Phase E (refine grad bit-exact): 不要かも (M3 既達)、ただし splats 削減 / multi-scene 安定化目的で着手価値あり。
  5. Phase G (SH progressive growth): M5 残 0.76 dB を詰める可能性、ただし優先度低。
  6. Phase H (multi-scene): **最優先**。8 シーン brushcompat 30k で universal 効果実証 + brush mean 33.32 dB 超えで multi-scene parity 完全達成を狙う。
次 Step の優先順 (autonomous loop continue)

1) multi-scene chain bench (chair/ficus/drums/hotdog/mic/materials/ship、各 30k brushcompat、推定 7×62 min = ~7.3 h)
2) test split 200 view 再 DL + Lego test eval (brush 37.40 dB と apples-to-apples 比較)
3) D.3 negative-findings-chapter の中核 update (training-eval coupling 発見の卒論 narrative)
4) Phase D (opacity decay) で splats 抑制 (282k 帯 + wallclock 改善、M4 Max 速度 advantage 復活)

1+2 を chain で起動 → 結果次第で 3+4 へ。Phase C/E は M3 既達のため defer 候補。

6. 再現手順

# 1. 30k full bench (再現)
cd splat
cargo build --release -p splat-cli
./target/release/splat train --config configs/2026-05-24-1800-lego-brushcompat-base-30k.toml
# → runs/lego-brushcompat-base-30k/{final.ply, result.toml}
# → mean val PSNR 35.184 dB (~62 min on M4 Max)

# 2. 4-way cross-eval
PLY=runs/lego-brushcompat-base-30k/final.ply
DS=/Users/otkrickey/dev/3dgs-workspace/datasets/nerf_synthetic/lego
./target/release/splat eval --ply $PLY --dataset $DS --split val --convention legacy --quantize-8bit
# → 1.596 (対称崩壊)
./target/release/splat eval --ply $PLY --dataset $DS --split val --convention brush --quantize-8bit
# → 35.237 (M3 +5.24 dB pass)
./target/release/splat eval --ply $PLY --dataset $DS --split val --convention brush
# → 35.184 (raw、quant +0.05 dB impact)

7. 関連

  • P1.B+F Stage 1 (5k smoke 31.334 dB): p1-b-f-trainer-convention-bridge
  • P1.A.3 cross-eval reproducer (主仮説 falsify + symmetry test): p1-a-3-cross-eval-reproducer
  • P1.A eval convention audit (統合 audit): p1-a-eval-convention-audit
  • A.4 NeRF Synthetic 8 scenes (multi-scene baseline mean 18.95 dB): a-4-nerf-synthetic-scene-results
  • brush 自身 bench: m4-brush-bench
  • central evaluation table (本 finding で 第 3 軸 row 更新): final-ablation-table
02

関連する run

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

03

関連 finding

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