Rozdział 4 — Okna pomocnicze
Oprócz okna głównego (widok 3D plus Inspector) RadianceKit zarządza sześcioma innymi oknami, które można otworzyć z menu Pomoc. Menu zawiera osiem pozycji, od góry do dołu: User Guide (⌘?), Keyboard Shortcuts (⌘/), Open Training Logs… (⇧⌘L), Open Exports Folder…, Manage Storage…, Pareto Dashboard… (⇧⌘D), Holdout Analysis… (⇧⌘H), BayesOpt Console… (⇧⌘B). Obie pozycje „Open …" nie otwierają okna aplikacji, lecz Findera; dlatego nie są tu dalej omawiane. Trzy z okien — Dashboard, Holdout, BayesOpt — to samodzielne narzędzia analityczne: działają niezależnie od okna głównego i odczytują lub zapisują pliki JSON na dysku. Każde z tych trzech okien otwierasz z menu Pomoc, a następnie sam wybierasz w nim plik lub folder, który chcesz przeanalizować — za pomocą „Open Reports Folder…", „Open transforms.json…" lub przycisku „Start". Te trzy okna jako jedyne nie są przetłumaczone: ich przyciski, suwaki i nagłówki kolumn są w każdej wersji językowej po angielsku. Wymienione tu opisy znajdziesz więc dokładnie w takiej samej postaci na ekranie.
Trzy proste okna (User Guide, Keyboard Shortcuts, Manage Storage) oraz dwie pozycje menu prowadzące do folderów (Open Training Logs / Open Exports Folder) otrzymują po jednym krótkim wpisie na każdy element sterujący. Trzy okna analityczne są udokumentowane bardziej szczegółowo — każde z wprowadzeniem, które wyjaśnia, co widzisz w oknie, kiedy warto je otworzyć i jak interpretować wyświetlany obraz.
Na końcu rozdziału znajduje się sekcja odsyłaczy do Inspectora okna głównego: co sensownie możesz odczytać z wykresu straty na żywo (Live-Loss-Chart) i ze wskaźnika liczby gaussianów podczas trwającego treningu.
Przewodnik użytkownika (W1–W4)

Co to jest: Wbudowane okno pomocy, które renderuje dostarczony z aplikacją plik guide_<sprache>.md. Język jest ustalany na podstawie ustawień (zakładka General → Language) lub, jeśli tam wybrano „System", na podstawie preferencji językowych macOS. Układ jest klasyczny: po lewej pasek boczny ze wszystkimi nagłówkami, po prawej tekst główny.
Gdy potrzebujesz szybkiego przypomnienia pojedynczej kwestii — czyli jako zamiennik hasła w encyklopedii. Szczegółowym odniesieniem jest ten podręcznik; wbudowane okno pomocy to skrócona wersja do szybkiego sprawdzenia. Jest aktualizowane przy każdym wydaniu aplikacji, ale treściowo pozostaje bardziej powierzchowne.
W1NavigationSplitView (Sidebar + Detail)
GDZIE
Help → User Guide (⌘?).
TECHNICZNIE
Dwukolumnowy układ z wąskim paskiem bocznym (o szerokości co najmniej 180 pt) na drzewo treści oraz przewijanym obszarem szczegółów na właściwą treść Markdown. Okno ma minimalny rozmiar 700 × 500 pt. Przy pierwszym otwarciu okno ładuje odpowiedni plik guide_<lang>.md z pakietu aplikacji (domyślnie guide_en.md), parsuje go na rekordy blokowe (nagłówki H1–H4, akapity, listy, tabele, linie oddzielające) i osobno wyodrębnia strukturę nagłówków na potrzeby paska bocznego. Formatowanie inline (pogrubienie, kursywa, fragmenty kodu) jest renderowane przez wbudowany silnik Markdown. Język jest odczytywany z ustawień aplikacji, ze specjalnym przypadkiem chińskiego (zh-Hans) i portugalskiego brazylijskiego (pt-BR), które są zachowywane jako pełne tagi locale, ponieważ te warianty różnią się od zwykłego zh czy pt.
W2List (pasek boczny z nagłówkami)
GDZIE
Lewa kolumna w oknie przewodnika użytkownika.
TECHNICZNIE
Lista wszystkich nagłówków H2 i H3 bieżącego dokumentu Markdown. Wpisy H2 pojawiają się bez wcięcia, z pogrubioną czcionką (medium weight), wpisy H3 z wcięciem 16 pt po lewej i zredukowanym stylem koloru pierwszoplanowego. Wszystkie inne poziomy — zarówno H1, jak i H4 oraz głębsze — nie pojawiają się w pasku bocznym, ponieważ w przeciwnym razie uczyniłyby go nieprzejrzystym. Identyfikatory kotwic są generowane z tekstu nagłówka poprzez slugifikację (małe litery + spacje zamienione na myślniki + filtrowanie do liter/cyfr/myślników — ten sam algorytm, którego GitHub używa do swoich kotwic Markdown, więc także zewnętrzne adresy URL do dokumentacji mogłyby potencjalnie trafić na tę samą kotwicę). Lista wykorzystuje natywny styl macOS.
W3Button (przejście nagłówek → kotwica)
GDZIE
Po jednym przycisku dla każdego wiersza paska bocznego.
TECHNICZNIE
Każdy wpis w pasku bocznym jest przyciskiem, który ustawia aktualną kotwicę, ale wizualnie wygląda jak element listy. Zmienna obserwująca uruchamia wtedy skok przewijania do odpowiedniej kotwicy z płynną animacją trwającą 0,3 s. Po skoku wartość kotwicy jest resetowana, aby kolejne kliknięcie w tę samą kotwicę ponownie zadziałało (w przeciwnym razie obserwator nie zareagowałby ponownie, ponieważ wartość by się nie zmieniła).
W4ScrollView (treść szczegółowa)
GDZIE
Prawa kolumna.
TECHNICZNIE
Przewijany, pionowo ułożony obszar treści z leniwym renderowaniem (lazy rendering), ponieważ dłuższe przewodniki mogą łatwo mieć ponad 200 bloków Markdown — wariant bez leniwego renderowania instancjonowałby wszystkie naraz. Każdy blok otrzymuje własny identyfikator, albo kotwicę nagłówka (którą otrzymuje każdy nagłówek, niezależnie od poziomu), albo zastępczy indeks. Maksymalna szerokość wynosi 720 pt, wypełnienie 32 poziomo / 24 pionowo, dzięki czemu długie wiersze zachowują czytelny układ. Tabele są renderowane komórka po komórce za pomocą poziomych stosów i linii oddzielających; kod inline przez wbudowany silnik Markdown. Prawdziwe bloki kodu są obecnie traktowane jak akapit — to znane ograniczenie okna pomocy.
Skróty klawiszowe (W5–W6)

