Kapittel 2 — Inspector (Expert View)

Tom Inspector før import: Venstre sidefelt viser images-teller 0 og drop-hint „Drop images here / or tap + to import". Inspector til høyre er fullt funksjonell, men presets er bare informative (ingen aktiv trening). Default-preset „Preview" (5K iters) er markert. 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 etter import: Header-status „60 images ready". Image-sidefeltet lister alle 60 importerte frames (frame_0001.jpg til frame_0945.jpg, hver 16. frame fra et 960-cam-bukett-datasett som subset for raske iterasjoner). Auto-render-scale-logikken sjekker bildeoppløsningen (1536×2048 = 3.1 MP) og tilpasser Render Scale deretter. Play-knappen (grønn, nede til venstre) er nå aktiv og starter treningen med den aktive preseten.

Inspector under trening: Tittellinjen viser global fremgang „RadianceKit — Training NN %". Viewporten rendrer den løpende gaussian-rekonstruksjonen i sanntid (oppdatert hver 50 iterasjoner — live-preview-intervall kan justeres i Settings → General → Training → Live Preview). Metrikk-bar under viewporten: aktuell loss, learning rate, gaussian-count og iterasjoner-teller (f.eks. 1.600/5.000 ved Preview-preset). Inspector-preset-card „Preview" har „Modified"-badge så snart en parameter avviker fra den innebygde default. Sidefeltet „Log" samler SfM- og training-stage-events.

