Newer
Older
SmTIAS-LightSim / docs / 05_TECH / TECH_10_残差主因候補の網羅整理.md

残差 2.63× の主因候補の網羅整理 (Residual Cause Candidates Enumeration)

本ドキュメントは TEST_01 Step 8-13 で確定した シミュ vs 実機の残差 2.63× の主因候補を網羅的に整理したものである.Step 8-14 以降の物理モデル精緻化で「何を試すか」の判断材料として作成した.

結論(先に) (Conclusion First)

順位候補影響度検証コスト推奨理由
🥇 1 位A1. 内壁の非 Lambertian 性(光沢成分)✓ クリア—2026-06-02 検証完了:3×3 グリッドで全 9 パターンが実機方向に作用しない(むしろ悪化)と判明.純 Lambertian が実機挙動に最も近い.§ A1 検証結果 参照
🥈 2 位A9. max_depth 8 → 16+✓ 数値改善のみクリア(形不変)—2026-06-03 検証完了:5 値スイープ {8,12,16,20,28} で CoV/勾配/C/P/動径 min/max が全て単調改善(d=28 で残差 21-28% 縮小).ただし「形」は Y 軸単調勾配のまま完全に不変.均一化フィルタとして働くが空間再配分は起こさない.§ A9 検証結果 参照
🥇 1 位A8. 反射率 R=0.85 → 0.89(物理整合点)中(数値のみ予想)低Step 8-6 で導出済の物理整合点.d=16 ベースで再評価.数値改善は予想,形改善は予想薄(A9 と同系統の均一化フィルタ)
🥇 1 位(形改善)B1. 筐体内部の幾何精度大の可能性高3D プリンタの実物理表面 vs 設計表面.A1/A9 クリアで 形改善の最後の砦として最有力
4 位D1. シミュ ROI と実機 ROI の物理的整合✓ クリア—2026-06-02 検証完了:物理サイズ差 < 1%・中心位置差 < 1 mm で整合.残差主因から除外(§ D1 検証結果 参照)
4 位A2/A3. LED 配光の個体差・樹脂ドーム小〜中高データシート Lambertian 整合済 (TECH_09)

→ 2026-06-03 更新: A1 に続き A9 max_depth も「数値改善のみクリア・形改善ではない」と確定(5 値スイープで d=28 まで CoV 21% 縮小、ただし「形」は Y 軸単調勾配のまま不変).形改善の最有力は B1 筐体幾何精度に集約.数値改善目的の最有力は A8 反射率 R=0.89(だが形改善は予想薄).

背景 (Background)

Step 8-13 で 真の linear ドメイン比較 (DNG+LSC 順方向適用 vs シミュ orthographic) を実施した結果,残差 2.63× が確定した(TEST_01 Step 8-13 参照).これは TECH_06 で予想した「真の残差 2.66×」とほぼ一致する値.

主因の絞り込み状況:

候補絞り込み状況出典
LSC 補正残差排除TECH_07(実機側で順方向適用が確立)
シミュ側のドメイン不一致(ガンマ等)排除TECH_08(網羅チェック済み)
LED 配光のモデル誤差ほぼ排除TECH_09(データシート Lambertian と数値一致)
残るのは「シミュ物理モデル誤差」絞り込み対象(本ドキュメント)—

候補の網羅整理(5 カテゴリ 18 項目) (Comprehensive Candidate List)

A. 物理光学モデル系(最有力候補を含む)