Statyczna lista referencyjna w pięciu sekcjach. Navigation: Mouse Drag (Orbit/Fly), Shift+Drag/Right-Drag (Pan), Scroll (Zoom), WASD (ruch typu Fly-Through), Q/E (Up/Down), F (Toggle Orbit/Fly), Double-click (Re-center), Cmd+Scroll (regulacja FoV). Views: R (Reset Camera), T (Auto-Rotation), P (Camera Playback), B (Background-Cycle), 0–9 (przeskocz do Training-Cam 1=10%/5=50%/0=ostatnia), Left/Right Arrow (Prev/Next Cam). Capture: S (Screenshot to Desktop), V (wideo Turntable), C (Copy Camera Info). Editor: Tab (tryb edycji), Click/Drag (Paint-Select), Option+Click (odznacz), X / Delete (usuń zaznaczenie), Cmd-Z (cofnij ostatnie usunięcie), [ / ] (mniejszy/większy pędzel), Esc (anuluj zaznaczenie). Training: Option+Space (wstrzymaj/wznów trening), Cmd+E (eksportuj scenę). Nic więcej tu nie ma — Start, Cancel oraz przedłużenia treningu znajdziesz w menu Training (rozdział 1).
Co to jest: Prosty, statyczny przegląd wszystkich skrótów klawiszowych — Navigation, Views, Capture, Editor, Training. Zawartość jest zapisana na stałe i nie jest wczytywana z żadnego pliku.
Gdy szukasz najszybszego sposobu, by coś zrobić w Viewport. WASD-Fly-Through, R do resetu kamery, B do przełączania tła — wszystko znajdziesz tutaj.
W5ScrollView (obszar treści)
GDZIE
Help → Keyboard Shortcuts (⌘/).
TECHNICZNIE
Prosty obszar przewijania z pionową listą w środku. Padding 20 dookoła, brak drzewa nawigacji w Sidebar (lista jest wystarczająco krótka). Treść jest pogrupowana w pięć sekcji (Navigation, Views, Capture, Editor, Training). Na każdą kombinację klawiszy przypada jeden wiersz z tekstem podlegającym tłumaczeniu w obu kolumnach. Lewa kolumna (kod klawisza) ma stałą szerokość 180 pt, dzięki czemu opisy po prawej pozostają wyrównane pionowo. Brak interakcji poza przewijaniem — kliknięcie w wiersz niczego nie uruchamia, skróty klawiszowe to prawdziwe modyfikatory klawiatury w menu i w Viewport.
W6VStack (sekcje skrótów)
GDZIE
Wewnątrz ScrollView.
TECHNICZNIE
Sekcje ułożone do lewej krawędzi z odstępem 16 pt. W obrębie każdej z pięciu sekcji znajduje się nagłówek + ciąg wierszy. Nagłówki wykorzystują drugorzędny styl Subheadline — celowo bez formatu Title, bo sekcje nie muszą być nawigowalne. Treść jest celowo płaska (brak Disclosure, brak Search, brak filtra), dzięki czemu komponent działa bez zmian na każdej wersji macOS, a plik pozostaje czytelny.
Zarządzanie pamięcią (W7–W12)

Widok tabelaryczny wszystkich plików zarządzanych przez RadianceKit. Nagłówek pokazuje 1356 elementów, łącznie 55,1 GB. Pasek narzędzi u góry: „Show in Finder" + „Refresh". Każdy wiersz: ikona eksportu, nazwa pliku (np. training_20260718T194416Z.ply), data eksportu, rozmiar (waha się tutaj od 7,8 MB do 2,24 GB), ikona lupy (Reveal) i ikona kosza (Move to Trash). Sortowanie odbywa się najpierw wg kategorii, a w ramach kategorii wg daty, najnowsze na górze. Na tym zrzucie dominują eksporty PLY, ponieważ w tym magazynie zabezpieczono przede wszystkim wyniki treningów.
Co to jest: Przegląd zużycia dysku dla wszystkiego, co RadianceKit zapisuje w ~/Documents/RadianceKit/ — logi, eksporty, sceny, pakiety przechwytywania (z towarzyszącej aplikacji iOS), importy (kopie robocze obrazów wejściowych). Przy każdej pozycji rozmiar w bajtach oraz dwa przyciski: „pokaż w Finderze" i „przenieś do kosza". To NIE jest automatyczne czyszczenie — aplikacja sama niczego nie usuwa; decydujesz o każdej pozycji z osobna. To okno jest przetłumaczone: po niemiecku nazywa się „Speicher verwalten", oba przyciski w nagłówku to „Im Finder anzeigen" i „Aktualisieren", a przyciski w wierszach to „Im Finder anzeigen" i „In den Papierkorb legen". Angielskie nazwy w poniższych pozycjach to oznaczenia z wersji angielskiej.
Gdy dysk zaczyna się zapełniać. Zwłaszcza logi się kumulują (jeden JSONL na próbę treningu, plus _qualityMetrics.json); eksporty oczywiście też (PLY to 100% surowych danych, jeden na eksport). Przydatne również po awarii, gdy w katalogu roboczym importów wciąż leżą stare kopie obrazów wejściowych.
W7Przycisk „Show in Finder"
GDZIE
Nagłówek, prawy górny róg okna przeglądarki pamięci.
TECHNICZNIE
Otwiera folder danych RadianceKit w Finderze — dokładnie ten katalog, którego zawartość wyświetla to okno. Dzięki temu widzisz strukturę folderów (Logs, Exports, Scenes, Captures, Imports) bezpośrednio i możesz przenosić lub kopiować pliki także za pomocą samego Findera. Akcja otwiera nowe okno Findera; lista w oknie się przy tym nie odświeża — do tego służy „Refresh" (W8).
W8Przycisk „Refresh"
GDZIE
Nagłówek, obok przycisku Finder.
TECHNICZNIE
Uruchamia skanowanie w tle, działające jako asynchroniczne zadanie zainicjowane przez użytkownika, dzięki czemu skanowanie dużych drzew katalogów nie blokuje interfejsu. Właściwe przechodzenie odwiedza każdy znany podfolder (Logs, Exports, Scenes, Captures, Imports) i tworzy wpis pamięci dla każdego bezpośredniego elementu potomnego. Dla każdego wpisu ustalany jest rozmiar rekurencyjny — preferowane jest rzeczywiste zużycie dysku (z uwzględnieniem współdzielenia twardych dowiązań APFS), z fallbackiem na logiczny rozmiar pliku.
W9Lista (wpisy pamięci)
GDZIE
Główna treść pod nagłówkiem.
TECHNICZNIE
Lista z takim układem w każdym wierszu: ikona SF Symbols specyficzna dla kategorii (dokument dla Logs, strzałka w górę dla Exports, sześcian dla Scenes, iPhone dla pakietów Capture, tacka dla Imports), nazwa + podtytuł (etykieta rodzaju + sformatowana data modyfikacji), licznik bajtów po prawej (wyrównany do prawej, czcionka monospaced), przycisk Reveal (ikona lupy), przycisk Trash (kosz). Sortowanie: najpierw wg rodzaju (najpierw Scenes, potem Exports, Logs, Captures, Imports, Other), a w ramach tego wg daty modyfikacji malejąco (najnowsze na górze). Jeśli skanowanie wciąż trwa, w tym miejscu wyświetlany jest postęp „Scanning…". Jeśli nic nie znaleziono, pokazywany jest stan pusty z ikoną tacki.
W10Przycisk wiersza „Reveal in Finder"
GDZIE
Przy każdym wierszu, ikona lupy po prawej.
TECHNICZNIE
Otwiera Finder i zaznacza konkretny element (plik lub folder). Różnica względem W7: W7 otwiera katalog główny; W10 zaznacza dokładnie ten jeden wpis. Praktyczny sposób pracy: znajdź duży wpis, kliknij lupę, a następnie skopiuj go np. na dysk zewnętrzny.
W11Przycisk wiersza „Move to Trash"
GDZIE
Przy każdym wierszu, ikona kosza po prawej obok lupy.
TECHNICZNIE
Uruchamia okno dialogowe potwierdzenia (W12). Dopiero po potwierdzeniu wykonywana jest standardowa operacja macOS „przenieś do kosza" (czyli odwracalna, bez bezpośredniego usunięcia). Po pomyślnym przeniesieniu do kosza wpis jest usuwany z listy, a łączny licznik bajtów aktualizowany. W razie błędów wyświetlane jest modalne okno błędu.
W12ConfirmationDialog (potwierdzenie usunięcia)
GDZIE
Wywoływane przez W11, wyświetlane jako arkusz (sheet) macOS.
TECHNICZNIE
Standardowe okno potwierdzenia z dynamicznym tytułem „Delete <name>?" oraz wierszem komunikatu, który wyraźnie informuje, że wpis trafi do kosza i można go stamtąd przywrócić (dopóki kosz nie zostanie opróżniony). Dwa przyciski: „Move to Trash" jako akcja destrukcyjna (wyświetlana na czerwono) oraz „Cancel" z automatycznym przypisaniem do klawisza Esc. Dialog jest niemodalny w tym sensie, że blokuje tylko to okno, nie całą aplikację — to standard macOS dla odwracalnych operacji usuwania.
Panel Pareto (W13–W22)

