사용자 가이드

제 4 장 — 보조 창

메인 윈도우 (3D 뷰포트와 인스펙터) 외에도 RadianceKit은 일곱 개의 추가 창을 관리하며, 모두 Help 메뉴를 통해 열립니다. 위에서 아래로의 목록: User Guide (⌘?), Keyboard Shortcuts (⌘/), Open Training Logs… (앱 창을 열지 않고 Finder를 엽니다. 따라서 여기서는 더 다루지 않음), Manage Storage…, Pareto Dashboard… (⇧⌘D), Holdout Analysis… (⇧⌘H), BayesOpt Console… (⇧⌘B). 그 중 세 가지 — Dashboard, Holdout, BayesOpt — 는 독립적인 분석 도구입니다. 각각 자체 View Model 스택을 가지며 디스크의 JSON 파일을 읽거나 쓰고, 앱 시작 시 창을 특정 파일에 바로 가리키게 할 수 있는 CLI 인수가 있습니다 (–dashboard-dir, –holdout-file, –bayesopt-autorun).

네 개의 단순한 창 (User Guide, Keyboard Shortcuts, Manage Storage, 그리고 하위 메뉴 항목 Open Training Logs / Open Exports Folder) 은 조작 요소당 짧은 항목을 받습니다. 세 분석 창은 더 자세히 문서화되어 있습니다 — 각각 창에서 무엇을 보는지, 언제 열어야 하는지, 표시된 이미지를 어떻게 해석할지 설명하는 도입부와 함께.

장 끝에는 메인 윈도우의 인스펙터에 대한 상호 참조 섹션이 있습니다. 실행 중인 학습에서 실시간 Loss 차트와 Gaussian Count 표시에서 무엇을 의미 있게 읽을 수 있는지에 대한 것입니다.

User Guide (W1–W4)

User Guide 창, 왼쪽 사이드바와 오른쪽 렌더링된 Markdown 콘텐츠
User Guide 창, 왼쪽 사이드바와 오른쪽 렌더링된 Markdown 콘텐츠

그것이 무엇인지: 앱에 동봉된 guide_<언어>.md를 렌더링하는 내장 도움말 창입니다. 언어는 설정 (General 탭 → Language) 에서 또는 거기에 "System"이 있으면 macOS 언어 환경 설정에서 파생됩니다. 레이아웃은 고전적입니다: 왼쪽에 모든 헤딩이 있는 사이드바, 오른쪽에 흐름 텍스트.

하나의 항목에 대해 빠른 상기가 필요할 때 — 즉 키워드 대체로. 자세한 참조는 이 매뉴얼입니다. 내장 도움말 창은 명령줄의 –help와 비슷합니다. 각 앱 릴리스마다 업데이트되지만 콘텐츠 면에서는 더 표면적으로 유지됩니다.

W1NavigationSplitView (사이드바 + 디테일)

위치

Help → User Guide (⌘?)..

기술적 설명

콘텐츠 트리를 위한 좁은 사이드바 (최소 180 pt 폭) 와 실제 Markdown 콘텐츠를 위한 스크롤 가능한 디테일 영역의 2열 레이아웃입니다. 창은 최소 크기 700 × 500 pt를 가집니다. 처음 열 때 창은 앱 번들에서 적절한 guide_<lang>.md를 로드하고 (대체로 guide_en.md), 블록 레코드 (H1–H4 헤딩, 단락, 목록, 테이블, 구분선) 로 파싱하며, 사이드바를 위한 헤딩 구조를 별도로 추출합니다. 인라인 형식 (Bold, Italic, Code Span) 은 내장 Markdown 엔진을 통해 렌더링됩니다. 언어는 앱 설정에서 읽히며, 중국어 (zh-Hans) 와 브라질 포르투갈어 (pt-BR) 의 특수 경우에는 이 변형이 zh 또는 pt와 다르기 때문에 전체 Locale 태그로 유지됩니다.

W2List (헤딩 사이드바)

위치

User Guide 창의 왼쪽 열..

기술적 설명

현재 Markdown 문서의 모든 H2 및 H3 헤딩에 대한 목록입니다. H2 항목은 들여쓰기 없이 Medium 글자 굵기로 나타나고, H3 항목은 왼쪽에 16 pt 들여쓰기와 축소된 Foreground 스타일로 표시됩니다. H4 이하는 무시됩니다. 그 이상의 깊이는 사이드바를 혼잡하게 만들기 때문입니다. 앵커 ID는 헤딩 텍스트의 슬러그화 (소문자 + 공백을 대시로 + 글자/숫자/대시로 필터링) 로 생성됩니다 — GitHub가 Markdown 앵커에 사용하는 것과 동일한 알고리즘이므로 문서의 외부 URL도 잠재적으로 같은 앵커에 도달할 수 있습니다. 목록은 네이티브 macOS 스타일을 사용합니다.

W3Button (헤딩 → 앵커 점프)

위치

사이드바 행당 하나의 버튼..

기술적 설명

각 사이드바 항목은 현재 앵커를 설정하는 버튼이지만 시각적으로 목록 항목처럼 보입니다. 관찰자 변수는 그런 다음 0.3초에 걸친 부드러운 애니메이션으로 해당 앵커에 대한 스크롤 점프를 트리거합니다. 점프 후 앵커 값은 재설정됩니다 — 그렇지 않으면 동일한 앵커의 다음 클릭이 다시 발사되지 않을 것입니다 (값이 변경되지 않았기 때문에 관찰자가 다시 트리거되지 않음).

W4ScrollView (디테일 콘텐츠)

위치

오른쪽 열..

기술적 설명

Lazy 렌더링이 있는 스크롤 가능한 수직 스택 콘텐츠 영역. 더 긴 가이드는 쉽게 200개 이상의 Markdown 블록을 가질 수 있기 때문입니다 — 비 lazy 변형은 모두 동시에 인스턴스화하게 됩니다. 각 블록은 자체 ID를 받습니다. 헤딩 앵커 (점프 가능한 H1–H3용) 또는 인덱스 자리표시자. 최대 폭은 720 pt, 패딩 32 수평 / 24 수직이므로 긴 줄도 잘 읽을 수 있는 레이아웃을 유지합니다. 테이블은 수평 스택과 구분선과 함께 셀별로 렌더링되며, 인라인 코드는 내장 Markdown 엔진을 통해 렌더링됩니다. 실제 코드 블록은 현재 단락으로 처리됩니다 — Help 창의 알려진 제한입니다.

Keyboard Shortcuts (W5–W6)

Keyboard Shortcuts 창 — Navigation/Views/Capture/Editor/Training 5개 그룹, 왼쪽에 단축키 열, 오른쪽에 설명
Keyboard Shortcuts 창 — Navigation/Views/Capture/Editor/Training 5개 그룹, 왼쪽에 단축키 열, 오른쪽에 설명

다섯 섹션의 정적 참조 목록입니다. Navigation: Mouse Drag (Orbit/Fly), Shift+Drag/Right-Drag (Pan), Scroll (Zoom), WASD (Fly Through 이동), Q/E (Up/Down), F (Toggle Orbit/Fly), Double-click (Re-center), Cmd+Scroll (FoV 조정). Views: R (Reset Camera), T (Auto-Rotation), P (Camera Playback), B (Background-Cycle), 0–9 (Training Cam으로 점프 1=10%/5=50%/0=last), Left/Right Arrow (Prev/Next Cam). Capture: S (Screenshot to Desktop), V (Turntable Video), C (Copy Camera Info). Editor: Tab (Edit Mode), Click/Drag (Paint-Select), Option+Click (Deselect), X / Delete (선택 삭제), Cmd-Z (마지막 삭제 되돌리기), [ / ] (브러시 크기 작게/크게), Esc (선택 해제). Training: Start, Pause/Resume, Cancel, Continue +5K/+10K/+20K는 M9–M14의 메뉴 단축키를 통해.