ID候補現状影響度検証状況
A1内壁の非 Lambertian 性(光沢成分)diffuse BSDF(完全 Lambertian)✓ クリア2026-06-02 検証完了:blendbsdf (diffuse + roughconductor) で weight×alpha の 3×3 グリッド全 9 パターンを実走→全パターンが純 diffuse より悪化または不変.§ A1 検証結果 参照
A2LED 個体差の配光ばらつき全 LED 完全均一小18 個平均で均される
A3樹脂ドーム形状の個体差データシート Lambertian 仮定小〜中実物の SMD 2835 ドームは樹脂で微妙な前方凸の傾向.データシート整合は TECH_09 で確認
A4LED 駆動電流のばらつき全 LED 完全同じ radiance小18 個並列接続で電流分配誤差は通常 ±5% 以内
A5発光面の物理サイズ2.8mm 角(パッケージサイズ)小Step 8-7 で 1.5mm 角試行.形状不変,mean のみ変化
A6LED 方向(光軸)全 LED (0, 0, -1)小実機の基板は平面で妥当
A7LED 位置精度Fusion STL 抽出済小Step 8-9 で正確化済(1% 以内の形状変化)
A8反射率 R = 0.85 → 0.89R=0.85(暫定)中(数値のみ予想)Step 8-2 で 0.75〜0.92 スイープ済.Step 8-6 で物理整合点 R≈0.89 を導出.d=16 ベース新方針下で再評価.A9 と同系統の均一化フィルタなので 数値改善は期待,形改善は予想薄
A9max_depth = 8 → 16+d=8 → 推奨 d=16✓ 数値改善のみクリア2026-06-03 検証完了:5 値スイープ {8,12,16,20,28} で CoV/勾配/C/P/動径 min/max が全て単調改善.d=8→28 で残差 21-28% 縮小.ただし「形」は Y 軸単調勾配のまま完全に不変.均一化フィルタとして働くが空間再配分は起こさない.新キャリブベースラインとして d=16 推奨.§ A9 検証結果 参照

B. 幾何モデル系

ID候補現状影響度検証状況
B1筐体内部の幾何精度Fusion 360 設計 STL中の可能性3D プリンタの積層・サポート跡・微細な凹凸はモデルに含まれない.実機 3D スキャンで定量化可能だが高コスト
B2メッシュ離散化精度STL → PLY 変換時の三角形数小〜中細かい曲面は離散化される
B3評価板の位置・向きFusion 360 設計通り小既知の精度(CAD 通り)

C. センサ・カメラ系(タイプ II 構造的差異)

TECH_08 §許容している構造的差異 のタイプ II 項目.白板撮影では許容と判断したが完全排除不能.

ID候補現状影響度検証状況
C1絞り・口径食orthographic で cos⁴ なし小実機側 lscMap で補正済(残差あり)
C2AF(焦点モデル)orthographic 無限遠小白板 DoF 内固定で許容
C3ピクセル積分点サンプリング + spp小spp=1024 で緩和
C4センサノイズなし小白板高輝度で相対影響小

D. 評価方法系

ID候補現状影響度検証状況
D1シミュ ROI と実機 ROI の物理的整合シミュ (24, 37, 464, 450) / 実機 (539, 1015, 1400, 1409)✓ クリア2026-06-02 検証完了:物理サイズ差 < 1%,中心位置差 < 1 mm.残差主因から除外(§ D1 検証結果 参照)
D2mean アンカー target_mean=207.82 の精度実機 1 ショットの値小形状指標には影響なし

E. 環境・運用系(実機側)

ID候補現状影響度検証状況
E1LED 温度上昇による光出力低下シミュは温度概念なし小18 個・通常室温で安定
E2筐体内壁の汚れ・経年劣化新品仮定小新品評価なら無視可

優先度評価の根拠

🥇 1 位: A1 内壁の非 Lambertian 性(光沢成分)

物理的根拠:

  • 現状の Mitsuba diffuse BSDF は 完全 Lambertian(cos θ で散乱)を仮定
  • 実物理: 3D プリンタ白フィラメント(PLA / ABS 等)は マット表面に見えても微妙な specular 成分を持つことが多い
  • 鏡面反射成分があると 多重反射の経路が変わり「形」が変化 する可能性が高い

変化が「形」に効く機序:

  • LED 直接光が壁に当たる → 光沢成分があれば 特定方向に強く反射
  • diffuse 100% なら均等分散だが、光沢があれば 評価板の特定領域に集中 する経路ができる
  • これが Y 軸単調勾配の「上端も均等に明るくならない」現象に対応する可能性

実装方法:

  • Mitsuba の roughconductor か roughdielectric を diffuse と混合(blendbsdf)
  • パラメータ: roughness(粗さ)と diffuse/specular 比
  • 物理動機: 3D プリンタ素材の実物理特性に近づける

期待効果:

  • 数値: 反射成分の方向性で多重反射経路が変化 → CoV / 勾配が動く可能性
  • 形: Y 軸単調勾配が崩れて中央ピーク楕円に近づく可能性(最も期待できる)

