
Google Colabin käyttö
2025/09/22
Mallin koulutus omilla kasvokuvilla osa 1
2025/10/09Tässä jutussa käyn läpi perusnotebookin keskeiset säädöt. Jatketaan siitä, mihin jäätiin edellisessä artikkelissa. Onnistuin (ja toivottavasti sinäkin) pyörittämään perus ’tekstistä kuva’-Notebookia Colabissa niin, että tuloksena oli kuva. Kuvan alapuolelta löytyy kuitenkin lisää asetuksia, joita ei vielä käyty läpi. Kun Stable Diffusionilla luo kuvia Google Colabissa, vastaan tulee heti joukko asetuksia, jotka vaikuttavat suoraan kuvan laatuun, nopeuteen ja lopputuloksen tyyliin. Osa niistä voi tuntua kryptisiltä: mikä ihme on guidance scale tai miksi kuvakoko pitää valita tietyllä tavalla?
Etsi Notebookista kohta “Running the above cell multiple times will give you a different image every time. If you want deterministic output you can pass a random seed to the pipeline. Every time you use the same seed you’ll have the same image result.”
Tämä tarkoittaa, että jos ajan solun useamman kerran samalla seed luvulla, saan joka kerran täsmälleen saman kuvan. Jos vaihdat seediin numeroa, saan uuden kuvan.
Tästä ominaisuudesta on erityisen paljon hyötyä jos saa “lähes täydellisen kuvan”, mutta haluaa parantaa jotain yksityiskohtaa. Pidetään silloin seed samana ja säädetään vain muita parametreja.
Koodin eka rivi, ja etenkin suluissa oleva numero, on se merkityksellinen.
Kokeillaan muuttaa seedin lukemaa esim 600:aan:
generator = torch.Generator(device).manual_seed(600)
Tämän lisäksi koodikohdan toisella rivillä oleva images[0] tarkoittaa käytännössä, että jos vaihdat koodissa nollan tilalle esim 3, yrittää ohjelma hakea listasta neljännen kuvan. Jos olet pyytänyt pipelinea luomaan vain yhden kuvan, saat virheilmoituksen. Parametriin pitäisi lisätä rivi num_images_per_prompt=4, jolloin pipeline luo neljä kuvaa. Silloin voit hakea niistä minkä tahansa numerolla 0–3. Tähän määrä asiaan päästään myöhemmin tässä jutussa.
Seuraavassa kohdassa tarkastellaan kuvan laatua. Stable Diffusionhan tekee kuvan vähitellen poistamalla kohinaa useassa askelessa (inference steps). Jokainen askel parantaa kuvan tarkkuutta ja yksityiskohtia. Mitä enemmän askelia, sitä realistisempi ja selkeämpi lopputulos. Toisaalta haittapuolena on, että mitä enemmän vaiheita, sen hitaampi generointi.
num_inference_steps=50 (oletus): hyvä tasapaino laadun ja nopeuden välillä. Pudota lukema 20:een ja kuva syntyy nopeammin, mutta yksityiskohdat voivat jäädä epämääräisiksi (esim. hevosen pää tai kypärä ei ole yhtä tarkka). Nosta lukema sataan tai enemmän, niin saatat joskus saada parempaa laatua, mutta yleensä ei näe suurta eroa oletukseen verrattuna, ja generointi kestää paljon kauemmin.
image = pipe(prompt, num_inference_steps=15, generator=generator).images[0]
Esimerkit luvuilla 15 ja 50:


Tämä selvä. Sitten notebookissa viitataan guidance scaleen. Sitä ei tässä muuteta, mutta on tärkeä asia. Se kertoo, kuinka tiukasti mallin pitää pitää kiinni antamastamme tekstikehotteesta. Ilman tätä malli voisi keksiä enemmän sattumanvaraisia kuvia sen sijaan että se tekee juuri kuten pyydämme.
Käytännössä arvot 7–8.5 ovat usein paras kompromissi: kuva näyttää hyvältä ja vastaa kehotetta. Tätä pienemmillä arvoilla kuva voi olla luovempi, mutta vähemmän kehoitteen mukainen. Ja isoilla arvoilla (yli 15) kuva pysyy kehoitteen mukaisena mutta on jäykempi, monimuotoisuus katoaa.
Seuraavat kohdat notebookissa liittyvät kuvien määrään, ja miten ne saadaan ruudukkomuotoon, missä cols määrää palstat ja rows rivit.
num_cols = 3 num_rows = 4
Kolmas ohje edellisten alla liittyy pikselikoon muutokseen. Stable Diffusion tuottaa oletuksena kuvia kooltaan 512 × 512 pikseliä. Tätä oletusta on kuitenkin helppo muuttaa lisäämällä height ja width -parametrit, jolloin voit luoda pysty- tai vaaka kuvia.
Hyvä kuvan koko kannattaa valita muutaman säännön mukaan. Ensinnäkin sekä korkeuden että leveyden tulisi olla luvun kahdeksan kerrannaisia. Alle 512 pikselin menevä koko johtaa yleensä heikompaan laatuun. Jos taas molemmat luvut ovat selvästi yli 512, voi kuvaan tulla toistoa ja kokonaisuus hajoaa.
Paras tapa tehdä suorakulmaisia kuvia on käyttää toisessa suunnassa 512 pikseliä ja toisessa suurempaa arvoa. Esimerkiksi: 512 × 768 (pysty) tai 768 × 512 (vaaka).
Tämän notebookin osiot 2 ja 3
What is Stable Diffusion
Tämä osio selittää mallin toimintaperiaatteen – miten kuva syntyy satunnaisesta kohinasta vähitellen näkyväksi. Se on hyvä lukea, jotta ymmärtää taustan, mutta et tarvitse sitä koodin ajamiseen.
How to write your own inference pipeline with diffusers
Tässä annetaan syvällisempi kuvaus Diffusers-kirjaston toiminnasta. Mallin käyttöön ja omien kuvien generointiin riittää valmis StableDiffusionPipeline, joten lue vain jos olet kiinnostunut mitä taustalla tapahtuu.
Molemmat osiot on siis hyödyllistä taustalukemista, mutta ymmärtääkseni eivät pakollisia, jos tarkoitus on vaan päästä eteenpäin ja alkaa luoda kuvia tai kouluttaa omaa mallia. Minä tein hieman kokeiluja pipelinen kanssa valmiissa koodissa, mutta en saanut mitään mullistavaa aikaiseksi. Palaan tähän, jos jatkossa jokin kohta olisikin olellinen oman mallin kohdalla.
Mikä on seuraava askel ?
Nyt ollaan harjoiteltu valmiilla malleilla ja opittu perusparametrit (seed, steps, guidance, kuvakoko). Seuraava looginen vaihe on siirtyä omien mallien kouluttamisen suuntaan. Ensi kerralla valmistellaan datasetti ja ajetaan ensimmäinen kevyt LoRA- tai DreamBooth-treeni. Jännää!




