Användarguide

Kapitel 2 — Inspector (Expert View)

Eksperttilstand tom — Project Navigator til venstre (Images 0, Cameras, Log), tom viewport i midten, Inspector til højre med Presets/Training Configuration/Enhancements/Training Metrics-sektioner
Eksperttilstand tom — Project Navigator til venstre (Images 0, Cameras, Log), tom viewport i midten, Inspector til højre med Presets/Training Configuration/Enhancements/Training Metrics-sektioner

Tom Inspector före import: Venstre sidebar visar images-counter 0 og drop-hint „Drop images here / or tap + to import". Inspector til højre er fuldt funktionel, men presets er kun informative (ingen aktiv träning). Default-preset „Preview" (5K iters) er markeret. Camera Alignment på Apple Photogrammetry, Densification Classic, SSIM Weight 0.20, Render Scale 50 %. Empty-states i Training Metrics („Start training to see live metrics") og Loss History („Loss curve will appear during training").

Inspector med 60 flowers-billeder indlæst — image-sidebaren viser de første filnavne frame_0001.jpg ff, header „60 images ready”
Inspector med 60 flowers-bilder indlæst — image-sidebaren visar de første filnavne frame_0001.jpg ff, header „60 images ready"

Inspector efter import: Header-status „60 images ready". Image-sidebaren lister alle 60 importerede frames (frame_0001.jpg til frame_0945.jpg, hver 16. frame fra det 960-cam-buket-datasæt som subset til hurtige iterationer). Auto-render-scale-logikken tjekker bild-opløsningen (1536×2048 = 3.1 MP) og tilpasser Render Scale därefter. Play-knappen (grøn, nederst til venstre) er nu aktiv og starter træningen med den aktive preset.

Inspector mid-training — live-viewport viser flowers-buket-rekonstruktion, metrik-bar nederst (Loss / LR / Gaussian-Count / Iterationer), preset-card „Preview” med „Modified”-badge om parametre er ændret
Inspector mid-training — live-viewport visar flowers-buket- rekonstruktion, metrik-bar nederst (Loss / LR / Gaussian-Count / Iterationer), preset-card „Preview" med „Modified"-badge, om parametre er ændret

Inspector under träning: Titellinjen visar globalt fremskridt „RadianceKit — Training NN %". Viewporten rendrer den løbende gaussian-rekonstruktion i realtid (opdateret hver 50 iterationer — live-preview-interval kan justeres i Settings → General → Training → Live Preview). Metrik-bar under viewporten: aktuel loss, learning rate, gaussian-count og iterationer-counter (f.eks. 1.600/5.000 vid Preview-preset). Inspector-preset-card „Preview" bærer „Modified"-badge, så snart en parameter afviger fra den indbyggede default. Sidebaren „Log" indsamler SfM- og training-stage-events.

Inspector efter trænings-afslutning — viewporten viser færdig flowers-buket-rekonstruktion (2.991 gaussians efter 5K iterationer på 13 s), titellinje „Training Complete — 2.991 Gaussians”
Inspector efter trænings-afslutning — viewporten visar færdig flowers-buket-rekonstruktion (2.991 gaussians efter 5K iterationer på 13 s), titellinje „Training Complete — 2.991 Gaussians"

Inspector efter träning: Titellinjen visar endeligt gaussian-antal (her 2 991 — meget kompakt, fordi den syntetiske Blender-buket-scen på lys baggrund har enkel geometri). Viewporten visar den færdige punktmoln — orbital drag-navigation aktiv (roterer omkring scenens midtpunkt). Training-Metrik-sektionen er nu fyldt med slutværdier, loss-history-charten visar forløbet av de samlede 5 000 iterationer. Eksport-sektionen nederst er nu aktiv (alle format-knapper enabled).

Inspectoren är den højre sidebar i Expert Mode (⌘2). Den samler alle træningsrelevante parametre i fem sammenklappelige sektioner: Presets, træningskonfiguration, Enhancements, metrikker og loss- diagram. Hver sektion kan klappes sammen vid klik på headeren, rækkefølgen kan omarrangeres via træk-og-slip (InspectorView.swift:81-97). Som standard er alle sektioner synlige, app-state gemmer klap- og rækkefølge-præferencerne på tværs av app-start.

En række betjeningselementer fra Inspectoren optræder också i næsten identisk form i indstillingerne (kapitel 3) — typiskt SfM-backend, sky-masking og lignende defaults. Adskillelsen er bevidst: indstillingerne leverer den app-globale skabelon for nyligt oprettede projekter, Inspectoren overskriver dessa värden for det aktuelt åbne projekt. Den, der kender betjeningslogikken i den ene side, kan bruge den anden blindt.

Den venstre kolonne i Expert Mode — Project Navigator — hører inte til Inspectoren, men er dens direkte nabo. Der kan importerede bilder vælges med klik, ses i Quick-Look med mellemrumstasten og slettes via minus-knappen eller delete-tasten (med Cmd-Z til at fortryde). Inspectoren følger det aktuelle sidebar-valg med kontekstspecifikke detalje-informationer, men de fem hovedsektioner förblir altid synlige.

Presets-sektion (I1–I11)