🥈 2 位: A8 反射率 R = 0.85 → 0.89(物理整合点)

物理的根拠:

  • 現状 R=0.85 は暫定値.Step 8-6 で 物理整合点 R≈0.89 が導出済(規格 LED radiance との物理的一致点)
  • インテグレーティングスフィア近似 1/(1-R) で R=0.85 → 0.89 は 多重反射ゲイン 6.67 → 9.09(1.36×)

変化が「形」に効く機序:

  • 反射率上昇 → 多重反射量増加 → 評価板への ambient 成分(均一光)が増える
  • Y 軸単調勾配の「上端の暗さ」がやや軽減される可能性

実装方法:

  • configs/scene_baseline.yaml の printer_white.reflectance を 0.85 → 0.89 に変更
  • spp / max_depth は据え置き

期待効果:

  • 数値: 過去 Step 8-2 で「弱い二次レバー」と判明済.CoV 数% 改善
  • 形: わずかに均一化方向だが大きな変化は期待しにくい

🥉 3 位: A9 max_depth 8 → 16+

物理的根拠:

  • 現状 max_depth=8 で多重反射の 後段(5〜8 回反射目)が打ち切られる可能性
  • 過去 Step 8-4 で 8→12 試行.CLAUDE.md には「キャリブは d≥12 推奨」と記載
  • 新方針(DNG+LSC linear)下では未再評価

実装方法:

  • configs/scene_baseline.yaml の max_depth を 8 → 16(または 12)
  • レンダ時間は depth に概ね比例(8.5 分 × 2 ≈ 17 分)

期待効果:

  • 数値: 多重反射の累積で勾配が緩和される可能性
  • 形: わずかに均一化方向

候補の組み合わせ評価

3 候補は 物理的に独立 なので組み合わせて試せる:

組み合わせ期待
A1 + A8 + A9全部入り.最大改善を狙う.レンダ時間 約 17 分
A8 + A9既存方針の延長.低コスト.大幅改善は期待しにくい
A1 単独「形」改善の最大候補単独.BSDF 実装が必要

ユーザー認識との差分整理

ユーザー認識(2026-06-02 議論)私の見立て差分
「LED 配光が一番影響」A2/A3 = 6 位(影響度 小〜中)TECH_09 でデータシート Lambertian 整合済みを踏まえて優先度低下
「筐体の反射率」A8 = 2 位賛成.物理整合点 R=0.89 への調整は次の試行候補
「反射回数」A9 = 3 位賛成.新方針下で再評価の価値あり
─A1 内壁の非 Lambertian 性が最有力(新規追加)私からの追加提案.完全 Lambertian は理想化しすぎ

「やらない」と判断したもの

以下は明示的に 本ドキュメントの優先度から除外 した:

候補除外理由
C1〜C4(タイプ II 構造的差異)TECH_08 で「白板撮影では許容」と判断済.舌模型評価時に再考
B1 筐体内部の幾何精度検証コスト高(実機 3D スキャン等が必要).他の候補を試した後の最終手段
A2/A3 LED 配光の個体差データシート Lambertian 整合済(TECH_09).実物の個体差ばらつきは実測ゴニオフォトメータが必要で高コスト
E1/E2 環境・運用系新品撮影・通常室温で影響軽微

A9 検証結果(2026-06-03 完了)

候補リストで A9「max_depth 8 → 16+」 を 5 値スイープ {8, 12, 16, 20, 28} で検証したところ,数値指標は実機方向に単調改善するが「形」は完全に不変であることが確定した.均一化フィルタとして働くが空間再配分は起こさない.

検証手順

  1. 仮説: 現状 max_depth=8 では多重反射の累積寄与の 理論累積 R/(1-R)=5.67 に対して 72.7% しか取り込んでいない.残り 27% を打ち切っている.R=0.85 の場合,最終 bounce の寄与が 0.01 を下回るのは d≈28 付近.
  2. 実装: scripts/sweep_max_depth.py で configs/scene_baseline.yaml の render.max_depth のみを書き換え → sm-render → sm-evaluate (configs/eval_baseline_dng_target.yaml).約 85 分.
  3. 可視化: scripts/build_max_depth_panel.py で 1×5 輝度マップ + 収束カーブ生成.追加で「shared vs independent スケール 2 段比較」(max_depth_sweep_shape.png) と「mean=1 正規化」(max_depth_sweep_relative.png) で形の不変性を視覚化.