Pusty stan (po pierwszym otwarciu) — stan pusty z wezwaniem do działania „Open Reports Folder…". Punkty danych pojawiają się, gdy tylko raporty treningowe zostaną wczytane, patrz kolejny zrzut.

Pasek narzędzi na górze pokazuje po prawej „384 reports of 384" (wszystkie raporty w wybranym folderze zostały pomyślnie sparsowane); po lewej stronie przycisku „Open Reports Folder…" znajduje się nazwa wczytanego folderu, tutaj „Benchmarks". Osie: wybór osi X ustawiony na Gaussians, wybór osi Y na PSNR (dB), obok aktywne zaznaczenie „Show Pareto Front". Legenda w lewym górnym rogu: niebieski
mcmc, zielony = classic, pomarańczowy = hybrid, do tego symbol
kształtu dla Mip-Splatting On/Off. Przerywana linia frontu Pareto przebiega wzdłuż najlepiej osiągniętych wartości PSNR i osiąga plateau przy PSNR≈30 dB od ok. 300K Gaussians; chmura punktów sięga ponad 1,5 mln Gaussians. Chipy filtrów po prawej: ponad 30 scen (m.in. bicycle, bonsai, family, flowers, garden, kitchen, stump, truck oraz ponumerowane serie testowe 360, drone i photo), 3 strategie (classic, hybrid, mcmc), 3 opcje Mip-Splatting (All, On, Off) z aktywnym „All". Obecnie nie jest ustawiony żaden filtr sceny ani strategii, stąd gęsty klaster punktów.
Co to jest: Narzędzie do porównywania wielu przebiegów treningu jednocześnie. Wytrenowałeś w przeszłości kilka scen lub tę samą scenę z różnymi ustawieniami wstępnymi — z ewaluacji benchmarku powstaje na każdy przebieg treningu plik raportu JSON, który zawiera m.in. końcowy PSNR, SSIM, LPIPS, liczbę Gaussians i czas rzeczywisty (wallclock). W interfejsie nie ma przełącznika dla tej ewaluacji; panel ocenia to, co już znajduje się jako raport w wybranym folderze. Wczytuje cały folder takich raportów jednocześnie i przedstawia je jako wykres rozrzutu 2D z wybieralnymi osiami. Dodatkowo rysowany jest front Pareto (zbiór punktów niezdominowanych) jako przerywana linia.
Po tym, jak utworzyłeś co najmniej trzy lub cztery raporty treningowe. Przy mniejszej liczbie punktów linia frontu nie jest miarodajna. Typowy przypadek użycia: próbowałeś zrekonstruować scenę zewnętrzną i przeszedłeś po kolei przez P3 Balanced (Classic), P4 Quality (Classic), P8 Quality (MCMC) i P9 Drone / Aerial — teraz chcesz wiedzieć, która konfiguracja daje najlepszy PSNR na sekundę czasu treningu lub która wymaga najmniej Gaussians dla danego PSNR.
Obie osie można wybrać dowolnie (oś X: Gaussians, czas treningu, PSNR, SSIM, LPIPS, …; oś Y analogicznie). Obliczenia frontu Pareto wiedzą dla każdej metryki, czy „mniej = lepiej" (LPIPS, Gaussians, Training Time, BRISQUE), czy „więcej = lepiej" (PSNR, SSIM, FSIM, MS-SSIM) — linia przebiega więc, zależnie od wyboru osi, z lewego dolnego rogu do prawego górnego lub z lewego górnego do prawego dolnego, zawsze wzdłuż najlepiej osiągniętej kombinacji. Punkt jest optymalny w sensie Pareto, jeśli ŻADEN inny punkt nie jest w OBU wymiarach przynajmniej tak samo dobry (czyli żaden inny go nie dominuje). Punkty optymalne w sensie Pareto leżą na linii, inne punkty leżą po prawej/powyżej niej (zależnie od orientacji osi). Punkty NA linii to prawdziwi kandydaci na „najlepszy preset"; punkty DALEKO od linii to zmarnowany czas treningu.
Możesz ograniczyć wybór do konkretnej sceny (np. jeśli chcesz porównywać tylko przebiegi typu outdoor), do konkretnej strategii (classic, hybrid lub mcmc) lub do Mip-Splatting włączonego/wyłączonego (Mip-Splatting to opcjonalne ustawienie dla zaawansowanych, dlatego warto porównać je bezpośrednio).
Masz trzy raporty dla sceny „truck" w jednym folderze raportów: Run A (P4 Quality (Classic), 524K Gs, 105 s, PSNR 23.4), Run B (P8 Quality (MCMC), 150K Gs, 693 s, PSNR 24.6), Run C (P5 Ultra Detail, 1.25M Gs, 312 s, PSNR 25.8). Ustaw oś X na Training Time, oś Y na PSNR. Run B znajduje się w prawym górnym obszarze, Run C jeszcze dalej w prawym górnym obszarze, Run A w lewym dolnym. Front Pareto łączy A i C — oba są niezdominowane. Run B jest „stracony" (C jest lepszy zarówno w Time, jak i w PSNR). Wniosek: dla „truck" droga przez MCMC się nie opłaca; albo szybko+ok (A), albo długo+bardzo dobrze (C). Zapisz konfigurację z C jako osobny preset (Inspektor → I1 Save Preset).
Następne działanie: Zapisz najlepszą konfigurację jako preset. Konkretnie: przyjrzyj się punktom Pareto (najechanie kursorem pokazuje PSNR/SSIM/LPIPS/Gs/Time w podpowiedzi), zdecyduj, który najlepiej pasuje Ci pod kątem kompromisu czas kontra jakość, otwórz odpowiedni raport (nazwa pliku zawiera znacznik czasu przebiegu), skopiuj jego konfigurację treningową do nowego przebiegu lub zapisz ją po następnej sesji treningowej jako preset przez Inspektor.
W13Przycisk „Open Reports Folder…"
GDZIE
Pasek narzędzi w lewym górnym rogu.
TECHNICZNIE
Otwiera okno wyboru folderu z komunikatem „Select a folder containing benchmark .json reports". Po zatwierdzeniu uruchamia się zadanie w tle, które sekwencyjnie parsuje wszystkie pliki .json w folderze. Błędne raporty (uszkodzony JSON, niepoprawny schemat) są zbierane i wyświetlane na dole w panelu bocznym jako „N file failed to parse" — bez awarii aplikacji. Jeśli nastąpi drugie kliknięcie, gdy pierwsze wczytywanie jeszcze trwa, poprzednie zadanie zostaje przerwane, żeby nie doszło do jednoczesnego zapisu dwóch wyników do stanu.
Wybrany folder nie jest zapamiętywany na stałe: po ponownym otwarciu okna przez Pomoc → Pareto Dashboard… (⇧⌘D) wybierasz go tutaj od nowa. Nazwa wczytanego folderu pojawia się potem po prawej stronie przycisku.
W14Selektor „X-Axis"
GDZIE
Nad wykresem, po lewej.
TECHNICZNIE
Menu wyboru ze wszystkimi dostępnymi osiami metryk modułu panelu (PSNR, SSIM, LPIPS, liczba Gaussians, czas treningu i tak dalej). Domyślnie liczba Gaussians. Przy zmianie zresetowany zostaje najechany punkt, ponieważ dotychczas podświetlona pozycja w starym układzie współrzędnych osi nie ma sensu po zmianie osi. Selektor jest ograniczony do szerokości zawartości, żeby nie rozciągał się na całą szerokość.
W15Selektor „Y-Axis"
GDZIE
Nad wykresem, obok X-Axis.
TECHNICZNIE
Identyczny do W14, tylko że domyślną wartością jest PSNR. Wybór osi jest zapisywany niezależnie, więc użytkownik może wybrać także bezsensowne kombinacje (X=PSNR, Y=PSNR — rzuciłoby wszystkie punkty na przekątną). Takie kombinacje nie są jednak blokowane; celowa decyzja, ponieważ porównanie „SSIM vs PSNR" może być całkiem interesujące, żeby zobaczyć, jak spójnie zachowują się te metryki.
W16Przełącznik „Show Pareto Front"
GDZIE
Po prawej stronie obok selektorów osi.
TECHNICZNIE
Pole wyboru, domyślnie zaznaczone. Front Pareto jest dodatkowo nakładany na chmurę punktów jako linia na wykresie — przerywana (wzór kreski 4–4), szara, półprzezroczysta, grubość linii 1,5 pt. Uwaga: W wydanej wersji zaznaczenie nie wpływa na wykres — linia frontu jest zawsze rysowana, niezależnie od tego, czy pole jest zaznaczone. Front jest przeliczany na nowo przy każdej zmianie osi i po każdej zmianie filtra.
W17Chipy filtru „Scene"
GDZIE
Prawy panel boczny w oknie panelu.
TECHNICZNIE
Chipy filtrów dla każdej sceny występującej we wczytanych raportach. Własny układ przepływowy, który automatycznie przepakowuje chipy do kilku wierszy, gdy szerokość zostanie wyczerpana. Aktywne chipy otrzymują tło w kolorze akcentu, nieaktywne neutralne standardowe tło materiałowe. Możliwy jest wybór wielokrotny (semantyka zbioru); jeśli żaden chip nie jest zaznaczony, wszystkie sceny są uznawane za „przepuszczone" — czyli logika zbioru brzmi „pusty wybór = wszystko", a nie „pusty wybór = nic".
W18Chipy filtru „Strategy"
GDZIE
Pod filtrem Scene w panelu bocznym.
TECHNICZNIE
Dokładnie jak W17, ale dla strategii treningu — zazwyczaj trzy wartości „classic", „hybrid" i „mcmc", wyprowadzone z pola Strategy w plikach JSON raportów benchmarków. Przydatne, jeśli masz zmieszane raporty z kilku strategii i chcesz zobaczyć tylko jeden rodzaj (np. „pokaż tylko przebiegi MCMC, bo Classic już wykluczyłem").
W19Chipy filtru „Mip-Splatting"
GDZIE
Pod filtrem Strategy w panelu bocznym.
TECHNICZNIE
Filtr trójwartościowy (zamiast zbioru jak w W17/W18): „All" / „On" / „Off". Kontekst: Mip-Splatting to rozszerzenie wieloskalowe, które w zależności od sceny pomaga albo nie — dlatego pozostaje celowo dołączanym ustawieniem, a nie standardem. Jeśli porównujesz Mip on/off, często chcesz móc bardzo ostro rozdzielić wyniki. Stąd dedykowany filtr ternarowy ze stanami „przepuść wszystko", „tylko Mip włączony", „tylko Mip wyłączony". Sekcja w panelu bocznym pojawia się, gdy tylko wczytany zbiór w ogóle zawiera raporty — czyli praktycznie zawsze; znika tylko wtedy, gdy nic nie zostało wczytane.
W20ChipButton (przełącznik filtra, all/on/off)
GDZIE
Komponent pomocniczy, używany w W17/W18/W19.
TECHNICZNIE
Minimalistyczny wrapper przycisku. Zawartość: tekst etykiety w rozmiarze czcionki Caption z odstępem 10 poziomo / 5 pionowo. Tło warunkowe: jeśli aktywny → kolor akcentu aplikacji z białym tekstem; w przeciwnym razie neutralne standardowe tło materiałowe z normalnym kolorem tekstu (dostosowuje się do jasnego i ciemnego wyglądu). Kształt to kapsuła (pigułkowaty). Styl przycisku plain, żeby materiał kapsuły nie był przesłonięty przez systemową obwódkę.
W21Wykres (rozrzut Pareto)
GDZIE
Środkowa część panelu.
TECHNICZNIE
Diagram Swift Charts z dwiema warstwami: 1. jeden punkt na raport — pozycja z wybranych metryk X i Y, kolor według Strategy, symbol według statusu Mip. Rozmiar symbolu normalnie 80, podświetlony 200 (gdy ID odpowiada aktualnie najechanemu raportowi). 2. linia dla frontu Pareto (patrz W16 — jest zawsze rysowana). Dodatkowo aktualnie najechany punkt wyświetla nazwę sceny jako małą kapsułę nad sobą.
Nakładka wykresu: przezroczysty prostokąt rejestruje ruch myszy; w każdej klatce wyliczana jest euklidesowo najbliższa pozycja punktu w ramce wykresu i aktualizowany jest najechany raport, jeśli odległość wynosi mniej niż 24 px (w przeciwnym razie resetowany). Dzięki temu otrzymujesz podpowiedź bez klikania — wystarczy najechanie kursorem.
W22Podpowiedź (szczegóły po najechaniu)
GDZIE
Pod wykresem, wyświetlana przy najechaniu.
TECHNICZNIE
Stos poziomy: nazwa sceny (nagłówek), tag Strategy (Caption), linia rozdzielająca, następnie metryki PSNR/SSIM/LPIPS/Gs/Time w osobnych małych grupach pionowych (etykieta + wartość czcionką monospaced). Jeśli Mip był włączony, dodatkowo tag w formie kapsuły „Mip" w kolorze akcentu. Tło to półprzezroczyste rozmycie, prostokąt z zaokrąglonymi rogami o promieniu 8 pt. Wyświetlane tylko wtedy, gdy kursor faktycznie znajduje się nad punktem. Znika automatycznie po opuszczeniu obszaru.
Analiza Holdout (W23–W29)