Presets-sektionen är den snabbaste måde at anvende en afprøvet konfiguration. Indbyggede presets (Classic, MCMC, Scene-Class) leverer reproducerbare startpunkter fra 560+ dokumenterede experiment; egne presets kan gemmes, eksporteres, importeres og deles. Listen er grupperet efter kategorier (Classic, MCMC, SceneClass, Custom), og mere end én kategori kan være foldet ud samtidigt. Via kontekstmenu-mekanismen (højreklik på en linje) er eksport, duplikering og — vid egne presets — sletning tilgængelig.

I1Save…-knap

VAR

Inspector → Presets-sektion → Save…-knap (action-bjælke nederst).

TEKNISKT

Åbner en popover med tekstfelt og save-/cancel-knapper. Den aktuelle TrainingConfig-tilstand persisteres som ny brugerdefineret preset (JSON-kodet, gemt på tværs av appen). Save- operationen kopierer alle 81 trænings-parametre plus den aktuelle densification-strategi. Presetet lander automatisk i kategorien Custom, uafhængigt av vilken indbygget preset det blev afledt fra. Tomme navne og rene whitespace-input forkastes. Allerede eksisterende navne afvises inte — hvert preset har sit eget interne ID, dobbelte navne er teknisk tilladt, men praktisk forvirrende.

I2Preset Name TextField

VAR

Save-popover → tekstfelt „Preset Name".

TEKNISKT

Simpelt tekstfelt med afrundet ramme, bred form. Værdien overtages som preset-navn vid klik på save-knappen. Ingen længdebegrænsning i UI'en, men det gemte navn ska være JSON-kodbart og visningsbart i UI-listerne — emoji og specialtegn fungerer. Indholdet nulstilles automatisk til en tom streng vid åbning av popoveren. Save-knappen förblir deaktiveret, så længe feltet efter trim er tomt. Der er ingen auto-suggest og ingen forudfyldning med navnet på den aktuelt aktive preset.

I3Cancel-knap (save-dialog)

VAR

Save-popover → Cancel-knap (til venstre).

TEKNISKT

Lukker popoveren uden att spara. Forkaster tekstfeltets indhold — vid nästa åbning nulstilles det igen til tomt via save…-knap-logikken (I1). Standard button-stil, ingen bekræftelsesdialoger, ingen hotkeys. Den aktuelle TrainingConfig förblir uændret, da save-stien slet inte blev udført.

I4Save-knap (save-dialog)

VAR

Save-popover → Save-knap (til højre, prominent stil).

TEKNISKT

Udløser den egentlige persistering. Validerer endnu en gang inte-tomt navn (defensiv check) og skriver därefter den aktuelle TrainingConfig som JSON ind i app-lageret. Lukker därefter popoveren. Blå fremhævet, grånet ud så længe tekstfeltet er tomt. Om gemningen mislykkes (f.eks. fordi app-lageret er fuldt — meget usandsynligt), er der i øjeblikket ingen synlig fejldialog; presetet ville så bare inte optræde vid nästa app-start.

I5Export…-knap

VAR

Inspector → Presets-sektion → action-bjælke → Export…-knap.

TEKNISKT

Eksporterer det aktuelt valgte preset som .radiancepreset-fil (internt JSON). Deaktiveret, om intet preset er valgt. Vid klik åbner appen en save-dialog med forudgivent filnavn (preset-navn + .radiancepreset-extension). Det gemte format innehåller den komplette TrainingConfig plus metadata (navn, kategori, ID, built-in-flag). Dobbeltklik i Hittar åbner appen — men inte automatisk importen; brugeren ska bruge import-knappen (I6).

I6Import…-knap

VAR

Inspector → Presets-sektion → action-bjælke → Import…-knap.

TEKNISKT

Åbner en fildialog, der kun tillader .radiancepreset-filer (multivalg deaktiveret). Vid valg indlæses JSON-filen, valideres og indsættes i Custom-kategorien — med nyt internt ID, så der inte opstår kollisioner med built-ins. Importen sætter automatisk kategorien til Custom, selv om det eksporterede preset oprindeligt var en built-in. Beskadigede eller inkompatible filer med ældre skemaversion afvises i stilhed uden fejldialog (konsol-log giver dock besked).

I7Preset-linje (klik-aktivering)

VAR

Inspector → Presets-sektion → hver preset-linje i hver kategori.

TEKNISKT

Klik på en preset-linje erstatter alle felter i TrainingConfig med værdierne fra presetet, husker ID for det aktive preset og nulstiller modified-status. Aktiv-fluebenet foran linjen optræder kun, när presetet er valgt OG umodificeret. Så snart en värde i TrainingConfig ændres (slider, stepper, toggle i de andre Inspector-sektioner), optræder et orange „Modified"-badge bag navnet. Indbyggede presets kan inte overskrives — vid modifikation ska en egen kopi oprettes via save-knappen (I1).

I8Kontekstmenu „Export…"

VAR

Højreklik på hver preset-linje → første post „Export…".

TEKNISKT

Identisk funktionalitet som I5 (Export…-knap), men mere bekvemt tilgængelig — uden at presetet ska vælges først. Eksporterer direkte det preset, der blev klikket på i linjen. Fungerer ens for alle preset-kategorier (built-in eller Custom), ingen begrænsning. Eksporten innehåller built-in-flag og originalkategori, men vid re-import mappes kategorien som beskrevet under I6 til Custom.