그것이 무엇인지: 모든 단축키의 단순한 정적 개요 — Navigation, Views, Capture, Editor, Training. 콘텐츠는 하드 코딩되어 있으며, Markdown 로딩은 없습니다.

뷰포트에서 어떤 것을 가장 빠르게 하는 방법을 찾을 때. WASD Fly Through, R로 Camera Reset, B로 Background Cycling — 모두 여기에 있습니다.

W5ScrollView (콘텐츠 영역)

위치

Help → Keyboard Shortcuts (⌘/)..

기술적 설명

수직 목록을 포함하는 단순한 스크롤 영역입니다. 주위에 패딩 20, 사이드바 내비게이션 트리 없음 (목록이 충분히 짧음). 콘텐츠는 다섯 섹션 (Navigation, Views, Capture, Editor, Training) 으로 그룹화되어 있습니다. 키 조합당 두 열의 번역 가능한 텍스트가 있는 하나의 줄. 왼쪽 열 (키 코드) 은 180 pt 폭으로 고정되어 오른쪽 설명이 수직 정렬되어 유지됩니다. 스크롤 외에 상호작용 없음 — 줄 클릭은 아무것도 트리거하지 않습니다. 단축키는 메뉴와 뷰포트의 실제 키보드 수정자입니다.

W6VStack (단축키 섹션)

위치

ScrollView 내부..

기술적 설명

16 pt 간격으로 왼쪽 정렬된 스택형 섹션. 다섯 섹션 내에 각각 헤딩 + 줄 시퀀스. 헤딩은 보조 Subheadline 스타일을 사용합니다 — 의도적으로 Title 형식이 아닙니다. 섹션이 내비게이션 가능할 필요가 없기 때문입니다. 콘텐츠는 의도적으로 평평합니다 (Disclosure 없음, Search 없음, Filter 없음). 모든 macOS 버전에서 변경 없이 컴포넌트가 실행되고 파일이 읽을 수 있도록 유지됩니다.

Manage Storage (W7–W12)

Manage Storage 창 — 헤더 “693 items · 16.74 GB total”, 날짜순 정렬된 Export PLY 파일 테이블, 각각 포맷 핀 + 파일 이름 + 크기 + 날짜
Manage Storage 창 — 헤더 "693 items · 16.74 GB total", 날짜순 정렬된 Export PLY 파일 테이블, 각각 포맷 핀 + 파일 이름 + 크기 + 날짜

RadianceKit이 관리하는 모든 파일의 테이블 뷰. 헤더는 693개 항목, 16.74 GB 총 크기를 계산합니다. 위 툴바: "Show in Finder" + "Refresh". 각 줄: PLY 아이콘, 파일 이름 (예: training_20260527T211321Z.ply), 내보내기 날짜, 크기 (7 KB에서 218 MB까지 변동), 돋보기 아이콘 (Reveal), 휴지통 아이콘 (Move to Trash). 파일은 날짜별로 정렬되며, 최신이 위입니다. 이 데모 캡처에서는 –benchmark로 많이 작업했기 때문에 PLY 내보내기가 지배적입니다.

그것이 무엇인지: RadianceKit이 ~/Documents/RadianceKit/ 아래에 저장하는 모든 것에 대한 디스크 사용량 개요 — Logs, Exports, Scenes, Capture 번들 (iOS 동반자에서), Imports (입력 이미지의 스테이징 복사본). 항목당 바이트 크기와 두 버튼: "Finder에서 보기"와 "휴지통으로 이동". 자동 정리는 아님 — 앱은 스스로 아무것도 삭제하지 않습니다. 항목별로 결정합니다.

디스크가 가득 찰 때. 특히 로그가 쌓입니다 (학습 시도당 하나의 JSONL, 그리고 _qualityMetrics.json). 내보내기도 마찬가지입니다 (PLY 100% 원시 데이터, 내보내기당 하나). 크래시 후에도 유용합니다. Imports 스테이징 디렉터리에 여전히 입력 이미지의 오래된 복사본이 있을 경우 ("Disk-pressure incident" 참고: dev_v549f-needle-reduction.md).

W7버튼 "Show in Finder"

위치

Storage 브라우저 창 위 오른쪽 헤더..

기술적 설명

전체 RadianceKit 디렉터리 (~/Documents/RadianceKit/) 를 Finder에서 열어 폴더 구조를 직접 보고 Finder 자체로도 조작할 수 있게 합니다. 동작은 새 Finder 창을 열고 앱 Sandbox 컨테이너로 전환하지 않습니다 — ~/Documents/RadianceKit/는 앱에 정기적으로 접근 가능한 Documents 도메인이며, Sandboxed 컨테이너 경로가 아닙니다.

W8버튼 "Refresh"

위치

헤더, Finder 버튼 옆..

기술적 설명

사용자가 초기화한 비동기 작업에서 실행되는 백그라운드 스캔을 트리거합니다. 큰 디렉터리 트리를 스캔하는 것이 UI를 차단하지 않도록 합니다. 실제 워크는 모든 알려진 하위 폴더 (Logs, Exports, Scenes, Captures, Imports) 를 통과하여 각 직접 자식마다 Storage 항목을 생성합니다. 항목당 재귀적 크기가 결정됩니다 — 실제 디스크 사용량 (APFS Hardlink 공유 포함) 우선, 논리적 파일 크기를 대체로 사용.

W9List (Storage 항목)

위치

헤더 아래 메인 콘텐츠..

기술적 설명

이 레이아웃의 줄당 목록: 카테고리별 SF Symbol 아이콘 (로그용 문서, 내보내기용 업로드 화살표, Scene용 큐브, Imports용 Tray), 이름 + 부제목 (Kind 레이블 + 형식화된 수정 날짜), 오른쪽 바이트 카운터 (오른쪽 정렬, monospaced), Reveal 버튼 (돋보기 기호), Trash 버튼 (휴지통). 정렬: 주로 Kind 별 (Scene 먼저, 그 다음 Exports, Logs, Captures, Imports, Other), 부차적으로 수정 날짜 내림차순 (최신이 위). 스캔이 아직 실행 중이면 그 위치에 "Scanning…" 진행이 대신 표시됩니다. 아무것도 발견되지 않으면 Tray 아이콘과 함께 비어 있는 상태 표시.

W10행 버튼 "Reveal in Finder"

위치

줄당, 오른쪽 돋보기 기호..

기술적 설명

Finder를 열고 특정 항목 (파일 또는 폴더) 을 선택합니다. W7과의 차이: W7은 루트 디렉터리를 엽니다. W10은 정확히 이 한 항목을 표시합니다. 실용적인 워크플로: 큰 항목을 식별하고 돋보기를 클릭한 다음, 예를 들어 외부 볼륨으로 복사합니다.

W11행 버튼 "Move to Trash"

위치

줄당, 돋보기 옆 오른쪽 휴지통 기호..

기술적 설명