Pusty stan z Empty-State i wezwaniem do działania „Open transforms.json…". Akceptuje format NeRF-Studio i Instant-NGP. Znaczniki kamer pojawiają się, gdy tylko wczytany jest plik transforms.json — patrz kolejna ilustracja.

Nagłówek pokazuje wczytany plik (transforms.json) i liczbę kamer („86 cameras"). Lewy panel boczny: wybór strategii z dwiema opcjami — Angular (longitudinal) aktywna (sortuje kamery według ich kąta długości geograficznej wokół orbity, a następnie rozdziela je kolejno na foldy) vs Linear (round-robin) (ten sam rozkład rotacyjny, ale według kolejności obrazów zamiast kąta widzenia). Suwak k-Folds ustawiony jest na 5, wybór foldu testowego na Fold 1. Przycisk eksportu tworzy plik fold-assignment.json do dalszego wykorzystania w zewnętrznych narzędziach ewaluacyjnych. Panel środkowy: projekcja 3D-Globe wszystkich 86 kamer, rozłożonych po całej kuli — zielone punkty = trening, czerwone punkty = aktualny fold testowy (Fold 1 z 18 kamerami). Prawy panel boczny (Angular Correlation): dla każdego foldu liczba kamer + Mean Nearest Angle (Fold 1: 18 kamer / 8.5°, Fold 2: 17 / 6.1°, Fold 3: 17 / 6.2°, Fold 4: 17 / 6.7°, Fold 5: 17 / 6.4°) — mniejsza wartość oznacza, że każda kamera testowa ma blisko siebie kamerę treningową, więc test jest łatwiejszy.
Co to jest: Wizualizator 3D twojego układu kamer z logiką walidacji krzyżowej. Wczytujesz plik transforms.json (standardowy format Nerfstudio / Instant-NGP dla póz kamer), aplikacja odczytuje wszystkie kamery, rzutuje ich kierunki patrzenia na kulę jednostkową i wyświetla je jako małe kuliste znaczniki na wirtualnym globusie. Następnie dzieli kamery na k foldów (według wybranej strategii: angular lub linear), zaznacza na zielono część treningową, a na czerwono część testową (holdout), i oblicza dla każdego foldu wynik Angular-Correlation, który mówi ci, jak daleko fold testowy jest w przestrzeni kątów widzenia od foldu treningowego.
Kiedy chcesz przeprowadzić ewaluację holdout — czyli: jak dobrze twój model generalizuje na niewidziane kąty widzenia? Domyślnie przy treningu stosuje się „every-8th view jako holdout" (konwencja Mip-NeRF360), ale jest to bardzo liniowy podział. Jeśli twoje zdjęcia są na przykład zgrupowane czasowo (najpierw jedna strona obiektu, potem druga), to „every-8th" nie jest reprezentatywne — losowa pozycja w sekwencji trafia do testu, ale wszyscy jej sąsiedzi są w treningu, co jest zbyt proste. Przy „angular" stratyfikuje się zamiast tego przestrzeń kątów widzenia: każdy fold zawiera kamery ze wszystkich obszarów orbity, dzięki czemu test naprawdę sprawdza luki w generalizacji.
Angular vs Linear: - Angular (domyślnie): sortuje wszystkie kamery według ich kąta długości geograficznej (współrzędna φ wokół osi Y), a następnie rozdziela je kolejno na k foldów — pierwsza kamera w pierścieniu trafia do Fold 1, druga do Fold 2, a po k kamerach obieg zaczyna się od nowa. Zaleta: każdy fold zawiera kamery ze wszystkich kierunków orbity, równomiernie rozłożone po pierścieniu. Dobre dla klasycznych ujęć orbitalnych, ponieważ podział nie zależy już wtedy od kolejności nagrywania. - Linear (round-robin): ten sam rozkład rotacyjny, ale według pozycji obrazu zamiast kąta (indeks foldu = image_index modulo k). To prosty podział typu „co k-ty". Działa dobrze, jeśli kolejność obrazów NIE ma przestrzennego obciążenia (np. losowo posortowane zdjęcia z drona). Działa słabo, jeśli obrazy grupują się czasowo — wtedy sąsiadujące klatki trafiają do różnych foldów, a test staje się zbyt łatwy.
Na globusie 3D widzisz od razu: zielone punkty (trening) i czerwone punkty (test). Jeśli czerwone punkty skupiają się wszystkie w jednym rogu, holdout jest słaby (nie jest dobrym testem generalizacji). Jeśli są równomiernie rozłożone między zielonymi, jest dobry. Wynik Angular-Correlation dla każdego foldu (prawy panel boczny, w stopniach) mówi dodatkowo: mniejsza wartość = test jest blisko treningu (każda kamera testowa ma blisko siebie kamerę treningową, łatwiejszy test); większa wartość = test jest daleko od treningu (trudniejsza generalizacja).
Nagrałeś swoją scenę Truck z 251 zdjęciami, eksportujesz przez pozycję menu M33 (Export SfM transforms.json) plik nerfstudio. Otwórz okno Holdout (⇧⌘H), wczytaj JSON przez „Open transforms.json…", spójrz na globus. k=5 (domyślnie) daje ci 5 foldów. Kliknij na „Fold 3" — sprawdź, czy czerwone znaczniki są mniej więcej równomiernie rozłożone. Jeśli tak: „Export fold-assignment.json". Eksportowany plik jest przeznaczony dla zewnętrznych narzędzi ewaluacyjnych (Nerfstudio, Instant-NGP); RadianceKit sam go nie wczytuje ponownie i nadal trenuje względem własnego standardu holdout „every-8th". Okno służy więc tutaj ocenie, czy twój zestaw kamer w ogóle umożliwia uczciwy test.
W23Przycisk „Open transforms.json…"
GDZIE
Pasek narzędzi u góry po lewej.
TECHNICZNIE
Otwiera okno wyboru pliku ograniczone do plików JSON. Po potwierdzeniu moduł Holdout wczytuje plik. Loader parsuje zarówno format nerfstudio (parametry wewnętrzne kamery plus lista klatek ze ścieżką obrazu i macierzą transformacji), jak i format instant-ngp (ta sama struktura). Dla każdej klatki wyodrębniany jest kierunek patrzenia z macierzy transformacji (oś Z lokalnej bazy kamery) i zapisywany. Jeśli parsowanie się nie powiedzie, w lewym panelu bocznym pojawia się komunikat — ale tylko wtedy, gdy była już wcześniej wczytana jakaś scena; przy pierwszej próbie okno pozostaje w pustym stanie bez widocznego komunikatu.
Wczytany plik nie jest zapamiętywany na stałe: po otwarciu okna przez Pomoc → Holdout Analysis… (⇧⌘H) wybierasz go tutaj ponownie. Jego nazwa pojawia się następnie po prawej stronie przycisku.
W24Wybór „Strategy" (angular/linear)
GDZIE
Lewy panel boczny, u góry.
TECHNICZNIE
Przełącznik radiowy z dwiema opcjami: Angular i Linear. Zmiana strategii automatycznie wywołuje przeliczenie foldów. Kierunki patrzenia to lista jednostkowych wektorów 3D na sferze; strategia Angular sortuje je według kąta długości geograficznej φ, a następnie przypisuje je kolejno do foldów, strategia Linear wykonuje to samo przypisanie rotacyjne według indeksu klatki i całkowicie ignoruje geometrię. Obie strategie tworzą więc foldy o tym samym rozmiarze; różnią się jedynie tym, według czego wcześniej sortują.
W25Suwak „k Folds"
GDZIE
Lewy panel boczny, na środku.
TECHNICZNIE
Suwak od 3 do 10, krok 1. Przy zmianie przeliczanie foldów jest automatycznie wywoływane na nowo, dzięki czemu lista foldów, indeksy treningowe/testowe i wynik dla każdego foldu są natychmiast przeliczane od nowa. Wybrana wartość jest wyświetlana jako tekst z cyframi o stałej szerokości po prawej stronie etykiety.
Reguła kciuka: k=5 to wartość domyślna (daje 20% testu na fold, to typowe dla walidacji krzyżowej). k=10, jeśli masz bardzo dużo danych i potrzebujesz więcej foldów dla siły statystycznej. k=3, jeśli masz mało danych.
W26Wybór „Test Fold"
GDZIE
Lewy panel boczny, pod suwakiem k.
TECHNICZNIE
Menu wyboru. Zawiera dokładnie tyle wpisów, ile ustawionych jest foldów, oznaczonych „Fold 1" do „Fold N". Jeśli poprzednio wybrany indeks jest ≥ k (np. dlatego, że zmniejszyłeś k z 10 na 5), zostaje automatycznie zresetowany do 0. Wybrany fold testowy jest przedstawiony na globusie na czerwono, wszystkie pozostałe na zielono.
W27Przycisk „Export fold-assignment.json"
GDZIE
Lewy panel boczny, na dole.
TECHNICZNIE
Otwiera okno dialogowe zapisu z domyślną nazwą pliku fold-assignment.json. Po potwierdzeniu moduł Holdout koduje aktualny podział w schemat JSON (przyporządkowanie foldów per klatka plus blok meta strategii). Plik jest przeznaczony dla zewnętrznych narzędzi ewaluacyjnych — RadianceKit nie wczytuje go ponownie. Przycisk jest wyszarzony, dopóki nie jest wczytany żaden plik kamer. Sukces zgłaszany jest jako „Saved to (filename)", błąd zapisu jako „Export failed: …" — oba pojawiają się w tym samym miejscu pod przyciskiem i oba w zielonym tekście, kolor więc nie odróżnia przypadków.
W28SCNView (3D Camera Globe)
GDZIE
Panel środkowy w oknie Holdout.
TECHNICZNIE
Widok globusa SceneKit. Scena składa się z: kuli szkieletowej (promień 1.0, 36 segmentów, ciemnoszara), trzech kolorowych odcinków osi (czerwony/zielony/niebieski dla X/Y/Z, każdy długości 1.2) oraz dla każdej kamery małej kuli-znacznika (promień 0.03) w odpowiedniej pozycji kierunku patrzenia na kuli jednostkowej (nieco na zewnątrz, aby nie znikała WEWNĄTRZ kuli szkieletowej). Znaczniki NIE są odbudowywane przy każdej zmianie foldu — odbudowa jest konieczna tylko wtedy, gdy zmienia się lista klatek (czyli wczytywany jest nowy JSON). Zamiast tego przy każdej aktualizacji odbywa się aktualizacja kolorów materiału w miejscu: czerwony dla indeksów testowych, zielony dla treningowych, jasnoszary, gdy żadne z nich. Dzięki temu przesuwanie suwaka pozostaje wydajne nawet przy N > 1000 kamerach.
Kontrola kamery jest aktywna — możesz myszą obracać globus, przybliżać, przesuwać. Oświetlenie sprawia, że znaczniki nie wyglądają płasko. Tło jest ciemnoszare.
W29FoldCard (dotknij, aby wybrać fold)
GDZIE
Prawy panel boczny, sekcja „Angular Correlation".
TECHNICZNIE
Dla każdego foldu widok karty — zaokrąglony prostokąt o promieniu 6 pt, padding 10, układ pionowy z dwoma wierszami (u góry „Fold N" + liczba kamer, na dole „Mean nearest angle:" + wartość w stopniach). Kolor tła zależny od warunku: aktywny fold = kolor akcentu półprzezroczysty, nieaktywne = neutralny materiał domyślny. Dotknięcie wybiera fold, a globus na żywo zmienia kolory.
Wynik „Mean nearest angle" to średni najmniejszy kąt na kamerę testową do najbliższej kamery treningowej (obliczany wewnętrznie w radianach, wyświetlany w interfejsie w stopniach).
Konsola BayesOpt (W30–W39)

Pusty stan z selektorem przestrzeni przeszukiwania (RadianceKit defaults (6-dim)), suwakiem budżetu testów (domyślnie 40), ziarnem losowości (42) oraz trzema pustymi panelami dla wykresu zbieżności, dziennika testów i listy parametrów przestrzeni przeszukiwania. Wykres zbieżności i tabela testów wypełniają się, gdy uruchomiony zostanie przebieg — patrz kolejna ilustracja.

Status w prawym górnym rogu „Finished — best 0.9943 after 40 trials", obok przycisk „Save Best Config"; w lewym górnym rogu przycisk „Start". Lewy pasek boczny: selektor przestrzeni przeszukiwania ustawiony na RadianceKit defaults (6-dim), budżet testów 40, ziarno losowości 42. Lista parametrów pokazuje sześć hiperparametrów do dostrojenia wraz z ich zakresami wartości: 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]. Środek: wykres zbieżności „Convergence (best value so far)" (X = indeks testu 0–40, Y = wartość funkcji celu 0–1) — niebieskie punkty = próbki początkowe, zielone punkty = akwizycja BayesOpt, pomarańczowe punkty = testy restartu (#22 z 0.5303 i #31 z 0.4885). Niebieska linia najlepszej wartości rośnie stromo do testu ~5, potem następuje już tylko marginalna poprawa do testu ~13, a od tego miejsca płaskie plateau blisko 1.0. Prawy pasek boczny: dziennik testów, tutaj przewinięty do testów #8–#36, z wynikiem i tagiem (init/bo/restart). Przycisk Save Best Config w prawym górnym rogu zapisuje bayesopt-best.json.
Co to jest: Konsola optymalizacji bayesowskiej do przeszukiwania hiperparametrów. Bayes-Opt to automatyczna metoda, która próbuje przy jak najmniejszej liczbie eksperymentów znaleźć optymalny punkt nieznanej funkcji — typowo: „która kombinacja górnej granicy liczby Gaussianów, wagi SSIM i progu densyfikacji daje najlepszy PSNR dla mojej klasy scen?" Zamiast siatki 6^4 = 1296 testów, BayesOpt próbuje ok. 40–100 świadomych testów i zbliża się dzięki temu do optimum.
Ważne: Aktualna wersja dostarczona w aplikacji nie prowadzi optymalizacji względem rzeczywistych przebiegów treningowych (to trwałoby dni), lecz względem syntetycznej funkcji celu demo — krajobrazu wielomodalnego o charakterze wspinaczkowym (hill-climbing) z lekkim szumem. Jest to celowe: okno ma pokazać ci zachowanie optymalizatora (przebieg zbieżności, punkty próbek, najlepszą wartość dotychczasową) i pozwolić zrozumieć definicje przestrzeni przeszukiwania. Do rzeczywistych, opartych na treningu przebiegów BayesOpt (takich, jakie wykonano przy tworzeniu dołączonych ustawień wstępnych) używana jest osobna ścieżka ewaluacji poza aplikacją; to okno to wersja na żywo do obserwacji.
Trzy zastosowania: 1. Chcesz zrozumieć, jak działa BayesOpt — uruchom przebieg demonstracyjny i obserwuj wykres zbieżności. 2. Planujesz nową klasę scen (np. „akwaria" albo „antyczne meble"), do której piętnaście wbudowanych ustawień wstępnych nie pasuje idealnie. Zdefiniuj w myślach przestrzeń przeszukiwania, sprawdź ją tu za pomocą „Bowl demo (1-dim)" lub „densify-until + ssim-weight + grad-thresh", a następnie wyeksportuj najlepszą konfigurację jako JSON i użyj jej jako punktu wyjścia dla rzeczywistego przebiegu treningowego. 3. Chcesz sprawdzić dołączone standardowe przestrzenie przeszukiwania (podzbiór Mip, RadianceKit Defaults) — są one wyszczególnione w panelu parametrów na lewym pasku bocznym.
- Wykres zbieżności (środkowa kolumna): Y = najlepsza dotychczas osiągnięta wartość funkcji celu. X = indeks testu. Na początku stromy wzrost (BayesOpt losowo próbuje próbki początkowe, niektóre z nich są udane), potem coraz bardziej płasko, ponieważ obszar bliski optimum został wyczerpany. Jeśli linia pozostaje płaska przez 20+ testów, możesz zatrzymać przebieg — dalsze testy niczego już nie wnoszą. Poszczególne punkty na wykresie to indywidualne wartości testów (czyli nie „najlepsza dotychczasowa"), kolorowane według fazy: niebieski = próbka początkowa, zielony = akwizycja bayesopt, pomarańczowy = restart. - Tabela testów (prawa kolumna): #1, #2, #3, … każdy z wartością i tagiem fazy. Dotychczas najlepszy test jest oznaczony żółtą gwiazdką. Z tabeli możesz zidentyfikować najlepszy test i przejrzeć jego wartości parametrów później przy eksporcie. - Inspektor przestrzeni przeszukiwania (lewy pasek boczny): pokazuje dla wybranego ustawienia wstępnego wszystkie nazwy parametrów i ich zakresy przeszukiwania [lo, hi]. Jeśli wybrane jest ustawienie wstępne „RadianceKit defaults (6-dim)", zobaczysz np. „densifyGradThreshold [5e-7, 5e-6]" — czyli log-jednostajnie pomiędzy tymi dwiema wartościami.
Wybierz ustawienie wstępne „RadianceKit defaults (6-dim)", budżet testów 40, ziarno 42. Kliknij „Start". Obserwuj: pierwszych 8 testów jest niebieskich (próbki początkowe, Latin-Hypercube), kolejne są zielone (pozyskane przez BayesOpt). Wykres zbieżności rośnie stromo do testu ~13, potem się spłaszcza. Przy teście ~30–40 najlepsza wartość się stabilizuje. Kliknij „Save Best Config" — zapisywany jest plik bayesopt-best.json z nazwą ustawienia wstępnego, indeksem testu, wartością i zdekodowanymi wartościami parametrów. Ten plik JSON możesz następnie ręcznie przenieść do swojej definicji ustawienia wstępnego.
W30Przycisk „Start"
GDZIE
Pasek narzędzi po lewej, w stanie bezczynności/zakończenia.
TECHNICZNIE
Resetuje listę testów, przełącza w stan uruchomienia, generuje nowy identyfikator przebiegu (do wykrywania nieaktualności przy wielokrotnych kliknięciach Start) i tworzy świeżą bramkę pauzy. Następnie uruchamia zadanie w tle, które wykonuje optymalizator jako asynchroniczny strumień. Liczba próbek początkowych rośnie wraz z budżetem, ale najwyżej do 8 — czyli typowo 8 próbek Latin-Hypercube od budżetu 28 wzwyż, mniej przy mniejszym budżecie. Aktualizacje testów są odbierane przyrostowo i dołączane do listy. Ochrona przed nieaktualnym przebiegiem: jeśli w międzyczasie drugie kliknięcie Start ustawi nowy identyfikator przebiegu, aktualizacje ze starego przebiegu są odrzucane.
Styl akcji podstawowej dla wyróżnionego wyglądu przycisku.
W31Przycisk „Pause"
GDZIE
Pasek narzędzi po lewej, w stanie uruchomienia.
TECHNICZNIE
Ustawia bramkę pauzy jako aktywną i przełącza w stan wstrzymania. Rzeczywisty efekt: runner czeka w pętli odpytywania co 50 ms, zanim oceni kolejną funkcję celu. Oznacza to, że aktualnie trwający test zostaje dokończony (jest przecież syntetyczny i trwa tylko mikrosekundy), ale żaden kolejny test nie zostaje uruchomiony. Gdy tylko nastąpi wznowienie, praca toczy się dalej w miejscu, w którym została przerwana.
W32Przycisk „Stop"
GDZIE
Pasek narzędzi po lewej, w stanie uruchomienia i wstrzymania.
TECHNICZNIE
Przerywa zadanie runnera, zeruje referencję, zwalnia bramkę pauzy (jeśli była wstrzymana) i przełącza w stan zakończenia (jeśli istnieją testy) lub stan bezczynności (jeśli ich brak). Już obliczone testy pozostają widoczne na liście — Stop ich nie usuwa. Destrukcyjna rola przycisku pokazuje go na czerwono, ponieważ przerywa przebieg.
W33Przycisk „Resume"
GDZIE
Pasek narzędzi po lewej, w stanie wstrzymania.
TECHNICZNIE
Zwalnia bramkę pauzy i przełącza z powrotem w stan uruchomienia. Zadanie runnera już działa (czeka przecież w pętli odpytywania); gdy tylko pętla zauważy, że pauza została zniesiona, działa dalej i rozpoczyna kolejny test.
W34Przycisk „Save Best Config"
GDZIE
Pasek narzędzi po prawej, zawsze widoczny (ale wyszarzony, dopóki nie ma jeszcze najlepszego przebiegu).
TECHNICZNIE
Otwiera okno dialogowe zapisu z domyślną nazwą pliku bayesopt-best.json, ograniczoną do JSON. Po potwierdzeniu budowany jest słownik danych wyjściowych: nazwa ustawienia wstępnego, indeks testu, wartość (wynik funkcji celu), parametry (słownik zdekodowanych nazw parametrów → wartości). Dekodowanie rzutuje znormalizowane współrzędne przestrzeni przeszukiwania w [0,1]^d z powrotem na oryginalny zakres wartości (odpowiednio ze skalami log-jednostajną/liniową/całkowitoliczbową). Wyjście JSON jest sformatowane czytelnie i z posortowanymi kluczami. W razie błędu zapisu (w aktualnej wersji demo) jest to po cichu ignorowane — brak interfejsu błędu, ponieważ jest to ścieżka demonstracyjna.
Przycisk pozostaje szary, dopóki żaden test się nie odbył.
W35Selektor ustawienia wstępnego „Search Space"
GDZIE
Lewy pasek boczny, u góry.
TECHNICZNIE
Selektor menu z czterema opcjami ustawień wstępnych: - „RadianceKit defaults (6-dim)" — pełna standardowa przestrzeń przeszukiwania ze wszystkimi sześcioma standardowymi hiperparametrami. - „Mip subset (2-dim)" — tylko mipSmoothing3DScale [0.05, 0.5] log-jednostajnie oraz mipFilter2DVariance [0.1, 0.6] liniowo. Przydatne, gdy chcesz dostroić Mip-Splatting dla danej klasy scen. - „densify-until + ssim-weight + grad-thresh" — trzy parametry istotne dla densyfikacji (densifyGradThreshold log-jednostajnie, ssimWeight liniowo, densifyUntilIter całkowitoliczbowo). - „Bowl demo (1-dim)" — pedagogiczna przestrzeń przeszukiwania z jednym parametrem do demonstracji „jak działa BayesOpt".
Podczas trwającego przebiegu przestrzeń przeszukiwania nie może być zmieniona (mogłoby to zdezorientować optymalizator).
W36Suwak „Trial Budget"
GDZIE
Lewy pasek boczny, pod selektorem przestrzeni przeszukiwania.
TECHNICZNIE
Suwak od 10 do 200, krok 5. Domyślnie 40. Oznacza to: BayesOpt może wykonać maksymalnie N testów. Z tego pierwsze kilka to próbki początkowe (Latin-Hypercube), reszta to właściwe testy BayesOpt. Zasady praktyczne: przestrzeń przeszukiwania o d wymiarach potrzebuje ok. dziesięć do dwadzieścia razy tyle testów co d, aby uzyskać dobre optimum. Dla domyślnych 6-dim więc 60–120, dla podzbioru Mip 2-dim 20–40, dla demo Bowl 1-dim 10–20.
Podczas przebiegu suwak jest wyłączony.
W37Suwak „Random Seed"
GDZIE
Lewy pasek boczny, pod suwakiem budżetu.
TECHNICZNIE
Suwak od 1 do 100, krok 1. Domyślnie 42. Ziarno jest przekazywane zarówno do początkowych próbek Latin-Hypercube, jak i do składowej szumu funkcji celu demo. Odtwarzalność: to samo ziarno + ta sama przestrzeń przeszukiwania + ten sam budżet dają dokładnie identyczną sekwencję testów. Przydatne dla pytania „czy wszyscy twoi koledzy dostają ten sam przebieg, gdy odtwarzają demo?". Wyłączone podczas przebiegu.
W38Wykres (Convergence)
GDZIE
Środkowa kolumna okna.
TECHNICZNIE
Wykres Swift Charts z dwiema warstwami: 1. linia dla „najlepszej wartości dotychczasowej" na test — krzywa monotonicznie rosnąca lub stała, w kolorze akcentu. 2. punkt na test z indywidualną wartością funkcji celu, kolorowany według fazy. Rozmiar symbolu 40. Trzy etykiety fazy: „init" (niebieski), „bo" (zielony), „restart" (pomarańczowy).
Mała legenda pokazuje kolory faz w lewym górnym rogu. Gdy lista testów jest pusta (przed pierwszym uruchomieniem), zamiast tego wyświetlany jest pusty stan z ikoną wykresu i wskazówką „Press Start to begin a BayesOpt run."
W39Tabela (Trial Log)
GDZIE
Prawa kolumna okna.
TECHNICZNIE
Obszar przewijania z leniwie ułożonymi wierszami testów. W każdym wierszu poziomy stos: numer testu (3-cyfrowy, monospaced, z lewej), wartość (monospaced, wyrównana do prawej, szerokość 70 pt), tag fazy (kapsuła, wypełniona przy 25% krycia — szary dla „init", niebieski dla „bo", pomarańczowy dla „restart"; to celowo inne kolory niż kolory punktów na sąsiednim wykresie), opcjonalnie żółta gwiazdka, jeśli dany test jest obecnie najlepszy. Mechanizm automatycznego przewijania automatycznie przeskakuje na koniec, gdy tylko pojawi się nowy test — dzięki czemu możesz śledzić przebieg na żywo u dołu ekranu, bez samodzielnego przewijania.
Główne okno: przebieg straty i liczba Gaussianów (I39–I41, odwołanie krzyżowe)
Trzy ze wskaźników Inspectora w głównym oknie zasługują na osobne wyjaśnienie, ponieważ są stale widoczne podczas trwającego treningu i istnieją ważne reguły kciuka, kiedy przebieg wygląda zdrowo. Wskaźniki znajdują się w Inspectorze w sekcji Postęp, w rozwijanej grupie Przebieg straty (patrz rozdział 2 — Inspector), i uzupełniają analizę Holdout z okna Aux powyżej.
Kiedy krzywa straty (loss) jest zdrowa? Zdrowa krzywa straty pokazuje trzy fazy: (1) Warmup — w pierwszych 200–500 iteracjach strata spada gwałtownie z wysokiego poziomu (typowo 0.15–0.25 dla połączenia L1+SSIM, zależnie od sceny) do mniej więcej połowy. Jeśli strata w tej fazie NIE spada, zwykle winne jest wejście (uszkodzone obrazy, złe pozycje SfM, zbyt mała liczba początkowych Gaussianów). (2) Densification — pomiędzy ~500 a densifyUntilIteration (klasycznie 15K, MCMC do 20K lub 25K) strata spada dalej, często z małymi skokami w dół, gdy operacje densyfikacji wstawiają nowe Gaussiany, a optymalizator je wykorzystuje. Liczba Gaussianów rośnie w tej fazie. (3) Refinement — potem strata wchodzi w coraz bardziej płaski ogon (tail). Typowe wartości końcowe dla orientacji: dobrze oświetlona scena obiektowa (np. Tanks-&-Temples Truck z presetem P4 Quality) osiąga L1 ≈ 0.023, rozległe sceny plenerowe jak te z Mip-NeRF 360 z natury pozostają powyżej tego (0.04–0.07).
Co oznacza plateau? Plateau (krzywa straty przebiega poziomo przez kilka tysięcy iteracji) ma dwie interpretacje: (a) model osiągnął zbieżność, dalszy trening niczego już nie daje — to dobry przypadek. (b) model utknął (lokalne minimum, słaba informacja gradientowa, ograniczenie limitem bufora) — to zły przypadek. Oba wyglądają na wykresie identycznie. Rozróżnienie: spójrz na liczbę Gaussianów. Jeśli ona też jest płaska I bliska limitowi MCMC (np. 150K ze 150K przy presecie P8 Quality (MCMC)), jesteś przy granicy — albo podnieś limit, albo zaakceptuj plateau. Jeśli liczba Gaussianów wciąż rośnie, ale strata nie spada, to jest to utknięcie.
Kiedy przerwać, a kiedy trenować dalej? Reguła kciuka: brak poprawy minimalnej straty przez 10K iteracji → przerwij, dalsze iteracje są zmarnowane. Wcześniej: przez menu Training → Continue Training → „+5,000 iterations" możesz doczepić przedłużenie, jeśli widzisz graniczną poprawę (nie ma do tego skrótu klawiszowego). Uwaga: przy MCMC plateau jest często rzeczywiste — limit to naturalna granica.
Plateau liczby Gaussianów NIE jest sygnałem „gotowe". Oznacza tylko, że MCMC osiągnął swój limit albo że Classic Densification jest wyczerpana. Na prawdziwe pytanie „czy gotowe" odpowiadają dopiero PSNR/SSIM/LPIPS na niezależnym zestawie testowym — odpowiednie liczby znajdziesz w raportach benchmarkowych, które analizujesz w Pareto Dashboard (W13–W22). Okno Holdout (W23–W29) nie dostarcza tych metryk; ocenia jedynie, czy twój zestaw kamer w ogóle pozwala na sprawiedliwy podział na widoki treningowe i testowe.
PSNR/Holdout to prawda, strata to tylko przybliżenie. Strata jest metryką względną: spada, gdy twój model dopasowuje się do widoków treningowych. Niska strata nie oznacza jednak automatycznie dobrego modelu — jeśli model nauczył się obrazów treningowych na pamięć (overfitting), strata byłaby niska, ale PSNR na niewidzianych wcześniej widokach (Holdout) byłby słaby. Dlatego: do końcowej oceny jakości zawsze patrz na metryki Holdout, nie tylko na końcową wartość straty.
Zasada praktyczna
- User Guide i Keyboard Shortcuts to statyczna pomoc — szybka przy pytaniach o konkretne hasła, ale do głębszej wiedzy służy niniejszy podręcznik. - Otwórz Manage Storage, gdy tylko wolne miejsce na dysku spadnie poniżej 10%. Logi i staging importów to zwykli winowajcy. - Pareto Dashboard ma sens dopiero po co najmniej trzech lub czterech raportach treningowych. Oś X = koszt (Time / Gs), oś Y = jakość (PSNR / SSIM). Front Pareto pokazuje efektywne kombinacje. - Skorzystaj z Holdout Analysis, zanim opublikujesz benchmarki PSNR razem z innymi — dzięki temu masz pewność, że Twój zbiór testowy jest naprawdę reprezentatywny. Wyeksportowany podział foldów jest przeznaczony dla zewnętrznych narzędzi; RadianceKit nadal trenuje względem „every-8th". - BayesOpt Console to przede wszystkim narzędzie do nauki i inspekcji definicji przestrzeni przeszukiwań — oblicza względem funkcji demonstracyjnej, a nie prawdziwych przebiegów treningowych. - Plateau strat i plateau liczby gaussianów należy interpretować osobno. Limit cap nie jest sygnałem „gotowe". Prawdziwą jakość mierzy wyłącznie PSNR na zbiorze holdout. - 10 000 iteracji bez poprawy min-loss → zatrzymaj trening.