I9Kontekstmenu „Duplicate"

VAR

Højreklik på hver preset-linje → anden post „Duplicate".

TEKNISKT

Kloner presetet ind i Custom-kategorien. Genererer et nyt internt ID, vedhæfter „ Copy" til navnet og gemmer kopien. Fungerer också for built-in-presets — klonen er så redigerbar. Originalen förblir urørt. TrainingConfig kopieres värde-for- värde (JSON-roundtrip), så der inte består referenceforbindelser mellan original og kopi.

I10Kontekstmenu „Delete"

VAR

Højreklik på egne preset-linjer → sista post „Delete" (rød, destruktiv).

TEKNISKT

Kun synlig for custom-presets. Built-ins kan inte slettes. Posten er markeret som destruktiv, visas rød i kontekstmenuen og placeres efter en divider, så den inte klikkes vid et uheld. Der finns ingen bekræftelsesdialog — et klik sletter presetet med det samme. Det slettede preset kan inte gendannes (Cmd-Z virker inte her — undo finns i den aktuelle build kun for billedlisten, inte for preset-operationer). Var det slettede preset just aktivt, förblir den aktuelle TrainingConfig uændret, kun det aktive preset-valg nulstilles.

I11Kategori-header (udfold/sammenklap)

VAR

Inspector → Presets-sektion → hver kategori-header (Classic, MCMC, SceneClass, Custom).

TEKNISKT

Klap-status pr. kategori med olik default: Classic starter foldet ud, MCMC, SceneClass og Custom starter sammenklappet. Status persisteres inte — vid app-genstart er alle kategorier igen i default-tilstand. Chevron-pilen roterer animeret. Tallet til højre i headeren visar antallet av presets i denna kategori. Klik-hit-arealet omfatter hele headerområdet.

Trænings-konfigurations-sektion (I12–I22)

Crop kun training-konfigurations-sektion — Camera Alignment (Apple Photogrammetry aktiv, Native (Beta) inaktiv), Densification (Classic aktiv), Max Iterations 5.000 / Densify Until 3.500 med link-symbol, SSIM Weight slider 0.20, Render Scale slider på 100 % (1.536×2.048 = 3.1 MP)
Crop kun training-konfigurations-sektion — Camera Alignment (Apple Photogrammetry aktiv, Native (Beta) inaktiv), Densification (Classic aktiv), Max Iterations 5.000 / Densify Until 3.500 med link-symbol, SSIM Weight slider 0.20, Render Scale slider på 100 % (1.536×2.048 = 3.1 MP)

Her lander de centrale håndtag: vilket SfM-backend der ska beregne, hvordan densification arbejder, hvor mange iterationer, hvor stor SSIM-vægtningen er. Vid MCMC-strategi optræder to ekstra toggles („MCMC Quality" og „Auto-scale by scen"), som skjules i Classic-tilstand. Vid Native-SfM-backend kommer FOV-override-feltet til, som kun behøves til video-frames uden EXIF-brændvidde.

I12Camera Alignment-vælger

VAR

Inspector → træningskonfiguration → Camera Alignment (segmenteret vælger øverst).

TEKNISKT

Segmenteret vælger med to muligheder: Apple Photogrammetry og Native (Beta). Valget bestemmer det anvendte SfM-backend vid nästa kamera-rekonstruktion. Det påvirker samtidigt, vilka andre Inspector-elementer der er synlige: Native visar dessutom FOV-overriden (I13), der kun behøves vid EXIF-løse video-frames. Obs: vid meget store outdoor-optagelser kan du indlæse resultatet fra et eksternt værktøj (Metashape eller COLMAP) via workspace-import — se kapitel 1 (M5) og kapitel 9 (Q3, Q6).

I13FOV Override-felt (Native SfM)

VAR

Inspector → træningskonfiguration → FOV Override (kun synlig vid Camera Alignment = Native).

TEKNISKT

Numerisk tekstfelt (range 0-170°), default 0 = automatisk bestemmelse fra EXIF eller heuristik. Manuel indtastning er nødvendig, om input-bilderna er udtrukket fra en video, der inte innehåller brændvidde-metadata. Typiske värden: iPhone Wide ≈ 73°, DJI Mavic Wide-Crop ≈ 70°, drone med fuldformatsensor ≈ 84°. Værdien klampes til [0, 170] — värden udenfor stuves direkte tilbage. Påvirker kun den native SfM-pipeline (Q4/Q5); Apple Photogrammetry ignorerer denna värde helt.

I15Densification-vælger

VAR

Inspector → træningskonfiguration → Densification (segmenteret vælger, altid synlig).

TEKNISKT

Skifter mellan de to densification-strategier: Classic (original 3DGS-metode med clone/split/prune og gradient- tærskel) og MCMC (Stochastic Gradient Langevin Dynamics med relocation, NeurIPS 2024). Vid skift fra Classic til MCMC sætter appen automatisk MCMC-specifikke felter til afprøvede default- värden (reg-weights = 0, MCMC-cap-multiplier 3.0, sample-/ noise-schedule). Uden denna automatiske initialisering led sessioner med gamle presets under 1.4.4-MCMC-collapse-bug'en (460K→5 gaussians, watchdog-kill). Vælger-valget bestemmer dessutom, vilka Inspector-elementer der er synlige — vid MCMC optræder I16/I17. Detaljeret felt-virkning i kapitel 6, T11–T16 (Classic) og T61–T73 (MCMC).