結果

max_depth理論累積 R^nCoV勾配%C/P動径 min/max
872.7%0.181724.011.3160.628
1285.8%0.165121.351.2720.671
1692.6%0.160420.591.2590.683
2096.1%0.158920.351.2560.687
2898.7%0.158320.241.2540.689
実機 TARGET—0.06958.351.0910.860

残差縮小率(d=8 → 28)

指標縮小率 = (d8 − d28) / (d8 − TARGET)
CoV20.9%
勾配24.1%
C/P27.6%
動径 min/max26.3%

収束観察

実用的な収束は d=16 で達成(d=16 → 28 で CoV 1.3% のみ動く).理論累積より早く収束.これは 「直接光と初期反射が支配的,後段の累積はわずかな ambient しか足さない」 という物理的直感と整合.

「形」の観察(決定的)

3 種類のパネル全てで 形は完全に不変:

  • 共有スケール: 全 5 画像とも下端中央が明るく上端が暗い Y 軸単調勾配で、contrast が d=8→28 で緩む
  • 独立スケール(自己 contrast 最大化): 全 5 画像とも 同じ形を異なる contrast で再現 → 形が変わっていないことが視覚的に明白
  • mean=1 正規化: d=8 で 0.3〜1.3、d=28 で 0.4〜1.2 と 相対輝度の範囲が狭まる(ambient 化が進む)が,空間パターン (Y 単調勾配) は不変

物理的解釈

多重反射の累積は 空間的にほぼ均一な ambient 成分として働く.これを足すと:

  • 暗い領域と明るい領域の 絶対差が縮む → 数値指標は改善
  • 暗い/明るい領域の 空間配置は不変 → 「形」は変わらない

つまり多重反射は 均一化フィルタとして作用するが,「LED が下にしかなく評価板の中央〜上端は内壁経由でしか光が届かない」という 配置と幾何に由来する非対称性は除去できない.これは TEST_03 の主張「Step 8-1〜8-7 で形は全く変わっていない」と整合.max_depth スイープも同じパターン.

判定と意味

  • A9 は数値改善には有効だが形改善ではないことが確定.候補リストから「数値改善のみクリア」として除外
  • 新キャリブベースラインは d=16 が筋(d=28 と CoV 1.3% 差、レンダ時間 17 分 vs 30 分).物理整合の極致を求めるなら d=28
  • TECH_10 優先順位を再更新: A9 をクリア化,形改善の本筋候補は B1 幾何精度に集約.A8 は数値改善目的では有効だが形改善は予想薄
  • 副次成果: スイープ + 収束カーブ + 形比較パネルのテンプレが整備された.今後 spp など他のレンダパラメータ感度分析にも流用可能

ユーザー仮説の評価

ユーザー仮説「max_depth を増やすべき(最終 bounce 寄与が 0.01 を下回るまで)」は 方向性として完全に正しい:

  • 数値改善は d=8 → 28 で確実に進む(21-28% 残差縮小)
  • ただし 実用収束は d=16(理論累積より早い).d=28 まで増やしても得るのは 1% 程度の追加改善
  • 実機 (CoV=0.0695) には届かない(収束値 CoV=0.158 が下限).残る残差は形改善で詰める必要がある

ユーザーの「形は変わっていない」観察も視覚的・物理的に正確.均一化フィルタ系の改善は数値には効くが形には効かない原則が再確認された.

A1 検証結果(2026-06-02 完了)

候補リストで当時 🥇 1 位だった A1「内壁の非 Lambertian 性(光沢成分)」 を Step 8-14 候補 β として 3×3 グリッド感度分析で検証したところ,**どの組み合わせも実機方向に作用しない(むしろ悪化)**ことが確定した.

