Kapitola 6 — Konfigurace trénování

Typický export přednastavení ve formátu JSON. Pole nejvyšší úrovně: id (UUID), name, (classic | mcmc | sceneClass | custom), (verze schématu), (časové razítko), (volný text). Vnořený -objekt obsahuje parametry kritické pro reprodukovatelnost — při importu se celý blok načte do konfigurace trénování a výchozí hodnoty z verze aplikace vyplní pole, která v JSON chybí (např. po aktualizaci aplikace). Kdo předá přednastavení jinému Macu, jednoduše pošle tento soubor JSON dál.
Konfigurace trénování je srdcem každého tréninkového běhu v RadianceKit. Shromažďuje každý parametr, který ovlivňuje trénování — od maximálního počtu iterací přes osm rychlostí učení až po speciální pole pro MCMC, Mip-Splatting, curriculum a scene-aware cap-logiku. Upravuješ ji v postranním panelu v sekci Konfigurace trénování (Expert View), ukládáš ji jako přednastavení nebo ji předáváš jako export do JSON dalšímu Macu. Při trénování se přesně tento objekt zamrazí a předá GPU backendu.
Tato kapitola je referenční materiál pro pokročilé uživatele. Vypisuje 80 nastavitelných polí konfigurace trénování, 9 dodávaných přednastavení a scénově závislé řešení Gaussian-Capu. V případě pochybností platí hodnota, kterou nastaví zvolené přednastavení — uvidíš ji v Inspektoru nebo v JSON exportu přednastavení.
Obsah:
+ Iterace (T1–T2) + Rychlosti učení (T3–T10) + Densification — Classic (T11–T16) + Loss (T17–T20) + SH-Degree-Progression (T21) + Výkon (T22–T24) + Diagnostika a příprava bodového mračna (T26–T30) + Regularizace (T31–T37) + Refinement (T38–T44) + Sky-Dome (T45–T48) + Adam + LR-Schedule (T49–T55) + Post-processing + Apple AI (T56–T60) + MCMC-Densification (T61–T73) + Mip-Splatting (T74–T76) + Adaptivní Densification (T77–T79) + Curriculum (T80–T81) + Statická přednastavení (TP1–TP9) + Jak aplikace určuje Gaussian-Cap + Které pole k čemu? (Cheat-Sheet) + Nebezpečná pole
Iterace (T1–T2)
T1maxIterations
DETAILY
Výchozí: 30 000 (Initializer), 35 000 (.full), 200 000 (.fullMCMC) Rozsah: 1 000 – 500 000 (UI-slider), žádná pevná horní hranice v logice
TECHNICKY
Celkový počet trénovacích iterací, kterými backend projde. Iterace znamená jeden forward-render jedné trénovací kamery, jeden backward-pass přes všechny komponenty loss funkce (L1 + SSIM + volitelné regularizace + sky-mask) a jeden krok Adam-optimizeru. Toto číslo přímo ovlivňuje ostatní plány (schedules): Position-learning-rate následuje cosine-annealing křivku od 0 do buď T1 samotného, nebo do T50 positionLRScheduleEndIteration; Densification se zastaví na T2 densifyUntilIteration; MCMC-noise-decay skončí na T69 mcmcNoiseDecayEnd; SH-degree-upgrady proběhnou na třech značkách definovaných v T21. U klasické densifikace je osvědčený rozsah 20 000–35 000 iterací, u MCMC 60 000–200 000. Výrazné navýšení nad hodnoty uložené v presetech přináší jen zřídka dodatečnou kvalitu — Adam-momentum saturuje a bez konce LR-decay loss stagnuje. Naopak podkročení ~5 000 vede k neúplně zkonvergovaným geometriím (density-control má příliš málo času na klonování/dělení).
T2densifyUntilIteration
DETAILY
Výchozí: 15 000 (Initializer), 5 000 (.full), 160 000 (.fullMCMC) Rozsah: 0 – T1 maxIterations
TECHNICKY
Iterace, od které densifikace přestává probíhat. Do této chvíle se Gaussians klonují, dělí a prořezávají podle pravidel parametrizovaných v T11–T16 (Classic) nebo T67–T70 (MCMC); poté zůstává počet Gaussians konstantní a optimalizují se už jen pozice, rotace, škály, opacity a SH-koeficienty (fáze refinementu). V originálním 3DGS-paperu je hodnota 50 % z T1, v .full-presetu RadianceKitu jen ~14 % (5 000 z 35 000): Po zhruba 5 000 iteracích další densifikace výsledek spíš zhoršuje — víc floaters, víc paměti, žádný zisk kvality. MCMC naproti tomu nechává relokaci běžet až do 80 % z T1, protože MCMC neprodukuje škodlivé floaters. Pokud je T2 zvoleno příliš malé (< 1 000), vznikne příliš málo Gaussians; příliš velké u Classic (> 50 % z T1) vede k overgrowth a RGB-saturation-outliers (viz outdoor-overtraining-zjištění).
Learning Rates (T3–T10)
T3positionLearningRate
DETAILY
Výchozí: 0.00016 Rozsah: 1e-7 – 1e-3 (doporučeno)
TECHNICKY
Adam learning rate pro XYZ pozici každé Gaussian na začátku tréninku (iterace 0). Řídí se křivkou cosine annealing a klesá v průběhu tréninku na T4 positionLearningRateFinal. Výchozí hodnota 0.00016 pochází z původního 3DGS paperu (Kerbl et al.~2023) a v RadianceKitu se ani při zvýšení rozlišení obrazu neškáluje — pozice se pohybuje ve světovém souřadnicovém systému, ne v pixelovém prostoru. Výrazné zvýšení (> 0.0005) způsobí, že Gaussians skáčou přes velké vzdálenosti a loss se stane nestabilním; hodnoty výrazně nižší (< 0.00005) vedou k tomu, že špatně inicializované mračno bodů nikdy nenajde své místo. Pro naprostou většinu scén je tedy výchozí hodnota správnou volbou. Pozor: u .fullMCMC ponecháváme tuto hodnotu záměrně na výchozí — MCMC potřebuje konstantní learning rate pro svou relocation logiku, takže ladění zde nic nepřinese.
T4positionLearningRateFinal
DETAILY
Výchozí: 0.0000016 (Initializer + paper), 0.000016 (.full, .fullMCMC — 10× vyšší) Rozsah: 0 – T3 positionLearningRate
TECHNICKY
Konečná hodnota cosine annealing křivky position LR. Dosáhne se jí buď při T1 maxIterations, nebo, je-li nastavena, při T50 positionLRScheduleEndIteration. Preset .full v RadianceKitu používá 0.000016 — tedy 10× vyšší než výchozí hodnota v paperu 0.0000016. Jak výrazně nižší konečná hodnota, tak výrazně vyšší počáteční hodnota citelně zhoršují výsledek. Vysoká konečná hodnota není kompromisem, ale záměrnou volbou: při příliš silném decay ztrácejí Gaussians během refinement fáze schopnost přizpůsobit se nově přibylým kandidátům na densifikaci. Fázi schedule lze zkrátit (T50 < T1), takže T4 je dosaženo ještě před koncem tréninku a zbytek tréninku probíhá při konstantní mini-LR — typická konfigurace: T50 = 20 000, T1 = 35 000, refinement tedy při 0.000016 po 15 000 iterací.
T5shDCLearningRate
DETAILY
Výchozí: 0.0025 (Initializer + paper), 0.005 (.full a všechny MCMC presety — 2×) Rozsah: 0.0001 – 0.05
TECHNICKY
Adam learning rate pro DC složku (degree 0, tedy konstantní albedo) barvy sférických harmonik. SH-DC odpovídá na směru nezávislému základnímu tónu Gaussian, jakési „základní barvě". RadianceKit zdvojnásobuje výchozí hodnotu z paperu v quality presetech — to urychluje konvergenci barev, což je nutné, protože při krátkém tréninku (< 5 000 iterací) by se SH-DC jinak nedostalo do formy. Na rozdíl od geometrických LR nemá SH-DC žádný decay; learning rate zůstává konstantní přes všechny iterace (nebo se řídí pouze volitelným decayem z extended fáze podle T51). Ještě výrazně vyšší hodnoty (kolem 0.01) výsledek opět zhoršují a barvy se stanou nestabilními.
T6shRestLearningRate
DETAILY
Výchozí: 0.000125 (Initializer + paper), 0.00025 (.full a MCMC — 2×) Rozsah: 0.000001 – 0.005
TECHNICKY
Adam learning rate pro koeficienty sférických harmonik vyššího řádu (degree 1, 2, 3 — tedy na směru pohledu závislé barevné složky, které mají na starosti lesk, odlesky a jemné stínování). 20× menší než T5 podle konvence z paperu, protože tyto koeficienty rostou v počtu kvadraticky (3 pro degree 1, 5 pro degree 2, 7 pro degree 3 → celkem 15 floatů na Gaussian) a bez menší learning rate by přesytily obraz. Odemyká se ve dvou krocích — do první značky v T21 shDegreeUpgradeIterations je aktivní jen degree 0 (tedy jen T5), poté 1, později 2, nakonec 3. Nízké hodnoty jsou zde obzvlášť důležité na scénách s hodně difúzním osvětlením; u velmi lesklých povrchů (autolak, voda) se ladění nevyplácí — samotná SH reprezentace je omezená.
T7opacityLearningRate
DETAILY
Výchozí: 0.05 (Initializer + paper), 0.1 (.full, MCMC — 2×) Rozsah: 0.001 – 1.0
TECHNICKY
Adam learning rate pro logit-opacitu každé Gaussian. Aplikace ukládá opacitu jako neomezenou float hodnotu a transformuje ji pomocí sigmoidy do [0, 1]; LR působí v logit prostoru. Quality presety zdvojnásobují výchozí hodnotu z paperu na 0.1; to zefektivňuje pruning — mrtvé Gaussians klesnou rychleji pod T14 pruneOpacityThreshold. To, která hodnota se nejlépe hodí, přitom závisí na konfiguraci Adamu; interakce těch dvou není triviální. Nízké hodnoty (< 0.01) způsobují, že „mrtvé" Gaussians leží navěky a zabírají paměť; příliš vysoké hodnoty (> 0.5) mohou vést k explozi opacity, proto optimizer pevně omezuje logit hodnotu na [-15, 3].
T8opacityLearningRateFinal
DETAILY
Výchozí: 0.0 (= „žádný decay") Rozsah: 0 nebo 0.001 – T7 opacityLearningRate
TECHNICKY
Volitelná konečná hodnota cosine decay pro opacity LR. Pokud je 0.0, je decay deaktivován a opacity LR zůstává přes celý trénink konstantní na T7. Decay z 0.1 na 0.01 výsledek výrazně zhoršuje; proto je výchozí hodnota „vypnuto". Hypotéza za tímto polem: v refinement fázi by konstantní opacity LR mohla vést k oscilaci, takže splaty, které již dosáhly správné míry průhlednosti, by byly náhodnými výkyvy gradientu znovu posunuty. Empiricky se to nepotvrzuje — logic clamping logitu tomu tak jako tak zabraňuje. Pole zůstává dostupné pro budoucí experimenty; profitovat z něj by mohly i velmi dlouhé MCMC běhy (> 500K iterací).
T9scaleLearningRate
DETAILY
Výchozí: 0.005 (Initializer + paper), 0.01 (.full, MCMC — 2×) Rozsah: 0.0001 – 0.1
TECHNICKY
Adam learning rate pro tři složky měřítka každé Gaussian v log prostoru (RadianceKit ukládá log(scale), aby měřítka zůstala kladná). Výchozí hodnota z paperu 0.005, v RadianceKitu zdvojnásobena na 0.01 pro lepší konvergenci scale u sladěných konfigurací learning rate. Zůstane-li hodnota ve spojení s ostatními quality learning rates u výchozí hodnoty z paperu, vznikne viditelně příliš málo Gaussians — density control nemůže klonovat, protože scale updaty se doťahují příliš pomalu. Scale ovládá rozsah každé Gaussian — příliš rychlé učení vede k „jehličkovým" Gaussians (extrémně dlouhé tenké splaty, viz T34 scaleRatioPruneThreshold), příliš pomalé učení nechává splaty zůstat příliš kompaktní a density control musí příliš často splitovat.
T10rotationLearningRate
DETAILY
Výchozí: 0.001 (Initializer + paper), 0.002 (.full, MCMC — 2×) Rozsah: 0.0001 – 0.05
TECHNICKY
Adam learning rate pro čtyři komponenty kvaternionu každé Gaussian. Kvaternion se v každém kroku optimizeru po Adam updatu znovu normalizuje (L2 norma = 1) — jinak by kovarianční matice zdegenerovala. RadianceKit zdvojnásobuje výchozí hodnotu z paperu v quality presetech, protože rotace má oproti scale / position menší absolutní magnitudy gradientu (na jednotkové sféře zůstává každý krok krátký) a bez 2× by byla rotace v okně 35 000 iterací výrazně nedokonvergovaná. Na NeRF-Blender scénách (Lego, Chair) se rotace projevuje obzvlášť — hrany objektů se správně zarovnají až po 5 000–10 000 iteracích.
Densifikace — Klasika (T11–T16)
T11densifyGradThreshold
DETAILY
Výchozí hodnota: 0.000002 (Initializer, kalibrováno pro 0.5× rozlišení), 0.0000011 (.full, kalibrováno pro 1.0×), 0.000004 (.quickTest, kalibrováno pro 0.25×), 2e-7 (.fullClassicPaper) Rozsah: 1e-8 – 1e-3 (závisí na rozlišení)
TECHNICKY
Práh pro L2-normu obrazově-prostorově projikovaného pozičního gradientu, nad kterým je Gaussian označen pro klonování nebo split. Absolutní hodnota přímo závisí na tréninkovém rozlišení — škáluje se přibližně jako 1/rozlišení² (více pixelů = menší per-pixel gradienty). Proto každá úroveň T22 trainingRenderScale potřebuje kalibrovaný práh: 0.25× → 4e-6, 0.5× → 2e-6, 1.0× → 5e-8 … 1.1e-6 (.full). Výchozí hodnota z paperu 0.0002 je NDC-normalizovaná a v RadianceKit pipeline ve světovém prostoru přímo nesrovnatelná. Pomocí flagu T52 adaptiveDensifyThreshold lze hodnotu za běhu vypočítat z p98 aktuální distribuce gradientu — na reálných scénách ale při tom počet Gaussianů dramaticky klesá (masivní prořezávání); flag zůstává vypnutý. T77–T79 nabízí alternativní adaptivní logiku přes rolling median. Toto pole rozhodně není bez rizika — zmenšení na polovinu vytvoří 2–4× více Gaussianů (tlak na paměť, riziko OOM); zdvojnásobení může scénu poddensifikovat.
T12densifyFromIteration
DETAILY
Výchozí hodnota: 500 Rozsah: 100 – 5 000
TECHNICKY
První iterace, od které je densifikace aktivní. Předtím probíhá jen „holé" učení na počátečním SfM mračnu bodů, bez vytváření nových Gaussianů. Výchozí hodnota 500 pochází z 3DGS paperu a dává inicializaci čas se stabilizovat — pokud se densifikuje už od iterace 0, špatně umístěné SfM body se mnohonásobně naklonují, ještě než vůbec najdou svou správnou pozici. Výrazně pozdější start (např. 1 000) mírně zhoršuje výsledek; zůstaň u výchozí hodnoty.
T13densifyInterval
DETAILY
Výchozí hodnota: 100 (Initializer, MCMC), 200 (.full) Rozsah: 50 – 1 000
TECHNICKY
Kolik iterací leží mezi dvěma kroky densifikace. Ve výchozí hodnotě z paperu 100 — každých 100 iterací se vyhodnotí seznam kandidátů na densifikaci, naklonují/rozdělí a zároveň se odstraní seznam kandidátů na prořezání (sigmoid(opacity) < T14 pruneOpacityThreshold). Pro .full se osvědčila hodnota 200 — to odlehčuje GPU, protože běží méně reorganizačních průchodů, a dává každému Gaussianu více času se po klonovací akci usadit. Kratší intervaly vedou v Quality nastavení k přehuštění densifikace: vzniká podstatně více Gaussianů, aniž by se obraz zlepšil. U MCMC je totéž pole interpretováno jako interval relokace; viz T67 mcmcRelocationInterval pro logiku specifickou pro MCMC.
T14pruneOpacityThreshold
DETAILY
Výchozí hodnota: 0.005 (Initializer, Paper, MCMC), 0.001 (.full) Rozsah: 0.0001 – 0.1
TECHNICKY
Sigmoidní práh opacity, pod kterým bude Gaussian při dalším kroku densifikace smazán. Působí spolu s T7 opacityLearningRate a logikou logit-clamp v optimizeru. V .full je hodnota 0.001 místo 0.005 — splaty, které hrají roli jen z exotických úhlů pohledu, díky tomu zůstávají déle zachovány a přispívají k SH detailu. Ještě menší hodnoty (kolem 0.0001) už nic nepřinesou: prořezává se příliš málo a plýtvá se pamětí. Důležité: Density-Control musí VŽDY prořezávat, i když je kapacita bufferu díky jiným opatřením už plná — jinak se hromadí mrtvé Gaussians a počet zamrzne.
T15opacityResetInterval
DETAILY
Výchozí hodnota: 3 000 (Initializer + Paper), 100 000 (.full = efektivně vypnuto), 200 000 (.fullMCMC = vypnuto) Rozsah: 1 000 – 100 000+
TECHNICKY
Po kolika iteracích se opacita všech Gaussianů resetuje na nízkou hodnotu (~0.01) — opatření z 3DGS paperu, aby se „zamrzlé" splaty znovu posoudily. Ve spojení s RadianceKit warmupem, stochastickým tréninkovým nastavením a zdvojenými learning rates stojí opacity reset citelně kvalitu, a logit-clamp v optimizeru jeho funkci stejně už pokrývá. Proto je v .full prakticky vypnutý (100 000 > 35 000 = nikdy nespustí). U .fullClassicPaper (paperu věrná varianta) je záměrně opět nastaven na 3 000 — tam jde o dosažení Gaussian budgetů z originálního paperu.
T16maxScreenSize
DETAILY
Výchozí hodnota: 0.0 (= vypnuto) Rozsah: 0 (vypnuto) nebo > 0
TECHNICKY
Maximální velikost v obrazovém prostoru (v projikovaných pixelech), které smí Gaussian dosáhnout, než je nuceně rozdělen. Hodnota je nastavena na 0 — Density-Control v RadianceKit místo toho používá práh škály ve světovém prostoru ze stejné gradientní logiky. Zůstává v katalogu polí, protože z toho by mohly těžit budoucí experimenty s Mip-Splattingem (T74–T76) nebo scéně specifické splatting strategie. Aktivace (hodnota > 0, např. 20) by donutila velmi zvětšené splaty na obrazovce se rozdělit — relevantní u velkých, hladkých stěn, kde jeden obří splat poskytuje málo detailu.
Loss (T17–T20)
T17ssimWeight
DETAILY
Výchozí: 0.2 (Initializer + Paper + .full), 0.05 (všechny MCMC presety) Rozsah: 0.0 – 1.0
TECHNICKY
Váha D-SSIM podílu v kombinované loss funkci loss = (1 - λ) * L1 + λ * D-SSIM, kde λ = T17. Výchozí hodnota 0.2 z 3DGS paperu je pro Classic Densification správná volba — už 0.3 výsledek citelně zhoršuje. Pro MCMC je naopak vhodná hodnota 0.05, protože MCMC díky své stochastické exploraci potřebuje silnější L1 signální podíl — vyšší SSIM váhy by rozmělnily rozhodování při relokaci. SSIM je výrazně dražší na výpočet než L1 (lokální 11×11 okna přes celý obraz); RadianceKit používá MPS-akcelerovanou implementaci, která zůstává pod 1 ms na 1080p obraz. Presety Scene Class používají scéně-specifické hodnoty mezi 0.082 (.outdoorPreset) a 0.171 (.indoorPreset).
T18ssimWeightRefinement
DETAILY
Výchozí: 0.0 (= „žádná změna, ponechat ssimWeight") Rozsah: 0 nebo 0 – 1.0
TECHNICKY
Volitelná SSIM hodnota pro fázi Refinement po T2 densifyUntilIteration. Zvýšení z 0.2 na 0.3 ve fázi Refinement zhoršuje výsledek v obou mírách — L1 i SSIM; proto je výchozí hodnota 0.0. Hypotéza za tímto polem byla, že po Densification — kdy už nevznikají žádné nové Gaussians — by silnější SSIM podíl maximalizoval strukturální ostrost. Empiricky mylné: zvýšení SSIM váhy nepřímo znamená snížení L1 váhy, a L1 je výrazně výpovědnější signál v Final-Refinement fázi. Pole zůstává dostupné pro budoucí experimenty s perceptuální loss (T60) nebo edge loss (T19), kde by mohla dávat smysl refinement-specifická kompozice loss funkce.
T19edgeLossWeight
DETAILY
Výchozí: 0.0 (= deaktivováno) Rozsah: 0 nebo 0.001 – 1.0
TECHNICKY
Experimentální loss člen: váha Sobel gradient-domain L1 loss, který přímo porovnává hrany obrazu (Ground-Truth Sobel vs. Render Sobel) navíc k L1+SSIM. Hypotéza: informace o hranách je perceptuálním základním kamenem kvality obrazu a explicitní člen by měl motivovat Gaussians, aby lépe trefovaly hrany. V praxi to nic nepřináší: citelná váha (0.1) výsledek zhoršuje, malá (0.01) na kvalitě nic nemění, ale stojí výpočetní čas. Sobel průchod stojí další MPS forward na Ground-Truth i Render. Proto je trvale deaktivováno. Budoucí případ použití: scény s tvrdými umělými hranami (architektura, nábytek, renderingy) by mohly profitovat — Presety Scene Class na to ale nepoužívají tento člen, nýbrž škálují SSIM váhu.
T20skyMaskingEnabled
DETAILY
Výchozí: false (Initializer i všechny presety) Rozsah: boolean
TECHNICKY
Zapíná Sky Masking. Přitom se v každém obraze pomocí frameworku Apple Vision vymaskuje oblast oblohy a loss v této oblasti se nastaví na nulu. Smysl: venkovní scény často trpí tím, že modré/šedé/bílé pixely oblohy vedou aplikaci k tomu, aby umístila Gaussians právě tam — což je vnímáno jako „floater". Bez Sky Mask by loss v této oblasti nikdy nebyl nulový, protože obloha se v obraze mírně mění a aplikace se donekonečna snaží to napodobit splaty. Vision maska se počítá jednou na kameru před trénováním a drží se v RAM. Obvykle se aktivuje spolu s T45 skyDomeEnabled (UI logika v Settings View). U interiérových scén nebo syntetických renderingů ponechejte vypnuté — maska by tam mylně rozpoznávala stropy nebo stěny jako „oblohu".
SH-Degree-Progression (T21)
T21shDegreeUpgradeIterations
DETAILY
Výchozí: [1_000, 2_000, 3_000] (Initializer), [2_000, 5_000, 8_000] (.full, MCMC), [1_000, 2_000] (.preview — Degree 3 přeskočen) Rozsah: [Int], každá hodnota v [0, maxIterations], monotónně rostoucí
TECHNICKY
Iterace, ve kterých se aktivní SH-Degree přepíná z 0→1, 1→2, 2→3. Před první značkou jsou aktivní pouze DC-komponenty (tedy T5 shDCLearningRate), po první značce DC + 3 koeficienty stupně 1, po druhé značce + 5 koeficientů stupně 2, po třetí značce všech 15 koeficientů. Nároky na paměť na jeden Gaussian přitom rostou po stupních — 4 floaty → 16 floatů → 36 floatů → 64 floatů. Kvalitativní přednastavení oddalují zvýšení stupně oproti výchozím hodnotám Initializeru, protože geometrie se má nejdřív stabilizovat, než přijdou na řadu barevné detaily s vyšší frekvencí. Dřívější značky [1K, 2K, 3K] přinášejí v .full znatelně horší výsledek. .preview zastaví na Degree 2, protože Degree 3 se v 5 000 iteracích nestihne konvergovat a jen spotřebovává kapacitu optimizeru. Curriculum (T80–T81) nabízí alternativní logiku, která tento seznam dynamicky přepisuje.
Performance (T22–T24)
T22trainingRenderScale
DETAILY
Výchozí: 1.0 (Initializer, .full, MCMC, Scene-Class), 0.5 (.preview), 0.25 (.quickTest) Rozsah: 0.05 – 2.0 (typicky 0.25, 0.5, 1.0)
TECHNICKY
Render-rozlišení při tréninku relativně k původnímu rozlišení tréninkových obrázků. Při 0.5 se každý obrázek přepočítá na 50 % šířky × 50 % výšky (tedy 25 % pixelů) a Gaussian-rendering probíhá v tomto menším rozlišení. Snižuje jak paměťovou, tak výpočetní náročnost kvadraticky. Důležité: T11 densifyGradThreshold musí odpovídat zvolenému rozlišení — velikosti gradientu škálují s 1/rozlišení², proto má .quickTest (0.25×) mnohem vyšší práh (4e-6) než .full (1.0×, 1.1e-6). RadianceKit varuje u velmi velkých obrázků a automaticky přizpůsobuje — cílové rozlišení 3 MP. U extrémních 4K-vstupních obrázků by dávalo smysl 0.5 nebo dokonce 0.25, jinak běží každý Mac jen v CPU-Compaction.
T23resolutionWarmupScale
DETAILY
Výchozí: 0.0 (= deaktivováno) Rozsah: 0 nebo 0.1 –
TECHNICKY
Trénuj fázi densifikace (iter 0 až T2) v nižším rozlišení než fázi refinementu. U .full je to vypnuté, protože při T22 = 1.0 a Cosine-Annealing je časový zisk malý a kvalita mírně trpí. Zůstává v katalogu polí, protože by mohla být opět užitečná u 4K-vstupů a dlouhých tréninkových běhů — Curriculum (T80) používá podobnou logiku, tam je ale navázána na LR-Schedule. Pokud je aktivováno a T80 curriculumResolutionRamp je také true, vyhrává curriculum a přepíše tuto hodnotu.
T24tileSize
DETAILY
Výchozí: 16 Rozsah: 8, 16, 32
TECHNICKY
Velikost rasterizačních dlaždic (tiles) v pixelech. Gaussian-Splatting-rendering je dlaždicově orientovaný: obrázek se rozloží na dlaždice 16×16 pixelů, každá dlaždice shromáždí pro ni relevantní Gaussians, seřadí je podle hloubky a vykreslí. 16 je standard používaný prakticky všemi implementacemi 3DGS a je pevně zakódovaný v Metal-kernelech RadianceKitu; změna této hodnoty by vyžadovala rekompilaci shaderů a v aktuálním stavu není efektivní. Zůstává jako pole pro případ, že by budoucí verze enginu podporovala dynamickou velikost dlaždic.
Diagnostika a příprava mračna bodů (T26–T30)
T26depthDistortionWeight
DETAILY
Default: 0.0 (= deaktivováno) Range: 0 nebo 0.0001 – 0.05
TECHNICKY
Experimentální: váha regularizačního loss pro depth distortion. Penalizuje Gaussians, které jsou sice podél render-paprsku hluboko rozprostřené, ale konceptuálně patří ke stejnému povrchu — to podporuje koncentrovaná rozložení hloubky a snižuje floaters. Ve všech vyzkoušených intenzitách vede toto nastavení spíše k horšímu než lepšímu výsledku. Teoretická výhoda — zlepšení multi-view konzistence — se neprojeví v L1-loss, protože hypotéza implicitně předpokládá, že SfM geometrie je správná a Gaussians je potřeba pouze „srovnat do vrstev". V praxi je SfM mračno bodů zpravidla nejslabší komponentou, nikoli srovnání do vrstev. Zůstává k dispozici pro multi-view datové sady s obzvlášť čistými pozicemi (Synthetic, Mip-NeRF 360 se ground truth).
T27singleViewOverfit
DETAILY
Default: false Range: boolean
TECHNICKY
Diagnostický přepínač: pokud je true, použije se v každé trénovací iteraci vynuceně kamera s indexem 0 místo náhodné z camera poolu. Smysl: Pokud model není schopen přeučit ani jediný pohled (tedy loss na view 0 se ani po 10 000 iteracích neblíží nule), jde o zásadní chybu ve forward/backward průchodu. Tento přepínač byl intenzivně využíván během vývoje Metal shaderů a differentiable-rasterizer jader. Dnes slouží už jen jako sanity-check pro případ, že někdo upravil trénovací backend a chce si to ověřit. V rozhraní pro to není žádný přepínač — pole je ve všech presetech vypnuté a zůstává tak.
T28maxCameras
DETAILY
Default: 0 (= „použít všechny kamery") Range: 0 nebo 1 – N
TECHNICKY
Diagnostický limit: trénuj pouze s prvními N kamerami, ignoruj všechny ostatní. Původní smysl: otestovat hypotézu, že příliš mnoho kamer vytváří konflikty gradientů (příliš mnoho protichůdných loss signálů pro stejnou Gaussian). Umělé omezení nepřináší žádnou výhodu — více snímků prakticky vždy znamená vyšší kvalitu. V rozhraní pro to není žádný ovládací prvek; pole je ve všech presetech nastaveno na 0, tedy „všechny kamery".
T29maxInitialPoints
DETAILY
Default: 0 (= „použít všechny SfM body") Range: 0 nebo 1 000 – 200 000+
TECHNICKY
Pojistka: omezuje počet počátečních SfM bodů, se kterými trénování startuje. Husté COLMAP rekonstrukce mohou vyprodukovat > 60 000 bodů, což při velkých počátečních měřítkách vede ke 200–300 Gaussians na pixelové překrytí — z toho vznikne „mlžné pole", ve kterém trénování nekonverguje. Subsampling na ~16 000 bodů (hard-cap logika v trénovacím enginu) sníží počáteční hustotu na úroveň, jakou používá referenční 3DGS, a dramaticky redukuje překryv. Aplikace toto u velmi hustých rekonstrukcí nastavuje sama; ovládací prvek pro to neexistuje.
T30cameraClusterOutlierMultiplier
DETAILY
Default: 10.0 (všechny presety — nikdy nepřepisováno) Range: 1.0 – 100.0
TECHNICKY
Multiplikátor pro filtr odlehlých hodnot camera-cluster. Před trénováním trénovací engine vypočítá centroid všech pozic kamer a maximální vzdálenost kamery od centroidu. SfM body, jejichž vzdálenost od centroidu překročí multiplier × maxCameraDistance, jsou zahozeny jako odlehlé hodnoty. Výchozí hodnota 10× je záměrně zvolena velkoryse. Jemný vedlejší efekt: těsnější SfM (kamery blíže u sebe) → menší → menší práh → více bodů se zahodí jako odlehlé hodnoty. Volnější SfM → větší práh → méně bodů se zahodí. Z toho plyne překvapivý efekt: těsnější a sama o sobě lepší SfM rekonstrukce může trénování zhoršit, protože se zahodí příliš mnoho počátečních bodů. Pole je ve všech presetech nastaveno na 10 a v rozhraní jej nelze měnit. Hodnoty pod 5 bývají zpravidla příliš restriktivní, nad 20 jsou bez efektu.
Regularizace (T31–T37)
T31coarseToFineBlurRadius
DETAILY
Výchozí: 0 (= deaktivováno) Rozsah: 0 nebo 1 – 10
TECHNICKY
Experimentální: poloměr box-blur, který se na začátku fáze densifikace aplikuje na referenční (ground-truth) obrázek a lineárně se snižuje na 0 do konce densifikace (T2). Hypotéza: coarse-to-fine training — nejprve se naučit hrubé struktury, pak detaily — by měl přinést stabilnější geometrii. U všech vyzkoušených poloměrů je výsledek horší. Důvod selhání: densifikace rozhoduje na základě gradientů v obrazové doméně a rozostření právě redukuje signály, které jsou důležité pro „tady je potřeba klonovat". Zůstává v katalogu parametrů pro budoucí testy s jiným schématem density-control.
T32scaleRegWeight
DETAILY
Výchozí: 0.0 (= deaktivováno) Rozsah: 0 nebo 0.0001 – 0.05
TECHNICKY
Experimentální: L1 regularizace na měřítko ve světovém prostoru. Penalizuje Gaussians, které se stávají příliš velkými — brání vzniku „mega-splatů", které pokrývají celé plochy stěn jedinou Gaussian. Po zapnutí počet Gaussians exploduje na miliony a výsledek je několikanásobně horší. Důvod: regularizace měřítka je v konfliktu s density-control — menší měřítka znamenají, že je potřeba více Gaussians, takže density-control častěji dělí, což zase znamená více gradientní zátěže. Deaktivováno, ale zdokumentováno pro experimenty s mip-splattingem (T74): v tomto kontextu by dolní mez měřítka mohla dávat smysl.
T33anisotropyRegWeight
DETAILY
Výchozí: 0.0 (= deaktivováno) Rozsah: 0 nebo 0.0001 – 0.05
TECHNICKY
Experimentální: penalizace poměru max(scale)/min(scale), má bránit vzniku extrémně protáhlých „jehlových" Gaussians, které jsou vnímány jako floatery. Při všech vyzkoušených intenzitách je výsledek výrazně horší. Důvod: regularizace nutí splaty k „kulatému" tvaru, což je na rovné ploše (stěna, stůl, podlaha) přesně špatně — tam je plochá, široká Gaussian efektivnější než kulovitá. Deaktivováno. T34 scaleRatioPruneThreshold sleduje stejný cíl cíleněji, ale je rovněž standardně vypnutý.
T34scaleRatioPruneThreshold
DETAILY
Výchozí: 0.0 (= deaktivováno) Rozsah: 0 nebo 5.0 – 100.0 (typicky 10.0 – 30.0)
TECHNICKY
Experimentální post-training pruning, který smaže každou Gaussian, jejíž poměr max(scale)/min(scale) překročí zde nastavenou lineární prahovou hodnotu. Cílí na extrémně protáhlé „jehlové/diskové" floatery, které samotná regularizace nedokáže odstranit. V testu pruning odstranil floatery podle očekávání, ale zároveň i smysluplné ploché splaty na stěnách a podlahách — obraz byl děravější. Proto je ve výchozím nastavení vypnuto. Od verze 1.8 pro to existuje přepínač Remove Needle/Disc Floaters v sekci inspektoru „Training", pod mezititulkem „Runs automatically at the end of training". Po zapnutí pracuje záměrně konzervativně (pouze splaty, jejichž nejdelší osa přibližně 50× překračuje nejkratší) a projeví se od příštího tréninkového běhu.
T35opacityRegWeight
DETAILY
Výchozí: 0.0 (= deaktivováno) Rozsah: 0 nebo 0.0001 – 0.05
TECHNICKY
Experimentální: penalizace typu binary cross-entropy, která táhne opacitu k 0 nebo 1 (tedy pryč od „poloprůhledné"). Hypotéza: ostřejší rozložení opacity by zlepšilo jasnost obrazu. Spolu s T33 stojí tato regularizace kvalitu; obě jsou deaktivované. Pozor: v 1.4.3-Beta se objevila chyba, která měla přesně toto pole se změněnou výchozí hodnotou (inicializátor = 0.01), což vedlo k masivnímu vymírání počtu Gaussians (460 K → 5 v jedné iteraci). Od 1.4.4 je pevně zakotveno na výchozí hodnotu 0.0.
T36opacityDecayFactor
DETAILY
Výchozí: 0.0 (inicializátor = deaktivováno), 0.9995 (.full, .classicBalanced — standard HTGS) Rozsah: 0 (vypnuto) nebo 0.95 – 1.0
TECHNICKY
Implementace schématu HTGS (Hierarchical Time-Gating, Eurographics 2025): každých T37 opacityDecayInterval iterací se sigmoidní opacita každé Gaussian vynásobí tímto faktorem. 0.9995 × 100 aplikací dává ~95% zachování na fázi densifikace — lehký, ale trvalý tlak směrem dolů na všechny opacity, který spolehlivě nechá slabě přispívající Gaussians klesnout pod T14 pruneOpacityThreshold. Výsledkem je výrazně lepší výsledek než bez decay. Aktivní pouze během fáze densifikace (do T2), poté trénink pokračuje bez decay, aby opacity ustavené během refinementu zůstaly stabilní. U MCMC se nepoužívá (MCMC má vlastní mechanismy prostřednictvím T67 mcmcRelocationInterval + T68 mcmcDeadOpacityThreshold).
T37opacityDecayInterval
DETAILY
Výchozí: 50 Rozsah: 10 – 500
TECHNICKY
Iterační interval, ve kterém se aplikuje T36 opacityDecayFactor. Výchozí hodnota z HTGS paperu je 50, v .full ponechána. Dlouhé intervaly (>200) efekt částečně ruší, protože mezi dvěma aplikacemi proběhne dost gradientních updatů na to, aby opacita znovu stoupla. Kratší intervaly (<20) dělají decay příliš agresivním. Aktivní pouze ve fázi densifikace.
Zjemnění (T38–T44)
T38gradientAccumulationSteps
DETAILY
Výchozí: 1 (= „jeden pohled na Adam-krok") Rozsah: 1 – 8
TECHNICKY
Počet views, jejichž gradienty se akumulují, než se provede jeden Adam-update. Při > 1 běží aplikace na samostatné, „unfused" backward-project cestě, která sčítá gradienty v samostatném bufferu; finální aplikace škáluje faktorem 1/N, aby zůstala magnituda konstantní. U klasického tréninku hodnota 2 nepřináší žádný nárůst kvality, ale stojí čas, protože unfused cesta je nákladnější než fused. U MCMC naopak accum = 2 znatelně zmenšuje kvalitativní odstup od Classic — proto je tam nabízen jako přepínač. V presetech je hodnota nastavena na 1. V rozhraní ji ovlivníš přepínačem MCMC Quality v sekci Inspektoru „Training": zapnutý akumuluje aplikace 2 views na krok, vypnutý 1. Jiné hodnoty než 1 a 2 lze nastavit pouze přes upravený preset.
T39testViewIndices
DETAILY
Výchozí: [] (= prázdné, všechny views se použijí k tréninku) Rozsah: Set<Int>, libovolná podmnožina indexů kamer
TECHNICKY
Množina indexů kamer, které se NEPOUŽIJÍ k tréninku, ale ušetří se jako holdout pro vyhodnocení PSNR/SSIM/LPIPS. Nastavuje se pouze při interních měřicích bězích: pak každý osmý view, počínaje indexem 0 (LLFF standard, shodné s konvencemi Mip-NeRF-360 a 3DGS paperu). Ve výchozím stavu zůstává pole prázdné — trénink využívá všechny views a v rozhraní pro to neexistuje žádný ovládací prvek. Pozor: ruční nastavení tohoto pole v souboru presetu bez pochopení indexů znehodnotí měření (např. pokud se všechny indexy nastaví nad N, zatímco existuje jen N-50 views → žádné holdouty → žádné vyhodnocení). Při vlastním exportu presetu se testViewIndices nezapisuje, protože je závislé na scéně a jinak by mezi různými datovými sadami zanechalo nesmyslné hodnoty.
T40refinementPruneInterval
DETAILY
Výchozí: 0 (= deaktivováno) Rozsah: 0 nebo 100 – 5 000
TECHNICKY
Každých N iterací během fáze zjemnění (po T2) proběhne dodatečný prune-pass, který odstraní gaussiany se sigmoid(opacity) < T41 refinementPruneOpacityThreshold. Smysl: během Densification probíhají pravidelné density-control volání, poté už ne — gaussiany, jejichž opacita dále klesá, ale zůstávají v bufferu. V praxi toto dodatečné pruning škodí: společně s druhou fází Densification (T54) může úplně vyprázdnit stav gaussianů. Ve všech presetech je nastaveno na 0 a v rozhraní nelze upravit; pokud se přesto nastaví přes upravený soubor presetu, smysluplné hodnoty jsou 1 000 nebo 2 000.
T41refinementPruneOpacityThreshold
DETAILY
Výchozí: 0.0 (= „použij T14") Rozsah: 0 nebo 0.001 – 0.1
TECHNICKY
Samostatná prahová hodnota opacity pro refinement-pruning. Po Densification dosáhla většina gaussianů výrazně vyšší opacity (> 0.001), takže by standardní T14 pruneOpacityThreshold byla příliš mírná. Když je T40 aktivní, určuje toto pole vlastní práh. Při 0.0 se dále používá T14. Relevantní pouze pokud T40 > 0.
T42midTrainingCompactificationIterations
DETAILY
Výchozí: [] (= deaktivováno) Rozsah: [Int], hodnoty v (densifyUntilIteration, maxIterations)
TECHNICKY
Explicitní body iterace během fáze zjemnění, ve kterých proběhne compactification-pass (odstraní gaussiany se sigmoid(opacity) < 0.01 + odlehlé škálou, stejná logika jako T56 postTrainingCompactification). Smysl: dlouhé fáze zjemnění mohou vykazovat hromadění confetti/floaterů, jejichž SH pak overfituje na artefakty specifické pro pohled. Typická konfigurace pokud aktivováno: [10000, 20000, 30000] pro 40K Classic. ALE: volně zvolené úklidové body důsledně zhoršují výsledný výsledek — počet gaussianů sice výrazně klesá, ale chyba obrazu stoupá silněji. Jako volně nastavitelný seznam iterací proto zůstává pole ve všech presetech prázdné. Samotný efekt dosáhneš v rozhraní přepínačem Floater Cleanup v sekci Inspektoru „Training": u klasických běhů od 30 000 iterací nastaví dva úklidové průchody doprostřed tréninku. Vlastní body lze nastavit pouze přes upravený soubor presetu.
T43frustumCullEnabled
DETAILY
Výchozí: false Rozsah: boolean
TECHNICKY
Po tréninku se odstraní všechny gaussiany, které leží mimo sjednocení všech frust trénovacích kamer. Takové gaussiany nikdy neomezoval loss signál a jsou vždy floatery. Zvlášť účinné pro scény, kde je Novel-View za nebo vedle cesty kamery (např. zadní strana lineárního letu dronem) — floatery tam nejsou v tréninkové fázi nikdy viditelné, ale při pozdějším pohybu ve 3D prohlížeči ano. U letů dronem to viditelně přináší méně floaterů, proto je dostupné jako opt-in. Výchozí false, protože u záznamů objektů s plným orbitálním pokrytím sjednocení frust obepíná celou scénu a funkce nic neodstraní — nabízí se v Nastaveních pod „Floater Reduction". Outdoor-preset ho neaktivuje, protože sky-dome tam řeší stejný problém lépe.
T44frustumCullExpansion
DETAILY
Výchozí: 1.1 Rozsah: 1.0 – 2.0
TECHNICKY
NDC-okraj pro T43 frustumCullEnabled. 1.0 by řezal přesně na okraji obrazu, což by příliš zkrátilo kolísavé splaty na okraji obrazu. 1.1 = 10 % odsazení nad přesný kamerový rámec — dává určitou toleranci pro okrajové pixely, které by mohly být viditelné v mírně posunutém Novel-View. Hodnoty > 1.2 činí cull prakticky neúčinným, protože rozšířený frustum zahrnuje mnohem víc prostoru.
Sky-Dome (T45–T48)
T45skyDomeEnabled
DETAILY
Výchozí: false (Initializer + všechny Presety kromě P9 Outdoor) Rozsah: boolean
TECHNICKY
Před zahájením trénování se vygeneruje kulovitý bod-mrak (Fibonacci-sphere s T46 sample-points), umístěný v poloměru T47 skyDomeRadiusMultiplier × scene_extent kolem středu scény a inicializovaný barvami z pixelů maskovaných oblohou ze všech trénovacích kamer (viz T20 skyMaskingEnabled). Tyto Sky-Dome-Gaussians se vloží na začátek Gaussian-Bufferu a během trénování se „zmrazí" (gradienty pozice/škály/rotace = 0, optimalizovatelné zůstávají jen SH a Opacity). Efekt: místo černých „confetti"-oblastí v dálce vidí uživatel v Novel-Views skutečnou oblohu. Na dronových a krajinných scénách to funguje velmi dobře; v Outdoor-Presetu (P9) je to ve výchozím stavu zapnuté. U interiérových scén to nech vypnuté — Sphere by nesmyslně visela mimo místnost.
T46skyDomeSampleCount
DETAILY
Výchozí: 5 000 Rozsah: 1 000 – 50 000 (typicky 2 000 – 10 000)
TECHNICKY
Počet Fibonacci-Sphere-sample-bodů na Sky-Dome-Sphere. Vyšší hodnoty → hustší Sky-Dome (lepší u velkých rozlišení a velkého množství viditelné oblohy), ale vyšší nároky na paměť. 5 000 je sweet spot pro 4K-rendering; u nižších rozlišení stačí 2 000–3 000. Body se inicializují podle cosine-distance ke každému view-vektoru trénovací kamery s odpovídajícími sky-maskovanými pixely — sample-points, jejichž view-cone nevidí žádná kamera, zůstávají s nízkou počáteční hodnotou opacity vzadu, ale při trénování se nemění (jsou zmrazené).
T47skyDomeRadiusMultiplier
DETAILY
Výchozí: 30.0 (Initializer + většina Presetů), 59.0 (P9 Outdoor) Rozsah: 5.0 – 200.0
TECHNICKY
Poloměr Sky-Dome-Sphere relativně k rozsahu scény (= průměrná vzdálenost mezi pozicemi kamer). 30 = koule má 30násobek průměru kamera-mraku. Příliš malé (< 5) → Sky-Dome interferuje se samotnou scénou (např. jeden Sky-Dome-splat skončí v popředí); příliš velké (> 100) → ztráta přesnosti float32 na pozicích Sky-Dome, což vyvolá render-glitche v dálce. Pro rozlehlé venkovní scény je 59.0 vhodná hodnota — standardních 30.0 je pro hluboké krajiny příliš málo, pak se Sky-Dome-pixely na okrajích obrazu viditelně vykreslují jako „zeď".
T48frozenGaussianCount
DETAILY
Výchozí: 0 (= žádné zmrazené Gaussians) Rozsah: 0 nebo 1 – T46
TECHNICKY
Počet Gaussians na začátku Bufferu, jejichž gradienty pozice/škály/rotace se v optimizeru nastaví na nulu — zůstávají prostorově pevné po celou dobu trénování. Density-Control je nesmí klonovat, splitovat ani prunovat. Používá se pro Sky-Dome-Injection (viz T45): když je Sky-Dome zapnutý, toto pole se automaticky nastaví na T46 skyDomeSampleCount. Ruční nastavení je možné (např. pro zmrazení předem umístěného bod-mraku z LiDAR-skenu), ale v UI není přímo přístupné. Důležité: prvních N Gaussians v Bufferu je vždy to zmrazené — rozhoduje pořadí v Bufferu, ne explicitní index.
Adam + LR plán (T49–T55)
T49adamResetIteration
DETAILY
Výchozí: 0 (= deaktivováno) Rozsah: 0 nebo 100 –
TECHNICKY
Iterace, ve které se akumulátory momentu Adam-optimizeru (m1, m2) resetují na nulu. Bias-korekce poté běží s (iter - adamResetIteration) místo s iter. Reset po skončení densifikace výrazně zhoršuje výsledek. Důvod: moment Adamu, který se během densifikace nahromadil, nese informaci o typických velikostech gradientů a zrychluje fázi refinementu. Jeho zahození stojí prvních ~500 iterací refinementu na konvergenci. Proto je ve všech předvolbách nastaveno na 0 a v rozhraní není nastavitelné.
T50positionLRScheduleEndIteration
DETAILY
Výchozí: 0 (Initializer = „použij maxIterations"), 20 000 (.full — Cosine končí na 20K i přes maxIter=35K), 30 000 (.fullClassicPaper) Rozsah: 0 nebo 1 000 –
TECHNICKY
Iterace, ve které křivka Cosine-Annealing pro Position-LR dosáhne svého minima. Pokud 0, je to identické s T1 maxIterations. Pokud > 0, plán běží až do této hodnoty a poté zůstává na T4 positionLearningRateFinal konstantní. To umožňuje „prodlouženou refinement fázi" s minimální, ale konstantní learning rate — pomalu zjemňuje pozice bez opětovného poklesu. .full to dělá (konec plánu na 20K, trénink běží do 35K); v okolí — 15K až 25K — se téměř nic nemění, 20K je nejlepší kompromis. Používá se ve spojení s T51, aby se i non-position LR modifikovaly v prodloužené fázi.
T51extendedPhaseLRDecay
DETAILY
Výchozí: 0.0 (= deaktivováno, konstantní LR) Rozsah: 0 nebo 0.01 – 1.0
TECHNICKY
Minimální multiplikátor pro non-position LR (škála, rotace, opacity, SH) v „prodloužené fázi" — tedy poté, co je dosaženo T50 a Position-LR je již na T4. Pokud 0.1, jsou škála/rotace/opacity/SH samy o sobě cosine-decayovány z 1.0 (= jejich standardní LR) na 0.1× svého standardu. Pokud 0.0 (výchozí), zůstávají konstantní. Plný decay až na nulu dává stejný výsledek jako žádný decay — chování s decay působí čistěji, ale měřitelně není lepší. Proto je ve všech předvolbách nastaveno na 0 a v rozhraní není nastavitelné.
T52adaptiveDensifyThreshold
DETAILY
Výchozí: false Rozsah: boolean
TECHNICKY
Experimentální: pokud true, počítá aplikace v každém kroku densifikace p98 aktuálního rozložení gradientů a používá jej jako dynamický práh (ořezaný na minimálně 0.5× nakonfigurované hodnoty z T11, aby příliš neuletěl). Hypotéza: automatické přizpůsobení aktuální fázi scény by zpřesnilo density-control — např. zpočátku přísnější pruning, později volnější, nebo naopak. V praxi počet Gaussianů dramaticky klesá — masivní pruning, protože p98 je v prvních iteracích extrémně vysoké a poté téměř nic práh nepřekročí. Fixní práh je již dobře kalibrovaný, dynamické přizpůsobení škodí víc, než pomáhá. T77 nabízí alternativní adaptivní logiku přes rolling median, která tento problém obchází.
T53mergeAfterDensification
DETAILY
Výchozí: false (Initializer), true (.full, .classicBalanced, .fullClassicPaper) Rozsah: boolean
TECHNICKY
Na konci fáze densifikace (iterace T2) se provede jednorázový merge-pass, který blízko ležící Gaussiany s podobnou škálou a barvou sloučí. Snižuje počet Gaussianů typicky o 5–15 % bez viditelné ztráty kvality. Smysl: po intenzivním klonování vznikají shluky téměř identických Gaussianů, které nepřinášejí nic nového — merging uvolňuje kapacitu optimizeru pro jiné oblasti. Standard v klasických Quality předvolbách. U MCMC se nepoužívá, protože MCMC díky své relocation-logice takové shluky vůbec nenechá vzniknout.
T54densifyPhase2FromIteration
DETAILY
Výchozí: 0 (= deaktivováno) Rozsah: 0 nebo T2 – T1
TECHNICKY
Experimentální: umožňuje druhou fázi densifikace, která po pauze refinementu při této iteraci začne a běží až do T55. Hypotéza: po fázi refinementu mají akumulátory gradientů stabilnější velikosti a mohou přesněji říct, které oblasti ještě potřebují další Gaussiany. V praxi druhá fáze densifikace končí kaskádou až na nulu Gaussianů — společně s pruningem refinementu (T40) zcela vyprázdní buffer. Proto je ve všech předvolbách nastaveno na 0 a v rozhraní není nastavitelné.
T55densifyPhase2UntilIteration
DETAILY
Výchozí: 0 Rozsah: 0 nebo T54 – T1 Definováno v:
TECHNICKY
Konec druhé fáze densifikace. Relevantní pouze pokud T54 > 0. Obě pole dohromady deaktivována.
Post-Processing + Apple AI (T56–T60)
T56postTrainingCompactification
DETAILY
Výchozí hodnota: true (ve všech produkčních Presetech), false (.quickTest, .preview) Rozsah: boolean
TECHNICKY
Po skončení tréninku jsou Gaussians s sigmoid(opacity) < 0.01 natvrdo odstraněny (prakticky již nepřispívají k obrazu). Snižuje počet Gaussians typicky o 58 % a velikost exportního souboru o 55 % bez viditelné ztráty kvality. Ve výchozím nastavení aktivní v produkčních Presetech — výsledný soubor má být pokud možno co nejkompaktnější. V .quickTest vypnuto, protože diagnostický běh se stejně neexportuje. Na rozdíl od T42 midTrainingCompactificationIterations probíhá Compactification až na konci — refinement může do té doby využívat všechny Gaussians.
T57metalFXUpscaling
DETAILY
Výchozí hodnota: false Rozsah: boolean
TECHNICKY
⚠ Od 18. 7. 2026 vyřazeno a zcela bez účinku. Toto pole patřilo k voliči „Viewport Scaling" (Off/MetalFX/Lanczos) v Inspectoru. Renderer jej nikdy nečetl: rozhodnutí o blitu je čistě geometrické (při supersampled renderu ⇒ MPS-Lanczos downsampling pro vyhlazení hran, jinak bilineárně), a pro cestu MetalFX neexistovalo žádné volání. Volič a obě mylné informace, které poskytoval, byly odstraněny; popisek v overlay se nyní jmenuje „Sampling", nikoli „Scaling", a nikde v aplikaci se neškáluje pomocí MetalFX. Samotné pole zůstává zachováno, protože konfigurace tréninku se ukládá kompletně — je součástí každé uložené scény, každého Presetu i komentáře nastavení již exportovaných PLY; smazání by při novém zápisu tiše upustilo klíč a rozbilo by tuto výměnu. Ze stejného důvodu je pole vyňato z porovnání „Modified": stará scéna může nést true a přes rozhraní už neexistuje způsob, jak to resetovat. Nic to nečte — znovu to nezapojujte.
T58mpsLanczosScaling
DETAILY
Výchozí hodnota: false Rozsah: boolean
TECHNICKY
⚠ Od 18. 7. 2026 vyřazeno a zcela bez účinku — viz T57 metalFXUpscaling, kde je také uvedeno, proč pole přesto musí zůstat uloženo. Je třeba výslovně upozornit na jeden zdánlivě logický, ale mylný závěr: aplikace skutečně používá MPS-Lanczos ve Viewportu, ale řídí to výhradně geometrie — obraz vyrenderovaný se supersamplingem se pro vyhlazení hran zmenšuje. Jde tedy o zmenšování (downscaling), nikoli zvětšování, a toto pole to nikdy nespouštělo.
T59livePreviewInterval
DETAILY
Výchozí hodnota: 50 (inicializátor; Presety toto pole nenastavují) Rozsah: 0 (vypnuto), 50, 250 nebo 1 000 ve voliči v Nastavení
TECHNICKY
Jak často se během tréninku aktualizuje 3D Viewport aktuálními Gaussians. 50 = nový render každých 50 iterací — dostatečné pro sledování průběhu, aniž by to citelně zpomalovalo trénink. 0 = Viewport se vůbec neaktualizuje (trénink na pozadí, maximální rychlost). Při dlouhých MCMC bězích se vyplatí 250 nebo 1 000, protože režie aktualizací se v součtu projeví. Zvláštní role: pole sice patří ke konfiguraci tréninku, je to ale nastavení platné pro celou aplikaci (Nastavení → Trénink), nikoli součást tréninkového receptu. Proto je vyňato z porovnání „Modified", zachovává se při přepnutí Presetu a od 18. 7. 2026 se při otevření scény již nepřebírá ze souboru — dříve načtená scéna tiše nahradila snímkovou frekvenci uživatele frekvencí autora scény, včetně „Vypnuto", a neexistovalo žádné druhé místo, odkud by se dala obnovit.
T60perceptualLossWeight
DETAILY
Výchozí hodnota: 0.0 (= deaktivováno) Rozsah: 0 nebo 0.001 – 0.5
TECHNICKY
Váha perceptuálního loss termu (Multi-Scale-Blur-Feature-Matching). Zachycuje strukturální a texturní podobnost na vyšší úrovni než L1+SSIM — typicky tam, kde „pixel-perfect" je méně důležité než „vypadá to realisticky". Hodnota je ve všech Presetech 0.0 (vypnuto). V rozhraní ji nastavíš pomocí posuvníku Perceptual Loss v sekci Inspectoru „Training", rozsah 0 až 0,20 v krocích po 0,01; při 0 aplikace zobrazuje „Off".
MCMC-densifikace (T61–T73)
T61densificationStrategy
DETAILY
Výchozí: .classic (Initializer + Classic-Presety), .mcmc (všechny MCMC-Presety + Scene-Class) Rozsah: .classic nebo .mcmc
TECHNICKY
Volí mezi Classic-densifikací (klon/split/prune, Kerbl et al.~2023) a MCMC-densifikací (Stochastic Gradient Langevin Dynamics s relokací, Kheradmand et al.~NeurIPS 2024). U .classic se vyhodnocují T11–T16, u .mcmc pak T62–T73. Pozor při přepnutí: Classic Defaults a MCMC Defaults jsou zcela odlišně kalibrované — kdo přepne přepínač v Expert View, aniž by nahrál odpovídající Preset, riskuje mass-extinction ve stylu bugu z 1.4.3 (460 K → 5 během jedné iterace, protože MCMC-OpacityReg na hodnotě 0.01 zabíjí Classic-opacity). Proto jsou MCMC-Init Defaults záměrně „změkčené" (všechny reg-hodnoty 0.0).
T62mcmcMaxGaussians
DETAILY
Výchozí: 150 000 (Initializer + .fullMCMC + .mcmcBalanced), 100 000 (.mcmcPreview), 1 500 000 (.fullMCMCMip — Mip-Splatting-varianta s 10× rozpočtem), 1.19 M (.renderPreset), 1.25 M (.outdoorPreset), 670 K (.indoorPreset) Rozsah: 0 (= „použij kapacitu bufferu") nebo 10 000 – 5 000 000 Definováno v:
TECHNICKY
Pevná horní hranice počtu Gaussianů u MCMC-strategie. Počet postupně roste o T70 mcmcGrowthRate (typicky 5 %) na krok relokace až po tento cap. 150 K je dobrá výchozí hodnota — výrazně nad ní se kvalita splatů rozřeďuje (příliš mnoho malých, redundantních Gaussianů), výrazně pod ní zůstává scéna nedostatečně densifikovaná. U velmi velkých scén (např. let dronem se 1 545 fotkami a 158 K SfM-init) je 150 K příliš málo — proto rozšíření z 1.4.5 T72 mcmcCapMultiplier + T73 mcmcAutoScaleByScene. Scene-Class-Presety používají scéně specifické hodnoty mezi 670 K (Indoor) a 1.25 M (Outdoor). Při hodnotě 0 použije engine jako cap plnou kapacitu bufferu.
T63mcmcNoiseScale
DETAILY
Výchozí: 0.00005 (5e-5 = výchozí hodnota z paperu) Rozsah: 1e-6 – 1e-3
TECHNICKY
Multiplikátor pro Gaussovský šum, který se v každé MCMC-iteraci přičítá k pozici každého Gaussianu (logika SGLD). Vyšší = víc explorace (Gaussiany víc putují, potenciálně najdou lepší místa), nižší = víc exploatace (Gaussiany zůstávají tam, kde už jsou dobré). 5e-5 je vhodná hodnota — výrazně menší znamená příliš málo explorace, výrazně větší (1e-4) příliš mnoho, pak se splaty rozpíjejí. Přes dobu tréninku se cosine-decayuje až po T69 mcmcNoiseDecayEnd — na konci rozsahu decay je šum efektivně 0 a Gaussiany konvergují.
T64mcmcOpacityRegWeight
DETAILY
Výchozí: 0.0 (= deaktivováno ve výchozích hodnotách RadianceKitu, paper: 0.01) Rozsah: 0 nebo 0.001 – 0.05
TECHNICKY
MCMC-specifický L1-penalty na opacity. Výchozí hodnota z paperu 0.01 (tlačí nepoužívané Gaussiany k nule, čímž je zpřístupní pro relokaci). V RadianceKitu je výsledek bez této regularizace měřitelně lepší. Důvod: pruning-kritérium definované pomocí T68 mcmcDeadOpacityThreshold samo o sobě stačí — dodatečný L1-penalty by nutil k zániku i hodnotné Gaussiany s nízkou opacity. Proto je výchozí hodnota 0. Pozor: v beta-buildu 1.4.3 byla výchozí hodnota Initializeru chybně 0.01, což vedlo k bugu mass-extinction (viz vysvětlení u T61); od verze 1.4.4 opraveno na 0.0.
T65mcmcScaleRegWeight
DETAILY
Výchozí: 0.0 (= deaktivováno, paper: 0.01) Rozsah: 0 nebo 0.001 – 0.05
TECHNICKY
MCMC-specifický L1-penalty na vlastní hodnoty škály. Výchozí hodnota z paperu 0.01. I zde je výsledek bez regularizace lepší, ze stejného důvodu jako u T64. Vypnuto ve všech RadianceKit-MCMC-Presetech. Pozor stejně jako u T64: bug z 1.4.3.
T66mcmcRelocationInterval
DETAILY
Výchozí: 100 (Initializer + všechny MCMC-Presety, standard z paperu), 155 (P9 Outdoor) Rozsah: 50 – 500
TECHNICKY
Interval iterací, ve kterém MCMC relokuje mrtvé Gaussiany (sigmoid(opacity) < T68 mcmcDeadOpacityThreshold) na nové pozice. Kratší intervaly (kolem 50) působí příliš rušivě, loss kolísá; výrazně delší (kolem 200) berou MCMC schopnost reagovat. 100 je správná hodnota. U venkovních scén je o něco vyšší (155) — delší intervaly dávají Adamu víc času zapracovat nově umístěné Gaussiany, než je vystaví tlaku další relokační událost.
T67mcmcWarmupIterations
DETAILY
Výchozí: 500 Rozsah: 100 – 5 000
TECHNICKY
Počet počátečních iterací, během kterých ještě neprobíhá žádná MCMC-relokace. Teprve po tomto warmupu začíná relokační logika. Smysl: v prvních iteracích ještě nejsou hodnoty opacity ustálené — kdyby se začalo rovnou s relokací, Gaussiany by se umístily na špatná místa a musely by se hned znovu přesunout, což ničí Adam-momentum. Výchozí hodnota z paperu 500. RadianceKit tuto hodnotu přebírá, protože se ukázala jako robustní.
T68mcmcDeadOpacityThreshold
DETAILY
Výchozí: 0.005 (Initializer, standard z paperu), 0.01 (.fullMCMC a všechny MCMC-Presety) Rozsah: 0.001 – 0.05
TECHNICKY
Práh sigmoid(opacity), pod kterým se Gaussian považuje za „mrtvý" a je kandidátem na relokaci. 0.01 je vhodná hodnota — 0.005 mění jen málo, 0.02 je horší. Vyšší = agresivnější relokace (víc Gaussianů se přesouvá), nižší = opatrnější. 0.01 odpovídá přibližně „0,5 % vizuální viditelnosti". P10 Indoor používá 0.0142.
T69mcmcNoiseDecayEnd
DETAILY
Výchozí: 0 (Initializer = „bez decay"), 160 000 (.fullMCMC = 80 % z 200K), 96 000 (.mcmcBalanced = 80 % ze 120K), 40 000 (.mcmcPreview) Rozsah: 0 nebo 1 000 –
TECHNICKY
Iterace, ve které je šum T63 mcmcNoiseScale zcela ztlumen na nulu (cosine-decay od iterace 0 až sem). 80 % z maxIterations je vhodná hodnota — dává MCMC dost času na exploraci, ale nechává posledních 20 % ke konvergenci bez šumu. 0 = konstantní šum po celou dobu iterací (zřídka smysluplné, MCMC pak nemůže konvergovat).
T70mcmcGrowthRate
DETAILY
Výchozí: 0.05 (standard z paperu = 5 %) Rozsah: 0.01 – 0.2
TECHNICKY
Rychlost růstu cílové populace MCMC na krok relokace. Logika: při každé relokační události se cílová velikost populace zvýší o (1 + growthRate), dokud není dosaženo T62 mcmcMaxGaussians (nebo varianty škálované pomocí T72/T73). 0.05 je vhodná hodnota — vyšší hodnoty vedou k příliš rychlému růstu (Gaussiany se vkládají dřív, než je stihne zapracovat Adam-momentum), nižší k nedostatečně densifikovaným scénám na konci.
T71mcmcSigmoidK
DETAILY
Výchozí: 100.0 Rozsah: 10.0 – 500.0 Definováno v:
TECHNICKY
Parametr ostrosti sigmoidy pro tlumení šumu u MCMC. V kroku SGLD se šum na jeden Gaussian tlumí — vysoce opákní Gaussiany (jejichž logit je kladný) dostávají exponenciálně méně šumu než nízko opákní. K = 100 je ostré, tedy přechod z „plný šum" na „žádný šum" nastává velmi rychle kolem opacity 0.5. K = 100 je vhodná hodnota — menší hodnoty (10–50) nechají i vysoce opákní Gaussiany „chvět se" (zničí konvergované Gaussiany), větší (> 500) dělají přechod uměle tvrdý a s mrtvými Gaussiany se už vůbec nehýbe.
T72mcmcCapMultiplier
DETAILY
Výchozí: 3.0 (Initializer + .fullMCMC), 2.0 (.mcmcPreview), 2.5 (.mcmcBalanced), 2.98 (P8 Render), 5.32 (P9 Outdoor), 1.76 (P10 Indoor) Rozsah: 0 (= deaktivováno) nebo 1.0 – 10.0
TECHNICKY
Funkce 1.4.5: scéně adaptivní škálování capu. Pokud je T73 mcmcAutoScaleByScene true, spočítá se efektivní cap jako (oříznuto na kapacitu bufferu). Pozadí: u velkých scén (např. let dronem s 1 545 fotkami → 158 K SfM-init) je T62 = 150 000 příliš málo — density-control by vůbec nemohla růst. S multiplikátorem 3.0 se cap v tomto příkladu škáluje na 474 K (158 K × 3.0). Scene-Class-Presety používají scéně specifické hodnoty: Outdoor těží z vysokého multiplikátoru (5.32 → ~830 K cap při 156 K init-bodech), Indoor si vystačí s 1.76 (stěny se sytí rychleji). Kompletní rozlišení capu viz metoda -.
T73mcmcAutoScaleByScene
DETAILY
Výchozí: true (Initializer + všechny MCMC-Presety) Rozsah: boolean
TECHNICKY
Funkce 1.4.5: hlavní přepínač pro scéně-vědomou logiku capu (viz T72 +). Pokud je false, použije se jako cap výhradně T62 mcmcMaxGaussians (zpět k chování z 1.4.4). Ve výchozím stavu zapnuto, protože jinak by se u velkých scén vracely problémy mass-extinction z 1.4.3. Ruční deaktivaci zvol jen tehdy, chceš-li explicitně nastavit pevný cap — např. abys natrénoval variantu se 150 K, jejíž koncová velikost je plánovatelná.
Mip-Splatting (T74–T76)
Stav: Mip-Splatting nepřinesl v praxi žádný přínos v kvalitě a u některých venkovních scén dokonce uškodil. Pole zůstávají opt-in pro experimenty; ve všech dodávaných Presetech je Mip-Splatting vypnutý.
T74useMipSplatting
DETAILY
Výchozí hodnota: false (všechny produkční Presety), true (.fullMCMCMip — výzkumný sibling) Rozsah: boolean
TECHNICKY
Aktivuje Mip-Splatting (Yu et al.~CVPR 2024): 3D vyhlazovací filtr + 2D filtr + α-kompenzace, který omezuje per-Gaussian frekvenci na Nyquistovu mez nejhustší vzorkovací frekvence trénovací kamery. Teoretický cíl: eliminace aliasingu při renderování v off-training měřítkách (0.5× nebo 2× trénovacího rozlišení). V preprocess a backward-projection shaderech aktivní a funkčně korektní. V praxi ale kýžený přínos v kvalitě nenastal: při renderování v trénovacím rozlišení se prakticky nic nemění, a u venkovních scén se obraz dokonce zhorší. Jedno možné vysvětlení: 3D vyhlazování pracuje proti MCMC-relokaci, jakmile je ve hře hodně Gaussianů. Pole zůstává dostupné pro vlastní multi-scale experimenty.
T75mipSmoothing3DScale
DETAILY
Výchozí hodnota: 0.2 (výchozí hodnota z papíru) Rozsah: 0.05 – 1.0
TECHNICKY
Parametr měřítka 3D vyhlazování (Yu et al.~§3.3, výchozí hodnota z papíru 0.2). Větší = víc vyhlazování ve světovém prostoru na jeden Gaussian (= víc anti-aliasingu, ale i víc rozostření v defaultním měřítku), menší = ostřejší, ale náchylnější k aliasingu. Konzultuje se pouze, pokud je T74 useMipSplatting = true. Dále neoptimalizováno — už s výchozí hodnotou z papíru 0.2 Mip-Splatting nepřináší žádný přínos.
T76mipFilter2DVariance
DETAILY
Výchozí hodnota: 0.3 (= přesně dosavadní chování) Rozsah: 0.1 – 1.0
TECHNICKY
2D Mip-filter variance, která se přičítá k diagonále Σ_2D (přímo variance, ne umocněná). 0.3 je přesně hodnota, která byla před Mip-Splattingem pevně zapsaná v kernelu. Pokud je T74 useMipSplatting = false, kernel tuto hodnotu úplně ignoruje a používá napevno hodnotu 0.3 — takže se na dosavadním chování garantovaně nic nemění. Pokud je zapnutý, použije se zde nastavená hodnota. Zůstává v katalogu polí pro Mip-sweepy.
Adaptivní zahušťování (T77–T79)
T77adaptiveDensification
DETAILY
Výchozí: false Rozsah: boolean
TECHNICKY
Rolling-Median-Tracker jako alternativa k pevnému T11 densifyGradThreshold. Pokud true, přepíše se v každém Densify-Step aktuální práh mediánem median(posledních N avgGrad-vzorků) × T79 adaptiveDensifyMultiplier. N = T78 adaptiveWindow. Přísnější než varianta p98 z T52, která tam spouští Mass-Pruning: medián krát 2 se v ustáleném stavu pohybuje zhruba na úrovni p70–p80 rozdělení gradientů. Samostatně zapnuté toto pole nepřináší žádný zisk kvality; společně s curriculem (viz T80/T81) ano — zisk tam přináší curriculum, toto pole spíše stabilitu. Ovládací prvek pro to neexistuje: pole je ve všech přednastaveních vypnuté a dá se nastavit pouze prostřednictvím upraveného souboru s přednastavením.
T78adaptiveWindow
DETAILY
Výchozí: 1 000 Rozsah: 100 – 10 000 Definováno v:
TECHNICKY
Rolling-Median-Window v Densification-událostech (NE v iteracích — každý krok T13 densifyInterval dodá jeden vzorek). Výchozí hodnota 1 000 — to znamená, že k mediánu přispívá posledních 100 000 tréninkových iterací, tedy typicky celá dosavadní historie tréninku. Raná fáze (před T78 vzorky): tracker vrací nil → fallback na pevný práh T11. Relevantní jen tehdy, když.
T79adaptiveDensifyMultiplier
DETAILY
Výchozí: 2.0 Rozsah: 1.0 – 4.0
TECHNICKY
Multiplikátor rolling-mediánu pro adaptivní práh. Výchozí hodnota 2.0 odpovídá zhruba p70–p80 typického rozdělení gradientů. Nižší = agresivnější růst (více klonů), vyšší = přísnější (méně klonů). V rozsahu 1.5–3.0 je 2.0 nejlepší hodnota. Relevantní jen tehdy, když.
Kurikulum (T80–T81)
T80curriculumResolutionRamp
DETAILY
Výchozí: false Rozsah: boolean
TECHNICKY
Trénovací rozlišení začíná na 0.5× a při T50 positionLRScheduleEndIteration / 2 (nebo T1 maxIterations / 2, pokud T50 není nastaveno) přejde na T22 trainingRenderScale. Pokud je aktivováno, přepíše T23 resolutionWarmupScale. Ze dvou adaptivních vylepšení (viz T77) přináší skutečný přínos kvality právě toto kurikulum — postupné zvyšování rozlišení dává aplikaci čas najít hrubou geometrii na nižším rozlišení, než přejde k jemné práci na detailech. V rozhraní není nastavitelné — pouze přes upravený soubor presetu, a to smysluplně jen společně s T81.
T81curriculumSHProgression
DETAILY
Výchozí: false Rozsah: boolean
TECHNICKY
Přepíše T21 shDegreeUpgradeIterations hodnotou [maxIter/4, maxIter/2, maxIter*3/4], čímž rozloží zvyšování stupně SH rovnoměrně po celou dobu tréninku, místo aby je soustředilo na začátek. Hypotéza: stabilní geometrie se ustálí dřív, než dojde k explozi barevných detailů, což přesněji umístí lesklé efekty závislé na směru pohledu. Společně s T77 to na některých scénách přináší zlepšení; nese ho ale toto pole, samotné T77 nestačí. V rozhraní není nastavitelné — pouze přes upravený soubor presetu.
Statické předvolby (TP1–TP9)
Zde uvádíme jen strukturální rozdíly oproti výchozímu nastavení inicializátoru. Plný marketingový popis jedenácti UI Presetů P1–P11 najdeš v kapitole 7.
TP1.preview
DETAILY
Diagnostický/náhledový Preset pro systémy ≥ 10 GB RAM. Overrides oproti inicializátoru:
maxIterations30 000 → 5 000densifyUntilIteration15 000 → 3 500 (70 % z maxIter)positionLearningRateFinal1.6e-6 → 1.6e-5 (10× vyšší, méně agresivní decay)shDCLearningRate,shRestLearningRate,opacityLearningRate,scaleLearningRate,rotationLearningRatekaždé 2×opacityResetInterval3 000 → 100 000 (efektivně vypnuto — reset by u krátkých tréninků škodil)shDegreeUpgradeIterations[1K, 2K, 3K]→[1K, 2K](Degree 3 v tak krátkých bězích nekonverguje)trainingRenderScale1.0 → 0.5
TP2.full
DETAILY
Production-Quality Classic. Overrides:
maxIterations30 000 → 35 000 (nad tuto hodnotu hrozí overtraining: víc Gaussianů bez zisku kvality)densifyUntilIteration15 000 → 5 000 (osvědčená hodnota; zastavit později je horší)- Všechny LR 2×
positionLearningRateFinal1.6e-6 → 1.6e-5 (10× vyšší než výchozí hodnota z paperu)densifyGradThreshold2e-6 → 1.1e-6 (kalibrováno pro 1.0× rozlišení)densifyInterval100 → 200pruneOpacityThreshold0.005 → 0.001opacityResetInterval3 000 → 100 000 (efektivně deaktivováno)shDegreeUpgradeIterations[1K, 2K, 3K]→[2K, 5K, 8K](odložené zvyšování stupně)opacityDecayFactor0.0 → 0.9995 (HTGS schéma, výrazný zisk kvality)opacityDecayInterval50 (beze změny)mergeAfterDensificationfalse → truepositionLRScheduleEndIteration0 → 20 000postTrainingCompactificationtrue (už výchozí hodnota inicializátoru pro.full)
TP3.fullClassicPaper
DETAILY
Variace Classic věrná paperu, vycházející z TP2. Overrides oproti TP2:
maxIterations35 000 → 30 000 (standard z paperu)densifyUntilIteration5 000 → 15 000 (paper: 50 % z maxIter)positionLearningRateFinal1.6e-5 → 1.6e-6 (výchozí hodnota z paperu)opacityLearningRate,scaleLearningRate,rotationLearningRatezpět na výchozí hodnoty z paperu (0.05, 0.005, 0.001)densifyGradThreshold1.1e-6 → 2e-7 (kalibrováno pro ~1–2 M Gs na Bicycle)densifyInterval200 → 100 (paper)pruneOpacityThreshold0.001 → 0.005 (výchozí hodnota z paperu)opacityResetInterval100 000 → 3 000 (paper §5.2, rizikové — v nastavení RadianceKitu stojí kvalitu)opacityDecayFactor0.9995 → 0.0 (paper nemá žádný decay)positionLRScheduleEndIteration20 000 → 30 000 (cosine běží na 100 % z maxIter)
TP4.fullMCMC
DETAILY
Production-Quality MCMC. Overrides oproti inicializátoru:
maxIterations30 000 → 200 000 (MCMC potřebuje zhruba 5× více iterací než Classic)densifyUntilIteration15 000 → 160 000 (80 % z maxIter)positionLearningRateFinal1.6e-6 → 1.6e-5- LR-schedule jako TP2 (všechny 2×)
ssimWeight0.2 → 0.05 (MCMC potřebuje silnější L1-signál)shDegreeUpgradeIterations[1K, 2K, 3K]→[2K, 5K, 8K]densificationStrategy.classic→.mcmcmcmcMaxGaussians150 000 (už v inicializátoru, v Presetu potvrzeno)mcmcNoiseScale5e-5 (hodnota z paperu, osvědčená)mcmcDeadOpacityThreshold0.005 → 0.01mcmcNoiseDecayEnd0 → 160 000 (80 % z maxIter)mcmcCapMultiplier3.0 (už v inicializátoru)mcmcAutoScaleByScenetrue (už v inicializátoru)opacityResetInterval3 000 → 200 000 (efektivně vypnuto, MCMC používá Reloc místo Reset)
TP5.fullMCMCMip
DETAILY
Varianta TP4 s Mip-Splattingem a Gaussian-budgetem originálního paperu. Overrides oproti TP4:
mcmcMaxGaussians150 000 → 1 500 000 (10×, řádová velikost z paperu)useMipSplattingfalse → true (Mip zapnut)
TP6.classicBalanced
DETAILY
Classic střední třídy. Overrides oproti TP2:
maxIterations35 000 → 20 000 (dává prakticky totéž co 30 000, při citelně kratším čekání)positionLRScheduleEndIteration20 000 → 0 (cosine běží na maxIter = 20K, žádná prodloužená fáze)
TP7.mcmcPreview
DETAILY
MCMC diagnostika. Overrides oproti TP4:
maxIterations200 000 → 60 000densifyUntilIteration160 000 → 48 000 (80 %)mcmcMaxGaussians150 000 → 100 000mcmcNoiseDecayEnd160 000 → 40 000mcmcCapMultiplier3.0 → 2.0 (Preview škáluje zdrženlivěji)
TP8.mcmcBalanced
DETAILY
MCMC střední třídy. Overrides oproti TP4:
maxIterations200 000 → 120 000densifyUntilIteration160 000 → 96 000 (80 %)mcmcNoiseDecayEnd160 000 → 96 000 (80 %)mcmcCapMultiplier3.0 → 2.5 (mezi Preview 2.0 a Full 3.0)
TP9.quickTest
DETAILY
Čistý funkční test. Overrides oproti inicializátoru:
maxIterations30 000 → 1 000densifyUntilIteration15 000 → 500densifyGradThreshold2e-6 → 4e-6 (kalibrováno pro 0.25× rozlišení)densifyInterval100 → 50opacityResetInterval3 000 → 100 000 (vypnuto, protože je to výrazně příliš krátké)trainingRenderScale1.0 → 0.25
Jak aplikace určuje strop počtu Gaussianů
Závazná odpověď na otázku „na kolik Gaussianů smí MCMC maximálně narůst?". Vstupují do ní tři veličiny: nastavená hodnota z T62 mcmcMaxGaussians, počet SfM-init bodů tvé scény a předem rezervovaná kapacita bufferu. Aplikace počítá v tomto pořadí:
+ Výchozí hodnotou je T62. Pokud je nastavena na 0, aplikace dosadí 150 000 — tento bezpečnostní práh brání incidentu masového vymírání popsanému v 1.4.3. + Pokud je zapnuto T73 mcmcAutoScaleByScene a T72 mcmcCapMultiplier je větší než 0, aplikace porovná výchozí hodnotu s výrazem „počet init bodů × T72" a použije vyšší z obou hodnot. + Nakonec výsledek omezí na kapacitu bufferu.
Příklad: Bicycle (Mip-NeRF 360, 194 fotografických snímků) → SfM-init ~156 K bodů, T62 = 150 000, T72 = 5.32, auto-scale zapnuto, kapacita bufferu 8 M. 156 K × 5,32 dává 830 K, což je víc než 150 000 a méně než 8 M — efektivní strop je tedy 830 K. Této hranice se drží MCMC-relokace.
Vypočítá skutečný maximální počet splatů při MCMC. Aplikace vezme tvé nastavení „Max Gaussians", podívá se, kolik bodů má tvá scéna na začátku, a přeškáluje pomocí multiplikátoru, pokud je zapnuté „Auto-scale by scene". Strop se tak přizpůsobí scéně, místo aby se pro malou i obrovskou scénu vynucovala stejná hodnota. Ty sám nemusíš dělat nic — aplikace si to sama spočítá při zahájení trénování.
Které pole na co? (Cheat-Sheet)
| Cíl | Pole k ladění |
|---|---|
| Více detailů v dálce | T62 mcmcMaxGaussians vysoko, T72 mcmcCapMultiplier 5+ |
| Více detailů celkově (Classic) | T1 maxIterations vysoko (≤ 40K), T2 densifyUntilIteration ≤ 14 % z T1 |
| Omezit "floatery" při dronových záběrech | T43 frustumCullEnabled zapnuto, T20 skyMaskingEnabled zapnuto, T45 skyDomeEnabled zapnuto |
| Hezčí obloha ve venkovních scénách | T45 skyDomeEnabled zapnuto, T47 skyDomeRadiusMultiplier 30–60 |
| Menší exportní soubor | strategie .mcmc (T61), T56 postTrainingCompactification zapnuto, T62 mcmcMaxGaussians ≤ 200K |
| Rychlejší trénování | T22 trainingRenderScale 0.5, T1 maxIterations snížit na polovinu — ale ne obojí najednou! |
| Lepší lesklé odlesky | T21 shDegreeUpgradeIterations s [2K, 5K, 8K] (žádné brzké navýšení na začátku), MCMC + 200K iterací |
| Živý náhled častěji | T59 livePreviewInterval na 50 — nejhustší hodnota, kterou nabízí Nastavení → Trénování |
| Plynulejší přechody u stínů | T17 ssimWeight mírně zvýšit (0.15–0.25), ale ne přes 0.3 |
| Udržet interiéry kompaktní | P10 Interiérový Preset (, T72 = 1.76) |
Nebezpečná pole
Tato pole mohou při špatné konfiguraci vést k OOM, pádu aplikace, hromadnému vymizení Gaussians nebo nepoužitelným benchmarkovým datům. Zacházej s nimi opatrně:
- T11 densifyGradThreshold — zmenšení na polovinu může vytvořit 2–4× tolik Gaussians, což rychle vyčerpá paměť GPU. Je také třeba dbát na to, aby hodnota odpovídala T22 trainingRenderScale (1.0× → 1e-6, 0.5× → 2e-6, 0.25× → 4e-6). - T72 mcmcCapMultiplier — u velkých scén s > 200 K SfM-init-body a multiplikátorem > 5 vzniká Resolved-Cap v řádu milionů Gaussians. Na Macích s 36 GB RAM je možný OOM. Venkovní hodnota 5.32 funguje jen proto, že příslušná referenční scéna má kolem 156 K init-bodů → 830 K Cap. - T39 testViewIndices — ruční nastavení v souboru presetu může znehodnotit měření kvality (všechny indexy > N → žádné holdouty). Nech seznam prázdný. - T64 mcmcOpacityRegWeight a T65 mcmcScaleRegWeight — V beta verzi 1.4.3 byly nastaveny na 0.01, což vedlo k hromadnému vymizení (460 K → 5 Gaussians během jedné iterace). Od verze 1.4.4 pevně nastaveny na 0.0, ale ruční zvýšení může problém znovu vyvolat. - T15 opacityResetInterval — pokud není 100 000+ (efektivně vypnuto) a trénink je kratší než 10 000 iterací, reset zničí konvergenci. .preview ho má proto nastavený na 100 000 navzdory maxIterations = 5 000. - T54/T55 densifyPhase2* — druhá fáze densifikace končí kaskádou až na nulu Gaussians. Nech obě hodnoty na 0. - T74 useMipSplatting — nepřináší žádný nárůst kvality a u některých venkovních scén může kvalitu obrazu dokonce zhoršit. Výchozí je vypnuto, zapnutí je jen pro experimenty.
Pokud je pole na tomto seznamu a chceš ho změnit, udělej si předem zálohu svého aktuálního presetu (export jako JSON) a zvaž, zda dokážeš výsledek reprodukovatelně změřit — jinak nakonec nebudeš vědět, zda jsi dosáhl zlepšení, nebo zhoršení.