확인 대화 상자 (W12) 를 트리거합니다. 확인 후에만 macOS 표준 동작 "휴지통으로 이동" (즉 가역적, 직접 삭제 아님) 이 실행됩니다. 성공적인 휴지통 이동 후 항목이 목록에서 제거되고 총 바이트 카운터가 업데이트됩니다. 오류 시 모달 오류 대화 상자가 표시됩니다.

W12ConfirmationDialog (삭제 확인)

위치

W11에 의해 트리거되고 macOS 시트로 표시됨..

기술적 설명

동적 제목 "Delete <name>?"과 항목이 휴지통에 들어가고 그곳에서 (휴지통이 비워질 때까지) 복원 가능하다는 점을 명시적으로 지시하는 메시지 줄이 있는 표준 확인 대화 상자입니다. 두 버튼: "Move to Trash"는 파괴적 동작 (빨간색으로 표시) 이고 "Cancel"은 자동 Esc 바인딩이 있습니다. 대화 상자는 이 창만 차단한다는 의미에서 비모달입니다. 전체 앱이 아닙니다 — 가역 삭제에 대한 macOS 표준입니다.

Pareto Dashboard (W13–W22)

Pareto Dashboard — 리포트 가져오기 전 비어 있는 상태
Pareto Dashboard — 리포트 가져오기 전 비어 있는 상태

비어 있는 상태 (처음 열린 후) — "Open Reports Folder…" 호출 동작이 있는 비어 있는 상태. 학습 리포트가 로드되면 데이터 포인트가 나타납니다. 다음 캡처 참고.

129개 벤치마크 리포트가 로드된 Pareto Dashboard — Gaussians vs PSNR, Pareto Front, Scene/Strategy/Mip 필터
129개 벤치마크 리포트가 로드된 Pareto Dashboard — Gaussians vs PSNR, Pareto Front, Scene/Strategy/Mip 필터

헤더 툴바에 "129 reports of 129" 표시 (선택한 폴더의 모든 리포트가 성공적으로 파싱됨 — 추가 21개 파일은 더 오래된 형식 때문에 파싱되지 않을 수 있음, 오른쪽 힌트 목록 참고). 축: X축 선택기 Gaussians, Y축 선택기 PSNR (dB). 산점도: 녹색 점 = Classic 전략, 파란색 점 = MCMC. 점선 Pareto Front 선은 가장 좋은 PSNR 값을 따라 진행하며 약 500K Gaussian부터 PSNR≈30 dB에서 안정화됩니다. 오른쪽 필터 칩: 7개의 Scene (bicycle, bonsai, family, flowers, kitchen, stump, truck), 2개의 Strategy (classic, mcmc), 3개의 Mip Splatting 옵션 (All, On, Off). 현재 모든 필터가 열려 있으므로 조밀한 점 클러스터입니다.

그것이 무엇인지: 다중 실행 비교 도구입니다. 과거에 여러 장면 또는 다른 프리셋으로 동일한 장면을 학습했습니다 — 각 학습 실행은 (–benchmark를 함께 제공했거나 Benchmark 기능을 통해 호출한 경우) JSON 리포트 파일을 생성합니다. 그것은 무엇보다 최종 PSNR, SSIM, LPIPS, Gaussian Count, Wallclock 시간을 포함합니다. Dashboard는 이러한 리포트의 전체 폴더를 동시에 읽고, 선택 가능한 축이 있는 2D 산점도로 플로팅합니다. 또한 Pareto Front (비지배된 점의 집합) 가 점선으로 표시됩니다.

최소한 세 개 또는 네 개의 학습 리포트를 만든 후. 점이 적으면 Frontier 선이 의미가 없습니다. 일반적인 사용 사례: 야외 장면을 재구성하려 시도했고 차례로 P3 Balanced (Classic), P4 Quality (Classic), P7 MCMC Quality, P9 Outdoor (tuned) 를 시도했습니다 — 이제 어느 구성이 학습 시간 초당 최고의 PSNR을 제공하는지, 또는 어느 것이 주어진 PSNR에 대해 가장 적은 Gaussian을 필요로 하는지 알고 싶습니다.

두 축 모두 자유롭게 선택할 수 있습니다 (X축: GaussianCount, trainingTime, psnr, ssim, lpips, …; Y축 동일). ParetoFront2D.indices의 Pareto Front 로직은 각 메트릭에 대해 "작을수록 좋음" (예: LPIPS, Loss, Time) 또는 "클수록 좋음" (PSNR, SSIM) 을 알고 있습니다 — 따라서 선은 축 선택에 따라 왼쪽 아래에서 오른쪽 위로 또는 왼쪽 위에서 오른쪽 아래로 항상 도달한 최선의 조합을 따라 진행합니다. 다른 점이 두 차원 모두에서 최소한 같지 않으면 점은 Pareto 최적입니다 (즉, 다른 어떤 것도 그것을 지배하지 않음). Pareto 최적 점은 선 위에 있고, 다른 점은 그 오른쪽/위 (축 방향에 따라) 에 있습니다. 선 위의 점은 "최고의 프리셋"에 대한 진정한 후보입니다. 선에서 멀리 떨어진 점은 낭비된 학습 시간입니다.

선택을 특정 장면으로 제한할 수 있고 (예: 야외 실행만 비교하려는 경우), 특정 전략 (Classic 또는 MCMC) 으로 제한하거나 Mip-Splatting on/off로 제한할 수 있습니다 (Phase Q1.5 후 관련 — Mip이 opt-in 고급 플래그로 남음).

~/Documents/RadianceKit/Reports/에 "truck" 장면용 세 개의 리포트가 있습니다: Run A (P4 Quality, 40K iter, 524K Gs, 105 s, PSNR 23.4), Run B (P7 MCMC, 200K iter, 150K Gs, 693 s, PSNR 24.6), Run C (P9 Outdoor, 100K iter, 1.25M Gs, 312 s, PSNR 25.8). X축을 trainingTime, Y축을 PSNR로 설정합니다. Run B는 오른쪽 위, Run C는 더 오른쪽 위, Run A는 왼쪽 아래에 있습니다. Pareto Front는 A와 C를 연결합니다 — 둘 다 비지배. Run B는 "lost"입니다 (C가 Time과 PSNR 모두에서 더 좋음). 통찰: "truck"의 경우 MCMC 기본값은 가치가 없습니다. 빠름+ok (A) 또는 길다+매우 좋음 (C). C의 구성을 자체 프리셋으로 저장 (인스펙터 → I1 Save Preset).

다음 동작: 최고 구성을 프리셋으로 저장. 구체적으로: Pareto 점을 살펴봅니다 (호버는 도구 설명에서 PSNR/SSIM/LPIPS/Gs/Time을 보여 줍니다), 시간 vs 품질 트레이드오프가 가장 잘 맞는 것을 결정하고, 관련 리포트를 열고 (파일 이름에 실행 타임스탬프 포함), 새 실행에서 학습 구성을 복사하거나 다음 학습 세션 후 인스펙터를 통해 프리셋으로 저장합니다.

W13버튼 "Open Reports Folder…"

위치

툴바 위 왼쪽..

기술적 설명

"Select a folder containing benchmark .json reports" 요청과 함께 폴더 선택 대화 상자를 엽니다. 확인 후 백그라운드 작업이 폴더의 모든 .json 파일을 순차적으로 파싱합니다. 잘못된 리포트 (손상된 JSON, 잘못된 스키마) 는 수집되어 사이드바 아래에 "N file failed to parse"로 표시됩니다 — 크래시 없음. 첫 번째 로드가 아직 실행되는 동안 두 번째 클릭이 발생하면 이전 작업이 중단되어 두 결과가 동시에 상태에 쓰이지 않도록 합니다.