Inspector etter trening: Tittellinjen viser endelig gaussian-antall (her 2 991 — veldig kompakt, fordi den syntetiske Blender-bukett-scenen på lys bakgrunn har enkel geometri). Viewporten viser den ferdige punktskyen — orbital drag-navigation aktiv (roterer rundt scenens midtpunkt). Training-Metrikk-seksjonen er nå fylt med sluttverdier, loss-history-charten viser forløpet av de samlede 5 000 iterasjonene. Eksport-seksjonen nederst er nå aktiv (alle format-knapper enabled).
Inspector er den høyre sidefelten i Expert Mode (⌘2). Den samler alle treningsrelevante parametere i fem sammenleggbare seksjoner: Presets, treningskonfigurasjon, Enhancements, metrikker og loss- diagram. Hver seksjon kan klappes sammen ved klikk på headeren, rekkefølgen kan omarrangeres via dra-og-slipp (InspectorView.swift:81-97). Som standard er alle seksjoner synlige, app-state lagrer klapp- og rekkefølge-preferansene på tvers av app-omstart.
En rekke betjeningselementer fra Inspector dukker også opp i nesten identisk form i innstillingene (kapittel 3) — typisk SfM-backend, sky-masking og lignende defaults. Adskillelsen er bevisst: innstillingene leverer den app-globale malen for nyopprettede prosjekter, Inspector overskriver disse verdiene for det aktuelt åpne prosjektet. Den som kjenner betjeningslogikken på den ene siden kan bruke den andre blindt.
Den venstre kolonnen i Expert Mode — Project Navigator — hører ikke til Inspector, men er den direkte naboen. Der kan importerte bilder velges med klikk, ses i Quick-Look med mellomromtasten og slettes via minus-knappen eller delete-tasten (med Cmd-Z for å angre). Inspector følger det aktuelle sidefelt-valget med kontekstspesifikk detaljinformasjon, men de fem hovedseksjonene forblir alltid synlige.
Presets-seksjon (I1–I11)
Presets-seksjonen er den raskeste måten å anvende en utprøvd konfigurasjon. Innebygde presets (Classic, MCMC, Scene-Class) leverer reproduserbare startpunkter fra 560+ dokumenterte eksperimenter; egne presets kan lagres, eksporteres, importeres og deles. Listen er gruppert etter kategorier (Classic, MCMC, SceneClass, Custom), og mer enn én kategori kan være foldet ut samtidig. Via kontekstmeny-mekanismen (høyreklikk på en linje) er eksport, duplisering og — ved egne presets — sletting tilgjengelig.
I1Save…-knapp
HVOR
Inspector → Presets-seksjon → Save…-knapp (action-bar nederst).
TEKNISK
Åpner en popover med tekstfelt og save-/cancel-knapper. Den aktuelle TrainingConfig-tilstanden persisteres som ny brukerdefinert preset (JSON-kodet, lagret på tvers av appen). Save- operasjonen kopierer alle 81 treningsparametere pluss den aktuelle densification-strategien. Presetet lander automatisk i kategorien Custom, uavhengig av hvilken innebygd preset det ble avledet fra. Tomme navn og rene whitespace-input forkastes. Allerede eksisterende navn avvises ikke — hvert preset har sin egen interne ID, doble navn er teknisk tillatt, men praktisk forvirrende.
I2Preset Name TextField
HVOR
Save-popover → tekstfelt „Preset Name".
TEKNISK
Enkelt tekstfelt med avrundet ramme, bred form. Verdien overtas som preset-navn ved klikk på save-knappen. Ingen lengdebegrensning i UI-en, men det lagrede navnet må være JSON-kodbart og visningsbart i UI-listene — emoji og spesialtegn fungerer. Innholdet nullstilles automatisk til en tom streng ved åpning av popoveren. Save-knappen forblir deaktivert så lenge feltet etter trim er tomt. Det er ingen auto-suggest og ingen forhåndsutfylling med navnet på den aktuelt aktive preseten.
I3Cancel-knapp (save-dialog)
HVOR
Save-popover → Cancel-knapp (til venstre).
TEKNISK
Lukker popoveren uten å lagre. Forkaster tekstfeltets innhold — ved neste åpning nullstilles det igjen til tomt via save…-knapp-logikken (I1). Standard button-stil, ingen bekreftelsesdialoger, ingen hotkeys. Den aktuelle TrainingConfig forblir uendret fordi save-stien slett ikke ble utført.
I4Save-knapp (save-dialog)
HVOR
Save-popover → Save-knapp (til høyre, prominent stil).
TEKNISK
Utløser selve persistasjonen. Validerer enda en gang ikke-tomt navn (defensiv sjekk) og skriver deretter den aktuelle TrainingConfig som JSON inn i app-lageret. Lukker deretter popoveren. Blå fremhevet, grånet ut så lenge tekstfeltet er tomt. Hvis lagringen mislykkes (f.eks. fordi app-lageret er fullt — veldig usannsynlig), er det for øyeblikket ingen synlig feildialog; presetet ville da bare ikke dukke opp ved neste app-start.
I5Export…-knapp
HVOR
Inspector → Presets-seksjon → action-bar → Export…-knapp.
TEKNISK
Eksporterer det aktuelt valgte presetet som .radiancepreset-fil (internt JSON). Deaktivert hvis ingen preset er valgt. Ved klikk åpner appen en save-dialog med forhåndsgitt filnavn (preset-navn + .radiancepreset-extension). Det lagrede formatet inneholder den komplette TrainingConfig pluss metadata (navn, kategori, ID, built-in-flagg). Dobbeltklikk i Finder åpner appen — men ikke automatisk importen; brukeren må bruke import-knappen (I6).
I6Import…-knapp
HVOR
Inspector → Presets-seksjon → action-bar → Import…-knapp.
TEKNISK
Åpner en fildialog som bare tillater .radiancepreset-filer (multivalg deaktivert). Ved valg lastes JSON-filen, valideres og settes inn i Custom-kategorien — med ny intern ID, slik at det ikke oppstår kollisjoner med built-ins. Importen setter automatisk kategorien til Custom, selv om det eksporterte presetet opprinnelig var en built-in. Skadde eller inkompatible filer med eldre skjemaversjon avvises i stillhet uten feildialog (konsoll-log gir imidlertid beskjed).
I7Preset-linje (klikkaktivering)
HVOR
Inspector → Presets-seksjon → hver preset-linje i hver kategori.
TEKNISK
Klikk på en preset-linje erstatter alle felter i TrainingConfig med verdiene fra presetet, husker ID for det aktive presetet og nullstiller modified-status. Aktiv-haken foran linjen dukker bare opp når presetet er valgt OG umodifisert. Så snart en verdi i TrainingConfig endres (slider, stepper, toggle i de andre Inspector-seksjonene), dukker det opp et oransje „Modified"-badge bak navnet. Innebygde presets kan ikke overskrives — ved modifikasjon må en egen kopi opprettes via save-knappen (I1).
I8Kontekstmeny „Export…"
HVOR
Høyreklikk på hver preset-linje → første oppføring „Export…".
TEKNISK
Identisk funksjonalitet som I5 (Export…-knapp), men mer bekvemt tilgjengelig — uten at presetet må velges først. Eksporterer direkte det presetet som ble klikket på i linjen. Fungerer likt for alle preset-kategorier (built-in eller Custom), ingen begrensning. Eksporten inneholder built-in-flagg og originalkategori, men ved re-import mappes kategorien som beskrevet under I6 til Custom.
I9Kontekstmeny „Duplicate"
HVOR
Høyreklikk på hver preset-linje → andre oppføring „Duplicate".
TEKNISK
Kloner presetet inn i Custom-kategorien. Genererer en ny intern ID, henger på „ Copy" til navnet og lagrer kopien. Fungerer også for built-in-presets — klonen er da redigerbar. Originalen forblir urørt. TrainingConfig kopieres verdi-for- verdi (JSON-roundtrip), slik at det ikke består referanseforbindelser mellom original og kopi.
I10Kontekstmeny „Delete"
HVOR
Høyreklikk på egne preset-linjer → siste oppføring „Delete" (rød, destruktiv).
TEKNISK
Bare synlig for custom-presets. Built-ins kan ikke slettes. Oppføringen er markert som destruktiv, vises rød i kontekstmenyen og plasseres etter en divider, slik at den ikke klikkes ved et uhell. Det finnes ingen bekreftelsesdialog — ett klikk sletter presetet umiddelbart. Det slettede presetet kan ikke gjenopprettes (Cmd-Z virker ikke her — undo finnes i den aktuelle buildet bare for bildelisten, ikke for preset-operasjoner). Var det slettede presetet nettopp aktivt, forblir den aktuelle TrainingConfig uendret, bare det aktive preset-valget nullstilles.
I11Kategori-header (utfold/sammenlegg)
HVOR
Inspector → Presets-seksjon → hver kategori-header (Classic, MCMC, SceneClass, Custom).
TEKNISK
Klapp-status per kategori med forskjellig default: Classic starter foldet ut, MCMC, SceneClass og Custom starter sammenfoldet. Status persisteres ikke — ved app-omstart er alle kategorier igjen i default-tilstand. Chevron-pilen roterer animert. Tallet til høyre i headeren viser antallet presets i denne kategorien. Klikk-hit-arealet omfatter hele headerområdet.
Treningskonfigurasjons-seksjon (I12–I22)