I16MCMC Quality-toggle

VAR

Inspector → træningskonfiguration → MCMC Quality (kun vid Densification = MCMC).

TEKNISKT

Slår gradient-accumulation til 2 trin (aktiv) eller 1 trin (inaktiv). Akkumulerer gradienterne fra to på hinanden følgende kamera-views, före optimizer-step udføres. Empirisk (session 33, V544a) reducerer det den endelige L1-fejl med ca. 6 % (0.0246 med Quality vs 0.0261 uden, vid 3-trial-gennemsnit på Horse-Full-MCMC). Prisen: fordoblet träningstid. Vid meget lange træninger (200K iterationer) fører det til yderligere 10+ minutters ventetid — så kun værd, om de sista par procent kvalitet virkelig er nødvendige. Påvirker kun træningen, inte eksportformatet eller viewport-visningen.

I17Auto-scale by scen-toggle

VAR

Inspector → træningskonfiguration → Auto-scale by scen (kun vid MCMC).

TEKNISKT

Om aktiv, skaleres den effektive max-gaussians- overgrænse med SfM-init-point-count × MCMC-cap-multiplier (default 3.0). Eksempel: SfM leverer 250K initpunkter, basis-cap = 150K, multiplier 3.0 → effektiv overgrænse = max(150K, 750K) = 750K. Om deaktiveret, gælder strengt kun basen. Blev indført til v1.4.5, fordi store outdoor-optagelser med over 1000 frames og tilsvarende høj SfM-punktdensitet med den stive 150K-cap-default udsultede densificationen — overflødige punkter blev tilbage, nye fik inte lov at opstå. Default OFF i custom- presets, ON i MCMC-built-ins. Påvirker kun til træningstidspunkt, inte i eksporten.

I18Max Iterations-stepper

VAR

Inspector → træningskonfiguration → GroupBox → Max Iterations.

TEKNISKT

Stepper med range 1 000–100 000, skridtstørrelse 1 000. Bestemmer det samlede antal optimizer-iterationer. Lineært korreleret med træningstiden (halvering = ca. 50 % tid). Empiriske sweet-spots: 20K (Classic Balanced, L1≈0.028), 40K (Classic Quality, L1≈0.023), 200K (MCMC Full, L1≈0.0246). Over 40K vid Classic giver i gennemsnit næppe forbedring — diminishing returns. Vid ændring trækkes Densify Until proportionalt med, om link-funktionen (I19) er aktiv (default-ratio: 0.5, dvs. Densify-Until = Max/2).

I19Link/Unlink-knap (Densify ↔ Iterations)

VAR

Inspector → træningskonfiguration → GroupBox → lille link-knap mellan Max Iterations og Densify Until.

TEKNISKT

Toggle-knap, der fryser forholdet mellan Densify Until og Max Iterations. Vid aktiv (link-ikon fremhævet) trækkes Densify Until proportionalt med vid hver ændring av Max Iterations. Vid unlink (link-plus-ikon) förblir værdierne uafhængige. Default er linked, fordi det afspejler den typiske korrelation — om du trækker træningen til dobbelt iterationer, vil du som regel också lade densificationen køre proportionalt længere. Forholdet beregnes vid inställning av link-knappen ud fra den aktuelle värde; et typiskt forhold er 0.5 (Densify-Until = halve iterations-antal).

I20Densify Until-stepper

VAR

Inspector → træningskonfiguration → GroupBox → Densify Until.

TEKNISKT

Stepper med range 500–50 000, skridtstørrelse 500. Bestemmer iterations-indekset, hvorfra der inte længere kommer nye gaussians til via clone/split (Classic) eller relocation (MCMC). Efter opnåelse forfines kun position og farve. Højere värden = flere gaussians = større fil, længere pr.-iteration-tid (+30-60 % GPU-tid pr. skridt). Typiske värden: 15K (til 30K max-iter), 20K (til 40K), 100K (til 200K MCMC). Vid aktiv link (I19) skaleres automatisk med. Virker forskelligt vid Classic vs MCMC: Classic stopper væksten helt, MCMC stopper relocation- logikken, men sample-/noise-adaptation kører videre.

I21SSIM Weight-slider

VAR

Inspector → træningskonfiguration → GroupBox → SSIM Weight.

TEKNISKT

Slider 0.0–1.0 i 0.05-skridt, visning som „0.20". Blander L1-loss (0.0) og SSIM-loss (1.0). L1 strammer lysstyrken pr. pixel, SSIM den strukturelle lighed (kanter, lokale statistikker). Default 0.2 er værdien fra det oprindelige 3DGS-paper (Kerbl 2023) og reverse-engineered som robust kompromis i talrige sessioner. Højere värden (0.5+) foretrækker detaljebevarelse, men kan ignorere lokale lysstyrkefejl. Lavere värden (< 0.1) fører til detaljetab vid skarpe kanter. SSIM-beregningen kører i shaderen med et 11×11-gaussian-vindue. Performance: vid 0.0 (kun L1) er træningen ca. 8-12 % snabbare, fordi SSIM-beregningen i shaderen springes over.