CLI를 통해서도: –dashboard-dir /path/to/reports는 앱 시작 시 폴더를 바로 로드합니다.

W14선택기 "X-Axis"

위치

차트 위, 왼쪽..

기술적 설명

Dashboard 모듈의 사용 가능한 모든 메트릭 축 (PSNR, SSIM, LPIPS, Gaussian Count, 학습 시간 등) 이 있는 메뉴 선택기. 기본값은 Gaussian Count. 전환 시 호버된 점이 재설정됩니다. 이전에 하이라이트된 위치가 새 축 좌표계에서는 의미가 없기 때문입니다. 선택기는 콘텐츠 폭으로 제한되어 전체 폭에 걸쳐지지 않습니다.

W15선택기 "Y-Axis"

위치

차트 위, X-Axis 옆..

기술적 설명

W14와 동일하지만 기본값이 PSNR입니다. 축 선택은 독립적으로 저장되므로 사용자가 무의미한 조합 (X=PSNR, Y=PSNR — 모든 점을 대각선에 던짐) 도 선택할 수 있습니다. 그러나 그러한 조합은 포착되지 않습니다. 의도적인 결정입니다. "SSIM vs PSNR" 비교가 메트릭이 얼마나 일관되게 동작하는지 보기 위해 흥미롭기 때문입니다.

W16토글 "Show Pareto Front"

위치

축 선택기 오른쪽..

기술적 설명

표준 macOS 토글입니다. 활성이면 Pareto 차트에 점 구름 외에 계산된 2D Pareto Front가 있는 선이 그려집니다. 스타일: 점선 (대시 패턴 4–4), 회색 반투명, 선 두께 1.5 pt. Pareto 계산은 메인 스레드에서 실행됩니다 — 일반적인 리포트 수 (≤ ~50) 의 경우 문제없이 빠릅니다. 토글이 꺼져 있으면 선이 생략되어 벗은 점만 표시됩니다.

W17칩 "Scene" 필터

위치

Dashboard 창 오른쪽 사이드바..

기술적 설명

로드된 리포트에서 발생하는 각 장면에 대한 필터 칩. 폭이 소진되면 자동으로 칩을 여러 줄로 다시 패킹하는 자체 Flow Layout. 활성 칩은 강조 배경을 받고, 비활성 칩은 중립 표준 Material 배경을 받습니다. 다중 선택 가능 (Set 의미론). 칩이 선택되지 않은 경우 모든 장면이 "통과"되는 것으로 적용됩니다 — 즉 Set 로직은 "빈 선택 = 모두"이며, "빈 선택 = 없음"이 아닙니다.

W18칩 "Strategy" 필터

위치

사이드바의 Scene 필터 아래..

기술적 설명

W17과 정확히 같지만 학습 전략용 — 일반적으로 두 값 "classic"과 "mcmc". 벤치마크 리포트 JSON의 Strategy 필드에서 파생됩니다. 두 전략의 리포트를 혼합했고 한 종류만 보고 싶을 때 (예: "Classic을 이미 제외했기 때문에 MCMC 실행만 표시") 유용합니다.

W19칩 "Mip-Splatting" 필터

위치

사이드바의 Strategy 필터 아래..

기술적 설명

3값 필터 (W17/W18처럼 Set이 아님): "All" / "On" / "Off". 배경: Mip Splatting은 Phase Q1.5에서 실험적 다중 스케일 개선으로 평가되었고 최종 verdict는 "내내 좋은 win 없음, opt-in 플래그로 유지"였습니다. Mip on/off 비교를 하는 경우 종종 매우 선명하게 분리할 수 있기를 원합니다. 따라서 "모두 통과", "Mip on만", "Mip off만" 상태가 있는 전용 3진 필터가 있습니다. 사이드바 섹션은 데이터 집합에 최소 하나의 Mip 리포트와 최소 하나의 비 Mip 리포트가 있을 때에만 표시됩니다 (그렇지 않으면 필터링이 의미가 없음).

W20ChipButton (필터 토글, all/on/off)

위치

Helper 컴포넌트, W17/W18/W19에서 사용됨..

기술적 설명

최소한의 버튼 래퍼입니다. 콘텐츠: Caption 글자 크기와 패딩 10 수평 / 5 수직의 레이블 텍스트. 배경은 조건적: 활성일 때 → 흰색 텍스트가 있는 앱 강조 색상. 그렇지 않으면 검은색 텍스트가 있는 중립 표준 Material 배경. 모양은 Capsule (알약 같은). Plain 버튼 스타일로 Capsule Material이 시스템 테두리에 의해 덮이지 않도록 합니다.

W21Chart (Pareto Scatter)

위치

Dashboard의 중앙 영역..

기술적 설명

두 레이어가 있는 Swift Charts 다이어그램: 1. 리포트당 하나의 점 — 선택된 X 및 Y 메트릭에서의 위치, Strategy별 색상, Mip 상태별 기호. 기호 크기는 보통 80, 강조 표시되었을 때 200 (ID가 현재 호버된 리포트와 일치하는 경우). 2. Pareto Front용 선, 토글이 켜져 있을 때만.

차트 오버레이: 투명 직사각형이 마우스 움직임을 등록합니다. 프레임당 플롯 프레임에서 유클리드 가장 가까운 점 위치가 결정되고 거리가 24 px 미만이면 호버된 리포트가 업데이트됩니다 (그렇지 않으면 재설정). 따라서 클릭하지 않고도 도구 설명을 받을 수 있습니다 — 호버로 충분합니다.

W22Tooltip (호버 디테일)

위치

차트 아래, 호버 시 표시..

기술적 설명

수평 스택: 장면 이름 (Headline), Strategy 태그 (Caption), 구분선, 그런 다음 PSNR/SSIM/LPIPS/Gs/Time 메트릭을 각각 작은 수직 그룹 (레이블 + monospaced 값) 으로. Mip이 활성화되었다면 추가로 강조 색상의 "Mip" Capsule 태그. 배경은 반투명 블러, 8 pt 반경의 둥근 직사각형. 마우스가 실제로 점 위에 있을 때에만 표시됩니다. 떠나면 자동으로 사라집니다.

Holdout Analysis (W23–W29)

Holdout Analysis — transforms.json 로드 전 비어 있는 상태
Holdout Analysis — transforms.json 로드 전 비어 있는 상태

"Open transforms.json…" 호출 동작이 있는 비어 있는 상태와 빈 상태. NeRF Studio 및 Instant NGP 형식을 수용합니다.

비어 있는 상태 (처음 열린 후) — transforms.json이 로드되면 카메라 마커가 나타납니다. 다음 캡처 참고.

100개의 NeRF Blender Mic 카메라가 있는 Holdout 글로브, 5개 폴드 × 20개 카메라, Angular 전략 활성
100개의 NeRF Blender Mic 카메라가 있는 Holdout 글로브, 5개 폴드 × 20개 카메라, Angular 전략 활성

