Samplerit

Sampleri tai toiselta nimeltään kohinanvaimennin (denoiser) on Stable Diffusionin tärkeimpiä osia. Sen tehtävänä on poistaa siemenluvusta luodusta täydestä satunnaisuudesta kohinaa ja etsiä kuvista mallille koulutettuja asioita. Eri samplereita on lukuisia ja niiden keskenään vertaileminen on haastavaa. Yhtä totuutta tässäkään asiassa ei ole ja mielipiteet vaihtelevat sen mukaan keneltä kysyy.

Samplerit toimvat siten, että ne iteroivat askel kerrallaan kuvaa, joka alussa on pelkkää satunnaisuutta. Samplerit vaativat eri määrän aikaa askellusten välille, joka taas vaikuttaa siihen kuinka kauan kuvan generoiminen kestää. Osa samplereista taas tuottaa alhaisilla askelmäärillä hyviä kuvia, kun taas osa vaatii niitä paljon enemmän.

Samplereita on Stable Diffusionin toteutuksesta riippuen käytettävissä lukuisia. Karkealla tasolla samplereita voidaan kuitenkin jaotella eri ryhmiin niiden toimintamekanismien mukaan sekä sen mukaan minkälainen lopputulos tulee olemaan. Yksi tällainen rajanveto on, että kuinka paljon generoitavat kuvat muuttuvat askellusten välillä. Yleisesti voidaan ajatella, että mitä vähemmän muutoksia tapahtuu, niin sen parempi. Näin askelmäärä vaikuttaa yleensä vain siihen miten hyvänlaatuisen kuvan sampleri tuottaa.

Osa samplereista toimii niin, että ne lisäävät askellusten välillä kuvaan satunnaisuutta. Käytännössä tämä tarkoittaa sitä, että lopputulos voi vaihdella voimakkaasti eri askelten välillä. Alla olevassa esimerkissä on vertailtu kahta sampleria, Euleria ja Euler A:ta. Jälkimmäinen näistä on ancestral sampleri (esi-isä sampleri), jonka toimintamekanismin sivuvaikutuksena on juuri kuvan muuttuminen askellusten välillä.

CFG 7 CFG 7 CFG 1 CFG 1 CFG 30 CFG 30

Toinen parametri jolla samplereita voidaan vertailla, on niiden nopeus. Samplerit voi tässäkin jakaa pitkälti kahteen ryhmään sen mukaan miten ne sisäisesti toimivat. Osa samplereita on ns. toisen asteen samplereita eli ne käsittelevät työn alla olevan kuvan kahdesti. Näin näiden nopeus on myös tuplasti hitaampi verrattuna muihin, vaikkakin sivuvaikutuksena usein on, että kuvan laatu paranee huomattavasti.

Samplereita voi vertailla myös sen perusteella milloin ne on kehitetty ja miksi:

Euler-menetelmät:

  • Euler: Yksinkertaisin mahdollinen sampleri
  • Heun: Eulerista eteenpäin kehitetty hitaampi, mutta tarkempi menetelmä.

Vaihtoehtoiset klassiset toteutukset:

  • DDIM: Ensimmäisiä diffuusiomalleille suunniteltuja samplereita
  • PLMS: DDIM:stä jatkokehitetty uudempi ja nopeampi menetelmä.

DPM-menetelmät:

  • DPM: Vuonna 2022 julkaistu uusi menetelmä. DPM2 on muuten sama, mutta hitaampi ja tarkempi.
  • DPM++: DPM:stä jatkokehitetty menetelmä.

UniPC:

  • UniPC: Vuonna 2023 julkaistu uusi menetelmä, joka tuottaa laadukkaita kuvia alhaisilla askelmäärillä.

Alta löydät esimerkkejä näistä samplereista. Huomaa miten eri samplereilla eri määrä askelia saa aikaan erilaisia tuloksia. Tietyn askelmäärän jälkeen kuva alkaa pysymään samankaltaisena. Tätä voidaan pitää rajana sille miten korkeaa askelmäärää generoinnissa kannattaa käyttää. Jossain vaiheessa kuvat alkavat myös muistuttaa pitkälti toisiaan riippumatta käytetystä samplerista.

Sampleri esimerkki 1 Sampleri esimerkki 1 Sampleri esimerkki 2 Sampleri esimerkki 2 Sampleri esimerkki 3 Sampleri esimerkki 3

DPM-perheen samplereista löytyy myös vaihtoehtoisia “Karras”-toteutuksia, joka viittaa tekniikkaan, jossa satunnaisen kohinan määrää vaihdellaan askellusten eri vaiheissa. Joskus Karras-samplerit saattavat tuottaa parempilaatuisia kuvia. Alta löydät esimerkkejä, jossa on Karras-sampleria on verrattu sampleriin, jossa sitä ei ole käytössä. Karras-samplerit tuottavat vähemmän muuttuvia kuvia suuremmilla askelmäärillä, koska kohinan määrä vähenee, mitä edemmäs askelluksessa edetään.

Karras esimerkki 1 Karras esimerkki 1 Karras esimerkki 2 Karras esimerkki 2 Karras esimerkki 3 Karras esimerkki 3

Valinnan tekeminen samplereiden välillä ei ole yksinkertaista, mutta tästä löydät yhden ehdotelman:

  • Jos haluat nopeita, askelten välillä vähän muuttuvia ja hyvälaatuisia kuvia: DPM++ 2M Karras (20-30 askelta) tai UniPC (20-30 askelta)
  • Jos haluat jotain yksinkertaista ja nopeaa: Euler (30-40 askelta) tai Heun (8-10 askelta)

Erilaisia samplereita on vertailtu esimerkiksi täällä ja täällä.


Oliko kirjoituksesta iloa tai löysitkö siitä virheitä? Voit kommentoida kirjoitusta kommenttikenttään. Muista netiketti!