検証手順

  1. スキーマ拡張: src/sm_tias_lightsim/scene/schema.py に RoughConductorBSDFConfig (alpha, distribution) と BlendBSDFConfig (weight + components×2,forward reference + model_rebuild()) を追加.MaterialConfig Union を拡張.後方互換は既存 scene_baseline.yaml のスモークテストで確認
  2. Mitsuba dict 変換拡張: src/sm_tias_lightsim/scene/materials.py の _build_bsdf_dict を再帰ヘルパとして切り出し.blendbsdf のネスト対応
  3. テンプレ YAML: configs/scene_baseline_blend.yaml を作成.printer_white のみ blendbsdf (diffuse R=0.85 + roughconductor material="none") に置換
  4. スイープ実行: scripts/sweep_blend_bsdf.py で weight ∈ {0.05, 0.15, 0.30} × α ∈ {0.1, 0.3, 0.6} の 9 ジョブを順次 sm-render + sm-evaluate.各 8.4 分 × 9 = 75.5 分.eval は configs/eval_baseline_dng_target.yaml (linear + mean アンカー 207.82)
  5. 比較パネル: scripts/build_blend_bsdf_panel.py で 3×3 輝度マップ(shared vmin/vmax 1%/99% percentile)+ 数値表 PNG を生成

結果(CoV / 勾配% / C/P / 動径 min/max)

ベースライン純 diffuse (w=0): 0.1826 / 24.65 / 1.327 / 0.615 実機 TARGET: 0.0695 / 8.35 / 1.091 / 0.860

weight \ α0.1(鋭い)0.3(中)0.6(粗い)
0.050.192 / 24.8 / 1.33 / 0.620.189 / 24.9 / 1.33 / 0.620.185 / 24.4 / 1.32 / 0.62 ← 最良
0.150.213 / 26.0 / 1.35 / 0.610.204 / 26.6 / 1.36 / 0.600.193 / 25.5 / 1.34 / 0.61
0.300.243 / 26.8 / 1.37 / 0.59 ← 最悪 CoV0.227 / 29.0 / 1.41 / 0.57 ← 最悪 形0.205 / 27.0 / 1.37 / 0.59

観察された傾向

軸効果
weight ↑(光沢強化)CoV / 勾配 / C/P すべて 単調悪化(不均一性増)
α ↑(粗さ大)weight 固定で わずか改善(diffuse に近づくため)
動径 min/maxspecular 強化で 0.615 → 0.570 へ低下(不均一さが目立つ)

「形」の観察(output/_slide_panels/blend_bsdf_sweep.png)

  • w=0.05 行: ベースラインに近い Y 軸単調勾配(純 diffuse と区別困難)
  • w=0.15 行: 下端中央に明るい集中点が現れ始める
  • w=0.30 行: 下端中央に 2 つの明るいスポットが顕在化.specular 反射が LED 直下の評価板領域に集中
  • α を上げると specular が「拡散的」になり diffuse に近づくが、実機の中央ピーク楕円パターンには近づかない

物理的解釈

純 Lambertian は cos 重み散乱で 多重反射の均一化作用が最大.specular 成分が混ざると:

  • 内壁での 1 回反射が 特定方向に集中
  • 多重反射ループから外れて評価板の特定エリア(カバー側下端)に集中
  • 多重反射の累積が不均一になり ambient 成分が減る

3D プリンタ白フィラメントは 完全 Lambertian として扱うのが実機挙動に近い近似 だと判明(TECH_09 の LED Lambertian 整合性と並ぶ「物理モデル妥当性の裏付け」).

判定と意味

  • A1 は残差 2.63× の主因ではないことが確定.候補リストから「クリア」として除外
  • 「最有力候補」だった A1 の除外は 次の候補に焦点を絞れる正味前進
  • 副次成果: スキーマ層に blendbsdf + roughconductor のサポートが入った.今後の物理モデル試行で再利用可能
  • 新規テスト 89 件追加(既存 608 → 697 全通過).Pydantic v2 forward reference + 再帰 BSDF 変換の安全網が整備された

副次発見

  • roughconductor の material="none" 設定は eta=k=1 の完全反射体として機能する(Mitsuba 3 仕様).感度分析用途で扱いやすい
  • weight=0 で純 diffuse に完全一致するため、ベースライン (output/baseline/luminance.npy) を 10 番目のセルとして使い回せる設計が妥当だった

D1 検証結果(2026-06-02 完了)

候補リスト 4 位の D1「シミュ ROI と実機 ROI の物理的整合」 を Step 8-14 候補 γ として 事前検証したところ,両者は物理的に同じ領域を見ていることが確認できた.設定変更は一切行わず,既存設定の数値検証のみで結論が出た.