헤더는 로드된 파일 (transforms_train.json) 과 Cam Count ("100 cameras") 를 표시합니다. 왼쪽 사이드바: 두 옵션이 있는 Strategy 선택기 — Angular (longitudinal) 활성 (구체의 경도/위도 섹터에 따라 폴드를 정렬하므로 각 테스트 폴드가 기하학적으로 조밀함) vs Linear (round-robin) (순서 기반, k번째 프레임마다 테스트 세트로). k 폴드 슬라이더는 5, 테스트 폴드 선택기는 Fold 1. Export 버튼은 Nerfstudio/Instant NGP용 fold-assignment.json을 생성합니다. 중앙 패널: 모든 100개 카메라의 3D 글로브 투영 — 녹색 점 = Train, 빨간색 점 = 현재 테스트 폴드 (20개 카메라가 있는 Fold 1). 오른쪽 사이드바 (Angular Correlation): 폴드당 20개 Cams + Mean Nearest Angle (Fold 1: 7.9°, Fold 2: 7.8°, Fold 3: 7.7°, Fold 4: 7.0°, Fold 5: 6.3°) — 작은 값은 이 폴드 내의 카메라가 서로 가까이 있다는 것을 의미하므로 Holdout 분할이 공간적으로 일관됩니다.

그것이 무엇인지: Cross Validation 로직이 있는 카메라 배치를 위한 3D 시각화 도구. transforms.json (Nerfstudio / Instant NGP의 카메라 포즈용 표준 형식) 을 로드하면 앱은 모든 카메라를 읽고 그 시선 방향을 단위 구체에 투영하고 가상 글로브에 작은 구체 마커로 표시합니다. 그런 다음 카메라를 (선택된 전략에 따라: angular 또는 linear) k 폴드로 나누고, 학습 부분을 녹색으로, 테스트 부분 (Holdout) 을 빨간색으로 표시하고, 테스트 폴드가 시선 각도 공간에서 학습 폴드로부터 얼마나 멀리 떨어져 있는지를 알려 주는 Angular Correlation 점수를 폴드당 계산합니다.

Holdout 평가를 하고 싶을 때 — 즉: 모델이 보이지 않는 시점에서 얼마나 잘 일반화되는가? 학습의 표준은 "every-8th view를 Holdout으로" (Mip-NeRF360 규약) 이지만 이는 매우 선형적인 분할입니다. 예를 들어 이미지가 시간적으로 클러스터링된다면 (먼저 객체의 한 쪽, 그 다음 다른 쪽), "every-8th"는 대표적이지 않습니다 — 무작위 시퀀스 위치가 테스트에 들어가지만 모든 이웃은 학습에 있어 너무 쉽습니다. "angular"로는 대신 시선 각도 공간에 걸쳐 계층화됩니다: 각 폴드는 궤도의 모든 영역에서 카메라를 포함하므로 테스트가 실제로 일반화 격차를 테스트합니다.

Angular vs Linear: - Angular (표준): 카메라를 경도 각도 (Y축 주위의 φ 좌표) 에 따라 k개의 동일한 섹터로 나눕니다. Fold 0은 φ ∈ [0°, 360/k°) 의 카메라, Fold 1은 그 다음, 등입니다. 장점: 각 폴드가 궤도의 일부를 다루며, 테스트 폴드는 공간적으로 콤팩트하지만 전체 데이터셋에 걸쳐 넓습니다. 고전적 궤도 촬영에 좋습니다. - Linear (Round-Robin): Fold-Index = (image_index modulo k). 단순한 "every-k-th" 분할입니다. 이미지 순서가 공간적 편향이 없을 때 동작합니다 (예: 무작위로 정렬된 드론 촬영). 이미지가 시간적으로 클러스터링되면 잘 동작하지 않습니다.

3D 글로브에서 즉시 볼 수 있습니다: 녹색 점 (Training) 과 빨간색 점 (Test). 빨간색 점이 모두 한 구석에 클러스터되면 Holdout이 나쁩니다 (좋은 일반화 테스트가 아님). 녹색 사이에 균등하게 있으면 좋습니다. 폴드당 Angular Correlation 점수 (오른쪽 사이드바, 도 단위) 는 추가로 말합니다: 작은 값 = 테스트가 학습에 가까움 (각 테스트 카메라가 가까운 학습 카메라를 가짐, 쉬운 테스트). 큰 값 = 테스트가 학습에서 멀리 떨어짐 (더 어려운 일반화).

Truck 장면을 251개의 이미지로 촬영했고 메뉴 항목 M33 (Export SfM transforms.json) 을 통해 nerfstudio 파일을 내보냈습니다. Holdout 창 (⇧⌘H) 을 열고 "Open transforms.json…"을 통해 JSON을 로드하고 글로브를 살펴봅니다. k=5 (기본값) 는 5개의 폴드를 제공합니다. "Fold 3"을 클릭하고 — 빨간색 마커가 어느 정도 균등한지 확인합니다. 그렇다면: "Export fold-assignment.json", 내보낸 파일을 Reports 폴더에 두고, 다음 학습 실행에서 –benchmark (또는 해당 인스펙터 설정) 와 함께 정확히 이 폴드 분할이 테스트 Holdout으로 사용됩니다 — 표준 "every-8th" 대신.

W23버튼 "Open transforms.json…"

위치

툴바 위 왼쪽..

기술적 설명

JSON 파일로 제한된 파일 선택 대화 상자를 엽니다. 확인 후 Holdout 모듈이 파일을 로드합니다. 로더는 nerfstudio 형식 (카메라 인트린식과 이미지 경로 및 변환 행렬이 있는 프레임 목록) 과 instant-ngp 형식 (같은 구조) 을 모두 파싱합니다. 프레임당 시선 방향이 변환 행렬에서 추출되고 (카메라 로컬 베이스의 z축) 저장됩니다. 파싱이 실패하면 상태 영역에 오류 메시지가 표시됩니다.

CLI를 통해서도: –holdout-file /path/to/transforms.json은 로드된 파일과 함께 창을 직접 시작합니다.

W24선택기 "Strategy" (angular/linear)

위치

왼쪽 사이드바, 위..

기술적 설명

두 옵션이 있는 라디오 선택기: Angular와 Linear. 전략 변경은 폴드의 자동 재계산을 트리거합니다. 시선 방향은 구체의 3D 단위 벡터 목록입니다. Angular 전략은 그것들을 경도 각도 φ에 투영하고 정렬합니다. Linear 전략은 단순히 프레임 인덱스에 대한 모듈로 분할을 수행합니다.

W25슬라이더 "k Folds"

위치

왼쪽 사이드바, 중간..

기술적 설명

3에서 10까지의 슬라이더, 단계 1. 변경 시 폴드 계산이 자동으로 다시 시작되어 폴드 목록, 학습/테스트 인덱스, 폴드별 점수가 즉시 다시 계산됩니다. 선택된 값은 레이블 옆에 monospaced 자릿수 텍스트로 표시됩니다.

경험 법칙: k=5가 표준 (폴드당 20% 테스트 제공, Cross Validation에 일반적). 데이터가 매우 많고 통계적 신뢰성을 위해 더 많은 폴드가 필요하면 k=10. 데이터가 적으면 k=3.

W26선택기 "Test Fold"

위치

왼쪽 사이드바, k 슬라이더 아래..

기술적 설명

메뉴 선택기. 옵션은 동적으로 0..<k, 레이블 "Fold 1" 에서 "Fold N"까지 (UI에서 1 인덱스, 내부에서 0 인덱스). 이전에 선택된 인덱스가 ≥ k이면 (예: k를 10에서 5로 줄였기 때문에) 자동으로 0으로 재설정됩니다. 선택된 테스트 폴드는 글로브에서 빨간색으로 표시되고 다른 모든 폴드는 녹색으로 표시됩니다.

