Luku 6 — Koulutuksen määritykset

Tyypillinen preset-JSON-vienti. Ylätason kentät: id (UUID), name, (classic | mcmc | sceneClass | custom), (skeeman versio), (aikaleima), (vapaa teksti). Sisäkkäinen -objekti sisältää toistettavuuden kannalta kriittiset parametrit — tuonnin yhteydessä koko lohko luetaan koulutuksen määrityksiin, ja sovellusversion oletusarvot täyttävät kentät, jotka puuttuvat JSON:sta (esim. sovelluspäivityksen jälkeen). Jos jaat presetin toiselle Macille, lähetä vain tämä JSON-tiedosto.
Koulutuksen määritykset ovat jokaisen RadianceKit-koulutusajon sydän. Ne kokoavat yhteen jokaisen parametrin, joka vaikuttaa koulutukseen — maksimi-iteraatiomäärästä kahdeksaan oppimisnopeuteen sekä MCMC:n, Mip-Splattingin, curriculumin ja scene-aware-cap-logiikan erikoiskenttiin asti. Muokkaat niitä sivupalkin Koulutuksen määritykset -osiossa (Expert View), tallennat ne presetiksi tai lähetät ne JSON-vientinä toiselle Macille. Koulutuksen aikana juuri tämä objekti jäädytetään ja annetaan GPU-taustajärjestelmälle.
Tämä luku on viitemateriaalia edistyneille käyttäjille. Se luettelee koulutuksen määritysten 80 muokattavaa kenttää, 9 mukana toimitettua presetiä sekä Gaussian-capin scene-riippuvaisen ratkaisun. Epäselvissä tapauksissa pätee arvo, jonka valittu preset asettaa — näet sen Inspectorista tai presetin JSON-viennistä.
Sisällysluettelo:
+ Iteration (T1–T2) + Oppimisnopeudet (T3–T10) + Densification — Classic (T11–T16) + Loss (T17–T20) + SH-Degree-Progression (T21) + Performance (T22–T24) + Diagnoosi ja pistepilven esikäsittely (T26–T30) + Regularisointi (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) + Adaptiivinen Densification (T77–T79) + Curriculum (T80–T81) + Staattiset presetit (TP1–TP9) + Miten sovellus määrittää Gaussian-capin + Mikä kenttä mihinkin? (Cheat-Sheet) + Vaaralliset kentät
Iteraatiot (T1–T2)
T1maxIterations
TIEDOT
Oletus: 30 000 (Initializer), 35 000 (.full), 200 000 (.fullMCMC) Alue: 1 000 – 500 000 (UI-liukusäädin), ei kovaa ylärajaa logiikassa
TEKNINEN
Backendin läpikäymien harjoitusiteraatioiden kokonaismäärä. Yksi iteraatio tarkoittaa yhden harjoituskameran forward-renderöintiä, backward-läpikäyntiä kaikkien loss-komponenttien yli (L1 + SSIM + valinnaiset regularisoinnit + Sky-Mask) ja yhtä Adam-optimoijan askelta. Tämä luku vaikuttaa suoraan muihin aikatauluihin: Position-oppimisnopeus noudattaa cosine-annealing-käyrää välillä 0 – joko T1 itse tai T50 positionLRScheduleEndIteration; Densification pysähtyy kohdassa T2 densifyUntilIteration; MCMC-kohinan vaimeneminen päättyy kohdassa T69 mcmcNoiseDecayEnd; SH-Degree-päivitykset tapahtuvat kolmessa T21:ssä määritellyssä kohdassa. Klassisessa densifikaatiossa toimiva alue on 20 000–35 000 iteraatiota, MCMC:llä 60 000–200 000. Presetin arvojen huomattava ylittäminen tuo harvoin lisää laatua — Adam-momentum saturoituu, ja ilman LR-decay-loppua loss jämähtää paikoilleen. Toisin päin, alle ~5 000 iteraatiota johtaa epätäydellisesti konvergoituneisiin geometrioihin (Density-Controlilla on liian vähän aikaa kloonata/jakaa).
T2densifyUntilIteration
TIEDOT
Oletus: 15 000 (Initializer), 5 000 (.full), 160 000 (.fullMCMC) Alue: 0 – T1 maxIterations
TEKNINEN
Iteraatio, jonka jälkeen Densification lakkaa. Siihen asti Gaussianeja kloonataan, jaetaan ja karsitaan T11–T16 (Classic) tai T67–T70 (MCMC) parametroitujen sääntöjen mukaisesti; sen jälkeen Gaussianien määrä pysyy vakiona ja optimoidaan enää positioita, rotaatioita, skaaloja, opasiteetteja ja SH-kertoimia (Refinement-vaihe). 3DGS-alkuperäisjulkaisussa arvo on 50 % arvosta T1, RadianceKitin .full-presetissä vain noin 14 % (5 000/35 000): noin 5 000 iteraation jälkeen jatkuva densifikaatio pikemminkin huonontaa tulosta — enemmän kelluvia artefakteja (floaters), enemmän muistintarvetta, ei laatuvoittoa. MCMC sen sijaan antaa Relocationin jatkua 80 %:iin arvosta T1, koska MCMC ei tuota haitallisia floatereita. Jos T2 valitaan liian pieneksi (< 1 000), syntyy liian vähän Gaussianeja; liian suurena Classicilla (> 50 % arvosta T1) seurauksena on Overgrowth ja RGB-Saturation-Outliers (katso Outdoor-Overtraining-Findings).
Learning Rates (T3–T10)
T3positionLearningRate
TIEDOT
Oletus: 0.00016 Alue: 1e-7 – 1e-3 (suositeltu)
TEKNINEN
Adam-oppimisnopeus jokaisen Gaussianin XYZ-sijainnille harjoittelun alussa (iteraatio 0). Noudattaa cosine-annealing-käyrää ja laskee harjoittelun edetessä arvoon T4 positionLearningRateFinal. Oletusarvo 0.00016 on peräisin 3DGS-alkuperäisjulkaisusta (Kerbl ym.~2023), eikä sitä tule RadianceKitissä skaalata edes kuvatarkkuutta nostettaessa — sijainti liikkuu maailmankoordinaatistossa, ei pikseliavaruudessa. Selvä nosto (> 0.0005) saa Gaussianit hyppimään pitkiä matkoja, jolloin loss muuttuu epävakaaksi; selvästi pienemmät arvot (< 0.00005) taas johtavat siihen, että väärin alustetut pistepilvet eivät koskaan löydä paikkaansa. Suurimmalle osalle kohtauksista oletusarvo on siis oikea valinta. Huomaa: .fullMCMC-tilassa jätämme tämän arvon tarkoituksella oletukseen — MCMC tarvitsee vakiona pysyvät oppimisnopeudet uudelleensijoituslogiikkaansa varten, joten säätämisestä ei ole tässä hyötyä.
T4positionLearningRateFinal
TIEDOT
Oletus: 0.0000016 (Initializer + julkaisu), 0.000016 (.full, .fullMCMC — 10× korkeampi) Alue: 0 – T3 positionLearningRate
TEKNINEN
Sijainnin oppimisnopeuden cosine-annealing-käyrän loppuarvo. Se saavutetaan joko kohdassa T1 maxIterations tai, mikäli asetettu, kohdassa T50 positionLRScheduleEndIteration. RadianceKitin .full-esiasetus käyttää arvoa 0.000016 — eli 10× korkeampi kuin julkaisun oletusarvo 0.0000016. Sekä selvästi pienempi loppuarvo että selvästi suurempi alkuarvo heikentävät tulosta tuntuvasti. Korkea loppuarvo ei ole kompromissi vaan tietoinen valinta: liian voimakkaan vaimennuksen (decay) yhteydessä Gaussianit menettävät refinement-vaiheen aikana kykynsä mukautua äskettäin lisättyihin densifikaatiokandidaatteihin. Schedule-vaihetta voi lyhentää (T50 < T1), jolloin T4 saavutetaan jo ennen harjoittelun loppua ja loppuosa harjoittelusta kulkee vakioarvoisella mini-oppimisnopeudella — tyypillinen konfiguraatio: T50 = 20 000, T1 = 35 000, jolloin refinement tapahtuu arvolla 0.000016 15 000 iteraation ajan.
T5shDCLearningRate
TIEDOT
Oletus: 0.0025 (Initializer + julkaisu), 0.005 (.full ja kaikki MCMC-esiasetukset — 2×) Alue: 0.0001 – 0.05
TEKNINEN
Adam-oppimisnopeus spherical harmonic -värin DC-osalle (degree 0, eli vakioalbedo). SH-DC vastaa Gaussianin suunnasta riippumatonta perusväriä, ikään kuin "perusväriä". RadianceKit kaksinkertaistaa julkaisun oletusarvon laatuesiasetuksissa — tämä nopeuttaa värikonvergenssia, mikä on tarpeen, koska lyhyellä harjoittelulla (alle 5 000 iteraatiota) SH-DC ei muuten ehdi muotoutua. Toisin kuin geometriset oppimisnopeudet, SH-DC:llä ei ole vaimennusta; oppimisnopeus pysyy vakiona kaikkien iteraatioiden ajan (tai noudattaa vain valinnaista extended-phase-vaimennusta kohdasta T51). Vielä selvästi korkeammat arvot (noin 0.01) heikentävät tulosta jälleen ja tekevät väreistä epävakaita.
T6shRestLearningRate
TIEDOT
Oletus: 0.000125 (Initializer + julkaisu), 0.00025 (.full ja MCMC — 2×) Alue: 0.000001 – 0.005
TEKNINEN
Adam-oppimisnopeus korkeamman asteen SH-kertoimille (degree 1, 2, 3 — eli katselusuunnasta riippuvat väriosat, jotka luovat kiiltokohdat, heijastukset ja pehmeän varjostuksen). 20× pienempi kuin T5 julkaisun käytännön mukaisesti, koska näiden kertoimien lukumäärä kasvaa neliöllisesti (3 asteelle 1, 5 asteelle 2, 7 asteelle 3 → yhteensä 15 float-arvoa per Gaussian) ja ilman pienempää oppimisnopeutta kuva ylikylläistyisi. Vapautetaan kahdessa vaiheessa — ensimmäiseen rajaan asti kohdassa T21 shDegreeUpgradeIterations vain degree 0 on aktiivinen (eli vain T5), sitten 1, myöhemmin 2, lopulta 3. Matalat arvot tässä ovat erityisen tärkeitä kohtauksissa, joissa on paljon diffuusia valaistusta; hyvin kiiltävillä pinnoilla (auton lakka, vesi) säätämisestä ei kannata vaivautua — itse SH-esitys on rajallinen.
T7opacityLearningRate
TIEDOT
Oletus: 0.05 (Initializer + julkaisu), 0.1 (.full, MCMC — 2×) Alue: 0.001 – 1.0
TEKNINEN
Adam-oppimisnopeus jokaisen Gaussianin logit-opasiteetille. Sovellus tallentaa opasiteetin rajoittamattomana float-arvona ja muuntaa sen sigmoidilla välille [0, 1]; oppimisnopeus vaikuttaa logit-avaruudessa. Laatuesiasetukset kaksinkertaistavat julkaisun oletusarvon arvoon 0.1; tämä tekee karsinnasta (pruning) tehokkaampaa — kuolleet Gaussianit putoavat nopeammin kynnyksen T14 pruneOpacityThreshold alle. Mikä arvo toimii parhaiten, riippuu Adam-konfiguraatiosta; näiden kahden vuorovaikutus ei ole triviaali. Matalat arvot (< 0.01) johtavat siihen, että "kuolleet" Gaussianit lojuvat ikuisesti ja kuluttavat muistia; liian korkeat arvot (> 0.5) voivat aiheuttaa opasiteetin räjähtämisen, minkä vuoksi optimoija rajaa logit-arvon kiinteästi välille [-15, 3].
T8opacityLearningRateFinal
TIEDOT
Oletus: 0.0 (= "ei vaimennusta") Alue: 0 tai 0.001 – T7 opacityLearningRate
TEKNINEN
Valinnainen cosine-vaimennuksen loppuarvo opasiteetin oppimisnopeudelle. Jos arvo on 0.0, vaimennus on poissa käytöstä ja opasiteetin oppimisnopeus pysyy koko harjoittelun ajan vakiona arvossa T7. Vaimennus arvosta 0.1 arvoon 0.01 heikentää tulosta selvästi; siksi oletusarvona on "pois päältä". Kentän taustalla oleva hypoteesi: refinement-vaiheessa vakiona pysyvä opasiteetin oppimisnopeus saattaisi johtaa oskillaatioon, jolloin splatit, jotka ovat jo saavuttaneet oikean läpinäkyvyystason, siirtyisivät satunnaisten gradienttivaihteluiden vuoksi takaisin. Empiirisesti tätä ei vahvistu — logitin clamping-logiikka estää sen joka tapauksessa. Kenttä pysyy käytettävissä tulevia kokeiluja varten; myös hyvin pitkät MCMC-ajot (> 500 000 iteraatiota) saattaisivat hyötyä siitä.
T9scaleLearningRate
TIEDOT
Oletus: 0.005 (Initializer + julkaisu), 0.01 (.full, MCMC — 2×) Alue: 0.0001 – 0.1
TEKNINEN
Adam-oppimisnopeus kunkin Gaussianin kolmelle skaalakomponentille log-avaruudessa (RadianceKit tallentaa log(scale)-arvon, jotta skaalat pysyvät positiivisina). Julkaisun oletusarvo 0.005, RadianceKitissä kaksinkertaistettu arvoon 0.01 paremman skaalakonvergenssin saavuttamiseksi säädetyillä oppimisnopeuskonfiguraatioilla. Jos arvo jätetään muiden laatuoppimisnopeuksien kanssa julkaisun oletukseen, syntyy havaittavasti liian vähän Gaussianeja — density-control ei pysty kloonaamaan, koska skaalan päivitykset seuraavat liian hitaasti perässä. Skaala hallitsee kunkin Gaussianin laajuutta — liian nopea oppiminen johtaa "neula"-Gaussianeihin (äärimmäisen pitkiin ohuisiin splatteihin, katso T34 scaleRatioPruneThreshold), liian hidas oppiminen taas jättää splatit liian kompakteiksi ja density-control joutuu jakamaan (split) liian usein.
T10rotationLearningRate
TIEDOT
Oletus: 0.001 (Initializer + julkaisu), 0.002 (.full, MCMC — 2×) Alue: 0.0001 – 0.05
TEKNINEN
Adam-oppimisnopeus kunkin Gaussianin neljälle kvaternionikomponentille. Kvaternioni normalisoidaan uudelleen (L2-normi = 1) jokaisen Adam-päivitysaskeleen jälkeen — muuten kovarianssimatriisi degeneroituisi. RadianceKit kaksinkertaistaa julkaisun oletusarvon laatuesiasetuksissa, koska rotaatiolla on skaalaan / sijaintiin verrattuna pienemmät absoluuttiset gradienttimagnitudit (yksikköpallon pinnalla jokainen askel pysyy lyhyenä), ja ilman 2×-kerrointa rotaatio jäisi 35 000 iteraation ikkunassa selvästi alikonvergoituneeksi. NeRF-Blender-kohtauksissa (Lego, Chair) rotaatiolla on erityisen suuri vaikutus — kohteiden reunat asettuvat oikein vasta 5 000–10 000 iteraation jälkeen.
Densifiointi — Klassinen (T11–T16)
T11densifyGradThreshold
TIEDOT
Oletus: 0.000002 (Initializer, kalibroitu 0.5× resoluutiolle), 0.0000011 (.full, kalibroitu 1.0×), 0.000004 (.quickTest, kalibroitu 0.25×), 2e-7 (.fullClassicPaper) Alue: 1e-8 – 1e-3 (resoluutioriippuvainen)
TEKNINEN
Kynnysarvo kuvaruutuavaruuteen projisoidun sijaintigradientin L2-normille, jonka ylittyessä Gaussian merkitään kloonattavaksi tai jaettavaksi. Absoluuttinen arvo riippuu suoraan harjoitusresoluutiosta — se skaalautuu suunnilleen suhteessa 1/resoluutio² (enemmän pikseleitä = pienemmät per-pikseli-gradientit). Siksi jokainen T22 trainingRenderScale-taso tarvitsee kalibroidun kynnysarvon: 0.25× → 4e-6, 0.5× → 2e-6, 1.0× → 5e-8 … 1.1e-6 (.full). Paperin oletusarvo 0.0002 on NDC-normalisoitu eikä suoraan verrattavissa RadianceKitin maailma-avaruuden putkeen. T52 adaptiveDensifyThreshold-lipulla arvo voidaan laskea ajon aikana nykyisen gradienttijakauman p98-arvosta — todellisissa kohtauksissa Gaussian-määrä kuitenkin romahtaa dramaattisesti (massakarsinta); lippu jätetään siksi pois päältä. T77–T79 tarjoavat vaihtoehtoisen adaptiivisen logiikan liukuvan mediaanin avulla. Tämä kenttä ei ole vaaraton — puolittaminen tuottaa 2–4× enemmän Gaussianeja (muistipaine, OOM-riski); kaksinkertaistaminen voi jättää kohtauksen ali-densifioiduksi.
T12densifyFromIteration
TIEDOT
Oletus: 500 Alue: 100 – 5 000
TEKNINEN
Ensimmäinen iteraatio, josta alkaen densifiointi aktivoituu. Sitä ennen tapahtuu vain „paljasta" oppimista alkuperäisestä SfM-pistepilvestä ilman uusien Gaussianien luomista. Oletusarvo 500 on peräisin 3DGS-paperista ja antaa alustukselle aikaa vakiintua — jos densifiointi alkaisi jo iteraatiosta 0, väärin sijoitetut SfM-pisteet klooontuisivat moneen kertaan ennen kuin löytävät ylipäätään oikean paikkansa. Selvästi myöhempi aloitus (esim. 1 000) heikentää tulosta hieman; pidä oletusarvo.
T13densifyInterval
TIEDOT
Oletus: 100 (Initializer, MCMC), 200 (.full) Alue: 50 – 1 000
TEKNINEN
Kuinka monta iteraatiota on kahden densifiointivaiheen välissä. Paperin oletusarvolla 100 — joka 100. iteraatiolla densifiointiehdokkaiden lista arvioidaan, kloonataan/jaetaan ja samalla poistetaan karsintaehdokkaiden lista (sigmoid(opacity) < T14 pruneOpacityThreshold). .full-tilassa 200 on osoittautunut toimivaksi — se kevyentää GPU:ta, koska uudelleenjärjestelypasseja ajetaan vähemmän, ja antaa jokaiselle Gaussianille enemmän aikaa asettua paikoilleen kloonaustoimen jälkeen. Lyhyemmät välit johtavat Quality-asetuksessa ylidensifiointiin: syntyy huomattavasti enemmän Gaussianeja ilman, että kuva paranee. MCMC:ssä sama kenttä tulkitaan uudelleensijoitusväliksi; katso T67 mcmcRelocationInterval MCMC-kohtaista logiikkaa varten.
T14pruneOpacityThreshold
TIEDOT
Oletus: 0.005 (Initializer, paperi, MCMC), 0.001 (.full) Alue: 0.0001 – 0.1
TEKNINEN
Sigmoid-peittävyyskynnys, jonka alapuolella Gaussian poistetaan seuraavassa densifiointivaiheessa. Toimii yhdessä T7 opacityLearningRate-arvon ja optimoijan logit-rajoituslogiikan kanssa. .full-tilassa arvo on 0.001 eikä 0.005 — splatit, joilla on merkitystä vain eksoottisissa katsekulmissa, säilyvät näin pidempään ja osallistuvat SH-yksityiskohtiin. Vielä pienemmät arvot (esim. 0.0001) eivät tuo enää lisähyötyä: karsintaa tehdään liian vähän ja muistia tuhlataan. Tärkeää: tiheydenhallinnan tulee AINA karsia, vaikka puskurikapasiteetti olisi jo täynnä muiden toimenpiteiden vuoksi — muuten kuolleet Gaussianit kasautuvat ja määrä jäätyy paikalleen.
T15opacityResetInterval
TIEDOT
Oletus: 3 000 (Initializer + paperi), 100 000 (.full = käytännössä pois käytöstä), 200 000 (.fullMCMC = pois käytöstä) Alue: 1 000 – 100 000+
TEKNINEN
Joka kuinka monennella iteraatiolla kaikkien Gaussianien peittävyys nollataan matalaan arvoon (~0.01) — toimenpide 3DGS-paperista, jonka tarkoituksena on arvioida uudelleen „jäätyneet" splatit. Yhdessä RadianceKitin lämmittelyvaiheen, stokastisen harjoitusasetuksen ja kaksinkertaistettujen oppimisnopeuksien kanssa opacity-nollaus maksaa huomattavasti laatua, ja optimoijan logit-rajoitus kattaa sen tehtävän joka tapauksessa jo. Siksi se on .full-tilassa käytännössä pois käytöstä (100 000 > 35 000 = ei koskaan laukea). .fullClassicPaper-tilassa (paperille uskollinen versio) se on tarkoituksella asetettu takaisin arvoon 3 000 — siinä tavoitteena on saavuttaa alkuperäisen paperin Gaussian-budjetit.
T16maxScreenSize
TIEDOT
Oletus: 0.0 (= pois käytöstä) Alue: 0 (pois) tai > 0
TEKNINEN
Suurin kuvaruutuavaruuden koko (projisoituina pikseleinä), jonka Gaussian saa saavuttaa ennen kuin se pakotetaan jaettavaksi. Arvo on asetettu nollaan — RadianceKitin tiheydenhallinta käyttää sen sijaan maailma-avaruuden skaalakynnysarvoa samasta gradienttilogiikasta. Pysyy kenttäluettelossa, koska tulevat kokeilut Mip-Splattingin (T74–T76) tai kohtauskohtaisten splattaus-strategioiden kanssa saattaisivat hyötyä siitä. Aktivointi (arvo > 0, esim. 20) pakottaisi hyvin suuriksi kasvaneet splatit ruudulla jakautumaan — olennaista suurilla, sileillä seinäpinnoilla, joilla yksittäinen jättiläissplat tarjoaa liian vähän yksityiskohtia.
Häviö (T17–T20)
T17ssimWeight
TIEDOT
Oletus: 0.2 (Initializer + paperi + .full), 0.05 (kaikki MCMC-esiasetukset) Alue: 0.0 – 1.0
TEKNINEN
D-SSIM-osuuden paino yhdistetyssä häviöfunktiossa loss = (1 - λ) * L1 + λ * D-SSIM, jossa λ = T17. 3DGS-paperin oletusarvo 0.2 on oikea valinta Classic-tihentämiselle — jo 0.3 heikentää tulosta selvästi. MCMC:lle sopiva arvo on sen sijaan 0.05, koska MCMC tarvitsee stokastisen tutkimisensa vuoksi vahvemman L1-signaaliosuuden — suuremmat SSIM-painot heikentäisivät relokaatiopäätöksiä. SSIM on huomattavasti kalliimpi laskea kuin L1 (paikalliset 11×11-ikkunat koko kuvan yli); RadianceKit käyttää MPS-kiihdytettyä toteutusta, joka pysyy alle 1 ms:ssa per 1080p-kuva. Scene-Class-esiasetukset käyttävät kohtauskohtaisia arvoja väliltä 0.082 (.outdoorPreset) ja 0.171 (.indoorPreset).
T18ssimWeightRefinement
TIEDOT
Oletus: 0.0 (= "ei vaihdosta, säilytä ssimWeight") Alue: 0 tai 0 – 1.0
TEKNINEN
Valinnainen SSIM-arvo hienosäätövaiheelle kohdan T2 densifyUntilIteration jälkeen. Nostaminen 0.2:sta 0.3:een hienosäätövaiheessa heikentää tulosta molemmilla mitoilla — sekä L1:llä että SSIM:llä; siksi oletusarvo on 0.0. Kentän takana ollut hypoteesi oli, että tihentämisen jälkeen — kun uusia Gaussian-pisteitä ei enää synny — vahvempi SSIM-osuus maksimoisi rakenteellisen terävyyden. Empiirisesti väärin: SSIM-painon nostaminen tarkoittaa epäsuorasti L1-painon laskemista, ja L1 on selvästi informatiivisempi signaali lopullisessa hienosäätövaiheessa. Kenttä pysyy käytettävissä tulevia kokeiluja varten perkeptuaalisen häviön (T60) tai reunahäviön (T19) kanssa, joissa hienosäätökohtainen häviökoostumus voisi olla järkevä.
T19edgeLossWeight
TIEDOT
Oletus: 0.0 (= pois käytöstä) Alue: 0 tai 0.001 – 1.0
TEKNINEN
Kokeellinen häviötermi: Sobel-gradienttialueen L1-häviön paino, joka vertaa kuvan reunoja suoraan (ground truth -Sobel vs. renderöinnin Sobel) L1:n ja SSIM:n lisäksi. Hypoteesi: reunatieto on kuvanlaadun perkeptuaalinen kulmakivi ja eksplisiittisen termin pitäisi kannustaa Gaussian-pisteitä osumaan reunoihin paremmin. Käytännössä siitä ei ole hyötyä: havaittava paino (0.1) heikentää tulosta, pieni paino (0.01) ei muuta laatua mihinkään, mutta maksaa laskenta-aikaa. Sobel-vaihe maksaa ylimääräisen MPS-forward-läpiajon sekä ground truthille että renderöinnille. Siksi pysyvästi pois käytöstä. Tuleva käyttötapaus: kohtaukset, joissa on kovia keinotekoisia reunoja (arkkitehtuuri, huonekalut, renderöinnit), voisivat hyötyä — Scene-Class-esiasetukset eivät kuitenkaan käytä tähän tätä termiä, vaan skaalaavat sen sijaan SSIM-painoa.
T20skyMaskingEnabled
TIEDOT
Oletus: false (Initializer ja kaikki esiasetukset) Alue: boolean
TEKNINEN
Kytkee taivasmaskauksen päälle. Tällöin jokaisesta kuvasta peitetään taivasalue pois Apple Vision -kehyksen avulla, ja häviö kyseisellä alueella asetetaan nollaan. Tarkoitus: ulkokuvauskohtaukset kärsivät usein siitä, että siniset/harmaat/valkoiset taivaspikselit saavat sovelluksen sijoittamaan Gaussian-pisteitä juuri sinne — mikä koetaan "leijukkeena" ("floater"). Ilman taivasmaskia häviö kyseisellä alueella ei koskaan olisi nolla, koska taivas vaihtelee kuvassa hieman, ja sovellus yrittää loputtomasti jäljitellä sitä splateilla. Vision-maski lasketaan kerran per kamera ennen koulutusta ja pidetään RAM-muistissa. Otetaan tyypillisesti käyttöön yhdessä kohdan T45 skyDomeEnabled kanssa (UI-logiikka asetusnäkymässä). Sisätilakohtauksissa tai synteettisissä renderöinneissä kannattaa jättää pois päältä — maski tunnistaisi siellä virheellisesti kattoja tai seiniä "taivaaksi".
SH-Degree-Progression (T21)
T21shDegreeUpgradeIterations
TIEDOT
Oletus: [1_000, 2_000, 3_000] (Initializer), [2_000, 5_000, 8_000] (.full, MCMC), [1_000, 2_000] (.preview — aste 3 ohitetaan) Arvoalue: [Int], jokainen arvo välillä [0, maxIterations], monotonisesti kasvava
TEKNINEN
Iteraatiot, joissa aktiivinen SH-aste kytketään ylös 0→1, 1→2, 2→3. Ennen ensimmäistä rajaa aktiivisina ovat vain DC-komponentit (eli T5 shDCLearningRate), ensimmäisen rajan jälkeen DC + 3 asteen 1 kerrointa, toisen rajan jälkeen + 5 asteen 2 kerrointa, kolmannen rajan jälkeen kaikki 15 kerrointa. Muistintarve per Gaussian kasvaa tällöin portaittain — 4 lukua (float) → 16 lukua → 36 lukua → 64 lukua. Laatupresetit viivästyttävät asteen nostoja Initializerin oletusarvoihin verrattuna, koska geometrian tulee ensin vakiintua, ennen kuin väridetaljit lisätään korkeammalla taajuudellaan. Aikaisemmat rajat [1K, 2K, 3K] tuottavat presetissä .full selvästi huonomman lopputuloksen. .preview katkaisee asteeseen 2, koska aste 3 ei konvergoidu 5 000 iteraatiossa ja kuluttaa vain optimoijan kapasiteettia. Curriculum (T80–T81) tarjoaa vaihtoehtoisen logiikan, joka ylikirjoittaa tämän listan dynaamisesti.
Suorituskyky (T22–T24)
T22trainingRenderScale
TIEDOT
Oletus: 1.0 (Initializer, .full, MCMC, Scene-Class), 0.5 (.preview), 0.25 (.quickTest) Alue: 0.05 – 2.0 (tyypillisesti 0.25, 0.5, 1.0)
TEKNINEN
Renderöintiresoluutio harjoittelun aikana suhteessa harjoituskuvien alkuperäiseen resoluutioon. Arvolla 0.5 jokainen kuva pienennetään 50 %:iin leveydestä × 50 %:iin korkeudesta (eli 25 %:iin pikseleistä), ja Gaussian-renderöinti tapahtuu tässä pienemmässä resoluutiossa. Vähentää sekä muistin- että laskentakuormaa neliöllisesti. Tärkeää: T11 densifyGradThreshold on sovitettava valittuun resoluutioon — gradienttien suuruudet skaalautuvat suhteessa 1/resoluutio², joten .quickTest-tilalla (0.25×) on paljon korkeampi kynnysarvo (4e-6) kuin .full-tilalla (1.0×, 1.1e-6). RadianceKit varoittaa erittäin suurista kuvista ja mukauttaa arvon automaattisesti — 3 MP:n tavoiteresoluutio. Äärimmäisen suurilla 4K-syötekuvilla 0.5 tai jopa 0.25 olisi järkevää, muuten mikä tahansa Mac ajautuu pelkkään CPU-kompaktioon.
T23resolutionWarmupScale
TIEDOT
Oletus: 0.0 (= pois käytöstä) Alue: 0 tai 0.1 –
TEKNINEN
Harjoittele Densification-vaihe (iteraatiot 0 – T2) matalammalla resoluutiolla kuin Refinement-vaihe. .full-tilassa tämä on pois päältä, koska arvolla T22 = 1.0 ja Cosine-Annealingilla ajansäästö jää vähäiseksi ja laatu kärsii hieman. Pysyy kenttäkatalogissa, koska se voisi tulla hyödylliseksi jälleen 4K-syötteillä ja pitkillä harjoitusajoilla — Curriculum (T80) hyödyntää samankaltaista logiikkaa, mutta siinä se on sidottu LR-aikatauluun. Jos tämä on käytössä ja myös T80 curriculumResolutionRamp on tosi, Curriculum voittaa ja ylikirjoittaa tämän arvon.
T24tileSize
TIEDOT
Oletus: 16 Alue: 8, 16, 32
TEKNINEN
Rasterointi-tilejen koko pikseleinä. Gaussian-Splatting-renderöinti on tile-pohjaista: kuva jaetaan 16×16-pikselin laattoihin, ja jokainen laatta kerää sille relevantit Gaussianit, järjestää ne syvyyden mukaan ja sekoittaa ne yhteen. 16 on käytännössä kaikkien 3DGS-toteutusten käyttämä oletusarvo, ja se on kovakoodattu RadianceKitin Metal-ytimiin; tämän arvon muuttaminen vaatisi shadereiden uudelleenkääntämisen eikä ole nykytilassa tehokasta. Pysyy kenttänä siltä varalta, että tuleva moottoriversio tukisi tile-koon dynaamista muuttamista.
Diagnostiikka ja pistepilven valmistelu (T26–T30)
T26depthDistortionWeight
TIEDOT
Oletus: 0.0 (= pois käytöstä) Alue: 0 tai 0.0001 – 0.05
TEKNINEN
Kokeellinen: syvyysvääristymän regularisointihäviön (depth-distortion loss) paino. Rankaisee Gaussianeja, jotka ovat renderöintisäteen suunnassa syvyydeltään hajallaan, vaikka ne käsitteellisesti kuuluvat samaan pintaan — tämä kannustaa keskittyneempiin syvyysjakaumiin ja vähentää floattereita. Kaikilla testatuilla vahvuuksilla tulos huononee sen sijaan että paranisi. Teoreettinen etu — usean näkymän konsistenssin parantaminen — ei näy L1-häviössä, koska hypoteesi olettaa implisiittisesti, että SfM-geometria on oikein ja Gaussianit pitää vain "pinota" oikein. Käytännössä SfM-pistepilvi on yleensä heikoin komponentti, ei pinoaminen. Jää saataville monen näkymän aineistoille, joissa on erityisen puhtaat posetiedot (synteettiset, Mip-NeRF 360 ground truth -datalla).
T27singleViewOverfit
TIEDOT
Oletus: false Alue: boolean
TEKNINEN
Diagnostiikkalippu: jos true, jokaisessa koulutusiteraatiossa käytetään pakotetusti kamera-indeksiä 0 satunnaisen kamerapoolista valitun sijaan. Tarkoitus: jos malli ei pysty ylisovittamaan edes yhteen näkymään (eli häviö näkymässä 0 ei lähene nollaa edes 10 000 iteraation jälkeen), forward/backward-läpikäynnissä on perustavanlaatuinen bugi. Tätä kytkintä käytettiin runsaasti Metal-shadereiden ja differentioituvien rasterointiytimien kehitysvaiheessa. Nykyään se toimii vain järkevyystarkistuksena, kun joku on muuttanut koulutuksen taustajärjestelmää ja haluaa varmistaa asian. Käyttöliittymässä ei ole tähän kytkintä — kenttä on pois päältä kaikissa esiasetuksissa ja pysyy niin.
T28maxCameras
TIEDOT
Oletus: 0 (= "käytä kaikkia kameroita") Alue: 0 tai 1 – N
TEKNINEN
Diagnostiikkaraja: kouluta vain N ensimmäisellä kameralla, jätä kaikki muut huomiotta. Alkuperäinen tarkoitus: testata hypoteesia, että liian monet kamerat aiheuttavat gradienttiristiriitoja (liian monta ristiriitaista häviösignaalia samalle Gaussianille). Keinotekoinen rajoitus ei tuo etua — useammat kuvat tuottavat käytännössä lähes aina paremman laadun. Käyttöliittymässä ei ole tähän säädintä; kenttä on kaikissa esiasetuksissa arvossa 0, eli "kaikki kamerat".
T29maxInitialPoints
TIEDOT
Oletus: 0 (= "käytä kaikkia SfM-pisteitä") Alue: 0 tai 1 000 – 200 000+
TEKNINEN
Varmistus: rajoittaa niiden alkuperäisten SfM-pisteiden määrää, joilla koulutus aloitetaan. Tiheät COLMAP-rekonstruktiot voivat tuottaa yli 60 000 pistettä, mikä suurilla alkuperäisillä skaaloilla johtaa 200–300 Gaussianiin pikselipäällekkäisyyttä kohden — tästä syntyy "sumukenttä", jossa koulutus ei konvergoidu. Alinäytteistys noin 16 000 pisteeseen (kovan rajan logiikka koulutusmoottorissa) tuo alkutiheyden tasolle, jota vertailu-3DGS käyttää, ja vähentää päällekkäisyyttä dramaattisesti. Sovellus asettaa tämän itse hyvin tiheiden rekonstruktioiden yhteydessä; siihen ei ole omaa säädintä.
T30cameraClusterOutlierMultiplier
TIEDOT
Oletus: 10.0 (kaikissa esiasetuksissa — ei koskaan ylikirjoitettu) Alue: 1.0 – 100.0
TEKNINEN
Kamerakäyttöklusterin poikkeama-suodattimen kerroin. Ennen koulutusta koulutusmoottori laskee kaikkien kamera-asemien painopisteen ja suurimman etäisyyden, jonka jokin kamera on painopisteestä. SfM-pisteet, joiden etäisyys painopisteestä ylittää multiplier × maxCameraDistance, hylätään poikkeamina. Oletusarvo 10× on valittu tarkoituksella anteliaaksi. Hienovarainen sivuvaikutus: tiiviimpi SfM (kamerat lähempänä toisiaan) → pienempi → pienempi kynnysarvo → useampi piste hylätään poikkeamana. Löyhempi SfM → suurempi kynnysarvo → vähemmän pisteitä hylätään. Tästä seuraa yllättävä vaikutus: tiiviimpi ja sinänsä parempi SfM-rekonstruktio voi huonontaa koulutusta, koska liian moni alkupiste hylätään. Kenttä on kaikissa esiasetuksissa arvossa 10, eikä sitä voi säätää käyttöliittymästä. Alle 5:n arvot ovat yleensä liian rajoittavia, yli 20:n arvot vaikutuksettomia.
Regularisointi (T31–T37)
T31coarseToFineBlurRadius
TIEDOT
Oletus: 0 (= pois käytöstä) Alue: 0 tai 1 – 10
TEKNINEN
Kokeellinen: Box-Blur-säde, joka lisätään densifikaatiovaiheen alussa referenssikuvaan (ground truth) ja pienennetään lineaarisesti nollaan densifikaation loppuun (T2) mennessä. Hypoteesi: karkeasta hienoon -harjoittelu — ensin karkeat rakenteet, sitten yksityiskohdat — tuottaisi vakaamman geometrian. Kaikilla testatuilla säteillä tulos huononee. Syy epäonnistumiseen: densifikaatio tekee päätöksensä kuvatason gradienttien perusteella, ja sumennus vähentää juuri niitä signaaleja, jotka ovat tärkeitä sen päättämiseksi, "missä pitää klonata". Jää kenttäkatalogiin tulevia testejä varten muunlaisella tiheydenhallintamallilla.
T32scaleRegWeight
TIEDOT
Oletus: 0.0 (= pois käytöstä) Alue: 0 tai 0.0001 – 0.05
TEKNINEN
Kokeellinen: L1-regularisointi maailmanavaruuden mittakaavaan. Rankaisee Gaussianeja, jotka kasvavat liian suuriksi — estää "mega-splatit", jotka peittävät kokonaisia seinäpintoja yhdellä Gaussianilla. Käytössä Gaussianien määrä räjähtää miljooniin ja tulos huononee moninkertaisesti. Syy: mittakaavan regularisointi joutuu ristiriitaan tiheydenhallinnan kanssa — pienemmät mittakaavat tarkoittavat, että useampia Gaussianeja tarvitaan, joten tiheydenhallinta jakaa useammin, mikä puolestaan tarkoittaa enemmän gradienttilaskentaa. Pois käytöstä, mutta dokumentoitu Mip-Splatting-kokeiluja (T74) varten: tässä kontekstissa mittakaavan alaraja voisi olla järkevä.
T33anisotropyRegWeight
TIEDOT
Oletus: 0.0 (= pois käytöstä) Alue: 0 tai 0.0001 – 0.05
TEKNINEN
Kokeellinen: rangaistus max(scale)/min(scale)-suhteesta, tarkoitettu estämään äärimmäisen venyneet "neula"-Gaussianit, jotka havaitaan floattereina. Kaikilla testatuilla voimakkuuksilla tulos huononee selvästi. Syy: regularisointi pakottaa splatit "pyöreään" muotoon, mikä on tasaisella pinnalla (seinä, pöytä, lattia) juuri väärin — siellä litteä, leveä Gaussian on tehokkaampi kuin pallomainen. Pois käytöstä. T34 scaleRatioPruneThreshold tavoittelee samaa päämäärää kohdennetummin, mutta on sekin oletuksena pois käytöstä.
T34scaleRatioPruneThreshold
TIEDOT
Oletus: 0.0 (= pois käytöstä) Alue: 0 tai 5.0 – 100.0 (tyypillisesti 10.0 – 30.0)
TEKNINEN
Kokeellinen harjoittelun jälkeinen karsinta, joka poistaa jokaisen Gaussianin, jonka max(scale)/min(scale)-suhde ylittää tässä asetetun lineaarisen kynnysarvon. Tähtää äärimmäisen venyneisiin "neula/kiekko"-floattereihin, joita pelkkä regularisointi ei pysty poistamaan. Testissä karsinta poisti floattereita toivotulla tavalla, mutta samalla myös järkeviä litteitä splatteja seinillä ja lattioilla — kuvasta tuli reikäisempi. Siksi oletuksena pois käytöstä. Versiosta 1.8 alkaen tätä varten on kytkin Poista neula-/kiekkofloaterit Inspectorin "Training"-osiossa, väliotsikon "Runs automatically at the end of training" alla. Käytössä se toimii tarkoituksella varovaisesti (vain splatit, joiden pisin akseli on noin 50-kertainen lyhimpään verrattuna) ja vaikuttaa seuraavasta harjoittelukerrasta alkaen.
T35opacityRegWeight
TIEDOT
Oletus: 0.0 (= pois käytöstä) Alue: 0 tai 0.0001 – 0.05
TEKNINEN
Kokeellinen: binäärinen ristientropiarangaistus, joka vetää opasiteetin kohti 0:aa tai 1:tä (siis pois "puoliksi läpinäkyvästä"). Hypoteesi: terävämpi opasiteettijakauma parantaisi kuvan selkeyttä. Yhdessä T33:n kanssa regularisointi maksaa laatua; molemmat ovat pois käytöstä. Huomio: 1.4.3-Betassa esiintyi bugi, jossa juuri tähän kenttään oli tehty oletusarvomuutos (alustaja = 0.01), mikä johti Gaussianien massasukupuuttoon (460 000 → 5 yhdessä iteraatiossa). Versiosta 1.4.4 alkaen 0.0 on kiinteästi ankkuroitu oletusarvoksi.
T36opacityDecayFactor
TIEDOT
Oletus: 0.0 (alustaja = pois käytöstä), 0.9995 (.full, .classicBalanced — HTGS-standardi) Alue: 0 (pois) tai 0.95 – 1.0
TEKNINEN
HTGS-mallin toteutus (Hierarchical Time-Gating, Eurographics 2025): joka T37 opacityDecayInterval iteraation välein jokaisen Gaussianin sigmoidiopasiteetti kerrotaan tällä kertoimella. 0.9995 × 100 soveltamiskertaa antaa ~95 % säilymän per densifikaatiovaihe — kevyt mutta jatkuva alaspäin suuntautuva paine kaikkiin opasiteetteihin, joka laskee luotettavasti heikosti vaikuttavat Gaussianit T14 pruneOpacityThreshold-kynnyksen alle. Tuloksena on selvästi parempi lopputulos kuin ilman decay'ta. Aktiivinen vain densifikaatiovaiheen aikana (asti T2), sen jälkeen harjoittelu jatkuu ilman decay'ta, jotta refinement-vaiheessa vakiintuneet opasiteetit pysyvät vakaina. Ei käytössä MCMC:ssä (MCMC:llä on omat mekanisminsa T67 mcmcRelocationInterval:n + T68 mcmcDeadOpacityThreshold:n kautta).
T37opacityDecayInterval
TIEDOT
Oletus: 50 Alue: 10 – 500
TEKNINEN
Iteraatioväli, jonka mukaan T36 opacityDecayFactor sovelletaan. HTGS-paperin oletus 50, säilytetty .full-tilassa. Pitkät välit (>200) kumoavat vaikutuksen osittain, koska kahden soveltamiskerran välillä ehtii tapahtua tarpeeksi gradienttipäivityksiä, jotta opasiteetti nousee taas. Lyhyemmät välit (<20) tekevät decaysta liian aggressiivisen. Aktiivinen vain densifikaatiovaiheessa.
Refinement (T38–T44)
T38gradientAccumulationSteps
TIEDOT
Oletus: 1 (= „yksi näkymä per Adam-askel") Alue: 1 – 8
TEKNINEN
Niiden näkymien lukumäärä, joiden gradientit kerätään yhteen ennen Adam-päivityksen suorittamista. Kun > 1, sovellus käyttää erillistä, „unfused" backward-project-polkua, joka summaa gradientit erilliseen bufferiin; lopullinen soveltaminen skaalataan tekijällä 1/N, jotta magnitudi pysyy vakiona. Klassisessa koulutuksessa arvo 2 ei tuo laatuhyötyä, mutta maksaa aikaa, koska unfused-polku on kalliimpi kuin fused-polku. MCMC:ssä sen sijaan accum = 2 pienentää havaittavasti laatueroa Classic-menetelmään verrattuna — siksi se tarjotaan siellä kytkimenä. Preseteissä arvo on 1. Käyttöliittymässä pääset siihen MCMC Quality -kytkimen kautta Inspector-osiossa „Training": päällä sovellus kerää 2 näkymää per askel, pois päältä 1. Muita arvoja kuin 1 ja 2 voi asettaa vain muokatun preset-tiedoston kautta.
T39testViewIndices
TIEDOT
Oletus: [] (= tyhjä, kaikkia näkymiä käytetään koulutukseen) Alue: Set<Int>, mikä tahansa osajoukko kamera-indekseistä
TEKNINEN
Joukko kamera-indeksejä, joita EI käytetä koulutukseen, vaan jotka säästetään holdoutiksi PSNR/SSIM/LPIPS-arviointia varten. Käytetään vain sisäisissä mittausajoissa: silloin joka kahdeksas näkymä, alkaen indeksistä 0 (LLFF-standardi, sama kuin Mip-NeRF-360- ja 3DGS-paperin käytäntö). Toimitustilassa kenttä pysyy tyhjänä — koulutus käyttää kaikkia näkymiä, eikä käyttöliittymässä ole tähän mitään hallintaelementtiä. Varoitus: tämän kentän manuaalinen asettaminen preset-tiedostossa ilman indeksien ymmärtämistä tekee mittauksesta käyttökelvottoman (esim. jos kaikki indeksit asetetaan yli N:n, vaikka näkymiä on vain N-50 → ei holdouteja → ei arviointia). Omassa preset-viennissä testViewIndices ei kirjoiteta mukaan, koska se on skeenariippuvainen ja jättäisi muuten merkityksettömiä arvoja eri datasettien välille.
T40refinementPruneInterval
TIEDOT
Oletus: 0 (= pois käytöstä) Alue: 0 tai 100 – 5 000
TEKNINEN
Joka N iteraation välein refinement-vaiheen aikana (T2:n jälkeen) suoritetaan lisäkarsintavaihe, joka poistaa Gaussianit, joiden sigmoid(opacity) < T41 refinementPruneOpacityThreshold. Tarkoitus: densifikaation aikana tehdään säännöllisiä density-control-kutsuja, sen jälkeen ei enää — Gaussianit, joiden opasiteetti edelleen laskee, jäävät kuitenkin bufferiin. Käytännössä tämä lisäkarsinta haittaa: yhdessä toisen densifikaatiovaiheen (T54) kanssa se voi tyhjentää Gaussian-kannan kokonaan. Kaikissa preseteissä arvo on 0, eikä sitä voi säätää käyttöliittymässä; jos se silti asetetaan muokatun preset-tiedoston kautta, 1 000 tai 2 000 ovat järkeviä arvoja.
T41refinementPruneOpacityThreshold
TIEDOT
Oletus: 0.0 (= „käytä T14:ää") Alue: 0 tai 0.001 – 0.1
TEKNINEN
Erillinen opasiteettikynnys refinement-karsintaa varten. Densifikaation jälkeen useimmat Gaussianit ovat saavuttaneet huomattavasti korkeamman opasiteetin (> 0.001), joten oletusarvoinen T14 pruneOpacityThreshold olisi liian löysä. Kun T40 on aktiivinen, tämä kenttä määrittää oman kynnysarvonsa. Arvolla 0.0 käytetään edelleen T14:ää. Merkityksellinen vain, kun T40 > 0.
T42midTrainingCompactificationIterations
TIEDOT
Oletus: [] (= pois käytöstä) Alue: [Int], arvot välillä (densifyUntilIteration, maxIterations)
TEKNINEN
Nimenomaiset iteraatiokohdat refinement-vaiheen aikana, joissa suoritetaan compactification-vaihe (poistaa sigmoid(opacity) < 0.01 + outlier-scale-Gaussianit, sama logiikka kuin T56 postTrainingCompactification). Tarkoitus: pitkät refinement-vaiheet voivat kerätä konfetti-/floater-akkumulaatiota, jonka SH sitten ylisovittuu näkymäkohtaisiin artefakteihin. Tyypillinen konfiguraatio, jos aktivoitu: [10000, 20000, 30000] 40K Classic -ajolle. MUTTA: vapaasti valitut siivousmerkit heikentävät lopputulosta johdonmukaisesti — Gaussianien määrä laskee tosin selvästi, mutta kuvavirhe kasvaa enemmän. Vapaasti valittavana iteraatiolistana kenttä jää siksi kaikissa preseteissä tyhjäksi. Vaikutuksen itsessään saavutat käyttöliittymässä Floater Cleanup -kytkimen kautta Inspector-osiossa „Training": klassisilla ajoilla vähintään 30 000 iteraation kohdalla se asettaa kaksi siivouskierrosta keskelle koulutusta. Omat merkit voi asettaa vain muokatun preset-tiedoston kautta.
T43frustumCullEnabled
TIEDOT
Oletus: false Alue: boolean
TEKNINEN
Koulutuksen jälkeen poistetaan kaikki Gaussianit, jotka sijaitsevat koulutuskameroiden frustumien yhdisteen ulkopuolella. Tällaisia Gaussianeja ei koskaan rajoittanut loss-signaali, ja ne ovat aina floatereita. Erityisen tehokas skeenissä, joissa uusi näkymä sijaitsee kamerapolun takana tai vieressä (esim. lineaarisen droonilennon takapuoli) — siellä olevat floaterit eivät koskaan tule näkyviin koulutusvaiheessa, mutta kylläkin myöhemmin 3D-katselijassa liikuttaessa. Droonilennoilla tämä vähentää havaittavasti floatereita, joten se on saatavilla opt-in-toimintona. Oletusarvo false, koska objektikuvauksissa täydellä kiertokattavuudella frustum-yhdiste kattaa koko skeenen eikä ominaisuus poista mitään — tarjolla Settings-kohdassa „Floater Reduction". Outdoor-preset ei aktivoi sitä, koska taivaskupu ratkaisee saman ongelman siellä paremmin.
T44frustumCullExpansion
TIEDOT
Oletus: 1.1 Alue: 1.0 – 2.0
TEKNINEN
NDC-marginaali kohteelle T43 frustumCullEnabled. 1.0 leikkaisi tarkalleen kuvan reunasta, mikä lyhentäisi liikaa kuvan reunalla olevia epävakaita splatteja. 1.1 = 10 % pehmustetta tarkan kamerakehystyksen ulkopuolelle — antaa hieman toleranssia reunapikseleille, jotka voisivat kuitenkin tulla näkyviin hieman siirretyssä uudessa näkymässä. Arvot > 1.2 tekevät karsinnasta käytännössä tehottoman, koska laajennettu frustum kattaa huomattavasti enemmän tilaa.
Taivaskupu (T45–T48)
T45skyDomeEnabled
TIEDOT
Oletus: false (Alustaja + kaikki presetit paitsi P9 Outdoor) Arvoalue: boolean
TEKNINEN
Ennen harjoituksen alkua luodaan pallonmuotoinen pistepilvi (Fibonacci-sphere, jossa T46 näytepistettä), joka sijoitetaan säteelle T47 skyDomeRadiusMultiplier × scene_extent kohtauksen keskipisteen ympärille ja alustetaan väreillä, jotka on otettu kaikkien harjoituskameroiden taivasmaskatuista pikseleistä (katso T20 skyMaskingEnabled). Nämä sky-dome-gaussianit lisätään Gaussian-puskurin alkuun ja "jäädytetään" harjoituksen ajaksi (sijainti/skaala/rotaatio-gradientit = 0, vain SH ja opasiteetti pysyvät optimoitavina). Vaikutus: mustien "konfetti"-alueiden sijaan kaukaisuudessa käyttäjä näkee uusissa näkymissä oikean taivaan. Drone- ja maisemakohtauksissa tämä toimii erittäin hyvin; Outdoor-presetissä (P9) se on oletuksena päällä. Sisätilakohtauksissa kannattaa jättää pois — pallo roikkuisi järjettömästi huoneen ulkopuolella.
T46skyDomeSampleCount
TIEDOT
Oletus: 5 000 Arvoalue: 1 000 – 50 000 (tyypillisesti 2 000 – 10 000)
TEKNINEN
Fibonacci-sphere-näytepisteiden määrä taivaskuvun pallolla. Suuremmat arvot → tiheämpi taivaskupu (parempi suurilla resoluutioilla ja paljon näkyvällä taivaalla), mutta enemmän muistintarvetta. 5 000 on sweet spot 4K-renderöinneille; pienemmillä resoluutioilla riittää 2 000–3 000. Pisteet alustetaan kosini-etäisyyden perusteella jokaiseen harjoituskameran näkymävektoriin nähden vastaavilla taivasmaskatuilla pikseleillä — näytepisteet, joiden näkymäkartio ei näy yhdellekään kameralle, jäävät taakse matalalla alkuopasiteetilla, mutta niitä ei muuteta harjoituksessa (jäädytetty).
T47skyDomeRadiusMultiplier
TIEDOT
Oletus: 30.0 (Alustaja + useimmat presetit), 59.0 (P9 Outdoor) Arvoalue: 5.0 – 200.0
TEKNINEN
Taivaskuvun pallon säde suhteessa kohtauksen laajuuteen (= kameroiden sijaintien keskimääräinen etäisyys toisistaan). 30 = pallon halkaisija on 30-kertainen kamerapilveen verrattuna. Liian pieni (< 5) → taivaskupu interferoi itse kohtauksen kanssa (esim. taivaskupu-splatti päätyy etualalle); liian suuri (> 100) → float32-tarkkuuden menetys taivaskuvun sijainneissa, mikä aiheuttaa renderöintivirheitä kaukaisuudessa. Laajoille ulkokohtauksille 59.0 on sopiva arvo — oletus-30.0 on liian pieni syville maisemille, jolloin taivaskuvun pikselit renderöityvät kuvan reunoilla näkyvästi "seinänä".
T48frozenGaussianCount
TIEDOT
Oletus: 0 (= ei jäädytettyjä gaussianeja) Arvoalue: 0 tai 1 – T46
TEKNINEN
Niiden gaussianien määrä puskurin alussa, joiden sijainti/skaala/rotaatio-gradientit asetetaan optimoijassa nollaan — ne pysyvät tilallisesti jäykkinä koko harjoituksen ajan. Density-control ei saa kloonata, jakaa tai poistaa niitä. Käytetään sky-dome-injektiossa (katso T45): kun taivaskupu on päällä, tämä kenttä asetetaan automaattisesti arvoon T46 skyDomeSampleCount. Manuaalinen asetus on mahdollista (esim. valmiiksi sijoitetun LiDAR-skannauksen pistepilven jäädyttämiseksi), mutta se ei ole suoraan käytettävissä käyttöliittymässä. Tärkeää: puskurin ensimmäiset N gaussiania ovat aina jäädytettyjä — puskurin järjestys ratkaisee, ei mikään eksplisiittinen indeksi.
Adam + LR-Schedule (T49–T55)
T49adamResetIteration
TIEDOT
Oletus: 0 (= pois käytöstä) Alue: 0 tai 100 –
TEKNINEN
Iteraatio, jossa Adam-optimoijan momentum-akkumulaattorit (m1, m2) nollataan. Sen jälkeen bias-korjaus lasketaan käyttäen (iter - adamResetIteration) eikä iter-arvoa. Nollaus densifikaation päättymisen jälkeen heikentää tulosta huomattavasti. Syy: densifikaation aikana kertynyt Adam-momentum sisältää tietoa tyypillisistä gradienttien suuruuksista ja nopeuttaa refinement-vaihetta. Sen poisheittäminen maksaa ensimmäiset ~500 refinement-iteraatiota konvergenssista. Siksi arvo on kaikissa esiasetuksissa 0, eikä sitä voi muuttaa käyttöliittymästä.
T50positionLRScheduleEndIteration
TIEDOT
Oletus: 0 (Initializer = "käytä maxIterations-arvoa"), 20 000 (.full — Cosine päättyy 20K:ssa vaikka maxIter=35K), 30 000 (.fullClassicPaper) Alue: 0 tai 1 000 –
TEKNINEN
Iteraatio, jossa position-LR:n cosine-annealing-käyrä saavuttaa minimiarvonsa. Jos 0, tämä vastaa arvoa T1 maxIterations. Jos > 0, aikataulu jatkuu tähän arvoon asti ja pysyy sen jälkeen vakiona arvossa T4 positionLearningRateFinal. Tämä mahdollistaa "laajennetun refinement-vaiheen" minimaalisella mutta vakiolla oppimisnopeudella — hioo positioita hitaasti ilman uutta vaimennusta. .full tekee juuri näin (aikataulu päättyy 20K:ssa, koulutus jatkuu 35K:hen); lähialueella — 15K:sta 25K:hen — muutokset ovat pieniä, 20K on paras kompromissi. Käytetään yhdessä T51:n kanssa myös muiden kuin position-LR:ien muokkaamiseen laajennetussa vaiheessa.
T51extendedPhaseLRDecay
TIEDOT
Oletus: 0.0 (= pois käytöstä, vakiot LR:t) Alue: 0 tai 0.01 – 1.0
TEKNINEN
Muiden kuin position-LR:ien (skaala, rotaatio, opasiteetti, SH) minimikerroin "laajennetussa vaiheessa" — eli sen jälkeen kun T50 on saavutettu ja position-LR on jo arvossa T4. Jos arvo on 0.1, skaala/rotaatio/opasiteetti/SH vaimenevat vuorostaan cosine-käyrällä arvosta 1.0 (= niiden oletus-LR) arvoon 0.1× oletuksesta. Jos 0.0 (oletus), ne pysyvät vakioina. Täysi vaimennus nollaan asti tuottaa saman tuloksen kuin ei vaimennusta lainkaan — käytös vaikuttaa vaimennuksen kanssa siistimmältä, mutta ei mitattavasti paremmalta. Siksi arvo on kaikissa esiasetuksissa 0, eikä sitä voi muuttaa käyttöliittymästä.
T52adaptiveDensifyThreshold
TIEDOT
Oletus: false Alue: boolean
TEKNINEN
Kokeellinen: jos true, sovellus laskee jokaisessa densifikaatiovaiheessa nykyisen gradienttijakauman p98-arvon ja käyttää sitä dynaamisena kynnysarvona (rajattuna vähintään 0.5× arvoon T11 määritetystä arvosta, jotta se ei karkaisi liikaa). Hypoteesi: automaattinen sopeutuminen kulloiseenkin skenevaiheeseen tekisi tiheydenhallinnasta vakaamman — esim. tiukempi karsinta alussa, löysempi myöhemmin, tai päinvastoin. Käytännössä gaussien määrä romahtaa dramaattisesti — massakarsinta, koska p98 on ensimmäisissä iteraatioissa äärimmäisen korkea ja sen jälkeen lähes mikään ei enää ylitä kynnysarvoa. Kiinteä kynnysarvo on jo hyvin kalibroitu, dynaaminen sopeutus haittaa enemmän kuin auttaa. T77 tarjoaa vaihtoehtoisen adaptiivisen logiikan liikkuvan mediaanin avulla, mikä välttää tämän ongelman.
T53mergeAfterDensification
TIEDOT
Oletus: false (Initializer), true (.full, .classicBalanced, .fullClassicPaper) Alue: boolean
TEKNINEN
Densifikaatiovaiheen lopussa (iteraatio T2) suoritetaan kertaluontoinen yhdistämisvaihe, joka yhdistää toisiaan lähellä olevat, skaalaltaan ja väriltään samankaltaiset gaussit. Vähentää gaussien määrää tyypillisesti 5–15 % ilman näkyvää laadun heikkenemistä. Tarkoitus: intensiivisen kloonauksen jälkeen syntyy klustereita lähes identtisistä gausseista, jotka eivät tuo mitään uutta — yhdistäminen vapauttaa optimoijan kapasiteettia muille alueille. Oletusarvo Classic-laatuesiasetuksissa. Ei käytössä MCMC:ssä, koska MCMC:n uudelleensijoituslogiikka estää tällaisten klustereiden syntymisen ylipäätään.
T54densifyPhase2FromIteration
TIEDOT
Oletus: 0 (= pois käytöstä) Alue: 0 tai T2 – T1
TEKNINEN
Kokeellinen: mahdollistaa toisen densifikaatiovaiheen, joka alkaa hiontatauon jälkeen tästä iteraatiosta ja jatkuu arvoon T55 asti. Hypoteesi: hiontavaiheen jälkeen gradienttiakkumulaattoreilla on vakaammat suuruusluokat ja ne voivat tarkemmin kertoa, mitkä alueet tarvitsevat vielä lisää gausseja. Käytännössä toinen densifikaatiovaihe päättyy kaskadiin, joka romahtaa nollaan gaussiin — yhdessä hiontavaiheen karsinnan (T40) kanssa se tyhjentää puskurin kokonaan. Siksi arvo on kaikissa esiasetuksissa 0, eikä sitä voi muuttaa käyttöliittymästä.
T55densifyPhase2UntilIteration
TIEDOT
Oletus: 0 Alue: 0 tai T54 – T1 Määritelty kohdassa:
TEKNINEN
Toisen densifikaatiovaiheen loppu. Merkityksellinen vain, jos T54 > 0. Molemmat kentät yhdessä pois käytöstä.
Jälkikäsittely + Apple AI (T56–T60)
T56postTrainingCompactification
TIEDOT
Oletus: true (kaikissa production-preseteissä), false (.quickTest, .preview) Arvoalue: boolean
TEKNINEN
Koulutuksen päätyttyä Gaussianit, joiden sigmoid(opacity) < 0.01, poistetaan lopullisesti (ne eivät käytännössä enää vaikuta kuvaan). Vähentää Gaussian-määrää tyypillisesti 58 % ja export-tiedoston kokoa 55 % ilman havaittavaa laatutappiota. Oletuksena päällä production-preseteissä — lopputuloksen tulee olla mahdollisimman kompakti vientiä varten. .quickTest-presetissä pois päältä, koska diagnoosiajoa ei muutenkaan viedä ulos. Toisin kuin T42 midTrainingCompactificationIterations, tämä compactification tapahtuu vasta lopussa — refinement voi siihen asti käyttää kaikkia Gaussianeja.
T57metalFXUpscaling
TIEDOT
Oletus: false Arvoalue: boolean
TEKNINEN
⚠ Poistettu käytöstä 18.7.2026 alkaen, eikä sillä ole enää mitään vaikutusta. Kenttä kuului Inspectorin valitsimeen „Viewport Scaling" (Off/MetalFX/Lanczos). Renderöijä ei koskaan lukenut sitä: blit-päätös tehdään puhtaasti geometrian perusteella (supersamplattuna renderöity ⇒ MPS-Lanczos-alasotanta reunanpehmennykseen, muuten bilineaarinen), eikä MetalFX-polulle ollut ylipäätään mitään kutsukohtaa. Valitsin ja sen syöttämät kaksi virheellistä ilmoitusta on poistettu; overlay-tekstinä on nyt „Sampling", ei „Scaling", eikä missään sovelluksessa enää skaalata ylöspäin MetalFX:llä. Itse kenttä säilyy, koska koulutuskonfiguraatio tallennetaan kokonaisuudessaan — se on mukana jokaisessa tallennetussa scenessä, jokaisessa presetissä ja jo vietyjen PLY-tiedostojen asetuskommentissa; poistaminen saisi avaimen hiljaa katoamaan uudelleenkirjoituksen yhteydessä ja rikkoisi tämän yhteensopivuuden. Samasta syystä kenttä on jätetty pois „Modified"-vertailusta: vanha scene voi kantaa arvoa true, eikä sitä ole enää mahdollista nollata käyttöliittymän kautta. Mikään ei lue sitä — älä kytke sitä uudelleen.
T58mpsLanczosScaling
TIEDOT
Oletus: false Arvoalue: boolean
TEKNINEN
⚠ Poistettu käytöstä 18.7.2026 alkaen, eikä sillä ole enää mitään vaikutusta — katso T57 metalFXUpscaling, josta löytyy myös syy sille, miksi kenttä on silti säilytettävä tallennuksessa. Yksi ilmeinen väärinkäsitys on syytä mainita erikseen: sovellus todella käyttää MPS-Lanczosia viewportissa, mutta sitä ohjaa yksinomaan geometria — supersamplattuna renderöity kuva lasketaan alaspäin reunanpehmennystä varten. Kyseessä on alasskaalaus, ei ylösskaalaus, eikä tämä kenttä ole koskaan laukaissut sitä.
T59livePreviewInterval
TIEDOT
Oletus: 50 (alustaja; presetit eivät aseta tätä kenttää) Arvoalue: 0 (pois), 50, 250 tai 1 000 asetusten valitsimessa
TEKNINEN
Kuinka usein koulutuksen aikana 3D-katselin päivitetään nykyisillä Gaussianeilla. 50 = uusi renderöinti 50 iteraation välein — riittävän usein, jotta edistymistä voi seurata, ilman että koulutus hidastuu havaittavasti. 0 = katselinta ei päivitetä lainkaan (taustakoulutus, maksiminopeus). Pitkissä MCMC-ajoissa kannattaa käyttää arvoa 250 tai 1 000, koska päivitysten yhteenlaskettu ylikuorma alkaa näkyä. Erikoisrooli: kenttä kuuluu koulutuskonfiguraatioon, mutta on sovellustason asetus (Asetukset → Koulutus) eikä osa itse koulutusreseptiä. Siksi se on jätetty pois „Modified"-vertailusta, säilyy presetin vaihdon yli, eikä sitä 18.7.2026 lähtien enää oteta scenen avaamisen yhteydessä tiedostosta — aiemmin ladattu scene korvasi hiljaisesti käyttäjän kuvataajuuden scenen tekijän arvolla, „Pois"-arvo mukaan lukien, eikä ollut mitään toista paikkaa, josta sen olisi voinut palauttaa.
T60perceptualLossWeight
TIEDOT
Oletus: 0.0 (= pois käytöstä) Arvoalue: 0 tai 0.001 – 0.5
TEKNINEN
Perkeptuaalisen loss-termin paino (monikerroksinen blur-feature-matching). Mittaa rakenteellista ja tekstuurista samankaltaisuutta korkeammalla tasolla kuin L1+SSIM — tyypillisesti siellä, missä „pikselintarkka" on vähemmän tärkeää kuin „näyttää realistiselta". Arvo on kaikissa preseteissä 0.0 (pois). Käyttöliittymässä säädät sitä Inspectorin „Training"-osion Perceptual Loss-liu'ulla, alue 0–0,20 askelvälillä 0,01; arvolla 0 sovellus näyttää „Off".
MCMC-tihentäminen (T61–T73)
T61densificationStrategy
TIEDOT
Oletus: .classic (Initializer + Classic-esiasetukset), .mcmc (kaikki MCMC-esiasetukset + Scene-Class) Vaihteluväli: .classic tai .mcmc
TEKNINEN
Valitsee Classic-tihentämisen (klooni/split/prune, Kerbl et al.~2023) ja MCMC-tihentämisen (Stochastic Gradient Langevin Dynamics relokaatiolla, Kheradmand et al.~NeurIPS 2024) väliltä. .classic-tilassa käytetään arvoja T11–T16, .mcmc-tilassa arvoja T62–T73. Huomio vaihdettaessa: Classic-oletukset ja MCMC-oletukset on kalibroitu täysin eri tavalla — jos vaihdat valitsimen Expert View -näkymässä ilman sopivan esiasetuksen lataamista, riskeeraat 1.4.3-bugin tyylisen massasukupuuton (460 K → 5 yhdessä iteraatiossa, koska MCMC-OpacityReg-arvo 0.01 tappaa Classic-opasiteetit). Siksi MCMC-init-oletukset on tarkoituksella "pehmennetty" (kaikki Reg-arvot 0.0).
T62mcmcMaxGaussians
TIEDOT
Oletus: 150 000 (Initializer + .fullMCMC + .mcmcBalanced), 100 000 (.mcmcPreview), 1 500 000 (.fullMCMCMip — Mip-Splatting-variantti 10-kertaisella budjetilla), 1.19 M (.renderPreset), 1.25 M (.outdoorPreset), 670 K (.indoorPreset) Vaihteluväli: 0 (= "käytä puskurin kapasiteettia") tai 10 000 – 5 000 000 Määritelty kohdassa:
TEKNINEN
Kova yläraja Gaussianien määrälle MCMC-strategiassa. Määrä kasvaa asteittain arvon T70 mcmcGrowthRate (tyypillisesti 5 %) verran per relokaatioaskel tähän ylärajaan asti. 150 K on hyvä lähtöarvo — selvästi tämän yläpuolella splat-laatu laimenee (liikaa pieniä, redundantteja Gaussianeja), selvästi alle jää näkymä alitihentyneeksi. Erittäin suurissa näkymissä (esim. 1 545 kuvan droonilento 158 K SfM-init-pisteellä) 150 K on liian alhainen — siksi 1.4.5-laajennus T72 mcmcCapMultiplier + T73 mcmcAutoScaleByScene. Scene-Class-esiasetukset käyttävät näkymäkohtaisia arvoja 670 K:n (sisätila) ja 1.25 M:n (ulkotila) välillä. Arvolla 0 moottori käyttää täyttä puskurikapasiteettia ylärajana.
T63mcmcNoiseScale
TIEDOT
Oletus: 0.00005 (5e-5 = paperin oletusarvo) Vaihteluväli: 1e-6 – 1e-3
TEKNINEN
Kerroin Gaussin kohinalle, joka lisätään jokaisessa MCMC-iteraatiossa jokaisen Gaussianin sijaintiin (SGLD-logiikka). Suurempi = enemmän tutkimista (Gaussianit vaeltavat enemmän, löytävät mahdollisesti parempia paikkoja), pienempi = enemmän hyödyntämistä (Gaussianit pysyvät siellä, missä ne ovat jo hyviä). 5e-5 on sopiva arvo — selvästi pienempi tarkoittaa liian vähän tutkimista, selvästi suurempi (1e-4) liikaa, jolloin splatit hajoavat. Kohinaa vaimennetaan koulutusajan yli kosinimuotoisesti arvoon T69 mcmcNoiseDecayEnd asti — vaimenemisalueen lopussa kohina on käytännössä nolla ja Gaussianit konvergoituvat.
T64mcmcOpacityRegWeight
TIEDOT
Oletus: 0.0 (= poistettu käytöstä RadianceKitin oletuksissa, paperi: 0.01) Vaihteluväli: 0 tai 0.001 – 0.05
TEKNINEN
MCMC-kohtainen L1-sakko opasiteetille. Paperin oletusarvo 0.01 (painaa käyttämättömät Gaussianit lähelle nollaa, tehden niistä käytettävissä relokaatiolle). RadianceKitissä tulos on ilman tätä regularisointia mitattavasti parempi. Syy: arvolla T68 mcmcDeadOpacityThreshold määritelty pruning-kriteeri riittää yksinään — lisä-L1-sakko pakottaisi myös arvokkaat, matalan opasiteetin Gaussianit kuolemaan. Siksi oletusarvo on 0. Huomio: 1.4.3-beta-buildissa Initializer-oletusarvo oli virheellisesti 0.01, mikä johti massasukupuutto-bugiin (katso T61-selitys); 1.4.4:stä lähtien korjattu arvoon 0.0.
T65mcmcScaleRegWeight
TIEDOT
Oletus: 0.0 (= poistettu käytöstä, paperi: 0.01) Vaihteluväli: 0 tai 0.001 – 0.05
TEKNINEN
MCMC-kohtainen L1-sakko skaala-ominaisarvoille. Paperin oletusarvo 0.01. Myös tässä tulos on parempi ilman regularisointia, samasta syystä kuin T64:ssä. Poistettu käytöstä kaikissa RadianceKit-MCMC-esiasetuksissa. Huomio kuten T64:ssä: 1.4.3-bugi.
T66mcmcRelocationInterval
TIEDOT
Oletus: 100 (Initializer + kaikki MCMC-esiasetukset, paperin standardi), 155 (P9 Ulkotila) Vaihteluväli: 50 – 500
TEKNINEN
Iteraatioväli, jossa MCMC relokoi kuolleet Gaussianit (sigmoid(opacity) < T68 mcmcDeadOpacityThreshold) uusiin sijainteihin. Lyhyemmät välit (noin 50) vaikuttavat liian häiritsevästi, häviö (loss) heilahtelee; selvästi pidemmät (noin 200) vievät MCMC:ltä reagointikyvyn. 100 on oikea arvo. Ulkonäkymille se on hieman korkeampi, 155 — pidemmät välit antavat Adamille enemmän aikaa integroida vasta sijoitetut Gaussianit, ennen kuin seuraava reloc-tapahtuma painostaa niitä uudelleen.
T67mcmcWarmupIterations
TIEDOT
Oletus: 500 Vaihteluväli: 100 – 5 000
TEKNINEN
Alkuiteraatioiden määrä, joiden aikana MCMC-relokaatiota ei vielä tapahdu. Vasta tämän lämmittelyn jälkeen reloc-logiikka alkaa. Tarkoitus: ensimmäisten iteraatioiden aikana opasiteettiarvot eivät ole vielä vakiintuneet — jos reloc käynnistyisi heti, Gaussianit sijoitettaisiin vääriin paikkoihin ja jouduttaisiin siirtämään heti uudelleen, mikä tuhoaisi Adam-momentumin. Paperin oletusarvo 500. RadianceKit ottaa tämän arvon käyttöön, koska sen on osoitettu olevan vakaa.
T68mcmcDeadOpacityThreshold
TIEDOT
Oletus: 0.005 (Initializer, paperin standardi), 0.01 (.fullMCMC ja kaikki MCMC-esiasetukset) Vaihteluväli: 0.001 – 0.05
TEKNINEN
sigmoid(opacity)-kynnysarvo, jonka alapuolella Gaussian katsotaan "kuolleeksi" ja tulee relokaation kohteeksi. 0.01 on sopiva arvo — 0.005 muuttaa tuskin mitään, 0.02 on huonompi. Suurempi = aggressiivisempi reloc (useampia Gaussianeja siirretään), pienempi = varovaisempi. 0.01 vastaa suunnilleen "0,5 %:n visuaalista näkyvyyttä". P10 Sisätila käyttää arvoa 0.0142.
T69mcmcNoiseDecayEnd
TIEDOT
Oletus: 0 (Initializer = "ei vaimenemista"), 160 000 (.fullMCMC = 80 % arvosta 200K), 96 000 (.mcmcBalanced = 80 % arvosta 120K), 40 000 (.mcmcPreview) Vaihteluväli: 0 tai 1 000 –
TEKNINEN
Iteraatio, jossa T63 mcmcNoiseScale-kohina vaimenee täysin nollaan (kosinivaimennus iteraatiosta 0 tähän asti). 80 % arvosta maxIterations on sopiva arvo — se antaa MCMC:lle riittävästi tutkimisaikaa, mutta jättää viimeiset 20 % konvergoitumiseen ilman kohinaa. 0 = jatkuva kohina kaikkien iteraatioiden ajan (harvoin järkevää, MCMC ei silloin voi konvergoitua).
T70mcmcGrowthRate
TIEDOT
Oletus: 0.05 (paperin standardi = 5 %) Vaihteluväli: 0.01 – 0.2
TEKNINEN
MCMC-populaatiotavoitteen kasvunopeus per relokaatioaskel. Logiikka: jokaisessa reloc-tapahtumassa tavoitepopulaation kokoa kasvatetaan kertoimella (1 + growthRate), kunnes saavutetaan T62 mcmcMaxGaussians (tai T72/T73:n mukaan skaalattu variantti). 0.05 on sopiva arvo — suuremmat arvot johtavat liian nopeaan kasvuun (Gaussianeja lisätään ennen kuin Adam-momentum ehtii integroida ne), pienemmät alitihentyneisiin näkymiin lopussa.
T71mcmcSigmoidK
TIEDOT
Oletus: 100.0 Vaihteluväli: 10.0 – 500.0 Määritelty kohdassa:
TEKNINEN
Sigmoid-terävyysparametri MCMC:n kohinanvaimennukselle. SGLD-askeleessa Gaussian-kohtaista kohinaa vaimennetaan — korkean opasiteetin Gaussianit (joiden logit on positiivinen) saavat eksponentiaalisesti vähemmän kohinaa kuin matalan opasiteetin Gaussianit. K = 100 on terävä, eli siirtymä "täysi kohina" -tilasta "ei kohinaa" -tilaan tapahtuu hyvin nopeasti opasiteetin 0,5 kohdalla. K = 100 on sopiva arvo — pienemmät arvot (10–50) antavat myös korkean opasiteetin Gaussianeille "täristä mukana" (tuhoaa konvergoituneet Gaussianit), suuremmat (> 500) tekevät siirtymästä keinotekoisen jyrkän, jolloin kuolleita Gaussianeja ei enää siirretä lainkaan.
T72mcmcCapMultiplier
TIEDOT
Oletus: 3.0 (Initializer + .fullMCMC), 2.0 (.mcmcPreview), 2.5 (.mcmcBalanced), 2.98 (P8 Render), 5.32 (P9 Ulkotila), 1.76 (P10 Sisätila) Vaihteluväli: 0 (= poistettu käytöstä) tai 1.0 – 10.0
TEKNINEN
1.4.5-ominaisuus: näkymään mukautuva ylärajaskaalaus. Kun T73 mcmcAutoScaleByScene on true, tehokas yläraja lasketaan (rajoitetaan puskurin kapasiteettiin). Tausta: suurissa näkymissä (esim. 1 545 kuvan droonilento → 158 K SfM-init) T62 = 150 000 on liian alhainen — density-control ei pystyisi kasvamaan lainkaan. Kertoimella 3.0 yläraja skaalautuu tässä esimerkissä arvoon 474 K (158 K × 3.0). Scene-Class-esiasetukset käyttävät näkymäkohtaisia arvoja: ulkotila hyötyy suuresta kertoimesta (5.32 → ~830 K yläraja 156 K:n init-pisteellä), sisätila tyytyy arvoon 1.76 (seinät saturoituvat nopeammin). Ylärajan täydellinen määrittely löytyy -metodista.
T73mcmcAutoScaleByScene
TIEDOT
Oletus: true (Initializer + kaikki MCMC-esiasetukset) Vaihteluväli: boolean
TEKNINEN
1.4.5-ominaisuus: pääkytkin näkymätietoiselle ylärajalogiikalle (katso T72 +). Kun arvo on false, ylärajana käytetään yksinomaan arvoa T62 mcmcMaxGaussians (paluu 1.4.4-käytökseen). Oletuksena päällä, koska muuten suurien näkymien massasukupuutto-ongelmat 1.4.3:sta palaisivat. Poista käytöstä manuaalisesti vain, jos haluat nimenomaan asettaa kiinteän ylärajan — esim. kouluttaaksesi 150 K:n variantin, jonka lopullinen koko on ennakoitavissa.
Mip-Splatting (T74–T76)
Tila: Mip-Splatting ei ole käytännössä tuonut laadullista parannusta ja on joissakin ulkotiloissa jopa heikentänyt tulosta. Kentät jäävät opt-in -tyyppisiksi kokeiluja varten; kaikissa toimitetuissa esiasetuksissa Mip-Splatting on pois päältä.
T74useMipSplatting
TIEDOT
Oletus: false (kaikki tuotantoesiasetukset), true (.fullMCMCMip — tutkimussisarversio) Vaihteluväli: boolean
TEKNINEN
Ottaa käyttöön Mip-Splattingin (Yu et al.~CVPR 2024): 3D-pehmennyssuodatin + 2D-suodatin + α-kompensaatio, joka rajoittaa Gaussian-kohtaisen taajuuden tiheimmän harjoituskameran näytteenottotaajuuden Nyquist-rajaan. Teoreettinen tavoite: aliasingin poistaminen renderöitäessä harjoitusskaalan ulkopuolisilla skaaloilla (0.5× tai 2× harjoitusresoluutiosta). Tämä on käytössä ja toiminnallisesti oikein esikäsittely- ja backward-projection-varjostimissa. Käytännössä toivottu laadun paraneminen kuitenkin jäi saamatta: harjoitusresoluutiolla renderöitäessä käytännössä mikään ei muutu, ja ulkotilaskenissa kuva jopa huononee. Yksi selitys tälle: 3D-pehmennys toimii MCMC-relokaatiota vastaan heti, kun mukana on paljon Gaussianeja. Kenttä jää saataville omiin monimittakaavakokeiluihin.
T75mipSmoothing3DScale
TIEDOT
Oletus: 0.2 (paperin oletusarvo) Vaihteluväli: 0.05 – 1.0
TEKNINEN
3D-pehmennyksen skaalaparametri (Yu et al.~§3.3, paperin oletusarvo 0.2). Suurempi = enemmän maailma-avaruuden pehmennystä per Gaussian (= enemmän anti-aliasingia, mutta myös enemmän sumeutta oletusskaalassa), pienempi = terävämpi mutta alttiimpi aliasingille. Konsultoidaan vain, kun T74 useMipSplatting = true. Ei jatko-optimoitu — jo paperin oletusarvolla 0.2 Mip-Splatting ei tuo mitään hyötyä.
T76mipFilter2DVariance
TIEDOT
Oletus: 0.3 (= täsmälleen aiempi käytös) Vaihteluväli: 0.1 – 1.0
TEKNINEN
2D-mip-suodattimen varianssi, joka lisätään Σ_2D-diagonaaliin (suoraan varianssina, ei neliöitynä). 0.3 on täsmälleen se arvo, joka oli ennen Mip-Splattingia kiinteästi ytimessä. Jos T74 useMipSplatting = false, ydin jättää tämän arvon täysin huomiotta ja käyttää kovakoodattua arvoa 0.3 — joten aiempi käytös pysyy taatusti muuttumattomana. Jos se on käytössä, käytetään tässä asetettua arvoa. Jää kenttäluetteloon mip-sweeppejä varten.
Adaptiivinen tihentäminen (T77–T79)
T77adaptiveDensification
TIEDOT
Oletus: false Alue: boolean
TEKNINEN
Rolling-Median-Tracker vaihtoehtona kiinteälle T11 densifyGradThreshold-arvolle. Jos true, jokaisessa Densify-vaiheessa nykyinen kynnysarvo ylikirjoitetaan arvolla median(viimeiset N avgGrad-näytettä) × T79 adaptiveDensifyMultiplier. N = T78 adaptiveWindow. Tiukempi kuin T52:n p98-variantti, joka laukaisee siellä massakarsinnan (Mass-Pruning): mediaani kertaa 2 asettuu vakiintuneessa tilassa suunnilleen gradienttijakauman p70–p80-kohtaan. Yksinään päälle kytkettynä kenttä ei tuo laatuparannusta; yhdessä curriculumin (katso T80/T81) kanssa kylläkin — siellä curriculum tuottaa hyödyn, tämä kenttä pikemminkin vakauden. Tälle ei ole erillistä säädintä käyttöliittymässä: kenttä on pois päältä kaikissa preseteissä ja sen voi asettaa vain muokatun preset-tiedoston kautta.
T78adaptiveWindow
TIEDOT
Oletus: 1 000 Alue: 100 – 10 000 Määritelty kohdassa:
TEKNINEN
Rolling-Median-Window Densification-tapahtumina (EI iteraatioina — jokainen T13 densifyInterval-vaihe tuottaa yhden näytteen). Oletusarvolla 1 000 — tämä tarkoittaa, että viimeiset 100 000 harjoitusiteraatiota vaikuttavat mediaaniin, eli tyypillisesti koko harjoitushistoria tähän asti. Varhaisessa vaiheessa (ennen T78 näytettä): tracker palauttaa nil → fallback kiinteään kynnysarvoon T11. Merkityksellinen vain jos.
T79adaptiveDensifyMultiplier
TIEDOT
Oletus: 2.0 Alue: 1.0 – 4.0
TEKNINEN
Kerroin rolling-mediaanille adaptiivista kynnysarvoa varten. Oletus 2.0 vastaa suunnilleen tyypillisen gradienttijakauman p70–p80-kohtaa. Matalampi = aggressiivisempi kasvu (enemmän klooneja), korkeampi = tiukempi (vähemmän klooneja). Alueella 1.5–3.0 paras arvo on 2.0. Merkityksellinen vain jos.
Curriculum (T80–T81)
T80curriculumResolutionRamp
TIEDOT
Oletus: false Alue: boolean
TEKNINEN
Koulutuksen resoluutio alkaa arvosta 0.5× ja vaihtuu kohdassa T50 positionLRScheduleEndIteration / 2 (tai T1 maxIterations / 2, jos T50 ei ole asetettu) arvoon T22 trainingRenderScale. Ohittaa asetuksen T23 resolutionWarmupScale, kun se on käytössä. Kahdesta adaptiivisesta lisäominaisuudesta (katso T77) juuri tämä curriculum tuottaa varsinaisen laatuhyödyn — vaiheittainen resoluution nosto antaa sovellukselle aikaa löytää karkea geometria matalammalla resoluutiolla, ennen kuin se siirtyy hienon yksityiskohdan viimeistelyyn. Ei säädettävissä käyttöliittymässä — vain muokatun preset-tiedoston kautta, ja silloin järkevintä on ottaa se käyttöön yhdessä T81:n kanssa.
T81curriculumSHProgression
TIEDOT
Oletus: false Alue: boolean
TEKNINEN
Ohittaa asetuksen T21 shDegreeUpgradeIterations arvoilla [maxIter/4, maxIter/2, maxIter*3/4], eli jakaa SH-tason nostot tasaisesti koko koulutusajalle sen sijaan, että ne painottuisivat alkuun. Hypoteesi: vakaa geometria muodostuu ennen väri-yksityiskohtien räjähdystä, mikä sijoittaa katselusuunnasta riippuvat kiilto-efektit tarkemmin. Yhdessä T77:n kanssa tämä tuottaa hyödyn joissakin kohtauksissa; hyödyn tuo tämä kenttä, pelkkä T77 ei riitä. Ei säädettävissä käyttöliittymässä — vain muokatun preset-tiedoston kautta.
Staattiset esiasetukset (TP1–TP9)
Tässä vain rakenteelliset erot Initializerin oletusarvoihin verrattuna. Yksitoista käyttöliittymän esiasetuksen P1–P11 täydelliset markkinointikuvaukset löydät luvusta 7.
TP1.preview
TIEDOT
Diagnoosi-/esikatseluesiasetus järjestelmille ≥ 10 Gt RAM. Muutokset Initializeriin verrattuna:
maxIterations30 000 → 5 000densifyUntilIteration15 000 → 3 500 (70 % arvosta maxIter)positionLearningRateFinal1.6e-6 → 1.6e-5 (10× korkeampi, vähemmän aggressiivinen decay)shDCLearningRate,shRestLearningRate,opacityLearningRate,scaleLearningRate,rotationLearningRatekukin 2×opacityResetInterval3 000 → 100 000 (käytännössä pois päältä — resetointi tuhoaisi lyhyet harjoitusajot)shDegreeUpgradeIterations[1K, 2K, 3K]→[1K, 2K](aste 3 ei konvergoidu näin lyhyissä ajoissa)trainingRenderScale1.0 → 0.5
TP2.full
TIEDOT
Tuotantolaatuinen Classic. Muutokset:
maxIterations30 000 → 35 000 (tämän yli ylikoulutuksen riski kasvaa: enemmän Gaussianeja ilman laatuhyötyä)densifyUntilIteration15 000 → 5 000 (koeteltu arvo; myöhempi pysäytys on huonompi)- Kaikki oppimisnopeudet 2×
positionLearningRateFinal1.6e-6 → 1.6e-5 (10× korkeampi kuin paperin oletusarvo)densifyGradThreshold2e-6 → 1.1e-6 (kalibroitu 1.0× resoluutiolle)densifyInterval100 → 200pruneOpacityThreshold0.005 → 0.001opacityResetInterval3 000 → 100 000 (käytännössä pois käytöstä)shDegreeUpgradeIterations[1K, 2K, 3K]→[2K, 5K, 8K](myöhäistetty korotus)opacityDecayFactor0.0 → 0.9995 (HTGS-skeema, selvä laatuhyöty)opacityDecayInterval50 (ennallaan)mergeAfterDensificationfalse → truepositionLRScheduleEndIteration0 → 20 000postTrainingCompactificationtrue (jo Initializerin oletus.full-tilassa)
TP3.fullClassicPaper
TIEDOT
TP2:n paperiuskollinen Classic-versio. Muutokset TP2:een verrattuna:
maxIterations35 000 → 30 000 (paperin standardi)densifyUntilIteration5 000 → 15 000 (paperi: 50 % arvosta maxIter)positionLearningRateFinal1.6e-5 → 1.6e-6 (paperin oletusarvo)opacityLearningRate,scaleLearningRate,rotationLearningRatetakaisin paperin oletusarvoihin (0.05, 0.005, 0.001)densifyGradThreshold1.1e-6 → 2e-7 (kalibroitu ~1–2 M Gs:lle Bicycle-aineistolla)densifyInterval200 → 100 (paperi)pruneOpacityThreshold0.001 → 0.005 (paperin oletusarvo)opacityResetInterval100 000 → 3 000 (paperi §5.2, riskialtis — maksaa laatua RadianceKitin asetuksessa)opacityDecayFactor0.9995 → 0.0 (paperissa ei ole decayta)positionLRScheduleEndIteration20 000 → 30 000 (cosine kulkee 100 %:iin arvosta maxIter)
TP4.fullMCMC
TIEDOT
Tuotantolaatuinen MCMC. Muutokset Initializeriin verrattuna:
maxIterations30 000 → 200 000 (MCMC tarvitsee noin 5× enemmän iteraatioita kuin Classic)densifyUntilIteration15 000 → 160 000 (80 % arvosta maxIter)positionLearningRateFinal1.6e-6 → 1.6e-5- Oppimisnopeuksien aikataulu kuten TP2:ssa (kaikki 2×)
ssimWeight0.2 → 0.05 (MCMC tarvitsee vahvemman L1-signaalin)shDegreeUpgradeIterations[1K, 2K, 3K]→[2K, 5K, 8K]densificationStrategy.classic→.mcmcmcmcMaxGaussians150 000 (jo Initializerissa, esiasetuksessa vahvistettu)mcmcNoiseScale5e-5 (paperin arvo, koeteltu)mcmcDeadOpacityThreshold0.005 → 0.01mcmcNoiseDecayEnd0 → 160 000 (80 % arvosta maxIter)mcmcCapMultiplier3.0 (jo Initializerissa)mcmcAutoScaleByScenetrue (jo Initializerissa)opacityResetInterval3 000 → 200 000 (käytännössä pois päältä, MCMC käyttää Relocia resetoinnin sijaan)
TP5.fullMCMCMip
TIEDOT
TP4:n Mip-Splatting-versio alkuperäisen paperin Gaussian-budjetilla. Muutokset TP4:ään verrattuna:
mcmcMaxGaussians150 000 → 1 500 000 (10×, paperin suuruusluokka)useMipSplattingfalse → true (Mip päällä)
TP6.classicBalanced
TIEDOT
Keskitason Classic. Muutokset TP2:een verrattuna:
maxIterations35 000 → 20 000 (tuottaa käytännössä saman kuin 30 000, huomattavasti lyhyemmällä odotusajalla)positionLRScheduleEndIteration20 000 → 0 (cosine kulkee arvoon maxIter = 20K, ei pidennettyä vaihetta)
TP7.mcmcPreview
TIEDOT
MCMC-diagnoosi. Muutokset TP4:ään verrattuna:
maxIterations200 000 → 60 000densifyUntilIteration160 000 → 48 000 (80 %)mcmcMaxGaussians150 000 → 100 000mcmcNoiseDecayEnd160 000 → 40 000mcmcCapMultiplier3.0 → 2.0 (esikatselu skaalaa varovaisemmin)
TP8.mcmcBalanced
TIEDOT
Keskitason MCMC. Muutokset TP4:ään verrattuna:
maxIterations200 000 → 120 000densifyUntilIteration160 000 → 96 000 (80 %)mcmcNoiseDecayEnd160 000 → 96 000 (80 %)mcmcCapMultiplier3.0 → 2.5 (Previewn 2.0 ja Fullin 3.0 välissä)
TP9.quickTest
TIEDOT
Puhdas toimintotesti. Muutokset Initializeriin verrattuna:
maxIterations30 000 → 1 000densifyUntilIteration15 000 → 500densifyGradThreshold2e-6 → 4e-6 (kalibroitu 0.25× resoluutiolle)densifyInterval100 → 50opacityResetInterval3 000 → 100 000 (pois päältä, koska liian lyhyt)trainingRenderScale1.0 → 0.25
Miten sovellus määrittää Gaussian-katon
Sitova vastaus kysymykseen "kuinka moneksi Gaussianiksi MCMC saa enintään kasvaa?". Mukaan lasketaan kolme suuretta: asetettu arvo kohdasta T62 mcmcMaxGaussians, scenesi SfM-alkupisteiden määrä sekä ennalta varattu buffer-kapasiteetti. Sovellus laskee tässä järjestyksessä:
+ Lähtöarvo on T62. Jos se on 0, sovellus asettaa arvoksi 150 000 — tämä turvaraja estää kohdassa 1.4.3 kuvatun mass-extinction-tapauksen. + Jos T73 mcmcAutoScaleByScene on käytössä ja T72 mcmcCapMultiplier suurempi kuin 0, sovellus vertaa lähtöarvoa lausekkeeseen "init-pisteet × T72" ja käyttää näistä kahdesta suurempaa arvoa. + Lopuksi se rajoittaa tuloksen buffer-kapasiteettiin.
Esimerkki: Bicycle (Mip-NeRF 360, 194 valokuvaframea) → SfM-init n. 156 K pistettä, T62 = 150 000, T72 = 5.32, auto-scale päällä, buffer-kapasiteetti 8 M. 156 K × 5,32 on 830 K, mikä on enemmän kuin 150 000 ja vähemmän kuin 8 M — efektiivinen katto on siis 830 K. Tähän rajaan MCMC-relocation pitäytyy.
Laskee todellisen enimmäissplat-määrän MCMC:tä käytettäessä. Sovellus ottaa asetuksesi "Max Gaussians", katsoo, kuinka monta pistettä scenesi alussa sisältää, ja skaalaa kertoimella, jos "Auto-scale by scene" on käytössä. Näin katto mukautuu sceneen sen sijaan, että pienelle ja valtavalle scenelle pakotettaisiin sama arvo. Sinun ei tarvitse tehdä tämän eteen mitään — sovellus laskee sen itse koulutuksen alkaessa.
Mikä kenttä mihinkin? (Pikaohje)
| Tavoite | Säädettävät kentät |
|---|---|
| Enemmän yksityiskohtia kaukana | T62 mcmcMaxGaussians korkealle, T72 mcmcCapMultiplier 5+ |
| Enemmän yksityiskohtia yleisesti (Classic) | T1 maxIterations korkealle (≤ 40K), T2 densifyUntilIteration ≤ 14 % T1:stä |
| Kelluvien pisteiden vähentäminen dronekuvauksissa | T43 frustumCullEnabled päälle, T20 skyMaskingEnabled päälle, T45 skyDomeEnabled päälle |
| Kaunis taivas ulkokohtauksissa | T45 skyDomeEnabled päälle, T47 skyDomeRadiusMultiplier 30–60 |
| Pienempi vientitiedosto | strategia .mcmc (T61), T56 postTrainingCompactification päälle, T62 mcmcMaxGaussians ≤ 200K |
| Nopeampi harjoitus | T22 trainingRenderScale 0.5, T1 maxIterations puolitettuna — mutta ei molempia samaan aikaan! |
| Paremmat kiillot | T21 shDegreeUpgradeIterations arvolla [2K, 5K, 8K] (ei aikaista kasautumista), MCMC + 200K iteraatiota |
| Live-esikatselu useammin | T59 livePreviewInterval arvoon 50 — tiheimpiin arvoihin, joita Asetukset → Harjoitus tarjoaa |
| Pehmeämmät siirtymät varjoissa | T17 ssimWeight hieman korkealle (0.15–0.25), mutta ei yli 0.3 |
| Sisätilojen pitäminen kompaktina | P10 Sisätila-esiasetus (, T72 = 1.76) |
Vaaralliset kentät
Nämä kentät voivat väärin konfiguroituna aiheuttaa OOM:n, sovelluksen kaatumisen, Gaussianien joukkotuhon tai käyttökelvottomia benchmark-tietoja. Käsittele varoen:
- T11 densifyGradThreshold — puolittaminen voi tuottaa 2–4-kertaisen määrän Gaussianeja, mikä täyttää GPU-muistin nopeasti. Huomioi myös: on sovitettava T22 trainingRenderScale-arvoon (1.0× → 1e-6, 0.5× → 2e-6, 0.25× → 4e-6). - T72 mcmcCapMultiplier — suurissa näkymissä, joissa on > 200 K SfM-alustuspistettä ja kerroin > 5, syntyy miljoonien Gaussianien resolved-cap-arvo. 36 Gt RAM -Maceilla OOM on mahdollinen. Ulkotila-arvo 5.32 toimii vain siksi, että vastaavassa referenssinäkymässä on noin 156 K alustuspistettä → 830 K cap. - T39 testViewIndices — manuaalinen asettaminen preset-tiedostossa voi tehdä laadunmittauksesta käyttökelvottoman (kaikki indeksit > N → ei holdout-kuvia). Jätä lista tyhjäksi. - T64 mcmcOpacityRegWeight ja T65 mcmcScaleRegWeight — versiossa 1.4.3-Beta asetettu arvoon 0.01, mikä johti joukkotuhoon (460 K → 5 Gaussiania yhdessä iteraatiossa). Versiosta 1.4.4 alkaen kiinnitetty arvoon 0.0, mutta manuaalinen suurentaminen voi toistaa ongelman. - T15 opacityResetInterval — jos arvo ei ole 100 000+ (käytännössä pois päältä) ja koulutus on lyhyempi kuin 10 000 iteraatiota, reset tuhoaa konvergenssin. .preview pitää sen siksi arvossa 100 000 huolimatta maxIterations = 5 000-asetuksesta. - T54/T55 densifyPhase2* — Toinen densifikaatiovaihe päätyy kaskadiin aina nollaan Gaussianiin asti. Jätä molemmat arvoon 0. - T74 useMipSplatting — ei tuo laatuhyötyä ja voi joissakin ulkotilanäkymissä jopa heikentää kuvanlaatua. Oletuksena pois päältä, käytä vain kokeiluihin.
Jos jokin kenttä on tällä listalla ja haluat muuttaa sitä, tee ensin varmuuskopio nykyisestä presetistäsi (vie JSON-muodossa) ja mieti, pystytkö mittaamaan tuloksen toistettavasti — muuten et jälkikäteen tiedä, aiheutitko parannuksen vai heikennyksen.