検証手順

  1. シミュ ROI 物理範囲の算出 — configs/scene_baseline.yaml の orthographic 設定(position (0,0,-50), ortho_scale (50, 52), film 512×512)と configs/eval_baseline_linear.yaml の ROI (24, 37, 464, 450) から,評価板中心基準で X∈[-45.31, +45.31] mm, Y∈[-46.92, +44.48] mm(幅 90.63×91.41 mm) と算出
  2. 評価板 STL bbox 計測 — configs/meshes/照明ムラ補正ボード.stl を trimesh で計測:X=99 mm × Y=102 mm(既知値と一致)
  3. 実機画像の物理スケール算出 — reference_measurement/MiniTIAS_20260408_144434/MiniTIAS_20260408_144434.png(2448×3264)から評価板の縦方向黒縁を検出(H=1560 px).評価板 Y=102 mm より 物理分解能 0.0654 mm/px を確定(ピクセルアスペクト比 1:1 仮定で X 方向も同じ)
  4. 実機 ROI 物理範囲の算出 — roi_config.json の ROI (539, 1015, 1400, 1409) から,評価板中心基準で X∈[-44.79, +46.75] mm, Y∈[-47.53, +44.59] mm(幅 91.54×92.13 mm) と算出(画像 y→物理 Y は符号反転)

比較結果

項目シミュ ROI実機 ROI差
X 幅90.63 mm91.54 mm-0.91 mm (1.0%)
Y 高さ91.41 mm92.13 mm-0.72 mm (0.8%)
X 中心0 mm+0.98 mm+0.98 mm
Y 中心(符号反転後)-1.22 mm-1.47 mm-0.25 mm

→ 物理サイズは 1% 以内・中心位置は 1 mm 以内で一致.3 列パネル output/_slide_panels/roi_alignment_check.png(①実機画像 + 評価板境界・実機 ROI / ②シミュ輝度マップ + 評価板境界・シミュ ROI / ③物理座標系で両者を重ね合わせ)でも視覚的に確認.

判定と意味

  • 残差 2.63× の主因は ROI 整合ではないことが確定.D1 を候補リストから「クリア」として除外
  • 過去の設定者(おそらく Step 8 開始時の scripts/select_white_board.py GUI 選択 → シミュ側 ortho_scale 設計値)は 物理整合性を意識して ROI を揃えていたことが裏付けられた
  • 設定変更ゼロで結論が出たため,シミュ/実機双方の YAML・コードへの コミット可能な変更なし

副次発見

評価板は実機画像中央から 下方向に約 4.2 mm(65 px)オフセットして配置されている(カメラ取付位置 vs 評価板取付位置のミリ精度差)が,実機 ROI もそのオフセットに沿って選択されているため,物理領域としては板中心とほぼ整合している.

Step 8-14 候補選定(次のアクション)

D1(γ)が「クリア」と確定したため,残る選択肢は以下:

Step 8-14 候補内容状態推奨度
Step 8-14 候補 α 前半A9 max_depth 8 → 16+✓ 2026-06-03 完了(数値改善のみクリア — 形不変)—
Step 8-14 候補 α 後半A8 反射率 R=0.85 → 0.89(d=16 ベース)(低コスト・数値改善目的)未実施⭐⭐
Step 8-14 候補 βA1 内壁の非 Lambertian 性(光沢成分混合 BSDF)✓ 2026-06-02 完了(クリア — 実機方向に作用しない)—
Step 8-14 候補 γD1 ROI 整合の再確認✓ 2026-06-02 完了(クリア — 物理差 < 1%)—
Step 8-14 候補 δβ + α 全部β/α 前半クリアで意義消失—
Step 8-14 候補 ε(新規)B1 筐体幾何精度の検討(形改善の最後の砦)未実施⭐⭐⭐
Step 8-14 候補 ζ(新規)LED 軸方向のティルト仮説(評価板中央向きに数度傾ける)未実施⭐⭐

→ A1/A9 がともに「形改善ではない」と確定したため,残る残差 (CoV 0.158 vs TARGET 0.069) の 形改善は構造的に光分布を再配分する要素 (B1 / ζ) が本筋.均一化フィルタ系 (A8) は数値改善のみ期待.

残差候補の出典

過去の試行履歴

仕様