W27버튼 "Export fold-assignment.json"

위치

왼쪽 사이드바, 아래..

기술적 설명

기본 파일 이름 fold-assignment.json이 있는 저장 대화 상자를 엽니다. 확인 후 Holdout 모듈이 현재 분할을 JSON 스키마로 인코딩합니다 (프레임별 폴드 할당과 Strategy 메타 블록). 이 파일은 다음 학습에서 –benchmark와 함께 제공될 수 있어, 동일한 Holdout이 최종 메트릭 평가에 사용됩니다. 쓰기 오류는 오류 텍스트로 표시됩니다. 성공은 녹색 텍스트로 "Saved to (filename)"로 표시됩니다.

W28SCNView (3D Camera Globe)

위치

Holdout 창의 중앙 패널..

기술적 설명

SceneKit 글로브 뷰. 장면은 다음으로 구성됩니다: 와이어프레임 구체 (반경 1.0, 36 세그먼트, 짙은 회색), 세 개의 색이 있는 축 stub (X/Y/Z용 빨강/녹색/파랑, 각 1.2 길이), 그리고 카메라당 단위 구체의 해당 시선 방향 위치 (와이어프레임 구체 안으로 사라지지 않도록 약간 외부) 의 작은 마커 구체 (반경 0.03). 마커는 각 폴드 변경 시 재구성되지 않습니다 — 재구성은 프레임 목록이 변경될 때 (즉 새 JSON이 로드될 때) 에만 필요합니다. 대신 업데이트마다 재료 색상의 인플레이스 업데이트가 실행됩니다: 테스트 인덱스용 빨강, 학습용 녹색, 둘 다 아닌 경우 밝은 회색. 따라서 N > 1000 카메라에서도 슬라이더 틱이 성능적으로 유지됩니다.

카메라 제어가 활성화되어 있습니다 — 마우스로 글로브를 회전하고 줌하고 팬할 수 있습니다. 조명은 마커가 평평하게 보이지 않도록 합니다. 배경은 짙은 회색입니다.

W29FoldCard (탭하여 폴드 선택)

위치

오른쪽 사이드바, "Angular Correlation" 섹션..

기술적 설명

폴드당 하나의 카드 뷰 — 6 pt 반경의 둥근 직사각형, 패딩 10, 두 줄의 수직 레이아웃 (위 "Fold N" + 카메라 수, 아래 "Mean nearest angle:" + 도 단위 값). 배경색은 조건적: 활성 폴드 = 반투명 강조 색상, 비활성 = 중립 표준 Material. 탭하면 폴드가 선택되고 글로브가 실시간으로 다시 칠해집니다.

"Mean nearest angle" 점수는 가장 가까운 학습 카메라에 대한 테스트 카메라당 평균 가장 작은 각도입니다 (내부적으로 라디안으로 계산, UI에서 도 단위로 표시).

BayesOpt Console (W30–W39)

BayesOpt 콘솔 — 시행 시작 전 비어 있는 상태
BayesOpt 콘솔 — 시행 시작 전 비어 있는 상태

탐색 공간 선택기 (RadianceKit defaults (6-dim)), 시행 예산 슬라이더 (기본 40), 무작위 Seed (42), 그리고 Convergence 차트, Trial Log, 탐색 공간 매개변수 목록을 위한 세 개의 비어 있는 패널이 있는 비어 있는 상태.

비어 있는 상태 (처음 열린 후) — 실행이 시작되면 Convergence 차트와 시행 테이블이 채워집니다. 다음 캡처 참고.

40번의 시행 후 BayesOpt 콘솔 — Convergence 차트는 시행 15까지 가파르게 상승, Best Value 0.9943, Trial Log에 init/bo/restart 태그
40번의 시행 후 BayesOpt 콘솔 — Convergence 차트는 시행 15까지 가파르게 상승, Best Value 0.9943, Trial Log에 init/bo/restart 태그