Her lander de sentrale håndtakene: hvilket SfM-backend som skal beregne, hvordan densification arbeider, hvor mange iterasjoner, hvor stor SSIM-vektingen er. Ved MCMC-strategi dukker det opp to ekstra toggles („MCMC Quality" og „Auto-scale by scene") som skjules i Classic-modus. Ved Native-SfM-backend kommer FOV-override-feltet til, som bare trengs for video-frames uten EXIF-brennvidde.
I12Camera Alignment-velger
HVOR
Inspector → treningskonfigurasjon → Camera Alignment (segmentert velger øverst).
TEKNISK
Segmentert velger med to alternativer: Apple Photogrammetry og Native (Beta). Valget bestemmer det benyttede SfM-backendet ved neste kamerarekonstruksjon. Det påvirker samtidig hvilke andre Inspector-elementer som er synlige: Native viser dessuten FOV-overriden (I13), som bare trengs ved EXIF-løse video-frames. Merk: ved veldig store outdoor-opptak kan du laste inn resultatet fra et eksternt verktøy (Metashape eller COLMAP) via workspace-import — se kapittel 1 (M5) og kapittel 9 (Q3, Q6).
I13FOV Override-felt (Native SfM)
HVOR
Inspector → treningskonfigurasjon → FOV Override (bare synlig ved Camera Alignment = Native).
TEKNISK
Numerisk tekstfelt (range 0-170°), default 0 = automatisk bestemmelse fra EXIF eller heuristikk. Manuell inntasting er nødvendig hvis input-bildene er trukket ut fra en video som ikke inneholder brennvidde-metadata. Typiske verdier: iPhone Wide ≈ 73°, DJI Mavic Wide-Crop ≈ 70°, drone med fullformatsensor ≈ 84°. Verdien klampes til [0, 170] — verdier utenfor stues direkte tilbake. Påvirker bare den native SfM-pipelinen (Q4/Q5); Apple Photogrammetry ignorerer denne verdien helt.
I15Densification-velger
HVOR
Inspector → treningskonfigurasjon → Densification (segmentert velger, alltid synlig).
TEKNISK
Bytter mellom de to densification-strategiene: Classic (original 3DGS-metode med clone/split/prune og gradient- terskel) og MCMC (Stochastic Gradient Langevin Dynamics med relocation, NeurIPS 2024). Ved bytte fra Classic til MCMC setter appen automatisk MCMC-spesifikke felter til utprøvde default- verdier (reg-weights = 0, MCMC-cap-multiplier 3.0, sample-/ noise-schedule). Uten denne automatiske initialiseringen led sesjoner med gamle presets under 1.4.4-MCMC-collapse-buggen (460K→5 gaussians, watchdog-kill). Velger-valget bestemmer dessuten hvilke Inspector-elementer som er synlige — ved MCMC dukker I16/I17 opp. Detaljert felt-virkning i kapittel 6, T11–T16 (Classic) og T61–T73 (MCMC).
I16MCMC Quality-toggle
HVOR
Inspector → treningskonfigurasjon → MCMC Quality (bare ved Densification = MCMC).
TEKNISK
Slår gradient-accumulation til 2 trinn (aktiv) eller 1 trinn (inaktiv). Akkumulerer gradientene fra to påfølgende kamera-views før optimizer-step utføres. Empirisk (sesjon 33, V544a) reduserer det den endelige L1-feilen med ca. 6 % (0.0246 med Quality vs 0.0261 uten, ved 3-trial-gjennomsnitt på Horse-Full-MCMC). Prisen: doblet treningstid. Ved veldig lange treninger (200K iterasjoner) fører det til ytterligere 10+ minutters venting — så bare verdt det hvis de siste par prosent kvalitet virkelig er nødvendige. Påvirker bare treningen, ikke eksportformatet eller viewport-visningen.
I17Auto-scale by scene-toggle
HVOR
Inspector → treningskonfigurasjon → Auto-scale by scene (bare ved MCMC).
TEKNISK
Hvis aktiv, skaleres den effektive max-gaussians- øvre grensen med SfM-init-point-count × MCMC-cap-multiplier (default 3.0). Eksempel: SfM leverer 250K initpunkter, basis-cap = 150K, multiplier 3.0 → effektiv øvre grense = max(150K, 750K) = 750K. Hvis deaktivert, gjelder strengt bare basen. Ble innført til v1.4.5 fordi store outdoor-opptak med over 1000 frames og tilsvarende høy SfM-punkttetthet med den stive 150K-cap-default sultet ut densificationen — overflødige punkter ble igjen, nye fikk ikke lov til å oppstå. Default OFF i custom- presets, ON i MCMC-built-ins. Påvirker bare ved treningstidspunkt, ikke i eksporten.
I18Max Iterations-stepper
HVOR
Inspector → treningskonfigurasjon → GroupBox → Max Iterations.
TEKNISK
Stepper med range 1 000–100 000, skrittstørrelse 1 000. Bestemmer det samlede antallet optimizer-iterasjoner. Lineært korrelert med treningstiden (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 ved Classic gir i gjennomsnitt knapt forbedring — diminishing returns. Ved endring trekkes Densify Until proporsjonalt med hvis link-funksjonen (I19) er aktiv (default-ratio: 0.5, dvs. Densify-Until = Max/2).
I19Link/Unlink-knapp (Densify ↔ Iterations)
HVOR
Inspector → treningskonfigurasjon → GroupBox → liten link-knapp mellom Max Iterations og Densify Until.
TEKNISK
Toggle-knapp som fryser forholdet mellom Densify Until og Max Iterations. Ved aktiv (link-ikon fremhevet) trekkes Densify Until proporsjonalt med ved hver endring av Max Iterations. Ved unlink (link-plus-ikon) forblir verdiene uavhengige. Default er linked fordi det gjenspeiler den typiske korrelasjonen — hvis du trekker treningen til doble iterasjoner, vil du som regel også la densificationen kjøre proporsjonalt lengre. Forholdet beregnes ved innstilling av link-knappen ut fra den aktuelle verdien; et typisk forhold er 0.5 (Densify-Until = halvparten av iterasjonsantallet).
I20Densify Until-stepper
HVOR
Inspector → treningskonfigurasjon → GroupBox → Densify Until.
TEKNISK
Stepper med range 500–50 000, skrittstørrelse 500. Bestemmer iterasjonsindeksen hvor det ikke lenger kommer nye gaussians til via clone/split (Classic) eller relocation (MCMC). Etter oppnåelse forfines kun posisjon og farge. Høyere verdier = flere gaussians = større fil, lengre per-iterasjon-tid (+30-60 % GPU-tid per skritt). Typiske verdier: 15K (til 30K max-iter), 20K (til 40K), 100K (til 200K MCMC). Ved aktiv link (I19) skaleres automatisk med. Virker forskjellig ved Classic vs MCMC: Classic stopper veksten helt, MCMC stopper relocation- logikken, men sample-/noise-adaptation kjører videre.
I21SSIM Weight-slider
HVOR
Inspector → treningskonfigurasjon → GroupBox → SSIM Weight.
TEKNISK
Slider 0.0–1.0 i 0.05-skritt, visning som „0.20". Blander L1-loss (0.0) og SSIM-loss (1.0). L1 strammer lysstyrken per piksel, SSIM den strukturelle likheten (kanter, lokale statistikker). Default 0.2 er verdien fra det opprinnelige 3DGS-paperet (Kerbl 2023) og reverse-engineered som robust kompromiss i talrike sesjoner. Høyere verdier (0.5+) foretrekker detaljbevaring, men kan ignorere lokale lysstyrkefeil. Lavere verdier (< 0.1) fører til detaljtap ved skarpe kanter. SSIM-beregningen kjører i shaderen med et 11×11-gaussian-vindu. Ytelse: ved 0.0 (bare L1) er treningen ca. 8-12 % raskere fordi SSIM-beregningen i shaderen hoppes over.
I22Render Scale-slider
HVOR
Inspector → treningskonfigurasjon → GroupBox → Render Scale.
TEKNISK
Slider 0.25–1.0 i 0.25-skritt, visning som „100 %". Skalerer training-rendering-oppløsningen relativt til kildebildestørrelsen. Største håndtak på ytelse: 50 % reduserer GPU-tid med ca. 75 % (fordi 4× færre piksler), 25 % med ca. 94 %. Gradient-terskelen skaleres automatisk med. Under slideren dukker det opp en live-oppløsnings-visning i MP (f.eks. „2304×1296 (3.0 MP)"). Hvis den aktuelle verdien avviker fra den anbefalte, slås det inn i oransje skrift „— recommended: 50 %". Anbefalingen sikter på ~3 MP effektiv oppløsning — det området som Apple Silicon GPU-er behandler mest effektivt. 4K-kildebilder får f.eks. automatisk 25 % anbefalt, FullHD-bilder 100 %. En endring utløser dessuten buffer-realloseringen.
Enhancements-seksjon (I26–I29)

