diff --git a/CLAUDE.md b/CLAUDE.md index c7c2f95..d6e38fc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -101,3 +101,4 @@ ### 06_TEST(テスト) - キャリブレーション検証履歴: docs/06_TEST/TEST_01_キャリブレーション検証履歴.md(Step 8 イテレーション 8-1〜8-7 のフル記録.仮説/変更/数値/解釈/学びを時系列で) +- シミュレーション実行記録: docs/06_TEST/TEST_02_シミュレーション実行記録.md(output/ 各サブディレクトリの索引.Step との対応・シーン/評価 config・主要指標・再現コマンド・削除推奨) diff --git "a/docs/06_TEST/TEST_01_\343\202\255\343\203\243\343\203\252\343\203\226\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\346\244\234\350\250\274\345\261\245\346\255\264.md" "b/docs/06_TEST/TEST_01_\343\202\255\343\203\243\343\203\252\343\203\226\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\346\244\234\350\250\274\345\261\245\346\255\264.md" index 9acbb54..ea65910 100644 --- "a/docs/06_TEST/TEST_01_\343\202\255\343\203\243\343\203\252\343\203\226\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\346\244\234\350\250\274\345\261\245\346\255\264.md" +++ "b/docs/06_TEST/TEST_01_\343\202\255\343\203\243\343\203\252\343\203\226\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\346\244\234\350\250\274\345\261\245\346\255\264.md" @@ -329,6 +329,7 @@ - [SPEC_03_基準設計の物理構成](../04_SPEC/SPEC_03_基準設計の物理構成.md) - [SPEC_02_シーン定義仕様](../04_SPEC/SPEC_02_シーン定義仕様.md) - [PLAN_02_開発ステップ](../03_PLAN/PLAN_02_開発ステップ.md) +- [TEST_02_シミュレーション実行記録](TEST_02_シミュレーション実行記録.md)(各 Step に対応する `output/` ディレクトリの索引) - 実装エントリ: - `src/sm_tias_lightsim/evaluation/oetf.py`(Step 8-3) - `src/sm_tias_lightsim/visualize/baker.py`(Step 8-5) diff --git "a/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" "b/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" new file mode 100644 index 0000000..788987f --- /dev/null +++ "b/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" @@ -0,0 +1,116 @@ +# シミュレーション実行記録 (Simulation Run Catalog) + +本ドキュメントは `output/` 配下に蓄積されたシミュレーション・評価結果ディレクトリを **「何の試行か」が分かる形に索引化** したものである.`output/` は `.gitignore` で追跡対象外(容量・再生成可能性のため)であり,**手元の `output/` が無くてもこのドキュメントだけ読めば「過去にどんな試行があったか・どう再現するか」が辿れる**ことを目的とする. + +関連: + +- 改善履歴: [TEST_01_キャリブレーション検証履歴](TEST_01_キャリブレーション検証履歴.md) +- 物理仕様: [SPEC_03_基準設計の物理構成](../04_SPEC/SPEC_03_基準設計の物理構成.md) +- 評価設定: [SPEC_02_シーン定義仕様](../04_SPEC/SPEC_02_シーン定義仕様.md) + +## output/ の扱い方針 + +- **追跡対象外** (`.gitignore` の `output/` 行).git に乗せない. +- **再生成は可能** だが時間がかかる(1 レンダ約 9.6 分 @ spp=1024, 512²).キャリブで検証済みの結果は残しておくと再現コストを節約できる. +- **どこにメタデータを残すか**: 各サブディレクトリに `README.md` を置くより,**本ドキュメントに一覧化する方が「俯瞰しやすい」**. +- **削除推奨のディレクトリ**は本ドキュメント末尾に列挙.古い試行錯誤や PoC スクリーンショットは適宜削除して構わない. + +## 現役の検証アーティファクト (Active Verification Artifacts) + +[TEST_01](TEST_01_キャリブレーション検証履歴.md) や [SPEC_03](../04_SPEC/SPEC_03_基準設計の物理構成.md) から参照されている,**意味のある実行結果**: + +| ディレクトリ | 関連 Step | シーン設定 | 評価設定 | 主要指標 (mean / CoV / 勾配% / C/P) | 用途・参照元 | +| --- | --- | --- | --- | --- | --- | +| `output/baseline/` | 8-1 確定基準 | `configs/scene_baseline.yaml` (R=0.85, d=8, spp=1024) | — (レンダのみ) | luminance.npy + render_uint8.png | 確定基準の生レンダ.他の評価の入力ソース | +| `output/baseline_linear_npy/` | 8-1 比較基準 | (同上 luminance.npy 入力) | `configs/eval_baseline_linear.yaml` (OETF off) | 152.02 / 0.1826 / 24.65 / 1.327 | TEST_01 Step 8-7 で size 1.5×1.5 と比較する基準.輝度マップ追跡 (TEST_03) のパネル左下 | +| `output/eval_oetf_r085/` | 8-3 OETF 後 | (同上 luminance.npy 入力) | `configs/eval_baseline.yaml` (OETF on) | 146.71 / 0.0907 / 11.16 / 1.126 | OETF 適用効果の代表結果.輝度マップ追跡 (TEST_03) パネル右上 | +| `output/emitter_real/` | 8-7 検証 | `configs/scene_baseline_emitter_real.yaml` (size 1.5×1.5, radiance 12227, Φe 保存) | `configs/eval_baseline_linear.yaml` (OETF off) | 429.99 / 0.1863 / 26.21 / 1.355 | 点光源近似検証.形状指標 ≈ baseline_linear_npy で実証.輝度マップ追跡 (TEST_03) パネル右下 | +| `output/sweep_reflectance/r075/` 〜 `r092/` | 8-2 反射率スイープ | `configs/scene_baseline.yaml` の `printer_white.reflectance` を 0.75 / 0.80 / 0.85 / 0.90 / 0.92 に振った 5 種 (d=12, spp=256) | linear 評価 | → 下表 `sweep_summary.csv` | TEST_01 / SPEC_03 の反射率スイープ表の元データ | +| `output/sweep_reflectance/sweep_summary.csv` | 8-2 | — | — | 5 反射率の評価結果まとめ | 反射率スイープのサマリ表 | + +### sweep_summary.csv の値(参考、TEST_01 line と一致確認用) + +| R | CoV | 勾配 % | C/P | mean | std | +| --- | --- | --- | --- | --- | --- | +| 0.75 | 0.2173 | 25.91 | 1.350 | 104.19 | 22.64 | +| 0.80 | 0.2034 | 24.00 | 1.316 | 137.00 | 27.87 | +| 0.85 | 0.1893 | 22.08 | 1.283 | 180.80 | 34.23 | +| 0.90 | 0.1753 | 20.15 | 1.252 | 239.60 | 42.00 | +| 0.92 | 0.1697 | 19.42 | 1.241 | 268.52 | 45.57 | + +### 再現コマンド + +| 目的 | コマンド | +| --- | --- | +| baseline レンダ生成 | `$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline.yaml --output output/baseline/` | +| baseline (linear, OETF off) 評価 | `uv run sm-evaluate --image output/baseline/luminance.npy --config configs/eval_baseline_linear.yaml --output output/baseline_linear_npy/` | +| baseline (OETF on) 評価 | `uv run sm-evaluate --image output/baseline/render_uint8.png --config configs/eval_baseline.yaml --output output/eval_oetf_r085/` | +| emitter_real (size 1.5×1.5) レンダ生成 | `$env:DRJIT_LIBLLVM_PATH = "C:\Program Files\LLVM\bin\LLVM-C.dll"; uv run sm-render --scene configs/scene_baseline_emitter_real.yaml --output output/emitter_real/` | +| emitter_real 評価 | `uv run sm-evaluate --image output/emitter_real/luminance.npy --config configs/eval_baseline_linear.yaml --output output/emitter_real/` | +| 反射率スイープ全 5 点 | `output/sweep_reflectance/run_sweep.py` を参考に再実装.元スクリプトは削除推奨 (下記) のため要再構築 | +| 輝度マップ追跡パネル再生成 | `uv run python scripts/build_luminance_evolution_panel.py` | + +## 過去の整理実績 (Cleanup History) + +### 2026-05-27: 初回整理(TEST_02 新設に伴う) + +本ドキュメント新設に合わせて以下の残骸を **削除済み**(合計 ~12.6 MB).`output/` は `.gitignore` で追跡対象外のため,リポジトリ履歴には影響していない. + +| 削除対象 | 内容 | サイズ | +| --- | --- | --- | +| `output/eval_compat_test/` | 中身空(`figures/` 内も空).用途不明の試行残骸 | 0 KB | +| `output/baseline_linear/` | `baseline_linear_npy/` と内容が重複.より新しい後者が現役 | 約 1245 KB | +| `output/compare_lummap/` | 過去の輝度マップ比較作業の残骸.`scripts/build_luminance_evolution_panel.py` で代替済み | 約 6077 KB | +| `output/sweep_reflectance/` 内の以下: | | | +| ・PoC スクリーンショット 28 個 | `clim_fix.png`, `cull_check.png`, `cull_check_no.png`, `eval_fix.png`, `eval_innerface.png`, `eval_texture.png`, `hybrid_*.png`(8 個), `marker_check.png`, `nomarker_check.png`, `path_check.png`, `path_translucent.png`, `poc_cull.png`, `render_only.png`, `render_opt.png`, `sensor_off_check.png`, `uni_check.png`, `unified_*.png`(3 個), `viz_check.png` | 約 3700 KB | +| ・ベイクキャッシュ 6 個 | `bake_cache.npz`, `bake_d16.npz`, `bake_hi.npz`, `bake_uni.npz`, `bake_uni64.npz`, `bake_unified.npz`(再生成可能) | 約 1280 KB | +| ・使い捨てスクリプト 4 個 | `apply_oetf.py`, `diag_seam.py`, `poc_cull.py`, `run_sweep.py`(本体機能はパッケージに統合済み or 再実装容易) | 約 16 KB | + +整理後の `output/` トップレベルは **「現役の検証アーティファクト」表の 5 ディレクトリのみ**(`baseline/`, `baseline_linear_npy/`, `emitter_real/`, `eval_oetf_r085/`, `sweep_reflectance/`).`sweep_reflectance/` 内は `r075`〜`r092` の 5 サブディレクトリと `sweep_summary.csv` の 6 項目のみ. + +### 今後の整理時の参考テンプレート + +新たに残骸が溜まったときは,本ドキュメント「現役の検証アーティファクト」表に載っていないディレクトリ・ファイルを削除候補として整理する.`output/` は `.gitignore` 配下なので git 履歴への影響はない. + +```powershell +# 個別ディレクトリ削除 +Remove-Item -Recurse -Force output/<対象> + +# sweep_reflectance のように「特定の名前以外を消す」場合のテンプレ +$keepNames = @("r075", "r080", "r085", "r090", "r092", "sweep_summary.csv") +Get-ChildItem output/sweep_reflectance | + Where-Object { $keepNames -notcontains $_.Name } | + Remove-Item -Recurse -Force +``` + +実行前に必ず `Get-ChildItem` で対象を確認すること.削除後は本ドキュメントの「過去の整理実績」サブセクションに追記して履歴を残す. + +## 今後の運用規約 (Operational Conventions) + +### 新規シミュレーション実行時のルール + +1. **ディレクトリ名は内容を端的に**: + - 良い例: `baseline_linear_npy/`(baseline 入力 + linear 評価 + npy ソース) + - 悪い例: `test1/`, `tmp/`(後から何の試行か分からない) +2. **本ドキュメント (TEST_02) に新行を追加**する: ディレクトリ名・関連 Step・config パス・主要指標・用途を記録.これで `output/` が散らかっても索引から辿れる. +3. **PoC や使い捨て出力は削除を前提**: 残すなら本ドキュメントに「履歴的価値」として記載.何も書かないものは削除推奨と見なす. +4. **再現コマンドを残す**: 本ドキュメントの「再現コマンド」表に同様の行を追加. + +### ディレクトリ命名規則の提案 + +``` +output/{シーン or テーマ}[_{評価バリアント}][_{特記事項}]/ + 例: + output/baseline/ ← 確定基準 (scene_baseline.yaml) + output/baseline_linear_npy/ ← 確定基準を linear で再評価 (npy ソース) + output/eval_oetf_r085/ ← OETF on 評価結果 (R=0.85) + output/emitter_real/ ← 発光面実サイズ検証 + output/sweep_reflectance/r{NNN}/ ← 反射率スイープ +``` + +## 参照 (References) + +- [TEST_01_キャリブレーション検証履歴](TEST_01_キャリブレーション検証履歴.md): 各 output の生まれた経緯 +- [SPEC_03_基準設計の物理構成](../04_SPEC/SPEC_03_基準設計の物理構成.md): 確定基準の物理仕様 +- [SPEC_02_シーン定義仕様](../04_SPEC/SPEC_02_シーン定義仕様.md): シーン YAML と評価 YAML のスキーマ +- 生成スクリプト: `scripts/build_luminance_evolution_panel.py`(輝度マップ追跡用)