위 오른쪽 상태 "Finished — best 0.9943 after 40 trials". 왼쪽 사이드바: 탐색 공간 선택기 RadianceKit defaults (6-dim), 시행 예산 40, 무작위 Seed 42. 매개변수 목록은 튜닝할 여섯 하이퍼파라미터를 값 범위와 함께 표시합니다: mipSmoothing3DScale [0.05, 0.5], mipFilter2DVariance [0.1, 0.6], densifyGradThreshold [5e-07, 5e-06], ssimWeight [0.05, 0.5], mcmcNoiseScale [1e-05, 0.0001], mcmcRelocationInterval [50, 200]. 중앙: Convergence 차트 (X = 시행 인덱스 1–40, Y = 목표 값 0–1) — 회색 점 = 초기 샘플 (LHS), 파란색 점 = BayesOpt Acquisition, 주황색 점 = Restart 시행 (#22와 #31). Best Value 선은 시행 ~7까지 가파르게 상승, 그 후 시행 15까지 미미한 개선만, 그 이후 0.99+에서 평평한 plateau. 오른쪽 사이드바: 시행 로그 #1–#34, 점수 + 태그 (init/bo/restart). 오른쪽 위 Save Best Config 버튼은 bayesopt-best.json을 작성합니다.

그것이 무엇인지: 하이퍼파라미터 검색을 위한 베이지안 최적화 콘솔. 베이지안 옵트는 가능한 적은 실험으로 알 수 없는 함수의 최적 점을 찾으려고 시도하는 자동 절차입니다 — 일반적으로: "mcmcMaxGaussians, capMultiplier, ssimWeight, gradThreshold의 어떤 조합이 내 장면 클래스에 대해 최고의 PSNR을 제공합니까?" 6^4 = 1296개의 시행으로 구성된 격자 대신 베이지안 옵트는 약 40–100개의 정보를 가진 시행을 시도하고 그것으로 최적에 가까이 다가갑니다.

중요: 현재 앱에 출시된 버전은 실제 학습 실행에 대해 최적화를 실행하지 않습니다 (그것은 며칠이 걸릴 것입니다). 대신 합성 데모 목표 — Hill Climbing 특성과 약간의 노이즈가 있는 다중 모달 풍경 — 에 대해 실행됩니다. 이는 의도적인 것입니다. 창은 옵티마이저의 동작 (수렴 진행, 샘플 포인트, Best-So-Far) 을 보여 주고 탐색 공간 정의를 이해할 수 있도록 합니다. 실제 학습 기반 BayesOpt 실행 (Scene Class 프리셋에 대한 Phase Q7에서처럼) 의 경우 별도의 오프라인 CLI 워크플로가 사용됩니다. 창은 실시간 UI 변형입니다.

세 가지 사용 사례: 1. BayesOpt가 어떻게 작동하는지 이해하고 싶다 — 데모 실행을 시작하고 Convergence 차트를 관찰. 2. 내장된 10개 프리셋이 완벽하게 맞지 않는 새 장면 클래스 (예: "수족관" 또는 "골동품 가구") 를 계획. 정신적으로 탐색 공간을 정의하고 여기서 "Bowl demo" 또는 "Densify" 프리셋으로 테스트한 다음 Best Config를 JSON으로 내보내고 실제 학습 실행의 시작점으로 사용. 3. RKBayesOpt 패키지에 정의된 기본 탐색 공간 (Mip Subset, RadianceKit Defaults) 을 검사하고 싶다 — 왼쪽 사이드바의 매개변수 패널에 나열됩니다.

- Convergence 차트 (중앙 열): Y = 지금까지 달성된 최고의 목표 함수 값. X = 시행 인덱스. 처음에는 가파르게 상승 (BayesOpt가 초기 샘플을 무작위로 시도하고, 그 중 일부가 운이 좋음), 그 다음 최적에 가까운 영역이 소진되었으므로 점차 평평해집니다. 선이 20+ 시행 동안 평평하게 유지되면 실행을 중지할 수 있습니다 — 추가 시행은 더 이상 가져오지 않습니다. 차트의 개별 점은 개별 시행 값 (즉 "best so far"가 아님) 이며 단계별로 색상이 지정됩니다: 회색 = 초기 샘플, 파랑 = BayesOpt Acquisition, 주황 = Restart. - 시행 테이블 (오른쪽 열): #1, #2, #3, … 각각 값과 단계 태그. 지금까지의 최고 시행은 노란색 별로 표시됩니다. 테이블에서 Best 시행을 식별하고 나중에 내보내기 시 매개변수 값을 볼 수 있습니다. - 탐색 공간 인스펙터 (왼쪽 사이드바): 선택된 프리셋에 대해 모든 매개변수 이름과 탐색 범위 [lo, hi]를 표시합니다. "RadianceKit defaults (6-dim)" 프리셋에 있으면 예: "densifyGradThreshold [5e-7, 5e-6]"를 봅니다 — 즉 이 두 값 사이의 로그 균등.

프리셋 "RadianceKit defaults (6-dim)", 시행 예산 40, Seed 42를 선택합니다. "Start"를 클릭합니다. 관찰: 처음 8개 시행은 회색 (초기 샘플, LHS-Latin Hypercube), 그 다음은 파란색 (BayesOpt Acquisition). Convergence 차트는 시행 ~15까지 가파르게 진행되며, 그 후 평평해집니다. 시행 ~30–40에서 Best 값이 안정화됩니다. "Save Best Config"를 클릭하면 프리셋 이름, 시행 인덱스, 값, 디코딩된 매개변수 값과 함께 bayesopt-best.json이 저장됩니다. 이 JSON을 그런 다음 프리셋 정의에 수동으로 적용할 수 있습니다.

W30버튼 "Start"

위치

툴바 왼쪽, Idle/Finished 상태에서..

기술적 설명

시행 목록을 재설정하고 Running 상태로 전환하고 새 실행 ID를 생성하고 (여러 Start 클릭의 stale 감지를 위해) 새 Pause Gate를 생성합니다. 그런 다음 옵티마이저를 비동기 스트림으로 실행하는 백그라운드 작업을 시작합니다. 초기 샘플 크기는 min(8, budget / 4 + 1) 에서 발생합니다 — 즉 예산 ≥ 28의 경우 일반적으로 8개의 Latin Hypercube 샘플, 작은 예산의 경우 더 적음. 시행 업데이트는 점진적으로 수신되어 목록에 추가됩니다. Stale 실행 보호: 그 사이에 두 번째 Start 클릭이 실행 ID를 다시 설정하면 이전 실행에서의 업데이트가 폐기됩니다.

두드러진 버튼 모양을 위한 Primary Action 스타일.

W31버튼 "Pause"

위치

툴바 왼쪽, Running 상태에서..

기술적 설명

Pause Gate를 활성화하고 Paused 상태로 전환합니다. 실제 효과: Runner는 다음 목표 함수를 평가하기 전에 50 ms 폴링 루프에서 기다립니다. 즉, 현재 실행 중인 시행이 끝까지 진행되지만 (합성이며 마이크로초만 걸림), 더 이상 시행이 시작되지 않습니다. Resume이 실행되는 즉시 중단된 곳에서 계속됩니다.

W32버튼 "Stop"

위치

툴바 왼쪽, Running 및 Paused 상태에서..

기술적 설명

Runner 작업을 중단하고 참조를 null로 설정하고 Pause Gate를 해제하고 (paused였다면) Finished 상태로 (시행이 존재할 때) 또는 Idle 상태로 (없을 때) 전환합니다. 이미 계산된 시행은 목록에서 보이는 채로 남아 있습니다 — Stop은 그것들을 삭제하지 않습니다. 파괴적 버튼 역할은 실행을 중단하기 때문에 버튼을 빨간색으로 표시합니다.

W33버튼 "Resume"

위치

툴바 왼쪽, Paused 상태에서..

기술적 설명

Pause Gate를 해제하고 Running 상태로 다시 전환합니다. Runner 작업은 이미 실행 중입니다 (폴링 루프에서 기다림). 루프가 일시 정지가 해제되었다는 것을 알아차리는 즉시 계속 실행되고 다음 시행을 시작합니다.

W34버튼 "Save Best Config"

위치

툴바 오른쪽, 항상 표시 (그러나 bestTrial이 없으면 비활성화)..

기술적 설명

기본 파일 이름 bayesopt-best.json이 있는 저장 대화 상자를 엽니다. JSON으로 제한됩니다. 확인 후 Payload 사전이 구축됩니다: 프리셋 이름, 시행 인덱스, 값 (목표 점수), 매개변수 (디코딩된 매개변수 이름 → 값의 사전). 디코딩은 정규화된 탐색 공간 좌표 [0,1]^d 를 원래 값 범위로 다시 투영합니다 (log-uniform/linear/integer 스케일에 따라). JSON 출력은 pretty printed이며 정렬된 키가 있습니다. 쓰기 오류 시 (현재 데모 버전에서) 조용히 무시됩니다 — 오류 UI 없음, 데모 경로이기 때문에.

시행이 실행되지 않은 동안에는 버튼이 회색입니다.

W35선택기 "Search Space" 프리셋

위치

왼쪽 사이드바, 위..

기술적 설명

네 프리셋 옵션이 있는 메뉴 선택기: - "RadianceKit defaults (6-dim)" — 모든 Q7 하이퍼파라미터가 있는 전체 표준 탐색 공간. - "Mip subset (2-dim)" — mipSmoothing3DScale [0.05, 0.5] log-uniform과 mipFilter2DVariance [0.1, 0.6] linear만. 장면 클래스에 대해 Mip Splatting을 튜닝하려는 경우 유용. - "densify-until + ssim-weight + grad-thresh" — 세 개의 Densify 관련 매개변수 (densifyGradThreshold log-uniform, ssimWeight linear, densifyUntilIter integer). - "Bowl demo (1-dim)" — "BayesOpt가 이렇게 작동" 데모를 위한 교육용 단일 매개변수 탐색 공간.

실행이 활성인 동안 탐색 공간은 변경할 수 없습니다 (옵티마이저를 혼란시킬 것임).

W36슬라이더 "Trial Budget"

위치

왼쪽 사이드바, Search Space 선택기 아래..

기술적 설명

10에서 200까지 슬라이더, 단계 5. 기본 40. 즉: BayesOpt는 최대 N 시행을 할 수 있습니다. 그 중 처음 몇 개는 초기 샘플 (Latin Hypercube), 나머지는 실제 BayesOpt 시행입니다. 실용을 위한 경험 법칙: d 차원의 탐색 공간은 좋은 최적을 위해 약 10d에서 20d 시행이 필요합니다. 6차원 기본값의 경우 60–120, 2차원 Mip Subset의 경우 20–40, 1차원 Bowl Demo의 경우 10–20.

실행 중에는 슬라이더가 비활성화됩니다.

W37슬라이더 "Random Seed"

위치

왼쪽 사이드바, 예산 슬라이더 아래..

기술적 설명

1에서 100까지 슬라이더, 단계 1. 기본 42. Seed는 초기 Latin Hypercube 샘플과 데모 목표의 노이즈 구성 요소 모두에 전달됩니다. 재현성: 같은 Seed + 같은 탐색 공간 + 같은 예산은 정확히 동일한 시행 시퀀스를 제공합니다. "모든 동료가 데모를 재구축할 때 같은 실행을 얻을 수 있는가?"에 유용합니다. 실행 중에는 비활성화됩니다.

W38Chart (Convergence)

위치

창의 중앙 열..

기술적 설명

두 레이어가 있는 Swift Charts 다이어그램: 1. 시행당 "best-value-so-far" 선 — 강조 색상의 단조 증가 또는 동일한 곡선. 2. 개별 목표 값이 있는 시행당 하나의 점, 단계별로 색상 지정. 기호 크기 40. 세 개의 단계 레이블: "init" (회색), "bo" (파랑), "restart" (주황).

작은 범례는 위 왼쪽에 단계 색상을 표시합니다. 시행 목록이 비어 있으면 (첫 Start 전), 대신 Chart 아이콘과 힌트 "Press Start to begin a BayesOpt run."이 있는 빈 상태 표시가 표시됩니다.

W39Table (Trial Log)

위치

창의 오른쪽 열..

기술적 설명

Lazy 스택형 시행 줄이 있는 스크롤 영역. 줄당 수평 스택: 시행 번호 (3자리 monospaced, 왼쪽), 값 (monospaced, 오른쪽 정렬, 70 pt 폭), 단계 태그 (Capsule, 25% Opacity에서 단계 색상으로 채워짐), 이 시행이 현재 Best일 경우 선택적으로 노란색 별. 자동 스크롤 메커니즘은 새 시행이 추가되는 즉시 자동으로 끝으로 점프합니다 — 따라서 자체적으로 스크롤하지 않고 화면 하단에서 실시간 진행을 함께 읽을 수 있습니다.

메인 윈도우: Loss 진행과 Gaussian Count (I39–I41, 상호 참조)

메인 윈도우의 인스펙터 표시 세 가지는 실행 중인 학습 동안 끊임없이 보이고 진행이 건강해 보이는지에 대한 중요한 경험 법칙이 있기 때문에 별도의 설명이 필요합니다. 표시는 인스펙터의 "Loss Chart" 섹션 (제 2 장 — Inspector 참고) 에 있으며, 위 보조 창의 Holdout 분석을 보완합니다.

Loss 곡선이 언제 건강한가? 건강한 Loss 곡선은 세 단계를 보여 줍니다: (1) Warmup — 처음 200–500 반복에서 Loss가 높음 (장면에 따라 L1+SSIM 결합으로 일반적으로 0.15–0.25) 에서 약 절반으로 가파르게 떨어집니다. 이 단계에서 Loss가 떨어지지 않으면 입력이 보통 잘못된 것입니다 (이미지 손상, SfM 포즈가 나쁨, 초기 Gaussian 수가 너무 적음). (2) Densification — ~500과 densifyUntilIteration (고전적으로 15K, MCMC는 20K 또는 25K) 사이에 Loss가 계속 떨어지며, 종종 Densify 동작이 새 Gaussian을 삽입하고 옵티마이저가 그것을 활용할 때 작은 하향 점프가 있습니다. Gaussian Count는 이 단계에서 증가합니다. (3) Refinement — 그 후 Loss는 평평해지는 tail로 실행됩니다. 일반적인 최종 값: P4 Quality가 있는 Tanks & Temples Truck은 L1 ≈ 0.023, V546과 함께 Full Classic이 있는 Horse는 L1 ≈ 0.0230, 야외 Mip-NeRF360 장면은 종종 더 나쁨 (0.04–0.07).

Plateau는 무엇을 의미하는가? Plateau (Loss 곡선이 수천 회 반복 동안 수평으로 진행) 는 두 가지 해석을 가집니다: (a) 모델이 수렴되어 추가 학습이 더 가져오지 않음 — 좋은 경우. (b) 모델이 막힘 (지역 최소값, 나쁜 그래디언트 정보, 버퍼 한도의 Cap) — 나쁜 경우. 둘 다 차트에서 동일하게 보입니다. 구별: Gaussian Count를 봅니다. 그것도 평평하고 MCMC Cap에 가깝다면 (예: .fullMCMC에서 150K/150K), 한도에 있습니다 — 그러면 Cap을 늘리거나 Plateau를 수용합니다. Gaussian Count가 여전히 증가하지만 Loss가 떨어지지 않으면 막힌 것입니다.

언제 중단할지 또는 계속 학습할지? 경험 법칙: 10K 반복 동안 Min Loss의 개선 없음 → 중단, 추가 반복은 낭비입니다. 그 전에: 한계선 개선이 보이면 Cmd+T (Training 메뉴 → Continue Training → +5K iterations) 를 통해 연장을 추가할 수 있습니다. 주의: MCMC에서는 Plateau가 종종 진짜입니다 — Cap이 자연스러운 한계입니다.

Gaussian Count Plateau는 "완료" 신호가 아닙니다. MCMC가 Cap에 도달했거나 Classic Densification이 소진되었다는 것만 의미합니다. 실제 "완료" 질문은 Holdout 분석만이 묻습니다 — 독립적인 테스트 세트의 PSNR/SSIM/LPIPS, Holdout 창 (W23–W29) 또는 –benchmark 플래그를 통해 평가됨.

PSNR/Holdout이 진실, Loss는 단지 프록시. Loss는 상대적 메트릭입니다: 모델이 학습 뷰에 적응하는 동안 떨어집니다. 그러나 낮은 Loss가 자동으로 좋은 모델을 의미하지는 않습니다 — 모델이 학습 이미지를 암기했다면 (Overfitting) Loss는 작지만 보이지 않은 뷰 (Holdout) 에서의 PSNR은 나쁠 것입니다. 따라서: 최종 품질 평가를 위해 항상 Holdout 메트릭을 보고 최종 Loss만 보지 마십시오.

경험 법칙 상자

- User Guide와 Keyboard Shortcuts는 정적 도움말입니다 — 키워드 질문에는 빠르지만 깊이를 위해서는 여기 이 매뉴얼을 사용하십시오. - 디스크 여유 공간이 10% 미만으로 떨어지면 Manage Storage를 엽니다. 로그와 Imports 스테이징이 일반적인 원인입니다. - Pareto Dashboard는 최소 세 개 또는 네 개의 학습 리포트 후에만 의미가 있습니다. X축 = 비용 (Time / Gs), Y축 = 품질 (PSNR / SSIM). Pareto Front가 효율적인 조합을 보여 줍니다. - PSNR 벤치마크를 다른 사람들과 공개하기 전에 Holdout Analysis를 사용하십시오 — 테스트 세트가 실제로 대표적인지 확인합니다. - BayesOpt Console은 주로 탐색 공간 정의를 위한 학습 및 검사 도구입니다. 실제 학습 기반 하이퍼파라미터 튜닝의 경우 오프라인 CLI 워크플로를 사용하십시오. - Loss Plateau와 Gaussian Count Plateau는 별도로 해석되어야 합니다. Cap 한도는 "완료" 신호가 아닙니다. 실제 품질은 Holdout PSNR만이 측정합니다. - Min Loss 개선 없이 10K 반복 → 학습 중지.