Enhancements-seksjonen grupperer fire features som forbedrer bildekvaliteten uten å endre selve kjerne-trenings-loopet. De første tre (I26-I28) er post-training- eller viewport-trinn: compactification rydder opp etter treningsslutt, MetalFX og MPS Lanczos er rene viewport-renderere som ikke påvirker den løpende treningen. Perceptual Loss (I29) er tross seksjonstilhørigheten en treningsbestanddel — den aktiveres under treningen som ekstra loss-term, derav adskillelsen fra viewport-toggles via en divider.
I26Post-Training Compactification-toggle
HVOR
Inspector → Enhancements → Post-Training Compactification.
TEKNISK
Aktiverer V443-post-processing: etter avslutningen av treningsiterasjonene slettes gaussians med opacity under 0.01 (1 % synlighet). Empirisk reduserer det filstørrelsen med ~55-58 % ved null synlig kvalitetstap — fordi disse gaussians visuelt likevel ikke bidrar. Compactificationen kjører som GPU-compact- pass og varer avhengig av gaussian-count brøkdeler av sekunder til få sekunder. Påvirker ikke trenings-ytelsen. Hvis denne toggle er av, eksporteres også usynlige gaussians — bare relevant hvis du vil bruke formatet til enda et trenings-stage (Continue Training), ellers sløsing med lagringsplass.
I27MetalFX Spatial Upscaling-toggle
HVOR
Inspector → Enhancements → MetalFX Spatial Upscaling.
TEKNISK
Aktiverer Apples MetalFX Spatial Upscaler i viewport-rendereren. Hvis trenings-oppløsningen (via I22 Render Scale) er lavere enn viewport-størrelsen, skalerer MetalFX det rendrede frame ML-basert opp til visningsstørrelsen. Leverer de skarpeste resultatene av alle skalerings-alternativer fordi ML-upscaler-modellen er optimalisert for skarpe kanter. Renderer- pipelinen omkonfigureres live ved bytte — synlig umiddelbart uten omstart. Har forrang foran MPS Lanczos (I28): er begge aktive, vinner MetalFX. Performance-overhead i viewporten ca. 1-2 ms per frame på M3-GPU-er. Påvirker bare live-viewporten, ikke rendrede eksporter (orbit-video, skjermbilder) — de rendres i full kildeoppløsning.
I28MPS Lanczos Scaling-toggle
HVOR
Inspector → Enhancements → MPS Lanczos Scaling.
TEKNISK
Aktiverer Apples Metal Performance Shaders med Lanczos-resampling som viewport-upscaler. Lanczos er klassisk resampling med 8-tap-sinc-filter — skarpere enn bilineær, klassisk algoritme uten ML. Renderer-pipelinen omkonfigureres live ved bytte. Ignoreres hvis MetalFX (I27) likeså er aktiv. Minimal overhead (<0.5 ms per frame), men kvaliteten ligger under MetalFX. Anvendelse: fallback for scener hvor MetalFX produserer artefakter (f.eks. sterke linjestrukturer som ML-upscaleren av og til „glatter ut"). Virker som I27 bare i live-viewporten, ikke i eksporter.
I29Perceptual Loss-slider
HVOR
Inspector → Enhancements → Perceptual Loss.
TEKNISK
Slider 0.0–0.2 i 0.01-skritt, visning ved 0.0 som „Off", ellers som „0.05" osv. Aktiverer en ekstra loss-term som sammenligner multi-skalert gaussian-blur av renderingen med ground-truth-bildet (3 blur-skalaer). Fanger strukturelle forskjeller som L1+SSIM alene ikke gjenkjenner. V460-implementasjon. Empirisk forbedrer en verdi på 0.05-0.1 L1-scoren i sesjoner med et par prosent, men koster ~5 % treningstid (ekstra forward-pass gjennom blur-kjernene). Over 0.15 blir treningen ustabil og L1 forverres igjen (loss-termen dominerer optimeringen). Virker under treningen, ikke i post-processing — tross plassering i „Enhancements"-seksjonen er det altså ikke en ren oppgradering etterpå.
Metrikk-seksjon (I30–I38)

Mens en trening kjører, viser metrikk-seksjonen ni live-verdier fra trenings-loopet. Før start av en trening er seksjonen tom („Start training to see live metrics"). Alle verdier oppdateres hver ~30 iterasjoner (oppdateringsfrekvens for strømmen). Seksjonen er read-only — ingen elementer kan klikkes eller endres. For dypere analyse trekkes JSONL-treningsloggene under ~/Documents/RadianceKit/Logs/ inn (skript python3 scripts/analyze_logs.py best 5).
I30Iteration
HVOR
Inspector → Metrikker → Iteration. Read-only.
TEKNISK
Visning i formatet „4523 / 40000" — aktuell iterasjon over totalt planlagte iterasjoner. Teller synkront med trenings-loopet som pusher verdiene hver ~30 iter. Det andre tallet svarer til max-iterations-verdien på start-tidspunktet; det endres ikke lenger, selv om brukeren justerer stepperen deretter — den løpende kjøringen bruker sin egen snapshot-kopi. Hvis appen via training-menyen legger på iterasjoner (Continue Training +5K/+10K/+20K), økes nevneren.
I31Loss
HVOR
Inspector → Metrikker → Loss. Read-only.
TEKNISK
Float-verdi med seks desimaler (f.eks. „0.024385"). Måler den kombinerte L1+SSIM-tapet (blandingen kontrolleres via I21 SSIM Weight) pluss valgfritt Perceptual Loss (I29) og andre regularizers. Skalaen er ikke absolutt, men sceneavhengig — krever for de fleste sammenligninger samme datasett. Typiske sluttverdier ved gode konfigurasjoner: - 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) - Innendørs leiligheter: 0.018–0.025
Verdier over 0.10 etter 5K iterasjoner indikerer SfM-problemer (dårlige kameraposisjoner) — avbryt og gjør SfM på nytt.
I32Learning Rate
HVOR
Inspector → Metrikker → Learning Rate. Read-only.
TEKNISK
Visning i scientific notation (f.eks. „1.60e-04"). Aktuell læringsrate for posisjons-parametrene (3DGS har seks uavhengige LR-er for posisjon, SH-DC, SH-rest, opacity, scale, rotation — her vises posisjons-LR-en som representativ verdi). Default-startverdi 1.6e-4 som over en eksponentiell decay synker ned til ~1.6e-6 i treningens slutt. Forfallet kan justeres via LR-schedule-feltet i treningskonfigurasjonen (T-felt i kap. 6). Hvis LR-en blir uvanlig høy (f.eks. 1e-3 eller mer etter 10K iterasjoner), kan det indikere en feillastet konfigurasjon.
I33SH Degree
HVOR
Inspector → Metrikker → SH Degree. Read-only.
TEKNISK
Heltall 0-3. Spherical-harmonics-grad for fargerepresentasjonen. Begynner ved 0 (bare DC-komponenten, dvs. retningsuavhengig farge per gaussian — altså bare en RGB-konstant) og stiger progressivt til 3 i treningens forløp. Standard-schedule hever graden ved 1000/2000/3000 iterasjoner med 1 hver. SH-3 tilsvarer 48 farge-koeffisienter per gaussian (3 RGB-channels × 16 SH-basisfunksjoner). Høyere SH-grad = mer retningsavhengig refleksjon (blanke overflater ser korrekt forskjellige ut under forskjellige synsvinkler), men også mer lagring og langsommere trening.
I34Gaussians
HVOR
Inspector → Metrikker → Gaussians. Read-only.
TEKNISK
Aktuelt antall gaussians i modellen, formatert med locale-separator (f.eks. „524.318"). Vekst: - Classic: starter ved SfM-init-punktene (typisk 50K-300K), vokser via clone/split inntil kort før Densify Until, deretter statisk inntil treningsslutt (modulo pruning) - MCMC: sample-punkter legges til inntil MCMC-cap-et, deretter bare relocation
Healthy sluttverdier: - Classic Quality: 400K-700K (Horse 524K, Garden 800K) - MCMC Full: nøyaktig på cap-et (default 150K, med auto-scale multiplier × SfM-count avhengig av scene 500K-1.5M)
Ved MCMC faller tallet til < 60 % av cap-et → anomali (collapse-indikator, peker på for aggressive regularizers).
I35GPU Memory
HVOR
Inspector → Metrikker → GPU Memory. Read-only.
TEKNISK
Estimat av gaussian-bufferens minnebruk som gaussian-count × 616 bytes (formatert i memory-style). 616 bytes er den empiriske størrelsen på en fullt utstyrt gaussian (posisjon, skalering, rotasjon, opacity, SH-koeffisienter grad 3, gradient-akkumulator). Visningen fanger ikke renderer- overhead (tile-buffer, sort-buffer, backward-buffer) — det reelle GPU-lagerbehovet ligger typisk 2-3× over denne verdien. Ved 500K gaussians: vist ~290 MB, reelt ~700 MB. Ved 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 grense.
I36Speed
HVOR
Inspector → Metrikker → Speed. Read-only.
TEKNISK
Iterasjoner per sekund med en desimal („24.3 it/s"). Beregnes av treneren som glidende gjennomsnitt over de siste ~100 iterasjonene. Typiske verdier: - Quick-preset (1K iters): 80-120 it/s (kort, ingen steady-state) - Classic 20K @ 1.0 Render Scale (Truck-scene, 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 (langsommere pga. relocation) - Ved 1M+ gaussians og full oppløsning: < 10 it/s
Fallende speed i treningens forløp er normalt — flere gaussians = mer compute per iterasjon. Plutselige fall (f.eks. fra 30 → 5 it/s) indikerer GPU-thermal-throttling eller konkurrerende apper.
I37Elapsed
HVOR
Inspector → Metrikker → Elapsed. Read-only.
TEKNISK
Allerede forløpt tid som „4:23" (m:ss) eller „1:23:45" (h:mm:ss). Format-bytte fra 1 time. Måler bare den rene treningstiden, ikke de forutgående fasene (SfM-beregning, bilde-import). Ved pause/resume kjører klokken videre — det er altså wall-clock, ikke CPU-tid.
I38ETA
HVOR
Inspector → Metrikker → ETA. Read-only.
TEKNISK
Estimert resttid som „17:42" eller „1:12:35". Beregning: (Max Iterations − aktuell iterasjon) / iterasjoner-per- sekund. Viser „–" når speed nettopp er null (helt i starten eller ved pause). Estimatet tilpasses ikke den typiske forlangsommingen mot treningsslutt — spesielt ved MCMC og Classic med store Densify-Until-verdier har treningen tendens til å bli langsommere fordi flere og flere gaussians kommer inn i bildet. Reelt blir det typisk 10-20 % over start-ETA.
Loss-diagram-seksjon (I39–I41)

Loss-diagram-seksjonen visualiserer treningsforløpet over tid. Den består av to charts: et loss-curve-chart (stort, øverst, blått) og et gaussian-count-chart (mindre, nederst, oransje). Begge bygges opp live under treningen og persisterer inntil neste trenings- start. Før første trening er området tomt („Loss curve will appear during training"). Charts er rene SwiftUI-path-tegninger (ingen Swift-Charts-framework), slik at de også rendrer flytende ved 100K+ punkter.
I39Current Loss (visning)
HVOR
Inspector → loss-diagram → venstre label-område „Current: 0.0287". Read-only.
TEKNISK
Float-verdi av det siste loss-sample-punktet, formatert med fire desimaler. Identisk med I31 (Loss i metrics-seksjonen), bare her mer kompakt formatert. Kilden er loss-history — en liste som får en oppføring per ~30 iterasjoner. Bare endelige verdier tas opp i listen — NaN/Infinity (veldig sjelden, i tilfelle av gradient-explosion-bugg) filtreres.
I40Min Loss (visning)
HVOR
Inspector → loss-diagram → høyre label-område „Min: 0.0245" (grønn). Read-only.
TEKNISK
Minimum av alle noensinne sette loss-verdier i den aktuelle treningskjøringen. Reberegnes live ut fra loss-history — ingen separat persistens. Vises med grønn skrift fordi „Min" = „best so far". Den stiplete grønne linjen ved chartens nedre rand markerer denne Y-posisjonen visuelt. Ved continue-training- sesjoner starter min-sporingen på nytt — den gamle historikken erstattes i UI-en av den nye (ikke vedhengt). Hvis den aktuelle treningen kjører dårligere enn den foregående, kan min-visningen altså være større enn det forrige sluttresultatet.
I41Gaussian Count Chart
HVOR
Inspector → loss-diagram → andre chart derunder (oransje). Read-only.
TEKNISK
Linjediagram av gaussian-antallet over trenings- iterasjonene. Kilde: gaussian-count-history (liste av (iter, count)-par, fylt av treneren hver ~30 iter). Y-skala dynamisk mellom minimum og maksimum av historikken. Ved Classic- strategi ser kurven typisk slik ut: jevnt stigende inntil Densify Until, deretter flat (med små pruning-utsving). Ved MCMC: bratt stigning inntil cap, deretter horisontal linje (relocation holder tallet konstant). Hvis kurven faller tross aktiv trening, pruner densificationen for aggressivt — tegn på feilaktige defaults eller en kjent MCMC-collapse-bugg (v1.4.4-hotfix-tema).
Hvordan leser man loss-kurven?
Loss-charten er det viktigste diagnoseverktøyet i Inspector — ingen annen indikator viser så direkte om treningen skrider nyttig frem eller henger seg fast. Den typiske sunne formen er et raskt fall i de første 1000-3000 iterasjonene (fra ~0.15 til ~0.05), etterfulgt av et langsomt, jevnt fall til treningsslutt (til 0.020-0.030). Logaritmisk virker kurven som en glatt diagonal.
Hva betyr et platå ved loss-en? Hvis kurven over flere tusen iterasjoner forblir flat, er det to mulige lesninger: (a) treningen er „konvergert" — loss-en kan ikke lenger falle signifikant fordi modellen er så god som den kan bli med de gitte dataene og innstillingene. Det er ønsket; det er „ferdig". (b) Treningen „henger" — loss-en kan egentlig fortsatt falle, men optimeringen stagnerer (lokalt minimum, læringsrate for liten, densification av). Å skille: hvis loss-verdien ligger i et typisk godt område (0.020-0.030 ved indoor/object, 0.040-0.060 ved outdoor), og kurven har vært flat i 5K iterasjoner, er det konvergert. Hvis verdien er markant høyere enn ved sammenlignbare scener (f.eks. 0.08), henger den fast.
Advarsel: gaussian-platå ≠ loss-platå. Et platå i gaussian-antallet betyr ikke „trening er ferdig". Det betyr bare at densificationen har sluttet å legge til nye punkter — enten fordi er nådd (Classic), eller fordi MCMC-cap-et er fullt. Treningen kjører etterpå videre og forfiner bare de eksisterende punktene. Selve „ferdig"-signalet leser du av loss-kurven og iteration-visningen (I30), ikke her.
Tommelfingerregel for avbrytelse: Hvis loss-kurven etter 5000+ iterasjoner ligger over 0.08 og knapt faller mer, er SfM-rekonstruksjonen med stor sannsynlighet skjev. Avbryt trening, slå opp i kapittel 9 om det valgte SfM-backendet passer til scenen, bytt evt. til COLMAP/Native, start så på nytt. Bedre å investere 10 minutter i bedre SfM enn 2 timers trening med dårlig kamera- justering.
Når strekke ut etter Inspector?
Hurtigreferanse: hvilken seksjon + hvilke controls for hvilket typisk use-case?
| Common-task | Seksjon | Control-ID-er |
|---|---|---|
| Laste inn forhåndsfremstilt oppsett | Presets | I7 (klikk på linje) |
| Lagre egen oppsetning | Presets | I1 → I2 → I4 |
| Dele oppsetning med kolleger | Presets | I5 (eksport) eller I6 (import) |
| Bytte SfM-backend (f.eks. fordi Apple-PG er for ustabil) | treningskonfigurasjon | I12 (se kap. 9) |
| Behandle video-frames uten EXIF- brennvidde | treningskonfigurasjon | I13 (FOV-override) |
| COLMAP-ytelse: GLOMAP i stedet for klassisk | treningskonfigurasjon | I14 |
| Bytte fra Classic til MCMC | treningskonfigurasjon | I15 |
| La treningen kjøre lengre | treningskonfigurasjon | I18 (Max iter) + I20 (Densify Until) — koblet via I19 |
| Halvere GPU-tid | treningskonfigurasjon | I22 (Render Scale til 50 %) |
| Treningskvalitet +6 % (MCMC) | treningskonfigurasjon | I16 (MCMC Quality) |
| Outdoor-scene med mange SfM- punkter | treningskonfigurasjon | I17 (Auto-scale by scene) |
| Sette opp / bytte COLMAP-sti | treningskonfigurasjon | I23 / I24 / I25 |
| Gjøre eksportfiler mindre | Enhancements | I26 (la alltid stå på) |
| Skarpere viewport uten ekstra treningstid | Enhancements | I27 (MetalFX) |
| MetalFX glatter for mye → alternativ | Enhancements | I28 (MPS Lanczos) |
| Siste kvantitet detalj ved fine strukturer | Enhancements | I29 (Perceptual Loss 0.05-0.1) |
| Overvåke trening | Metrikker | I30 (fremgang), I36 (tempo), I38 (resttid) |
| Vurdere kvalitet tidlig | Metrikker | I31 (Loss < 0.05 etter 5K = god) |
| Mistanke om SfM-problem | Metrikker + loss-chart | I31 + I39 (Loss > 0.08 etter 5K → SfM på nytt) |
| Skille konvergens vs hengende | loss-diagram | I39 + I40 (les loss-platå) |
| Gjenkjenne densification-problem | loss-diagram | I41 (gaussian-kurve faller → bugg) |