Kapitel 6 — Tränings-konfiguration

En typiskt preset-JSON-eksport. Top-level-felter: id (UUID), name, (classic | mcmc | sceneClass | custom), (skema-version), (timestamp), (fri tekst). Det indlejrede -objekt innehåller de for reproducerbarhed kritiske parametre — vid import deserialiseres hele blokken til TrainingConfig-strukturen, og defaults fra app-versionen fylder de felter, der mangler i JSON'en (f.eks. efter app-opdatering). Den, der overdrager en preset til en anden Mac, sender simpelthen denna JSON-fil.
TrainingConfig-strukturen er hjertet i hver träningskörning i RadianceKit. Den samler hver parameter, der påvirker træningen — fra max iterations-antallet over de otte inlärningshastigheter til specialfelter for MCMC, Mip-splatting, curriculum og scen-aware cap-logik. Du redigerar den i sidebaren under tränings-konfigurations-sektionen (Expert View), gemmer den som preset eller giver den videre som JSON-eksport til en anden Mac. Vid träning fryses præcis detta objekt og overgives til GPU-backend.
Dette kapitel er reference-materiale til power-users og script-forfattere. Det lister alle 81 offentlige felter, de 9 statiske presets og den ene offentlige metode. Kildefil er TrainingConfig.swift — vid tvivl gælder den dér gemte doc-comment og initializer-default'en som source-of-truth.
Innehållsförteckning:
+ Iteration (T1–T2) + Learning rates (T3–T10) + Densification — Classic (T11–T16) + Loss (T17–T20) + SH-grad-progression (T21) + Performance (T22–T25) + Diagnos och punktmoln-förberedelse (T26–T30) + Regularisering (T31–T37) + Förfining (T38–T44) + Sky-dome (T45–T48) + Adam + LR-schedule (T49–T55) + Post-processing + Apple AI (T56–T60) + MCMC-densification (T61–T73) + Mip-splatting (Q1.5) (T74–T76) + Adaptive densification (Q5) (T77–T79) + Curriculum (Q6) (T80–T81) + Statiska presets (TP1–TP9) + Metod: + Vilket fält till vad? (fusklapp) + Farliga fält
Iteration (T1–T2)
T1maxIterations
DETALJER
Default: 30 000 (initializer), 35 000 (.full), 200 000 (.fullMCMC) Range: 1 000 – 500 000 (UI-slider), ingen hård øvre grænse i logikken Defined in:
TEKNISKT
Samlet antal tränings-iterationer, som backend går igenom. En iteration består av et forward-render av et enkelt tränings-kamera, et backward-pas over alle loss-komponenter (L1 + SSIM + valgfrie regulariseringer + sky-mask) og et Adam-optimizer-skridt. Dette tal virker direkte ind på andre schedules: position-læringsraten følger en cosine-annealing-kurve fra 0 til enten T1 selv eller til T49 positionLRScheduleEndIteration; densification stopper vid T2 densifyUntilIteration; MCMC-noise-decay slutter vid T69 mcmcNoiseDecayEnd; SH-degree-opgraderinger sker vid de tre i T21 definerede markeringer. Vid klassisk densification ligger det empirisk fundne sweet spot vid 20 000–35 000 iterationer (sessioner 1–32, V546-tests), vid MCMC vid 60 000–200 000 (V534). En drastisk forhøjelse ud over de i presets gemte värden giver sjældent ekstra kvalitet — Adam-momentum mætter, og uden LR-decay-ende stagnerer loss'en. Omvendt fører underskridelse av ~5 000 til ufuldstændigt konvergerede geometrier (density-control har for lidt tid til klon/split).
T2densifyUntilIteration
DETALJER
Default: 15 000 (initializer), 5 000 (.full), 160 000 (.fullMCMC) Range: 0 – Defined in:
TEKNISKT
Iteration, hvorfra densification holder op. Tills da klones, splittes og prunes gaussians efter reglerne parametriseret i T11–T16 (Classic) eller T67–T70 (MCMC); därefter förblir gaussian-antallet konstant, og kun positioner, rotationer, skaler, opaciteter og SH-koefficienter optimeres (refinement-fase). I 3DGS-originalpapiret ligger værdien vid 50 % av T1, i RadianceKits .full-preset vid kun ~14 % (5 000 av 35 000) — følge av V310/V338-experiment, der viste, at videre densifiering efter 5 000 iterationer snarere försämrar resultatet (flere floaters, mere lagerbehov, ingen kvalitetsgevinst). MCMC derimod lader relocation køre til 80 % av T1 (V504b), fordi MCMC inte producerer skadelige floaters. Om T2 vælges for lille (< 1 000), opstår der for få gaussians; for stor vid Classic (> 50 % av T1) fører til overgrowth og RGB-saturation-outliers (se outdoor-overtraining-findings).
Learning rates (T3–T10)
T3positionLearningRate
DETALJER
Default: 0.00016 Range: 1e-7 – 1e-3 (rekommenderat) Defined in:
TEKNISKT
Adam-inlärningshastighet for XYZ-positionen av hver gaussian vid tränings-start (iteration 0). Følger en cosine- annealing-kurve og sjunker i træningens forløb til T4 positionLearningRateFinal. Default 0.00016 stammer fra 3DGS-originalpapiret (Kerbl et al. 2023) og kan i RadianceKit inte skaleres med bild-opløsningen — positionen bevæger sig i verdens-koordinatsystemet, inte i pixel-rummet. En markant forhøjelse (> 0.0005) bevirker, at gaussians springer over lange distancer, og loss'en blir ustabil; värden markant under (< 0.00005) fører til, at fejl-initialiserede punktskyer aldrig hittar deres plats. V414 testede en fordobling av init-værdien → 16.8 % dårligere L1-loss; V544a-tuning bekræftede paper-default'en som optimal. Obs: vid .fullMCMC lader vi denna värde bevidst stå vid default — MCMC har brug for konstante inlärningshastigheter til sin relocation-logik, så tuning her giver intet.
T4positionLearningRateFinal
DETALJER
Default: 0.0000016 (initializer + paper), 0.000016 (.full, .fullMCMC — 10× højere) Range: 0 – Defined in:
TEKNISKT
Slutværdi for position-LR-cosine-annealing-kurven. Nås enten vid T1 maxIterations eller, om sat, vid T49 positionLRScheduleEndIteration. RadianceKits .full-preset bruger 0.000016 — altså 10× højere end paper-default'en 0.0000016. V420-experiment viste, at 0.5× av slutværdien (0.000008) försämrar loss'en med 6.4 %; V414 viste, at 2× init-värde försämrar den med 16.8 %. Den høje slutværdi er inte tradeoff, men bevidst valg: vid for stærk decay mister gaussians under refinement-fasen evnen til at tilpasse sig nytilkomne densification-kandidater. Via V431/V433-udvidelsen kan schedule-fasen forkortes (T49 < T1), så T4 allerede nås före träningsslut, og resten av træningen kører vid konstant mini-LR — typiskt konfiguration: T49 = 20 000, T1 = 35 000, refinement altså vid 0.000016 i 15 000 iterationer.
T5shDCLearningRate
DETALJER
Default: 0.0025 (initializer + paper), 0.005 (.full og alle MCMC-presets — 2×) Range: 0.0001 – 0.05 Defined in:
TEKNISKT
Adam-inlärningshastighet for DC-andelen (degree 0, altså konstant albedo) av spherical-harmonic-farven. SH-DC svarer til den retnings-uafhængige grundtone av en gaussian, så at sige „basisfarven". V176- og V188-experiment fandt 2× højere end paper-default'en optimal — snabbare farve-konvergens, særligt fordi SH-DC vid kort träning (5 000 iterationer) annars inte kommer i form. I modsætning til de geometriske LR'er har SH-DC ingen decay; læringsraten förblir konstant over alle iterationer (eller følger kun den valgfri extended-phase-decay fra T51). V416 testede en firedobling til 0.01 → 6.4 % dårligere loss vid beta2=0.99-Adam.
T6shRestLearningRate
DETALJER
Default: 0.000125 (initializer + paper), 0.00025 (.full og MCMC — 2×) Range: 0.000001 – 0.005 Defined in:
TEKNISKT
Adam-inlärningshastighet for SH-koefficienterne av højere orden (degree 1, 2, 3 — altså de view-direction-afhængige farveandele, der sørger for højlys, refleksioner og blød skygning). 20× mindre end T5 ifølge paper-konvention, fordi dessa koefficienter vokser kvadratisk i antal (3 for degree 1, 5 for degree 2, 7 for degree 3 → i alt 15 floats pr. gaussian) og uden mindre inlärningshastighet ville overmættte bilden. Frigives i to trin — tills første markering i T21 shDegreeUpgradeIterations er kun degree 0 aktiv (altså kun T5), därefter 1, senere 2, til sidst 3. Lave värden her er særligt viktiga på scener med meget diffus belysning; vid meget blanke overflader (billak, vand) giver det ingen mening at dreje på det — SH- repræsentationen selv er begrænset.
T7opacityLearningRate
DETALJER
Default: 0.05 (initializer + paper), 0.1 (.full, MCMC — 2×) Range: 0.001 – 1.0 Defined in:
TEKNISKT
Adam-inlärningshastighet for logit-opaciteten av hver gaussian. Appen gemmer opacity som ubegrænset float-värde og transformerer den med sigmoid til [0, 1]; LR'en virker i logit-space. Paper-default 0.05 er efter V50-tests (best single-run L1 0.1664) genoprettet, V71 reverterede V67's 0.025. V188-fordoblingen til 0.1 gör pruning mere effektiv — døde gaussians falder snabbare under T14 pruneOpacityThreshold. V418 viste: 0.05 med beta2=0.99-Adam er 7.1 % dårligere end 0.1 — vekselvirkningen med Adam-konfigurationen er inte triviel. Lave värden (< 0.01) fører til, at „døde" gaussians ligger evigt rundt og bruger minne; for høje värden (> 0.5) kan føre til opacity-explosion, därför klampes logit-værdien i optimizeren til [-15, 3] (se note „Opacity Explosion Prevention" i CLAUDE.md).
T8opacityLearningRateFinal
DETALJER
Default: 0.0 (= „ingen decay") Range: 0 eller 0.001 – Defined in:
TEKNISKT
Valgfri cosine-decay-slutværdi for opacity-LR'en (V427). Når 0.0, er decay deaktiveret, og opacity-LR'en förblir konstant vid T7 over hele træningen. V427 testede en decay 0.1 → 0.01 — resultat 11.5 % dårligere loss; reverteret, deraf default'en „fra". Hypotesen bag feltet: i refinement-fasen kunde konstant opacity-LR føre til oscillation, så splats, der allerede har nået det rigtige mål for transparens, forskydes igen av tilfældige gradient-udsving. Empirisk bekræftes det inte — logit-clamping-logikken fanger det ändå. Feltet förblir tilgængeligt for fremtidige experiment; också meget lange MCMC-kørsler (> 500K iterationer) kunde drage nytte av det.
T9scaleLearningRate
DETALJER
Default: 0.005 (initializer + paper), 0.01 (.full, MCMC — 2×) Range: 0.0001 – 0.1 Defined in:
TEKNISKT
Adam-inlärningshastighet for de tre skala-komponenter av hver gaussian i log-space (RadianceKit gemmer log(scale), så skalaerne förblir positive). Paper-default 0.005, i RadianceKit fordoblet til 0.01 for bedre skala-konvergens vid de optimerede inlärningshastighet-konfigurationer. V423-experiment: 0.005 med beta2=0.99-Adam → 18.7 % dårligere loss og synligt for få gaussians (density-control kunde inte klone, fordi skala- updates var for långsamma). Skala kontrollerer udstrækningen av hver gaussian — for snabb læring fører til „needle"-gaussians (ekstremt lange tynde splats, se T34 scaleRatioPruneThreshold), for långsam læring lader splats förbli for kompakte, og density-control ska splitte for ofte.
T10rotationLearningRate
DETALJER
Default: 0.001 (initializer + paper), 0.002 (.full, MCMC — 2×) Range: 0.0001 – 0.05 Defined in:
TEKNISKT
Adam-inlärningshastighet for de fire quaternion-komponenter av hver gaussian. Quaternion'en normaliseres igen i hvert optimizer-skridt efter Adam-update'en (L2-norm = 1) — annars ville kovariansmatricen bli degenereret. RadianceKit fordobler paper-default'en i quality-presets, fordi rotation har mindre absolutte gradient-magnituder end skala / position (på enhedssfæren förblir hvert skridt kort), og uden 2× ville rotationen i 35 000-iterations-vinduet være markant under- konvergeret. V188 dokumenterer. På NeRF-Blender-scener (Lego, Chair) virker rotation særligt — objekternes kanter retter sig først korrekt ud efter 5 000–10 000 iterationer.
Densification — Classic (T11–T16)
T11densifyGradThreshold
DETALJER
Default: 0.000002 (initializer, kalibreret for 0.5× upplösning), 0.0000011 (.full, kalibreret for 1.0×), 0.000004 (.quickTest, kalibreret for 0.25×), 2e-7 (.fullClassicPaper) Range: 1e-8 – 1e-3 (opløsningsafhængig) Defined in:
TEKNISKT
Tærskel for L2-normen av den skærmrums-projicerede gradient dMean2D, over vilken en gaussian markeres til klon eller split. Den absolutte värde afhænger direkte av trænings-opløsningen — dMean2D skalerer ca. som 1/upplösning² (flere pixel = mindre per-pixel-gradienter). Derfor kræver hvert T22 trainingRenderScale-trin en kalibreret tærskel: 0.25× → 4e-6, 0.5× → 2e-6, 1.0× → 5e-8 … 1.1e-6 (.full). Paper-default 0.0002 er NDC-normaliseret og inte direkte sammenlignelig i RadianceKits world-space-pipeline. Med V440 indkoblet T52 adaptiveDensifyThreshold-flag kan værdien beregnes i runtime ud fra p98 i den aktuelle gradient-fordeling — men V440 testede det på rigtige scener og producerede 63 K gaussians (katastrofalt pruning-tab); flaget förblir fra. Q5 (T77–T79) leverer en alternativ adaptiv logik via rolling median. Dette felt er inte ufarligt — halvering genererer 2–4× flere gaussians (minne-pres, OOM-risiko); fordobling kan under-densificere scenen.
T12densifyFromIteration
DETALJER
Default: 500 Range: 100 – 5 000 Defined in:
TEKNISKT
Første iteration, fra vilken densification blir aktiv. Før det sker kun „nøgen" læring på den initiale SfM-punktmoln, uden at nye gaussians genereres. Default 500 stammer fra 3DGS-papiret og giver initialiseringen tid til at stabilisere sig — om der allerede densificeres fra iteration 0, klones forkert positionerede SfM-punkter mange gange, före de overhovedet hittar deres rigtige plats. V349 testede 1000 → let dårligere loss; default'en er optimal.
T13densifyInterval
DETALJER
Default: 100 (initializer, MCMC), 200 (.full) Range: 50 – 1 000 Defined in:
TEKNISKT
Hvor mange iterationer der ligger mellan to densification-skridt. Vid paper-default 100 — hver 100 iterationer evalueres listen av densify-kandidater, klones/ splittes, og samtidig fjernes listen av prune-kandidater (sigmoid(opacity) < T14 pruneOpacityThreshold). V112-tests fandt 200 som optimal for .full — det aflaster GPU'en, fordi færre reorganisations-pas kører, og giver hver gaussian mere tid til at falde til ro efter en klon-handling. V417 testede 100 med beta2=0.99 → 5.8 % dårligere (957 K gaussians, overdensificering). Vid MCMC fortolkes samme felt som relocation-interval; se T67 mcmcRelocationInterval for den MCMC-specifikke logik.
T14pruneOpacityThreshold
DETALJER
Default: 0.005 (initializer, paper, MCMC), 0.001 (.full) Range: 0.0001 – 0.1 Defined in:
TEKNISKT
Sigmoid-opacitets-tærskel, under vilken en gaussian slettes vid nästa densification-step. Virker sammen med T7 opacityLearningRate og logit-clamp-logikken i optimizeren. V393 sænkede default'en fra 0.005 til 0.001 i .full — følge: splats, som kun spiller en rolle under eksotiske kigge-vinkler, bevares længere og bidrager til SH-detalje. V394 testede 0.0001 → let dårligere (for lidt pruning, minne spildt). Vigtigt: density-control ska ALTID prune, selv om buffer-kapaciteten allerede er fuld av andre tiltag (se „Density Control Must Always Prune" i CLAUDE.md) — annars akkumulerer døde gaussians, og count fryser fast.
T15opacityResetInterval
DETALJER
Default: 3 000 (initializer + paper), 100 000 (.full = reelt deaktiveret), 200 000 (.fullMCMC = deaktiveret) Range: 1 000 – 100 000+ Defined in:
TEKNISKT
Hver hvor mange iterationer nulstilles opaciteten av alle gaussians til en lav värde (~0.01) — en foranstaltning fra 3DGS-papiret for at vurdere „frosne" splats på ny. V194 viste, at med RadianceKits warmup + stochastic-trænings-setup + 2× inlärningshastigheter koster opacity-reset 5.5 % kvalitet, og logit-clamp dækker reset-funktionen allerede. Derfor i .full praktisk deaktiveret (100 000 > 35 000 = aldrig udløst). V421 testede reset hver 3 000 med beta2=0.99 → 4.9 % dårligere; reverteret. Vid .fullClassicPaper (Q1.5-A, paper-tro test) er det bevidst sat tilbage til 3 000 — det var en av de håndtag, hvormed paper-magnitude-gaussian-budgetterne skulle nås.
T16maxScreenSize
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 (off) eller > 0 Defined in:
TEKNISKT
Maksimal skærmrums-størrelse (i projicerede pixel), som en gaussian måste nå, före den tvunget splittes. Værdien er sat til 0 (V48 testede og reverterede) — RadianceKits density-control bruger i stedet world-space-skala-tærsklen fra dMean2D-logikken. Forbliver i feltkataloget, fordi fremtidige experiment med Mip-splatting (T74–T76) eller scen-specifikke splatting-strategier kunde drage nytte av det. Aktivering (värde > 0, f.eks. 20) ville tvinge splats, der er blivit meget store på skærmen, til at dele sig — relevant vid store, glatte vægoverflader, hvor et enkelt riesensplat tilbyder for lidt detalje.
Loss (T17–T20)
T17ssimWeight
DETALJER
Default: 0.2 (initializer + paper + .full), 0.05 (alle MCMC-presets) Range: 0.0 – 1.0 Defined in:
TEKNISKT
Vægt av D-SSIM-andelen i den kombinerede loss-funktion loss = (1 - λ) * L1 + λ * D-SSIM, hvor λ = T17. 3DGS-paper-default 0.2 er optimal for Classic-densification — V383 testede 0.3 → 28.9 % dårligere, V373b bekræftede 0.2 som sweet spot. For MCMC blev det i V521b/V534 uafhængigt fastslået: 0.05 er optimal, fordi MCMC via sin stokastiske eksploration har brug for en stærkere L1-signal-andel — højere SSIM-vægte ville udvande relocation-beslutningerne. SSIM er markant dyrere at beregne end L1 (lokale 11×11-vinduer over hele bilden); RadianceKit bruger en MPS-accelereret implementering, der blir under 1 ms pr. 1080p-bild. Q7-BayesOpt-sweeps fandt scen-specifikke optima mellan 0.05 (.outdoorPreset: 0.082) og 0.171 (.indoorPreset).
T18ssimWeightRefinement
DETALJER
Default: 0.0 (= „intet skift, behold ssimWeight") Range: 0 eller 0 – 1.0 Defined in:
TEKNISKT
Valgfri SSIM-värde for refinement-fasen efter T2 densifyUntilIteration. V428 testede 0.2 → 0.3 i refinement → 16 % dårligere loss (både L1 og SSIM forværredes); reverteret, deraf default 0.0. Hypotesen bag feltet var, at efter densification — när der inte længere opstår nye gaussians — en stærkere SSIM-andel ville maksimere den strukturelle skarphed. Empirisk forkert: at hæve SSIM-vægten betyder indirekte at sænke L1-vægten, og L1 är det markant mere sigende signal i final-refinement-fasen. Feltet förblir tilgængeligt for fremtidige experiment med perceptual loss (T60) eller edge- loss (T19), hvor en refinement-specifik loss-komposition kunde være meningsfuld.
T19edgeLossWeight
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 eller 0.001 – 1.0 Defined in:
TEKNISKT
V437-eksperimental-loss: vægt av en Sobel-gradient-domæne-L1-loss, der sammenligner billedkanter direkte (ground-truth-Sobel vs render-Sobel) ud over L1+SSIM. Hypotese: kant-information är en perceptuel hjørnesten av billedkvalitet, og en eksplicit term burde opmuntre gaussians til bedre at træffe kanterne. Test-resultater: vægt 0.1 → 11 % dårligere loss, 0.01 → kvalitets-neutral, men 10 % långsammare. Sobel-passet koster et yderligere MPS-forward på ground-truth og render. Derfor permanent deaktiveret. Fremtidigt use-case: scener med hårde kunstige kanter (arkitektur, møbler, renderinger) kunde profitere — Q7-scen-class-presets pickede det dock inte, men skalerede i stedet SSIM-vægten.
T20skyMaskingEnabled
DETALJER
Default: false (initializer og alle presets) Range: boolean Defined in:
TEKNISKT
Slår sky masking til. Derved maskeres sky-regionen i hvert bild via Apple Vision Framework (VNGenerateForegroundInstanceMaskRequest), og loss'en i detta område sættes til nul. Mening: outdoor-scener lider ofte under, at blå/grå/hvide sky-pixler får appen til at placere gaussians præcis dér — vilket uppfattas som „floater". Uden sky-mask ville loss'en i detta område aldrig bli nul, fordi himlen i bilden varierer let, og appen evigt forsøger at genskabe det med splats. Vision-masken beregnes en gang pr. kamera före træningen og holdes i RAM. Aktiveres typiskt sammen med T45 skyDomeEnabled (UI-logik i settings-viewet). Vid indendørs-scener eller syntetiske renderinger lader man stå fra — masken ville dér fejlagtigt genkende lofter eller vægge som „sky".
SH-grad-progression (T21)
T21shDegreeUpgradeIterations
DETALJER
Default: [1_000, 2_000, 3_000] (initializer), [2_000, 5_000, 8_000] (.full, MCMC), [1_000, 2_000] (.preview — degree 3 sprunget over) Range: [Int], hver värde i [0, maxIterations], monotont stigende Defined in:
TEKNISKT
Iterationer, hvor den aktive SH-degree skiftes op fra 0→1, 1→2, 2→3. Før første markering er kun DC-komponenterne aktive (altså T5 shDCLearningRate), efter første markering DC + 3 degree-1-koefficienter, efter anden markering + 5 degree-2-koefficienter, efter tredje markering alle 15 koefficienter. Lager-behovet pr. gaussian vokser i trin — 4 floats → 16 floats → 36 floats → 64 floats. Quality-presets udskyder optrapningerne i forhold til initializer-defaults (V228), fordi geometrien ska stabilisere sig først, före farve- detaljerne med deres højere frekvens kommer på. V384 testede [1K, 2K, 3K] for .full → 9.3 % dårligere — bekræfter forsinkelsen. .preview kapper vid degree 2, fordi degree 3 inte konvergerer i 5 000 iterationer og kun bruger optimizer-kapacitet. Q6 (T80–T81) tilbyder en alternativ curriculum-logik, der dynamisk overskriver denna liste.
Performance (T22–T25)
T22trainingRenderScale
DETALJER
Default: 1.0 (initializer, .full, MCMC, scen-class), 0.5 (.preview), 0.25 (.quickTest) Range: 0.05 – 2.0 (typiskt 0.25, 0.5, 1.0) Defined in:
TEKNISKT
Render-upplösning vid träning relativt til træningsbilledernes oprindelige upplösning. Vid 0.5 nedskaleres hvert bild til 50 % bredde × 50 % højde (altså 25 % av pixlerne), og gaussian-renderingen sker i denna mindre upplösning. Reducerer både minne- og regneindsats kvadratisk. Vigtigt: T11 densifyGradThreshold ska passe til den valgte upplösning — gradient-magnituderne skalerer med 1/upplösning², därför har .quickTest (0.25×) en meget højere tærskel (4e-6) end .full (1.0×, 1.1e-6). RadianceKit advarer vid meget store bilder og tilpasser automatisk — 3-MP-mål-upplösning. Vid ekstreme 4K-input-bilder ville 0.5 eller endda 0.25 være meningsfuldt, annars kører selv Mac'en kun i CPU-compaction.
T23resolutionWarmupScale
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 eller 0.1 – Defined in:
TEKNISKT
V133-optimering: træn densification-fasen (iter 0 til T2) i en lavere upplösning end refinement-fasen. V308 har deaktiveret den igen for .full, fordi tids-gevinsten vid T22 = 1.0 og cosine-annealing var marginal, og kvaliteten led minimalt. Forbliver i feltkataloget, fordi den kunde bli meningsfuld igen vid 4K-input og lange trænings-kørsler — Q6 curriculum (T80) har taget en lignende logik op, men dér är den koblet til LR-schedulen. Om aktiveret og T80 curriculumResolutionRamp ligeledes true, vinder Q6 og overskriver denna värde.
T24tileSize
DETALJER
Default: 16 Range: 8, 16, 32 Defined in:
TEKNISKT
Størrelse av rasteriserings-tiles i pixel. Gaussian-splatting-renderingen er tile-baserat: bilden opdeles i 16×16-pixel-fliser, hver flise samler de for den relevante gaussians, sorterer dem efter dybde og blender dem ind. 16 er standard, som praktisk talt alle 3DGS-implementeringer bruger, og er hardkodet i RadianceKits Metal-kerneler; en ændring av denna värde ville kræve re-kompilering av shaderne og er inte effektiv i den aktuelle stand. Forbliver som felt, om en fremtidig engine-version understøtter tile-size dynamisk.
T25throttleDelayMs
DETALJER
Default: 0 (initializer, .full, MCMC, scen-class), 0 (.preview) Range: 0 – 100 Defined in:
TEKNISKT
Kunstig forsinkelse mellan tränings-iterationer i millisekunder. 0 = fuld hastighed (standard). Højere värden gör Mac'en mere „brugelig" under træningen vid, at GPU/CPU regelmæssigt får pusterum — andre apps' brugervenlighed stiger, men træningstiden också lineært med forsinkelsen. Typiske värden: 1–2 ms („let" throttling, +5 % träningstid, Mac føles mere responsive), 5 ms („mellan", +15 % träningstid), 10+ ms („Eco", potentielt fordoblet träningstid). Tilbydes i Inspectoren under „Performance", men er inte i standard-visningen — se backlog dev_ux-backlog.md, der foreslår at fjerne den fra Expert View, fordi den misforstået forlænger træningstiden dramatisk.
Diagnos och punktmoln-förberedelse (T26–T30)
T26depthDistortionWeight
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 eller 0.0001 – 0.05 Defined in:
TEKNISKT
V366-eksperimental: vægt av en depth-distortion- regulariserings-loss. Straffer gaussians, der langs en render-stråle ganske vist er dybt stablede, men konceptuelt hører til samme overflade — det opmuntrer koncentrerede dybdefordelinger og reducerer floaters. Tests: 0.01 → 4.5 % dårligere, 0.001 → 8.1 % dårligere. Den teoretiske fordel — multi-view-konsistens förbättras — afspejler sig inte i L1-loss'en, fordi hypotesen implicit antager, at SfM-geometrien er korrekt, og gaussians kun ska „stables". I praksis er SfM-punktskyen som regel den svageste komponent, inte stablingen. Forbliver tilgængelig for multi-view-datasæt med særligt rene poser (synthetic, Mip-NeRF 360 med ground truth).
T27singleViewOverfit
DETALJER
Default: false Range: boolean Defined in:
TEKNISKT
Diagnose-flag: om true, bruges i hver tränings-iteration tvunget kamera-index 0 i stedet for en tilfældig fra camera-pool'en. Mening: om modellen inte engang kan overfitte en enkelt view (altså loss'en på view 0 inte går mod nul selv efter 10 000 iterationer), er der en fundamental bug i forward/backward-passet. Denne kontakt blev brugt intensivt under udviklingen av Metal-shaderne og differentiable- rasterizer-kernels — V42–V47-fasen. I dag kun tilgængelig som sanity-check, om någon har modificeret backend-kode og vil lave en regression test. Via CLI med –single-view.
T28maxCameras
DETALJER
Default: 0 (= „brug alle kameraer") Range: 0 eller 1 – N Defined in:
TEKNISKT
Diagnose-grænse fra V43: træn kun med de første N kameraer, ignorer alle yderligere. Mening oprindeligt: teste hypotese, at for mange kameraer skaber gradient-konflikter (for mange modstridende loss-signaler for samme gaussian). Test-resultat: ingen systematisk fordel vid kunstig begrænsning — flere frames bringer praktisk talt altid mere kvalitet. Forbliver som CLI-flag (–max-cameras N) til målrettede experiment, f.eks. „fungerer træningen på de første 100 bilder av en 1 500-bild-droneflyvning?" Inte eksponeret i UI.
T29maxInitialPoints
DETALJER
Default: 0 (= „brug alle SfM-punkter") Range: 0 eller 1 000 – 200 000+ Defined in:
TEKNISKT
V54-sikring: begrænser antallet av initiale SfM-punkter, som træningen starter med. Tætte COLMAP- rekonstruktioner kan producere > 60 000 punkter, vilket vid store initial-skalaer fører til 200–300 gaussians pr. pixel-overlap — det giver et „tågefelt", hvor træningen inte konvergerer. Subsampling til ~16 000 punkter (hard-cap-logik i tränings-motor) bringer initial-densiteten på niveau med, vad reference-3DGS bruger, og reducerer overlap dramatisk. Sættes automatisk vid meget tætte SfM'er; via CLI med –max-points N.
T30cameraClusterOutlierMultiplier
DETALJER
Default: 10.0 (alle presets — aldrig overskrevet) Range: 1.0 – 100.0 Defined in:
TEKNISKT
Multiplikator for camera-cluster-outlier-filteret, indført i fase 3.10 A.1. Før træningen beregner tränings-motor centroidet for alle kamera-positioner og den maksimale distance for et kamera fra centroidet. SfM-punkter, om distance fra centroidet overskrider multiplier × maxCameraDistance, kasseres som outliers. Default 10× bevarer adfærden fra före fase 3.10. En subtil bug: tighter SfM (kameraer tættere sammen) → mindre → mindre tærskel → flere punkter kasseres som outliers. Looser SfM → større tærskel → færre punkter kasseres. Dette är en av årsagerne til fase-3.9-funnel-vs-training-anti- korrelationen: bedre SfM kan downstream føre til dårligere träning, fordi for mange initial-punkter dræbes. Feltet ligger som CLI-override (–camera-cluster-outlier-multiplier) til A.3-sweeps; inte eksponeret i UI. Värden under 5 er som regel for restriktive, over 20 virkningsløse.
Regularisering (T31–T37)
T31coarseToFineBlurRadius
DETALJER
Default: 0 (= deaktiveret) Range: 0 eller 1 – 10 Defined in:
TEKNISKT
V369-eksperimental: box-blur-radius, der i starten av densification-fasen anvendes på ground-truth-bilden og lineært reduceres til slutningen av densification (T2) til 0. Hypotese: coarse-to-fine-träning — først lære grove strukturer, så detaljer — skulle give stabilere geometri. Tests: r=3 → 9.6 % dårligere, r=1 → 5.1 % dårligere. Grunden til mislykket: densification beslutter baserat på bild-domæne-gradienter, og blur reducerer just de signaler, der er viktiga for „her ska klones". Forbliver i feltkataloget til fremtidige tests med andet density-control-skema.
T32scaleRegWeight
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 eller 0.0001 – 0.05 Defined in:
TEKNISKT
V370-eksperimental: L1-regularisering på verdens-rumlig skala. Straffer gaussians, der blir for store — hindrar „mega-splats", der dækker hele vægoverflader med en gaussian. Tests: 0.01 → 200 % dårligere loss (2 M gaussians, total eksplosion), 0.001 → 214 % dårligere. Grunden: skala- regularisering kommer i konflikt med density-control — mindre skalaer betyder, at flere gaussians bruges, så density-control splitter oftere, vilket igen betyder mere gradient-arbejde. Disabled, men dokumenteret til Mip-splatting-experiment (T74): i denna kontekst kunde en skala-undergrænse være meningsfuld.
T33anisotropyRegWeight
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 eller 0.0001 – 0.05 Defined in:
TEKNISKT
V445-eksperimental: penalty på max(scale)/min(scale)-forholdet, ska forhindre ekstremt langstrakte „needle"-gaussians, der uppfattas som floaters. Tests: 0.01 → 69 % dårligere, 0.001 → 15 % dårligere. Grunden: regulariseringen tvinger splats mod „runde" former, vilket på en flad overflade (væg, bord, gulv) er just forkert — dér er en flad, bred gaussian mere effektiv end en kugleformet. Disabled. V549f tilbød med T34 scaleRatioPruneThreshold en alternativ, mere målrettet tilgang, som ligeledes blev reverteret.
T34scaleRatioPruneThreshold
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 eller 5.0 – 100.0 (typiskt 10.0 – 30.0) Defined in:
TEKNISKT
Eksperimentel post-training-pruning, der sletter hver gaussian, om max(scale)/min(scale)-forhold overskrider den her satte lineære tærskel. Sigter på ekstremt langstrakte „needle/disc"-floaters, der inte kan elimineres vid regularisering alene. I testen fjernede pruning floaters som håbet, men samtidig också fornuftige flade splats på vægge og gulve — bilden blev hullet. Derfor fra som default, CLI-flaget (–scale-ratio-prune N) förblir tilgængeligt til målrettede experiment. Anbefalede värden, om man ändå vil teste: 30 (meget konservativ, fjerner kun ekstreme outliers), 10 (aggressiv, koster detalje).
T35opacityRegWeight
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 eller 0.0001 – 0.05 Defined in:
TEKNISKT
V446-eksperimental: binary-cross-entropy-penalty, der trækker opacity mod 0 eller 1 (altså væk fra „halv- transparent"). Hypotese: skarpere opacitetsfordeling ville förbättra billedklarhed. Test med T33 kombineret → regularisering koster kvalitet, begge deaktiveret. Disabled. Advarsel: i 1.4.3-beta dukkede en bug op, der havde præcis detta felt med en default-värde-ændring (initializer = 0.01), vilket førte til mass-extinction av gaussian-count (460 K → 5 på en iteration). Siden 1.4.4 fast på 0.0 som default.
T36opacityDecayFactor
DETALJER
Default: 0.0 (initializer = deaktiveret), 0.9995 (.full, .classicBalanced — HTGS-standard) Range: 0 (off) eller 0.95 – 1.0 Defined in:
TEKNISKT
V546-implementering av HTGS-skemaet (Hierarchical Time-Gating, Eurographics 2025): hver T37 opacityDecayInterval iterationer multipliceres sigmoid-opaciteten av hver gaussian med denna faktor. 0.9995 × 100 anvendelser giver ~95 %-tilbage pr. densification-fase — et let, men stabilt nedadgående tryk på alle opacities, der pålideligt lader svagt bidragende gaussians synke mod T14 pruneOpacityThreshold. Resultat: 14 % bedre L1-loss på Horse Full (3-trial-avg V546) i forhold til V438 uden decay. Kun aktiv under densification-fasen (tills T2), därefter kører træningen videre uden decay, så de i refinement etablerede opaciteter förblir stabile. Bruges inte vid MCMC (MCMC har egne mekanismer via T67 mcmcRelocationInterval + T68 mcmcDeadOpacityThreshold).
T37opacityDecayInterval
DETALJER
Default: 50 Range: 10 – 500 Defined in:
TEKNISKT
Iterations-interval, hvor T36 opacityDecayFactor anvendes. HTGS-paper-default 50, beholdt i .full. Lange intervaller (>200) ophæver effekten delvist, fordi der mellan to anvendelser sker nok gradient-updates til, at opacity stiger igen. Korte intervaller (<20) gör decay for aggressiv. Kun aktiv i densification-fasen.
Förfining (T38–T44)
T38gradientAccumulationSteps
DETALJER
Default: 1 (= „en view pr. Adam-skridt") Range: 1 – 8 Defined in:
TEKNISKT
V424-feature: antal views, om gradienter akkumuleres, före et Adam-update udføres. Vid > 1 kører appen på en separat, „unfused" backward-project-sti, der summerer gradienterne i en separat buffer; den endelige anvendelse skalerer med 1/N for at holde magnituden konstant. V424 testede 2-view → kvalitets-neutral, men 10 % långsammare (fordi unfused-stien er dyrere end fused-stien). Reverteret for .full, men bevidst brugt til MCMC — .fullMCMC kører med, men V544a-tests viste, at quality-gappet til Classic skrumper til 5 % (i stedet for 11 %). I initializer-default 1, i aktuelle preset 1, förblir CLI-flag (–accum-steps N).
T39testViewIndices
DETALJER
Default: [] (= tom, alle views bruges til träning) Range: Set<Int>, vilkårlig delmængde av camera-indices Defined in:
TEKNISKT
V546-feature: sæt av camera-indices, som IKKE bruges til träning, men gemmes som holdout til PSNR/SSIM/LPIPS- evaluering. Sættes automatisk, när –benchmark-CLI-flaget er aktivt: så hver ottende view fra index 0 (LLFF-standard, identisk med Mip-NeRF-360- og 3DGS-paper-konventioner). Uden benchmark tom — træningen bruger alle views. Forsigtighed: manuel inställning av detta felt uden forståelse for indekserne kan gøre benchmarket ubrugeligt (f.eks. om alle indices over N sættes, mens der kun er N-50 views → ingen holdouts → ingen evaluering). Vid egen preset-eksport persisteres testViewIndices inte, fordi det er scen-afhængigt og annars ville efterlade meningsløse värden mellan olika datasæt.
T40refinementPruneInterval
DETALJER
Default: 0 (= deaktiveret) Range: 0 eller 100 – 5 000 Defined in:
TEKNISKT
V425-feature: hver N iterationer i refinement- fasen (efter T2) køres et yderligere prune-pas, der fjerner gaussians med sigmoid(opacity) < T41 refinementPruneOpacityThreshold. Mening: under densification er der regelmæssige density-control-kald, därefter inte længere — gaussians, om opacity fortsætter med at synke, förblir dock i bufferen. V425 testede og reverterede: den ekstra pruning korrelerede med V426 (two-phase densification, ligeledes afsluttet i 0-gaussians-cascade failure). Disabled. CLI-flag tilgængelig til experiment; om aktiveret, er 1 000 eller 2 000 fornuftige värden.
T41refinementPruneOpacityThreshold
DETALJER
Default: 0.0 (= „brug T14") Range: 0 eller 0.001 – 0.1 Defined in:
TEKNISKT
V425b: separat opacity-tærskel til refinement- pruning. Efter densification har de fleste gaussians nået en markant højere opacity (> 0.001), så standard- T14 pruneOpacityThreshold ville være for slap. Om T40 aktiv, bestemmer detta felt den egne tærskel. Vid 0.0 anvendes T14 fortsat. Kun relevant, om T40 > 0.
T42midTrainingCompactificationIterations
DETALJER
Default: [] (= deaktiveret) Range: [Int], värden i (densifyUntilIteration, maxIterations) Defined in:
TEKNISKT
V549-feature: eksplicitte iterations-punkter under refinement-fasen, hvor et compactification-pas køres (fjerner sigmoid(opacity) < 0.01 + outlier-skala-gaussians, samme logik som T56 postTrainingCompactification). Mening: lange refinement-faser kan visa confetti-/floater-akkumulation, om SH så overfitter på view-specifikke artefakter. Typisk konfiguration om aktiveret: [10000, 20000, 30000] for 40K Classic. MEN: V549-A/B-tests på Family-dataset viste i alle konfigurationer dårligere L1: [10K,20K,30K]@0.01 → −48 % count, men +36 % L1; [20K,30K]@0.005 → −44 % count, men +45 % L1; [20K,30K]@0.001 → −17 % count, men +87 % L1. Derfor disabled. CLI-flag –mid-compact "10000,20000" tilgængelig, om man foretrækker den visuelle floater-tradeoff (mindre confetti i viewporten) over loss-regressionen.
T43frustumCullEnabled
DETALJER
Default: false Range: boolean Defined in:
TEKNISKT
V549b-feature: efter träning fjernes alle gaussians, der ligger uden for foreningen av alle træningskamera-frusta. Sådanne gaussians blev aldrig begrænset av loss-signalet og er altid floaters. Særligt effektivt for scener, hvor novel-viewet ligger bag eller vid siden av kamerastien (f.eks. bagsiden av en lineær droneflyvning) — floaters dér blir aldrig synlige i træningsfasen, men meget vel vid senere bevægelse i 3D-vieweren. V549b A/B på droneflyvninger positive resultater, därför tilgængelig som opt-in. Default false, fordi vid object-captures med fuld orbit-coverage omfatter frustum-foreningen hele scenen, og featuren fjerner intet — tilbydes i settings under „Floater Reduction" og också i Q9 Outdoor-preset implicit testet over T44 frustumCullExpansion (Q7-BayesOpt aktiverede det dock inte, fordi outdoor-sky-dome løser samme problem bedre).
T44frustumCullExpansion
DETALJER
Default: 1.1 Range: 1.0 – 2.0 Defined in:
TEKNISKT
NDC-margin for T43 frustumCullEnabled. 1.0 ville skære præcis vid billedkanten, vilket ville beskære vaklende splats vid billedkanten for meget. 1.1 = 10 % padding ud over den præcise kamera-framing — giver lidt tolerance for randpixler, der i en let forskudt novel-view ändå kunde bli synlige. Värden > 1.2 gör cullen praktisk talt virkningsløs, fordi det udvidede frustum omfatter meget mere rum.
Sky-dome (T45–T48)
T45skyDomeEnabled
DETALJER
Default: false (initializer + alle presets undtagen P9 Outdoor) Range: boolean Defined in:
TEKNISKT
V549e-feature: före tränings-start genereres en kugleformet punktmoln (Fibonacci-sphere med T46 sample-points), placeret i en radius av T47 skyDomeRadiusMultiplier × scene_extent omkring scenens midtpunkt og initialiseret med farverne fra de sky-maskerede pixler i alle træningskameraer (se T20 skyMaskingEnabled). Disse sky-dome-gaussians indsættes i begyndelsen av gaussian-bufferen og „fryses" under træningen (position/skala/rotation-gradienter = 0, kun SH og opacity förblir optimerbare). Effekt: i stedet for sorte „confetti"-områder i det fjerne ser brugeren en rigtig himmel i novel-views. V549e-MVP fungerer meget godt på drone- og landskabsscener; i P9 Outdoor-preset default-on. Vid indendørs scener lad stå fra — sfæren ville hænge meningsløst uden for rummet.
T46skyDomeSampleCount
DETALJER
Default: 5 000 Range: 1 000 – 50 000 (typiskt 2 000 – 10 000) Defined in:
TEKNISKT
Antal Fibonacci-sphere-sample-punkter på sky-dome- sfæren. Højere värden → tættere sky-dome (bedre vid store upplösningar og meget synlig himmel), men mere lagerbehov. 5 000 er sweet spot for 4K-renderinger; vid lavere upplösningar rækker 2 000–3 000. Punkterne initialiseres efter cosine-distance til hver træningskamera-view-vektor med de tilsvarende sky-maskerede pixler — sample-points, om view-cone inte ser något kamera, förblir med lav opacitets-startværdi bagved, men ændres inte i træningen (frosset).
T47skyDomeRadiusMultiplier
DETALJER
Default: 30.0 (initializer + de fleste presets), 59.0 (P9 Outdoor, Q7-BayesOpt-optimum) Range: 5.0 – 200.0 Defined in:
TEKNISKT
Radius av sky-dome-sfæren relativt til scenens udstrækning (= middel-distance mellan kamera-positionerne). 30 = kuglen har 30 gange diameteren av kamera-skyen. For lille (< 5) → sky-dome interfererer med selve scenen (f.eks. lander et sky-dome-splat i forgrunden); for stor (> 100) → float32- præcisionstab på sky-dome-positionerne, vilket udløser render- glitches i det fjerne. Q7-BayesOpt på Bicycle (Mip-NeRF 360) fandt 59.0 som scen-specifikt optimum for outdoor — det tyder på, at standard-30.0 er for lille til dybe landskaber, og sky- dome-pixlerne i billedkant-områder rendrer synligt som „væg".
T48frozenGaussianCount
DETALJER
Default: 0 (= ingen frosne gaussians) Range: 0 eller 1 – T46 Defined in:
TEKNISKT
Antal gaussians i begyndelsen av bufferen, om position/skala/rotation-gradienter sættes til nul i optimizeren — de förblir rumligt stive over hele træningen. Density- control måste inte klone, splitte eller prune dem. Bruges til sky- dome-injection (se T45): om sky-dome er tændt, sættes detta felt automatisk til T46 skyDomeSampleCount. Manuel inställning er mulig (f.eks. for at fryse en forhåndsplaceret punktmoln fra en LiDAR-scanning), men inte direkte tilgængelig i UI. Vigtigt: de første N gaussians i bufferen er altid de frosne — rækkefølgen i bufferen afgør, inte et eksplicit index.
Adam + LR-schedule (T49–T55)
T49adamResetIteration
DETALJER
Default: 0 (= deaktiveret) Range: 0 eller 100 – Defined in:
TEKNISKT
V430-feature: iteration, hvor Adam-optimizer- momentum-akkumulatorerne (m1, m2) nulstilles. Bias-korrektion därefter kører med (iter - adamResetIteration) i stedet for med iter. V430 testede reset vid 5 000 (efter densification- slut) → 12.8 % dårligere loss. Grund: Adam-momentum, der har bygget sig op under densification, bærer information om de typiske gradient-magnituder og accelererer refinement-fasen. At kaste det væk koster de første ~500 iterationer refinement i konvergens. Disabled. Forbliver CLI-flag til forskningseksperimenter.
T50positionLRScheduleEndIteration
DETALJER
Default: 0 (initializer = „brug maxIterations"), 20 000 (.full — cosine slutter vid 20K trods maxIter=35K), 30 000 (.fullClassicPaper) Range: 0 eller 1 000 – Defined in:
TEKNISKT
V431-feature: iteration, hvor cosine-annealing- kurven for position-LR när sit minimum. Om 0, är det identisk med T1 maxIterations. Om > 0, kører schedulen til denna värde og förblir därefter konstant vid T4 positionLearningRateFinal. Det tillader en „extended refinement phase" med minimal, men konstant inlärningshastighet — forfiner positioner långsamt uden fornyet decay. .full gör det (schedule- slut vid 20K, träning kører til 35K), V434c/V434d bekræftede: 15K og 25K begge ca. lige gode, 20K minimalt optimal. Bruges i forbindelse med T51 videre for också at modificere inte-position-LR'erne i extended phase.
T51extendedPhaseLRDecay
DETALJER
Default: 0.0 (= deaktiveret, konstante LR'er) Range: 0 eller 0.01 – 1.0 Defined in:
TEKNISKT
V433-feature: minimal multiplikator for inte- position-LR'erne (skala, rotation, opacity, SH) i „extended phase" — altså: efter T50 er nået, og position-LR er allerede vid T4. Om 0.1, cosine-decayes skala/rotation/ opacity/SH for deres del fra 1.0 (= deres standard-LR) til 0.1× av deres standard. Om 0.0 (default), förblir de konstante. V457 testede fuldt decay (0.0 = decay-til-nul) mod intet-decay og fandt: avg 0.0400 (2 runs) = samme loss som V438 uden decay. Adfærd renere med decay, men inte målbart bedre. Derfor disabled. Forbliver i CLI som –nonpos-lr-scale F.
T52adaptiveDensifyThreshold
DETALJER
Default: false Range: boolean Defined in:
TEKNISKT
V440-eksperimental: om true, beregner appen i hvert densification-skridt p98 av den aktuelle gradient-fordeling og bruger det som dynamisk tærskel (klampet til mindst 0.5× av den konfigurerede värde fra T11, så det inte skejser for langt ud). Hypotese: automatisk tilpasning til aktuel scen-fase ville gøre density-control mere robust — f.eks. strengere pruning i starten, slappere senere, eller omvendt. V440 testede og reverterede: katastrofalt fald til 63 K gaussians (mass-pruning, fordi p98 i de første iterationer er ekstremt højt, og så overskrider næsten intet tærsklen). Den faste tærskel er allerede godt kalibreret, dynamisk tilpasning skader mere end den gavner. Q5 (T77) tilbyder en alternativ adaptiv logik via rolling median, der omgår problemet.
T53mergeAfterDensification
DETALJER
Default: false (initializer), true (.full, .classicBalanced, .fullClassicPaper) Range: boolean Defined in:
TEKNISKT
V438-feature: vid slutningen av densification-fasen (iter T2) udføres et engangs-merge-pass, der sammenfatter nærtliggende gaussians med lignende skala og farve. Reducerer gaussian-antallet med typiskt 5–15 % uden synligt kvalitetstab. Mening: efter intensiv kloning opstår klynger av kvasi- identiske gaussians, der inte bidrager med något nyt — merging frigør optimizer-kapacitet til andre områder. Standard i Classic-quality-presets. Bruges inte vid MCMC, fordi MCMC via sin relocation-logik slet inte lader sådanne klynger opstå.
T54densifyPhase2FromIteration
DETALJER
Default: 0 (= deaktiveret) Range: 0 eller T2 – T1 Defined in:
TEKNISKT
V426-eksperimental: muliggør en anden densification-fase, der efter refinement-pausen starter vid denna iteration og kører til T55. Hypotese: efter en refinement-fase har gradient-akkumulatorerne stabilere magnitudes og kan mere præcist sige, vilka områder der stadig har brug for yderligere gaussians. V426 testede og reverterede: two-phase densification faldt i 0-gaussians-cascade-failure (kombineret med V425 refinement-pruning ødelagde det bufferen). Disabled. CLI-flag tilgængelig til experiment.
T55densifyPhase2UntilIteration
DETALJER
Default: 0 Range: 0 eller T54 – T1 Defined in:
TEKNISKT
Slutning av V426-two-phase-densification. Kun relevant om T54 > 0. Begge felter sammen disabled.
Post-processing + Apple AI (T56–T60)
T56postTrainingCompactification
DETALJER
Default: true (i alle production-presets), false (.quickTest, .preview) Range: boolean Defined in:
TEKNISKT
V443-feature: efter träningsslut fjernes gaussians med sigmoid(opacity) < 0.01 hårdt (de bidrager praktisk talt inte længere til bilden). Reducerer gaussian-count med typiskt 58 % og eksport-filstørrelse med 55 % uden synligt kvalitetstab. Som standard aktiv i production-presets — slutresultatet ska kunde leveres så kompakt som muligt. I .quickTest fra, fordi en diagnose-kørsel ändå inte eksporteres. I modsætning til T42 midTrainingCompactificationIterations (V549) hittar compactificationen først sted vid slutningen — refinement kan tills da bruge alle gaussians.
T57metalFXUpscaling
DETALJER
Default: false Range: boolean Defined in:
TEKNISKT
V444-feature: aktiverer Apples MetalFX spatial upscaler i stedet for bilineær interpolation i 3D-viewer-output. Om træningsopløsning < viewport-størrelse (f.eks. träning på 0.5×, viewport-visning i fuld upplösning), kan MetalFX levere et markant skarpere bild. Ændrer sig live i viewporten, ingen genoptræning nødvendig. Udelukker T58 mpsLanczosScaling — MetalFX har forrang. Anbefaling: tænd, om bilden i vieweren virker „udvasket" sammenlignet med den forventede detalje.
T58mpsLanczosScaling
DETALJER
Default: false Range: boolean Defined in:
TEKNISKT
V444-feature: MPSImageLanczosScale til viewport- skalering i stedet for bilineær interpolation. Lanczos är en klassisk sinc-baserat resampling-metode, der leverer markant skarpere resultater end bilineær med minimal overhead. Live- toggle. Overskrives av T57, om begge er tændt.
T59livePreviewInterval
DETALJER
Default: 50 (initializer og de fleste presets) Range: 0 (off) eller 10 – 5 000 Defined in:
TEKNISKT
Hvor ofte under træningen 3D-vieweren opdateres med de aktuelle gaussians. 50 = hver 50 iterationer et nyt render i vieweren — godt nok til at iagttage fremskridt uden at sinke træningen. 0 = vieweren opdateres slet inte (baggrunds- träning, max hastighed). Typisk tilpasning: vid .quickTest ned til 10 (man vil se hvert skridt), vid lange MCMC-kørsler op til 500–2000 (update-overhead i sum mærkbar).
T60perceptualLossWeight
DETALJER
Default: 0.0 (= deaktiveret) Range: 0 eller 0.001 – 0.5 Defined in:
TEKNISKT
V444-future-feature: vægt av en perceptuel loss-term via MPSGraph (VGG-lignende lille netværk). Ville fange strukturel og teksturel lighed på et højere semantisk niveau end L1+SSIM — typiskt i forsknings-pipelines, hvor „pixel- perfect" er mindre viktigt end „ser realistisk ud". Implementering stadig udestående (kode-stub finns, men forward- pass inte implementeret). Default 0.0. Forbliver i feltkataloget til fremtidig aktivering; CLI-flag –percep-weight F reserveret.
MCMC-densification (T61–T73)
T61densificationStrategy
DETALJER
Default: .classic (initializer + Classic-presets), .mcmc (alle MCMC-presets + scen-class) Range: .classic eller .mcmc Defined in:
TEKNISKT
Vælger mellan Classic-densification (klon/split/ prune, Kerbl et al. 2023) og MCMC-densification (stochastic gradient Langevin dynamics med relocation, Kheradmand et al. NeurIPS 2024). Vid .classic evalueres T11–T16, vid .mcmc T62–T73. Forsigtighed vid skift: Classic-defaults og MCMC- defaults er totalt anderledes kalibreret — den, der flipper vælgeren i Expert View uden at indlæse en passende preset, risikerer 1.4.3-bug-stil mass-extinction (460 K → 5 i en iteration, fordi MCMC-OpacityReg på 0.01 dræber Classic- opacities). Derfor er MCMC-init-defaults bevidst „blødgjorte" (alle reg-värden 0.0).
T62mcmcMaxGaussians
DETALJER
Default: 150 000 (initializer + .fullMCMC + .mcmcBalanced), 100 000 (.mcmcPreview), 1 500 000 (.fullMCMCMip — Mip-splatting-variant med 10× budget), 1.19 M (.renderPreset), 1.25 M (.outdoorPreset), 670 K (.indoorPreset) Range: 0 (= „brug buffer-kapacitet") eller 10 000 – 5 000 000 Defined in:
TEKNISKT
Hård overgrænse for antallet av gaussians vid MCMC-strategi. Antallet vokser gradvist med T70 mcmcGrowthRate (typiskt 5 %) pr. relocation-step op til detta cap. V473/V531 fandt 150 K som sweet spot — over 200 K udvander splat- kvaliteten (for mange små, overflødige gaussians), under 100 K förblir scenen under-densificeret. Vid meget store scener (f.eks. 1 545-foto-droneflyvning med 158 K SfM-init) er 150 K for lavt — därför 1.4.5-udvidelsen T72 mcmcCapMultiplier + T73 mcmcAutoScaleByScene. Q7-BayesOpt fandt scen-specifikke optima mellan 670 K (Indoor) og 1.25 M (Outdoor). Vid värde 0 bruger engine den fulde buffer-kapacitet som cap.
T63mcmcNoiseScale
DETALJER
Default: 0.00005 (5e-5 = paper-default) Range: 1e-6 – 1e-3 Defined in:
TEKNISKT
Multiplikator for det gaussiske støj, der i hver MCMC-iteration adderes til positionen av hver gaussian (SGLD- logik). Højere = mere eksploration (gaussians vandrer mere, hittar potentielt bedre pladser), lavere = mere udnyttelse (gaussians förblir, hvor de allerede er gode). V467 og V536 bekræftede 5e-5 som optimal — 1e-5/2e-5 for lidt eksploration, 1e-4 for meget (splats løber ud). Cosine-decayes over træningstiden til T69 mcmcNoiseDecayEnd — vid slutningen av decay-området er støj reelt 0, og gaussians konvergerer.
T64mcmcOpacityRegWeight
DETALJER
Default: 0.0 (= deaktiveret i RadianceKit defaults, paper: 0.01) Range: 0 eller 0.001 – 0.05 Defined in:
TEKNISKT
MCMC-specifik L1-penalty på opacity. Paper-default 0.01 (trykker ubrugte gaussians mod nul, gör dem tilgængelige for relocation). V464b viste dock: uden reg är det målbart bedre i RadianceKit (session 28 bekræftet). Grund: pruning-kriteriet defineret med T68 mcmcDeadOpacityThreshold rækker alene — en yderligere L1-penalty tvinger också værdifulde, lav-opacity- gaussians til at dø. Derfor default 0. Advarsel: i 1.4.3-beta-build var initializer-default'en fejlagtigt 0.01, vilket resulterede i mass-extinction-bug'en (se T61-forklaring); siden 1.4.4 fastsat på 0.0.
T65mcmcScaleRegWeight
DETALJER
Default: 0.0 (= deaktiveret, paper: 0.01) Range: 0 eller 0.001 – 0.05 Defined in:
TEKNISKT
MCMC-specifik L1-penalty på skala-egenværdier. Paper-default 0.01. V464b: uden reg bedre, samme begrundelse som T64. Disabled i alle RadianceKit-MCMC-presets. Advarsel som vid T64: 1.4.3-bug.
T66mcmcRelocationInterval
DETALJER
Default: 100 (initializer + alle MCMC-presets, paper-standard), 155 (P9 Outdoor — Q7-BayesOpt-optimum) Range: 50 – 500 Defined in:
TEKNISKT
Iterations-interval, hvor MCMC reloacerer døde gaussians (sigmoid(opacity) < T68 mcmcDeadOpacityThreshold) til nye positioner. V537 testede 50 (for forstyrrende, loss svinger) og 200 (marginalt dårligere, MCMC mister reaktionsevne). 100 er optimal. Q7-BayesOpt på Bicycle fandt 155 som scen- specifikt optimum for outdoor — de let længere intervaller giver Adam mere tid til at integrere nyplacerede gaussians, före nästa reloc-event sætter dem under pres.
T67mcmcWarmupIterations
DETALJER
Default: 500 Range: 100 – 5 000 Defined in:
TEKNISKT
Antal initial-iterationer, hvor ingen MCMC- relocation endnu sker. Først efter denna warmup begynder reloc- logikken. Mening: i de første iterationer er opacity-værdierne endnu inte afbalancerede — om der startedes direkte med reloc, ville gaussians bli placeret de forkerte steder og straks skulle flyttes igen, vilket ødelægger Adam-momentum. Paper-default 500. RadianceKit overtager denna värde, fordi V464b viste, at den er robust.
T68mcmcDeadOpacityThreshold
DETALJER
Default: 0.005 (initializer, paper-standard), 0.01 (.fullMCMC og alle MCMC-presets — V535-optimum) Range: 0.001 – 0.05 Defined in:
TEKNISKT
sigmoid(opacity)-tærskel, under vilken en gaussian regnes som „død" og kommer i betragtning til relocation. V535 fandt 0.01 som optimal (0.005 marginal, 0.02 dårligere). Højere = mere aggressiv reloc (flere gaussians flyttes), lavere = mere forsigtig. 0.01 svarer ca. til „0.5 % visuel synlighed". P10 Indoor bruger via Q7-BayesOpt 0.0142 som optimum.
T69mcmcNoiseDecayEnd
DETALJER
Default: 0 (initializer = „ingen decay"), 160 000 (.fullMCMC = 80 % av 200K), 96 000 (.mcmcBalanced = 80 % av 120K), 40 000 (.mcmcPreview) Range: 0 eller 1 000 – Defined in:
TEKNISKT
Iteration, hvor T63 mcmcNoiseScale-støj dæmpes fuldstændigt til nul (cosine-decay fra iter 0 til her). V497c/V502 fandt 80 % av maxIterations optimal — giver MCMC nok eksplorations-tid, men lader de sista 20 % gå til konvergens uden støj. 0 = konstant støj over alle iterationer (sjældent meningsfuldt, MCMC kan så inte konvergere).
T70mcmcGrowthRate
DETALJER
Default: 0.05 (paper-standard = 5 %) Range: 0.01 – 0.2 Defined in:
TEKNISKT
Vækstrate av MCMC-populations-targetet pr. relocation-step. Logikken: vid hver reloc-event øges mål-populations-størrelsen med (1 + growthRate), tills T62 mcmcMaxGaussians (eller den per T72/T73 skalerede variant) er nået. V512/V522 fandt 0.05 som optimal — højere värden fører til for snabb vækst (gaussians indsættes, före Adam-momentum kan integrere dem), lavere til under-densificerede scener til sidst.
T71mcmcSigmoidK
DETALJER
Default: 100.0 Range: 10.0 – 500.0 Defined in:
TEKNISKT
Sigmoid-sharpness-parameter for MCMC-noise- attenuation. I SGLD-skridtet dæmpes per-gaussian-støjen med — højt-opake gaussians (om logit er positiv) får eksponentielt mindre støj end lavt-opake. K = 100 er skarp, sprich overgangen fra „fuld-noise" til „ingen-noise" sker meget snabbt omkring opacity 0.5. V484–V487 fandt K = 100 optimal — mindre värden (10–50) lader också højt-opake gaussians wackle med (ødelægger konvergerede gaussians), større (> 500) gör overgangen kunstigt hård, og døde gaussians flyttes slet inte mere.
T72mcmcCapMultiplier
DETALJER
Default: 3.0 (initializer + .fullMCMC), 2.0 (.mcmcPreview), 2.5 (.mcmcBalanced), 2.98 (P8 Render), 5.32 (P9 Outdoor), 1.76 (P10 Indoor) Range: 0 (= deaktiveret) eller 1.0 – 10.0 Defined in:
TEKNISKT
1.4.5-feature: scen-adaptiv cap-skalering. Om T73 mcmcAutoScaleByScene true, beregnes det effektive cap som (klampet til buffer-kapacitet). Baggrund: vid store scener (f.eks. 1 545-foto-droneflyvning → 158 K SfM-init) er T62 = 150 000 for lavt — density-control ville slet inte kunde vokse. Med multiplier 3.0 skaleres cap'et i detta exempel til 474 K (158 K × 3.0). Q7-BayesOpt fandt scen- specifikke optima: outdoor profiterer av høj multiplier (5.32 → ~830 K cap vid 156 K bicycle-init), indoor nøjes med 1.76 (vægge mætter snabbare). Fuld upplösning av cap'et se -metoden.
T73mcmcAutoScaleByScene
DETALJER
Default: true (initializer + alle MCMC-presets) Range: boolean Defined in:
TEKNISKT
1.4.5-feature: master-switch for scen-aware cap- logikken (se T72 +). Om false, bruges udelukkende T62 mcmcMaxGaussians som cap (tilbage til 1.4.4-adfærd). Som standard tændt, fordi mass-extinction-problemerne vid store scener fra 1.4.3 annars kommer tilbage. Manuelt deaktivere kun, om du eksplicit vil sætte et hårdt cap — f.eks. for at träna en 150 K-variant, om slutstørrelse kan planlægges.
Mip-splatting (Q1.5) (T74–T76)
Status: Q1.5 blev 2026-05-25 efter 14 autonome iterationer + overnight-1.5M-confidence-check kasseret som „closed no-win" (max Δ@2× = +0.27 dB, original-gate krævede ≥ +1.5 dB middelværdi over 0.5×/2×, FAILT på 0/11 pair-scenes). Felterne förblir opt-in til forskningseksperimenter; alle production- presets har. Se verdict:
docs/plans/2026-05-25-phase-q1.5-final-verdict.md.
T74useMipSplatting
DETALJER
Default: false (alle production-presets), true (.fullMCMCMip — forsknings-sibling) Range: boolean Defined in:
TEKNISKT
Aktiverer Mip-splatting (Yu et al. CVPR 2024): 3D-smoothing-filter + 2D-filter + α-kompensation, der begrænser per-gaussian-frekvensen til Nyquist-grænsen av den tætteste træningskamera-samplingsrate. Teoretisk mål: eliminering av aliasing vid rendering i off-training-skalaer (0.5× eller 2× av træningsopløsningen). Aktiveret i preprocess- og backward- projection-shaderne, funktionelt korrekt verificeret i Q1.5-D- test. Men: det originale acceptance-gate (Δ@1× ≥ +0.3 dB OG avg(Δ@0.5×, Δ@2×) ≥ +1.5 dB) blev inte nået på någon av de 11 pair-scenes. Maksimalt observeret: family 750K classic Δ@2× = +0.270 dB. Outdoor-scener (Truck, Flowers) viste endda forværring 1× og 0.5×. Hypotese: 3D-smoothing konkurrerer med MCMC-relocation vid high-Gs. Feltet förblir til fremtidig multi-scale-re-eval med korrekt Mip-NeRF-360-metodologi (se O3-backlog i benchmark-stien).
T75mipSmoothing3DScale
DETALJER
Default: 0.2 (paper-default) Range: 0.05 – 1.0 Defined in:
TEKNISKT
3D-smoothing-skala-parameter (Yu et al. §3.3, paper- default 0.2). Større = mere world-space-udjævning pr. gaussian (= mere anti-aliasing, men också mere blur i default-skalaen), mindre = skarpere, men mere modtagelig for aliasing. Konsulteres kun, om T74 useMipSplatting = true. I Q1.5-tests inte yderligere optimeret — A/B-gate'en havde allerede tabt med paper-default 0.2, yderligere sweeps ville være nytteløse.
T76mipFilter2DVariance
DETALJER
Default: 0.3 (= præcis V242-legacy-adfærd) Range: 0.1 – 1.0 Defined in:
TEKNISKT
2D-Mip-filter-varians, der adderes til Σ_2D- diagonalen (varians direkte, inte kvadreret). 0.3 er præcis V242-legacy-værdien, der före Mip-splatting var hardkodet i kerneler. Om T74 useMipSplatting = false, ignorerer kernel denna värde fuldstændigt og skriver det hardkodede 0.3 — så baselinen inte kan regredere (Codex-round-1-S3-1-garanti). Om, bruges den her satte värde. Forbliver i feltkataloget til Mip-sweeps.
Adaptive densification (Q5) (T77–T79)
T77adaptiveDensification
DETALJER
Default: false Range: boolean Defined in:
TEKNISKT
Q5-feature: rolling-median-tracker som alternativ til faste T11 densifyGradThreshold. Om true, overskrives den aktuelle tærskel i hvert densify-step med median(seneste N avgGrad-samples) × T79 adaptiveDensifyMultiplier. N = T78 adaptiveWindow. Strengere end V440 p98 (den katastrofale 63 K-pruning-fælde), median + 2× sidder omtrent vid p70–p80 av gradient-fordelingen i steady state. Q5-tests: alenestående FAIL 0/3 scener, men sammen med Q6 (se T80/T81) PASS 1/3 scener — bundtet Q5+Q6 blev 2026-05-25 godkendt som opt-in og aktiveres via CLI –adaptive-densify. Q6 er her „carrier" av kvalitetsgevinsten, Q5 bidrager snarere til stabilitet.
T78adaptiveWindow
DETALJER
Default: 1 000 Range: 100 – 10 000 Defined in:
TEKNISKT
Rolling-median-vindue i densification-events (IKKE iterationer — hvert T13 densifyInterval-step leverer et sample). Default 1 000 — betyder vid, at de senaste 100 000 tränings-iterationer bidrager til medianen, altså typiskt hele træningshistorikken tills her. Tidlig fase (före T78 samples): tracker returnerer nil → fallback på fast tærskel T11. Kun relevant om.
T79adaptiveDensifyMultiplier
DETALJER
Default: 2.0 Range: 1.0 – 4.0 Defined in:
TEKNISKT
Multiplikator på rolling-median for den adaptive tærskel. Default 2.0 svarer ca. til p70–p80 av den typiske gradient-fordeling. Lavere = mere aggressiv vækst (flere kloner), højere = strengere (færre kloner). Q5-tests i range 1.5–3.0 — 2.0 bedste default. Kun relevant om.
Curriculum (Q6) (T80–T81)
T80curriculumResolutionRamp
DETALJER
Default: false Range: boolean Defined in:
TEKNISKT
Q6-feature: tränings-upplösning starter vid 0.5× og skifter vid T50 positionLRScheduleEndIteration / 2 (eller T1 maxIterations / 2, om T50 inte er sat) til T22 trainingRenderScale. Bruger den i Q1.5.1 udviklede resize/restoreImageBuffers-infrastruktur. Overskriver T23 resolutionWarmupScale, om aktiveret. Q6 er godkendt som „carrier av kvalitetsgevinsten" i Q5+Q6-bundtet (se T77) — den trinvise opløsningsforøgelse giver appen tid til at hitta grov geometri på den lavere upplösning, före den går over til det fine detalje-arbejde. Via CLI: –curriculum-resolution.
T81curriculumSHProgression
DETALJER
Default: false Range: boolean Defined in:
TEKNISKT
Q6-feature: overskriver T21 shDegreeUpgradeIterations med [maxIter/4, maxIter/2, maxIter*3/4], fordeler altså SH- optrapningerne jævnt over træningstiden i stedet for at front- loade dem. Hypotese: stabil geometri etableres före color-detail- eksplosion, vilket positionerer view-direction-afhængige glans- effekter mere præcist. Q5+Q6 sammen PASS 1/3 scener, Q6 som carrier av gevinsten (Q5 alene FAIL). Via CLI: –curriculum-sh.
Statiska presets (TP1–TP9)
Her kun de strukturelle skillnader til initializer-default'en. Den fulde marketing-beskrivelse av de ti UI-presets P1–P10 hittar du i kapitel 7.
TP1.preview
DETALJER
Diagnose-/forhåndsvisnings-preset til systemer ≥ 10 GB RAM. Overrides i forhold til initializer: - 30 000 → 5 000 - 15 000 → 3 500 (70 % av maxIter) - 1.6e-6 → 1.6e-5 (10× højere, mindre aggressiv decay) -,,,, hver 2× (V176) - 3 000 → 100 000 (reelt fra, V172: reset ødelægger korte træninger) - [1K, 2K, 3K] → [1K, 2K] (V182: degree 3 konvergerer inte i 2K iter) - 1.0 → 0.5
TP2.full
DETALJER
Production-Quality Classic. Overrides: - 30 000 → 35 000 (V550: 40K-tests Truck-overtraining +10.7 % Gs vid -1.3 % L1) - 15 000 → 5 000 (V310 sweet spot, V338 7K worse) - Alle LR'er 2× (V188) - 1.6e-6 → 1.6e-5 (V45 10×) - 2e-6 → 1.1e-6 (V335) - 100 → 200 (V112) - 0.005 → 0.001 (V393) - 3 000 → 100 000 (V194 disabled, V421 confirmed) - [1K, 2K, 3K] → [2K, 5K, 8K] (V228 delayed) - 0.0 → 0.9995 (V546 HTGS, 14 % forbedring) - 50 (uændret, V546) - false → true (V438) - 0 → 20 000 (V431) - true (V443, allerede initializer-default for .full)
TP3.fullClassicPaper
DETALJER
Q1.5-A-test-sibling av TP2, paper-tro Classic. Overrides i forhold til TP2: - 35 000 → 30 000 (paper-standard) - 5 000 → 15 000 (paper: 50 % av maxIter) - 1.6e-5 → 1.6e-6 (paper-default) -,, tilbage til paper defaults (0.05, 0.005, 0.001) - 1.1e-6 → 2e-7 (kalibreret for ~1-2M Gs på Bicycle) - 200 → 100 (paper) - 0.001 → 0.005 (paper-default) - 100 000 → 3 000 (paper §5.2, risikabelt — kan udløse V194- regression) - 0.9995 → 0.0 (paper har ingen decay) - 20 000 → 30 000 (cosine kører til 100 % av maxIter)
TP4.fullMCMC
DETALJER
Production-Quality MCMC. Overrides i forhold til initializer: - 30 000 → 200 000 (V534, MCMC har brug for 5× flere iter end Classic) - 15 000 → 160 000 (V504b 80 % av maxIter) - 1.6e-6 → 1.6e-5 - LR-schedule som TP2 (alle 2×) - 0.2 → 0.05 (V521b/V534: MCMC har brug for stærkere L1-signal) - [1K, 2K, 3K] → [2K, 5K, 8K] - .classic → .mcmc - 150 000 (allerede i initializer, bekræftet i preset) - 5e-5 (V467/V536 optimal) - 0.005 → 0.01 (V535 optimal) - 0 → 160 000 (80 % av maxIter, V497c/V502) - 3.0 (allerede i initializer) - true (allerede i initializer) - 3 000 → 200 000 (reelt fra, MCMC bruger reloc i stedet for reset)
TP5.fullMCMCMip
DETALJER
Q1.5-D-test-sibling av TP4, med Mip-splatting + paper- magnitude-MCMC-budget. Overrides i forhold til TP4: - mcmcMaxGaussians 150 000 → 1 500 000 (10×, paper-magnitude) - useMipSplatting false → true (Mip-on)
TP6.classicBalanced
DETALJER
Mid-tier Classic. Overrides i forhold til TP2: - 35 000 → 20 000 (V149: 20K = 30K vid 33 % mindre tid) - 20 000 → 0 (cosine kører til maxIter = 20K, ingen extended phase)
TP7.mcmcPreview
DETALJER
MCMC-diagnose. Overrides i forhold til TP4: - 200 000 → 60 000 (V494b) - 160 000 → 48 000 (80 %) - 150 000 → 100 000 (V473b) - 160 000 → 40 000 (V494b) - 3.0 → 2.0 (1.4.5: preview = lighter scaling)
TP8.mcmcBalanced
DETALJER
Mid-tier MCMC. Overrides i forhold til TP4: - 200 000 → 120 000 (V518) - 160 000 → 96 000 (80 %) - 160 000 → 96 000 (80 %) - 3.0 → 2.5 (mellan Preview 2.0 og Full 3.0)
TP9.quickTest
DETALJER
Ren funktionstest. Overrides i forhold til initializer: - 30 000 → 1 000 - 15 000 → 500 - 2e-6 → 4e-6 (kalibreret for 0.25× upplösning) - 100 → 50 - 3 000 → 100 000 (fra, da alt for kort) - 1.0 → 0.25
Metod:
Signatur: public func resolveMcmcMaxGaussians(initialPointCount: Int, bufferCapacity: Int) -> Int Defined in:
Eneste source-of-truth for spørgsmålet „hvor mange gaussians måste MCMC maksimalt lade vokse?". Beregnes ud fra tre input: det konfigurerede T62 mcmcMaxGaussians (med mass-extinction-floor 150 000, om 0), (antal SfM- init-punkter) og (forhåndsallokeret gaussian- buffer-størrelse). Logik:
+ base = T62 > 0 ? T62: 150_000 (mass-extinction-floor beskytter mod initializer-default-bugs som 1.4.3-mass-extinction- hændelsen) + Om T73 mcmcAutoScaleByScene && initialPointCount > 0 && T72 mcmcCapMultiplier > 0: - scaled = max(base, ceil(initialPointCount × T72)) annars
+ Om bufferCapacity > 0: return min(scaled, bufferCapacity) + Ellers return scaled
Eksempel: Bicycle (Mip-NeRF 360, 194 foto-frames) → SfM-init ~156 K punkter, T62 = 150 000, T72 = 5.32, buffer-kapacitet 8 M. Resolved cap = min(8M, max(150K, ceil(156K × 5.32))) = min(8M, 830K) = 830 K. Det är det effektive vækst-cap, som MCMC-relocation-logikken holder sig til.
Beregner det reelle maksimum-splat-antal vid MCMC. Tager din inställning, ser, hvor mange punkter din scen har i starten, og skalerer med multipliceren, om automatisk tilpasning er tændt. Sådan tilpasser cap'et sig scenen i stedet for at tvinge samme värde til en lille og en gigantisk scen. Du behöver inte selv kalde metoden — træningen bruger den internt.
Vilket fält till vad? (fusklapp)
| Mål | Felter at dreje på |
|---|---|
| Mere detalje i det fjerne | T62 mcmcMaxGaussians højt, T72 mcmcCapMultiplier 5+ |
| Mere detalje generelt (Classic) | T1 maxIterations højt (≤ 40K), T2 densifyUntilIteration ≤ 14 % av T1 |
| Reducere floaters i droneflyvninger | T43 frustumCullEnabled til, T20 skyMaskingEnabled til, T45 skyDomeEnabled til |
| Pæn himmel i udendørs scener | T45 skyDomeEnabled til, T47 skyDomeRadiusMultiplier 30–60 |
| Mindre eksport-fil | Strategi .mcmc (T61), T56 postTrainingCompactification til, T62 mcmcMaxGaussians ≤ 200K |
| Hurtigere träning | T22 trainingRenderScale 0.5, T1 maxIterations halvere — men inte begge! |
| Bedre højlys | T21 shDegreeUpgradeIterations med [2K, 5K, 8K] (ingen early-front-load), MCMC + 200K iter |
| Holde Mac responsiv | T25 throttleDelayMs 5–10 (koster ~15 % träningstid) |
| Live-forhåndsvisning oftere | T59 livePreviewInterval ned til 10–20 |
| Blødere overgange vid skygger | T17 ssimWeight lidt højt (0.15–0.25), men inte over 0.3 |
| Holde indendørs rum kompakt | P10 Indoor-preset (, T72 = 1.76) |
Farliga fält
Disse felter kan vid fejl-konfiguration føre til OOM, app-crash, mass-extinction av gaussians eller ubrugelige benchmark-data. Ska håndteres med forsigtighed:
- T11 densifyGradThreshold — en halvering kan generere 2–4× så mange gaussians, vilket snabbt sprænger GPU-lageret. Obs också: ska passe til T22 trainingRenderScale (1.0× → 1e-6, 0.5× → 2e-6, 0.25× → 4e-6). - T72 mcmcCapMultiplier — vid store scener med > 200 K SfM-init-punkter og multiplier > 5 opstår et resolved-cap på millioner av gaussians. På 36-GB-RAM-Mac'er OOM muligt. Outdoor-preset 5.32 fungerer kun, fordi Mip-NeRF-360-Bicycle har 156 K init-punkter → 830 K cap. - T39 testViewIndices — manuel inställning kan gøre benchmarket ubrugeligt (alle indekser > N → ingen holdouts). Lad –benchmark-flaget sætte det. - T64 mcmcOpacityRegWeight og T65 mcmcScaleRegWeight — i 1.4.3-beta sat til 0.01, vilket førte til mass-extinction (460 K → 5 gaussians på en iteration). Siden 1.4.4 fastsat på 0.0, men manuel forhøjelse kan reproducere problemet. - T15 opacityResetInterval — om inte 100 000+ (reelt fra) og træningen er kortere end 10 000 iterationer, ødelægger reset konvergensen. .preview har det därför på 100 000 trods maxIterations = 5 000. - T54/T55 densifyPhase2* — two-phase densification er i tests afsluttet i 0-gaussians-cascade. Lad begge stå på 0. - T74 useMipSplatting — Q1.5 closed-no-win 2026-05-25, kan endda försämra PSNR på några outdoor-scener. Default off, opt-in kun til forskning.
Om et felt står på denna liste, og du vil ændre det, så lav først en sikkerhedskopi av din nuværende preset (eksport som JSON), og overvej, om du kan måle resultatet reproducerbart — annars vid du bagefter inte, om du har fremkaldt en forbedring eller forværring.