I22Render Scale-slider

VAR

Inspector → træningskonfiguration → GroupBox → Render Scale.

TEKNISKT

Slider 0.25–1.0 i 0.25-skridt, visning som „100 %". Skalerer training-rendering-opløsningen relativt til kildebillede-størrelsen. Største håndtag på performance: 50 % reducerer GPU-tid med ca. 75 % (fordi 4× færre pixel), 25 % med ca. 94 %. Gradient-tærsklen skaleres automatisk med. Under slideren optræder en live-opløsnings-visning i MP (f.eks. „2304×1296 (3.0 MP)"). Om den aktuelle värde afviger fra den rekommenderade, indkobles i orange skrift „— recommended: 50 %". Anbefalingen sigter på ~3 MP effektiv upplösning — det område, Apple Silicon GPU'er behandler mest effektivt. 4K-kildebilleder får f.eks. automatisk 25 % rekommenderat, FullHD-bilder 100 %. En ændring udløser dessutom buffer-reallokationen.

Enhancements-sektion (I26–I29)

Crop kun Enhancements-sektion — fire rækker: Post-Training Compactification (toggle til), MetalFX Spatial Upscaling (toggle fra), MPS Lanczos Scaling (toggle fra), Perceptual Loss (slider på „Off”). Hver række med undertitel forklarer funktionen
Crop kun Enhancements-sektion — fire rækker: Post-Training Compactification (toggle til), MetalFX Spatial Upscaling (toggle fra), MPS Lanczos Scaling (toggle fra), Perceptual Loss (slider på „Off"). Hver række med undertitel forklarer funktionen

Enhancements-sektionen grupperer fire features, der förbättrar billedkvalitet uden at ændre selve kerne-trænings-loopet. De første tre (I26-I28) er post-training- eller viewport-trin: compactification rydder op efter träningsslut, MetalFX og MPS Lanczos er rene viewport-renderers, der inte påvirker den løbende träning. Perceptual Loss (I29) er trods sektion-tilhørsforholdet en træningsbestanddel — den aktiveres under træningen som ekstra loss-term, deraf adskillelsen fra viewport-toggles via en divider.

I26Post-Training Compactification-toggle

VAR

Inspector → Enhancements → Post-Training Compactification.

TEKNISKT

Aktiverer V443-post-processing: efter afslutningen av trænings-iterationerne slettes gaussians med opacity under 0.01 (1 % synlighed). Empirisk reducerer det filstørrelsen med ~55-58 % vid nul synligt kvalitetstab — fordi dessa gaussians visuelt ändå inte bidrager. Compactificationen kører som GPU-compact- pas og varer afhængigt av gaussian-count brøkdele av sekunder til få sekunder. Påvirker inte trænings-performance. Om denna toggle er slukket, eksporteres också usynlige gaussians — kun relevant, om du vil bruge formatet til endnu et trænings-stage (Continue Training), annars spild av lagerplads.

I27MetalFX Spatial Upscaling-toggle

VAR

Inspector → Enhancements → MetalFX Spatial Upscaling.

TEKNISKT

Aktiverer Apples MetalFX Spatial Upscaler i viewport-rendereren. Om trænings-opløsningen (via I22 Render Scale) er lavere end viewport-størrelsen, skalerer MetalFX det rendrede frame ML-baserat op til visningsstørrelsen. Leverer de skarpeste resultater av alle skalerings-muligheder, fordi ML-upscaler-modellen er optimeret til skarpe kanter. Renderer- pipelinen omkonfigureres live vid skift — synlig med det samme, uden genstart. Har forrang over MPS Lanczos (I28): er begge aktive, vinder MetalFX. Performance-overhead i viewporten ca. 1-2 ms pr. frame på M3-GPU'er. Påvirker kun live-viewporten, inte rendrede eksporter (orbit-video, screenshots) — de rendres i fuld kildeopløsning.

I28MPS Lanczos Scaling-toggle

VAR

Inspector → Enhancements → MPS Lanczos Scaling.

TEKNISKT

Aktiverer Apples Metal Performance Shaders med Lanczos-resampling som viewport-upscaler. Lanczos er klassisk resampling med 8-tap-sinc-filter — skarpere end bilineær, klassisk algoritme uden ML. Renderer-pipelinen omkonfigureres live vid skift. Ignoreres, om MetalFX (I27) ligeledes er aktiv. Minimal overhead (<0.5 ms pr. frame), men kvaliteten ligger under MetalFX. Anvendelse: fallback til scener, hvor MetalFX producerer artefakter (f.eks. stærke linje-strukturer, som ML-upscaleren lejlighedsvis „glatter ud"). Virker som I27 kun i live-viewporten, inte i eksporter.

I29Perceptual Loss-slider

VAR

Inspector → Enhancements → Perceptual Loss.

TEKNISKT

Slider 0.0–0.2 i 0.01-skridt, visning vid 0.0 som „Off", annars som „0.05" osv. Aktiverer en ekstra loss-term, der sammenligner multi-skaleret gaussian-blur av renderingen med ground-truth-bilden (3 blur-skalaer). Fanger strukturelle skillnader, som L1+SSIM alene inte genkender. V460-implementering. Empirisk förbättrar en värde på 0.05-0.1 L1-scoren i sessioner med et par procent, men koster ~5 % träningstid (ekstra forward-pas genom blur-kernerne). Over 0.15 blir træningen ustabil, og L1 försämras igen (loss-term'en dominerer optimeringen). Virker under træningen, inte i post-processing — trods placering i „Enhancements"-sektionen er det altså inte en ren opgradering bagefter.

Metrik-sektion (I30–I38)

Crop kun Training Metrics-sektion efter afsluttet træning på buket (5K iterationer, 2 991 gaussians endelig) — tabel med trænings-metrikker (Iteration, Loss, SSIM Loss, Combined Loss, Gaussian Count, Learning Rate, Elapsed, ETA)
Crop kun Training Metrics-sektion efter afsluttet träning på buket (5K iterationer, 2 991 gaussians endelig) — tabel med trænings-metrikker (Iteration, Loss, SSIM Loss, Combined Loss, Gaussian Count, Learning Rate, Elapsed, ETA)

Mens en träning kører, visar metrik-sektionen ni live-värden fra trænings-loopet. Før start av en träning er sektionen tom („Start training to see live metrics"). Alle värden opdateres hver ~30 iterationer (opdaterings-frekvens for streamen). Sektionen er read-only — intet element kan klikkes eller ændres. Til dybere analyse trækkes JSONL-trænings-loggene under ~/Documents/RadianceKit/Logs/ ind (script python3 scripts/analyze_logs.py best 5).

I30Iteration

VAR

Inspector → Metrikker → Iteration. Read-only.

TEKNISKT

Visning i formatet „4523 / 40000" — aktuel iteration over total planlagte iterationer. Tæller synkront med trænings-loopet, der pusher værdierne hver ~30 iter. Det andet tal svarer til max-iterations-værdien på start-tidspunktet; det ændres inte længere, selv om brugeren justerer stepperen därefter — den løbende kørsel bruger sin egen snapshot-kopi. Om appen via training-menuen lægger iterationer på (Continue Training +5K/+10K/+20K), øges nævneren.

I31Loss

VAR

Inspector → Metrikker → Loss. Read-only.

TEKNISKT

Float-värde med seks decimaler (f.eks. „0.024385"). Måler den kombinerede L1+SSIM-loss (blanding kontrolleres via I21 SSIM Weight) plus valgfrit Perceptual Loss (I29) og andre regularizere. Skalaen er inte absolut, men scen-afhængig — kræver for de fleste sammenligninger samme datasæt. Typiske slutværdier vid gode konfigurationer: - Classic Quality 40K iters: 0.022–0.025 (Horse, Truck, Garden) - MCMC Full 200K iters: 0.024–0.028 - Outdoor drone 30K: 0.030–0.060 (geometri-betinget dårligere) - Indendørs lejligheder: 0.018–0.025

Värden over 0.10 efter 5K iterationer indikerer SfM-problemer (dårlige kamera-positioner) — afbryd og lav SfM på ny.

I32Learning Rate

VAR

Inspector → Metrikker → Learning Rate. Read-only.

TEKNISKT

Visning i scientific notation (f.eks. „1.60e-04"). Aktuel inlärningshastighet for position-parametrene (3DGS har seks uafhængige LR'er for position, SH-DC, SH-rest, opacity, scale, rotation — her visas position-LR'en som repræsentativ värde). Default-startværdi 1.6e-4, der over en exponential-decay sjunker ned til ~1.6e-6 i træningens slutning. Forfaldet kan justeres via LR-schedule-feltet i trænings-konfigurationen (T-felt i kap. 6). Om LR'en blir usædvanlig høj (f.eks. 1e-3 eller mere efter 10K iterationer), kan det indikere en fejlindlæst konfiguration.

I33SH Degree

VAR

Inspector → Metrikker → SH Degree. Read-only.

TEKNISKT

Heltal 0-3. Spherical-harmonics-grad for farverepræsentationen. Begynder vid 0 (kun DC-komponenten, dvs. retnings-uafhængig farve pr. gaussian — altså bare en RGB-konstant) og stiger progressivt til 3 i træningens forløb. Standard-schedule hæver graden vid 1000/2000/3000 iterationer med 1 hver. SH-3 svarer til 48 farve-koefficienter pr. gaussian (3 RGB-channels × 16 SH-basisfunktioner). Højere SH-grad = mere retnings-afhængig refleksion (blanke overflader ser korrekt olika ud under olika synsvinkler), men också mere minne og långsammare träning.

I34Gaussians

VAR

Inspector → Metrikker → Gaussians. Read-only.

TEKNISKT

Aktuelt antal gaussians i modellen, formateret med locale-separator (f.eks. „524.318"). Vækst: - Classic: starter vid SfM-init-punkterna (typiskt 50K-300K), vokser via clone/split tills kort före Densify Until, därefter statisk tills träningsslut (modulo pruning) - MCMC: sample-punkter tilføjes tills MCMC-cap'et, därefter kun relocation

Healthy slutværdier: - Classic Quality: 400K-700K (Horse 524K, Garden 800K) - MCMC Full: præcis på cap'et (default 150K, med auto-scale multiplier × SfM-count alt efter scen 500K-1.5M)

Vid MCMC falder tallet til < 60 % av cap'et → anomali (collapse-indikator, peger på for aggressive regularizere).

I35GPU Memory

VAR

Inspector → Metrikker → GPU Memory. Read-only.

TEKNISKT

Skøn av gaussian-bufferens hukommelsesforbrug som gaussian-count × 616 bytes (formateret i memory-style). 616 bytes är den empiriske størrelse av en fuldt udstyret gaussian (position, skalering, rotation, opacity, SH-koefficienter grad 3, gradient-akkumulator). Visningen fanger inte renderer- overhead (tile-buffer, sort-buffer, backward-buffer) — det reelle GPU-lagerbehov ligger typiskt 2-3× over denna värde. Vid 500K gaussians: vist ~290 MB, reelt ~700 MB. Vid 1.5M gaussians: vist ~880 MB, reelt ~2.5 GB. På M3 Max med 64+ GB unified memory ukritisk, på M3 Pro med 18 GB allerede en grænse.

I36Speed

VAR

Inspector → Metrikker → Speed. Read-only.

TEKNISKT

Iterationer pr. sekund med en decimal („24.3 it/s"). Beregnes av træneren som glidende gennemsnit over de senaste ~100 iterationer. Typiske värden: - Quick-preset (1K iters): 80-120 it/s (kort, ingen steady-state) - Classic 20K @ 1.0 Render Scale (Truck-scen, M3 Max): 25-35 it/s - Classic 20K @ 0.5 Render Scale: 80-120 it/s - MCMC 200K @ 0.5 Render Scale: 25-50 it/s (långsammare pga. relocation) - Vid 1M+ gaussians og fuld upplösning: < 10 it/s

Faldende speed i træningens forløb er normalt — flere gaussians = mere compute pr. iteration. Pludselige fald (f.eks. fra 30 → 5 it/s) indikerer GPU-thermal-throttling eller konkurrerende apps.

I37Elapsed

VAR

Inspector → Metrikker → Elapsed. Read-only.

TEKNISKT

Allerede forløbet tid som „4:23" (m:ss) eller „1:23:45" (h:mm:ss). Format-switch fra 1 time. Måler kun den rene träningstid, inte de forudliggende faser (SfM-beregning, bild-import). Vid pause/resume kører uret videre — det er altså wall-clock, inte CPU-tid.

I38ETA

VAR

Inspector → Metrikker → ETA. Read-only.

TEKNISKT

Estimeret resttid som „17:42" eller „1:12:35". Beregning: (Max Iterations − aktuel iteration) / iterationer-pr.- sekund. Visar „–", när speed lige er nul (helt i starten eller vid pause). Estimatet tilpasses inte den typiske forlangsomning mod träningsslut — särskilt vid MCMC og Classic med store Densify-Until-värden har træningen tendens til at bli långsammare, fordi flere og flere gaussians kommer ind i bilden. Reelt blir det typiskt 10-20 % over start-ETA.

Loss-diagram-sektion (I39–I41)

Crop kun Loss History-sektion efter afsluttet træning — Current 0.0064, Min 0.0035 (grøn), blåt forløb fra 0.027 (iteration 1) til 0.0035 (iteration 5K) med karakteristisk knæk omkring iter 200, derunder Gaussian Count-chart orange
Crop kun Loss History-sektion efter afsluttet träning — Current 0.0064, Min 0.0035 (grøn), blåt forløb fra 0.027 (iteration 1) til 0.0035 (iteration 5K) med karakteristisk knæk omkring iter 200, derunder Gaussian Count-chart orange

Loss-diagram-sektionen visualiserer trænings-forløbet over tid. Den består av to charts: et loss-curve-chart (stort, øverst, blå) og et gaussian-count-chart (mindre, nederst, orange). Begge bygges op live under træningen og persisterer tills nästa trænings- start. Før første träning er området tomt („Loss curve will appear during training"). Charts er rene SwiftUI-path-tegninger (ingen Swift-Charts-framework), så de också rendrer flydende vid 100K+ punkter.

I39Current Loss (visning)

VAR

Inspector → loss-diagram → venstre label-område „Current: 0.0287". Read-only.

TEKNISKT

Float-värde av det sista loss-sample-punkt, formateret med fire decimaler. Identisk med I31 (Loss i metrics-sektionen), bare her mere kompakt formateret. Kilden er loss-history — en liste, der får en post pr. ~30 iterationer. Kun endelige värden optages i listen — NaN/Infinity (meget sjældent, i tilfælde av gradient-explosion-bug) filtreres.

I40Min Loss (visning)

VAR

Inspector → loss-diagram → højre label-område „Min: 0.0245" (grøn). Read-only.

TEKNISKT

Minimum av alle nogensinde sete loss-värden i den aktuelle träningskörning. Genberegnes live ud fra loss-history — ingen separat persistens. Visas med grøn skrift, fordi „Min" = „best so far". Den stiplede grønne linje vid chartens nederste rand markerer denna Y-position visuelt. Vid continue-training- sessioner starter min-sporingen forfra — den gamle history erstattes i UI'en av den nye (inte vedhæftet). Om den aktuelle träning kører dårligere end den foregående, kan min-visningen altså være større end det forrige slutresultat.

I41Gaussian Count Chart

VAR

Inspector → loss-diagram → andet chart derunder (orange). Read-only.

TEKNISKT

Linje-diagram av gaussian-antallet over trænings- iterationerne. Kilde: gaussian-count-history (liste av (iter, count)-par, fyldt av træneren hver ~30 iter). Y-skala dynamisk mellan minimum og maksimum av history'en. Vid Classic- strategi ser kurven typiskt sådan ud: jævnt stigende tills Densify Until, därefter flad (med små pruning-udsving). Vid MCMC: stejl stigning tills cap, därefter horisontal linje (relocation holder tallet konstant). Om kurven falder trods aktiv träning, prunner densificationen for aggressivt — tegn på forkerte defaults eller en kendt MCMC-collapse-bug (v1.4.4-hotfix-tema).

Hvordan læser man loss-kurven?

Loss-charten är det viktigaste diagnose-værktøj i Inspectoren — ingen anden indikator visar så direkte, om træningen skrider nyttigt frem eller hænger fast. Den typiske sunde form er et snabbt fald i de første 1000-3000 iterationer (fra ~0.15 til ~0.05), efterfulgt av et långsamt, jævnt fald til träningsslut (til 0.020-0.030). Logaritmisk virker kurven som en glat diagonal.

Vad betyder et plateau vid loss'en? Om kurven over flere tusinde iterationer förblir flad, er der to mulige læsninger: (a) træningen er „konvergeret" — loss'en kan inte længere falde signifikant, fordi modellen er så god, som den kan bli med de givne data og inställningar. Det er ønsket; det er „færdig". (b) Træningen „hænger" — loss'en kan egentlig stadig falde, men optimeringen stagnerer (lokalt minimum, inlärningshastighet for lille, densification slukket). At skelne: om loss-værdien ligger i et typiskt godt område (0.020-0.030 vid indoor/object, 0.040-0.060 vid outdoor), og kurven har varit flad i 5K iterationer, är det konvergeret. Om værdien er markant højere end vid sammenlignelige scener (f.eks. 0.08), hænger den fast.

Advarsel: gaussian-plateau ≠ loss-plateau. Ett plateau i gaussian-antallet betyder inte „träning er færdig". Det betyder kun, at densificationen er holdt op med at tilføje nye punkter — enten fordi er nået (Classic), eller fordi MCMC-cap'et er fuldt. Træningen kører bagefter videre og forfiner kun de eksisterende punkter. Det egentlige „færdig"-signal læser du av loss-kurven og iteration-visningen (I30), inte her.

Tommelfingerregel til afbrydelse: Om loss-kurven efter 5000+ iterationer ligger over 0.08 og næppe falder mere, er SfM-rekonstruktionen med høj sandsynlighed skæv. Afbryd träning, slå op i kapitel 9, om det valgte SfM-backend passer til scenen, skift evt. til COLMAP/Native, start så på ny. Bedre at investere 10 minutter i bedre SfM end 2 timers träning med dårlig kamera- justering.

Hvornår række ud efter Inspectoren?

Hurtig-reference: vilken sektion + vilka controls til vilket typiskt use-case?

Common-taskSektionControl-ID'er
Indlæse forudfremstillet opsætningPresetsI7 (klik på linje)
Gemme egen opsætningPresetsI1 → I2 → I4
Dele opsætning med kollegerPresetsI5 (eksport) eller I6 (import)
Skifte SfM-backend (f.eks. fordi Apple-PG er for ustabil)træningskonfigurationI12 (se kap. 9)
Behandle video-frames uden EXIF- brændviddetræningskonfigurationI13 (FOV-override)
COLMAP-performance: GLOMAP i stedet for klassisktræningskonfigurationI14
Skifte fra Classic til MCMCtræningskonfigurationI15
Lade træningen køre længeretræningskonfigurationI18 (Max iter) + I20 (Densify Until) — koblet via I19
Halvere GPU-tidtræningskonfigurationI22 (Render Scale til 50 %)
Trænings-kvalitet +6 % (MCMC)træningskonfigurationI16 (MCMC Quality)
Outdoor-scen med mange SfM- punktertræningskonfigurationI17 (Auto-scale by scen)
Opsætte / skifte COLMAP-stitræningskonfigurationI23 / I24 / I25
Gøre eksport-filer mindreEnhancementsI26 (lad altid være tændt)
Skarpere viewport uden ekstra träningstidEnhancementsI27 (MetalFX)
MetalFX glatter for meget → alternativEnhancementsI28 (MPS Lanczos)
Sista kvantitet detalje vid fine strukturerEnhancementsI29 (Perceptual Loss 0.05-0.1)
Overvåge träningMetrikkerI30 (fremskridt), I36 (tempo), I38 (resttid)
Vurdere kvalitet tidligtMetrikkerI31 (Loss < 0.05 efter 5K = god)
Mistanke om SfM-problemMetrikker + loss-chartI31 + I39 (Loss > 0.08 efter 5K → SfM på ny)
Skelne konvergens vs hængendeloss-diagramI39 + I40 (læs loss-plateau)
Genkende densification-problemloss-diagramI41 (gaussian-kurve falder → bug)