Användarguide

Kapitel 6 — Tränings-konfiguration

Preview-preset eksporteret som JSON og vist i TextEdit — felter id/name/category/version/createdAt/description, trainingConfig med alle relevante parametre (maxIterations 5000, densifyUntilIteration 3500, ssimWeight 0.20, renderScale 0.50, strategy classic, cameraAlignment applePhotogrammetry, densifyGradThreshold 2.0e-06, opacityResetInterval 3000, minOpacity 0.005, seks bool-toggles)
Preview-preset eksporteret som JSON og vist i TextEdit — felter id/name/category/version/createdAt/description, trainingConfig med alle relevante parametre (maxIterations 5000, densifyUntilIteration 3500, ssimWeight 0.20, renderScale 0.50, strategy classic, cameraAlignment applePhotogrammetry, densifyGradThreshold 2.0e-06, opacityResetInterval 3000, minOpacity 0.005, seks bool-toggles)

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 T2T1 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 T54T1 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ålFelter at dreje på
Mere detalje i det fjerneT62 mcmcMaxGaussians højt, T72 mcmcCapMultiplier 5+
Mere detalje generelt (Classic)T1 maxIterations højt (≤ 40K), T2 densifyUntilIteration ≤ 14 % av T1
Reducere floaters i droneflyvningerT43 frustumCullEnabled til, T20 skyMaskingEnabled til, T45 skyDomeEnabled til
Pæn himmel i udendørs scenerT45 skyDomeEnabled til, T47 skyDomeRadiusMultiplier 30–60
Mindre eksport-filStrategi .mcmc (T61), T56 postTrainingCompactification til, T62 mcmcMaxGaussians ≤ 200K
Hurtigere träningT22 trainingRenderScale 0.5, T1 maxIterations halvere — men inte begge!
Bedre højlysT21 shDegreeUpgradeIterations med [2K, 5K, 8K] (ingen early-front-load), MCMC + 200K iter
Holde Mac responsivT25 throttleDelayMs 5–10 (koster ~15 % träningstid)
Live-forhåndsvisning oftereT59 livePreviewInterval ned til 10–20
Blødere overgange vid skyggerT17 ssimWeight lidt højt (0.15–0.25), men inte over 0.3
Holde indendørs rum kompaktP10 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.