Kehote

Kehote on yksittäisistä Stable Diffusionin parametreistä ehdottomasti tärkein. Kehotteella voidaan vaikuttaa kaikkein eniten siihen, miltä generoitu kuva lopulta tulee näyttämään. Ei ole ihme, että englannin kielessä kehotteiden suunnittelulle on jo oma terminsä: prompt engineering. Hyvän kehotteen keksiminen vaatii sekä luovuutta, että kekseliäisyyttä.

Kehotteista on jo nyt olemassa paljon tietoa ja puhtaasti myös ihan puuta heinää. Stable Diffusionissa jo pelkästään satunnaisuudella on niin suuri merkitys, että ihmisille syntyy herkästi sellaisia käsityksiä, että tietyt tavat toimia olisivat parempia kuin toiset. Tekoälymallien ympärillä on myös yhä tietynlaista tietämättömyyttä eli edes mallien kehittäjät eivät tiedä kunnolla miten mallit toimivat.

Lähdetään siitä mitä generointi olisi ilman kehotteita. Generoidut kuvat voisivat näyttää esimerkiksi tältä:

Generoitu kuva ilman kehotetta Generoitu kuva ilman kehotetta Generoitu kuva ilman kehotetta Generoitu kuva ilman kehotetta Generoitu kuva ilman kehotetta Generoitu kuva ilman kehotetta

Näin generoidut kuvat näyttävät joltain, mutta samalla ei miltään. Ne ovat askel eteenpäin satunnaisuudesta, josta Stable Diffusion on työstänyt jotain sellaista, josta ihmisen silmä pystyy jollain tasolla erittelemään asioita.

Stable Diffusion on koulutettu datalla, jonka kielenä on englanti, joten tätä tulisi käyttää generoinnissa. Lisätään kehotteeksi sana “woman”:

Kehotteella “woman” Kehotteella “woman” Kehotteella “woman” Kehotteella “woman” Kehotteella “woman” Kehotteella “woman”

Nyt kun annoimme kehotteessa kuville kontekstin, niin myös lopputulokset ovat sen mukaisia, mutta edelleen sisällötään satunnaisia. Koska emme täsmentäneet tarkalleen mitä halusimme, generoi Stable Diffusion parhaan tietonsa mukaan mitä tahansa kuvia naisista. Kuvat voivat edustaa myös mitä tahansa taidesuuntia, koska emme olleet tarkempia.

Tarkkuus on avaintekijä tekoälytaiteessa! Tekoäly ei ole ajatusten lukija. Sinun tehtäväsi on kertoa, mitä haluat nähdä. Kokeillaan tätä tarkentamalla edellistä kehotetta. Syötetään kehote: “oil on canvas, woman”

Kehotteella “oil on canvas, woman” Kehotteella “oil on canvas, woman” Kehotteella “oil on canvas, woman” Kehotteella “oil on canvas, woman” Kehotteella “oil on canvas, woman” Kehotteella “oil on canvas, woman”

Nyt saamme kuvia naisista, jotka esiintyvät erilaisissa öljyvärimaalauksissa. Edelleenkin kuitenkin tarkkuustasomme on sellainen, että kuvien aiheet vaihtelevat suuresti. Kuvissa vaihtelevat esimerkiksi etnisyys, ihon väri, hiusten väri, vaatteet taustat ja sommittelu. Kuvissa saattaa olla myös sellaisia elementtejä joita emme halua kuvaan, kuten esimerkiksi taulun kehykset.

Tarkennetaan kehotetta siten, että kuvat muistuttaisivat enemmän edellisen esimerkin jälkimmäistä kuvaa. Kokeillaan generointia seuraavalla kehotteella: “oil on canvas, portrait, caucasian woman, red dress”:

Kehotteella “oil on canvas, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, portrait, caucasian woman, red dress”

Nyt generoidut kuvat alkavat näyttää enemmän saman kaltaisilta ja vaihtelu niiden välillä pienenee. Huomaathan kuitenkin, että edelleenkin generoitujen kuvien väliin mahtuu paljon roskaa eli kuvia, jotka eivät näytä yhtään siltä miltä halusimme. Generointi on vahvasti satunnaisuuteen sidottua ja joskus hyvän kuvan aikaan saaminen vaatii onnekkuutta. Esimerkkeinä käytetyt kuvat ovat generoitu siten, että lukuisten epäonnistumisten seasta on valittu parhaimmat. Tekoälyn hyvä puoli on siinä, että aina on helppo yrittää uudestaan!

Tästä eteenpäin generointi voi edetä mihin suuntaan tahansa. Voimme yrittää lisätä kuvaan erilaisia yksityiskohtia tai tarkentaa kuvassa esiintyvän hahmon ulkonäköä. Voimme valita kuvaan jonkun taustan tai vaikka kehottaa mallia jäljittelemään jonkun tunnetun taiteilijan tyyliä. Kenties haluamme vaikka vaihtaa koko tyylisuunnan ja kokeilla jotain uutta. Vain mielikuvitus on rajana sille mitä pystymme luomaan.

Kehotteella “oil on canvas, portrait, caucasian woman, red dress, style of akseli gallen-kallela” Kehotteella “oil on canvas, portrait, caucasian woman, red dress, style of akseli gallen-kallela” Kehotteella “digital art, portrait, caucasian woman, red dress, cyberpunk, unreal engine” Kehotteella “digital art, portrait, caucasian woman, red dress, cyberpunk, unreal engine” Kehotteella “cave painting, portrait, caucasian woman, red dress, prehistoric, rock, finger tracing, venus figure” Kehotteella “cave painting, portrait, caucasian woman, red dress, prehistoric, rock, finger tracing, venus figure”

Kielioppi ja syntaksi

On hyvä ymmärtää, että Stable Diffusion ei ymmärrä luonnollista kieltä. Vaikka olisit kuinka pedantti kieliopin suhteen, niin generoinnin lopputuloksen kannalta sillä ei ole minkäänlaista merkitystä. Kehoteteksti muutetaan generoinnin alussa numeroiksi ja sitä käytetään vertailussa muihin mallin sisälle tallennettuihin numeroihin.

Usein riittää, että kirjoitat sanat englanniksi ja ne ovat oikein. Monesti väärinkirjoituksen huomaa siitä, että tekoäly ei vain ymmärrä sitä haluaisit sen ymmärtää. Kehotteessa on myös syytä välttää sanoja, joilla ei ole generoinnin kannalta mitään merkistä. Esimerkiksi englannin artikkelit (a, an, the), ovat sellaisia, että ne voivat esiintyä missä tahansa yhteydessä ja näin niillä ei ole generoinnin kannalta mitään painotusta.

Kehotetta luodessa voit ajatella, että olet kuin käänteinen kuvantunnistusalgoritmi kuvalle, jota ei ole vielä olemassa. Kuvaile yksittäisillä sanoilla mitä kuvantunnistusalgoritmi kuvasta löytäisi.

Stable Diffusion ei myöskään ymmärrä välimerkkejä, joten niiden käyttäminen on turhaa. Voit halutessasi kuitenkin käyttää pilkkuja erottelemaan sanoja. Tämä on vain ja ainoastaan luettavuuden kannalta merkittävää.

Seuraavat kuvat on generoitu kehotteilla: “oil on canvas, portrait, caucasian woman, red dress” ja “oil on canvas portrait caucasian woman red dress” samasta siemenluvusta.

Kehotteella “oil on canvas, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, portrait, caucasian woman, red dress” Kehotteella “oil on canvas portrait caucasian woman red dress” Kehotteella “oil on canvas portrait caucasian woman red dress”

Kuvat muistuttavat hyvin paljon toisiaan siltä osin kuin ihmisen silmä niitä pystyy erottelemaan. Kuvat eivät kuitenkaan ole täysin identtisiä, sillä pilkut ovat Stable Diffusionin näkökulmasta “merkkejä joilla on arvo” ja nämä arvot muuttavat lopullisen kuvan laskentaa piirun verran.

Pituus

Stable Diffusion hajottaa kehotteet palasiksi, joita kutsutaan tokeneiksi. Nämä palaset eivät ole aina tasan yhden sanan mittaisia, vaan sanat usein pilkkoutuvat eri mittaisiksi tokeneiksi riippuen siitä miten malli niitä tunnistaa. Mitään yhtä vastausta ei siis ole, että kuinka monta merkkiä kehotteen tulisi olla.

Maksimipituus tokeneille on 75 kpl. Esimerkiksi AUTOMATIC1111 tokeneiden kulutusta voi seurata oikeassa yläkulmassa olevan laskurin avulla, joka kasvaa sitä mukaa, kun kehotteeseen syötetään sanoja. Joissakin toteutuksissa tätä 75 kpl rajoitusta on voitu kiertää eri tavoilla, kuten esimerkiksi jakamalla kehote kahdeksi eri kehotteessa ja hyödyntämällä tätä generoinnissa eri keinoin.

Ei ole myöskään mitään selkeää sääntöä siitä, että montako tokenia kehotteen pitäisi hyödyntää. Joskus lyhyellä, mutta tarkalla kehotteella saadaan hyviä kuvia aikaiseksi ja jotkut kuvat taas hyötyvät siitä, että kehotteessa on paljon vaihtelua.

Nyrkkisääntönä: Ole kehotteen kanssa mielummin tarkempi sen sijaan, että jaarittelisit.

Sanojen painotus

Stable Diffusionissa on sanoilla kahdenlaisia painotuksia. Itse kehotteessa sanat voivat painottua eri tavalla esimerkiksi niiden sijainnin perusteella tai siten, että niiden painotusta on muutettu käsin haluttuun suuntaan. Toisekseen sanoilla on painotusta sen mukaan, että kuinka hyvin malli ne tuntee. Jotkut sanat ovat niin yleisiä, että niillä ei ole generoinnin kannalta merkitystä ja toiset taas sellaisia, että malli ei niitä tunne ja ne eivät vaikuta lopputulokseen millään tapaa.

Kehotteessa alkupään sanoilla on aina enemmän painotusta kuin loppukehotteessa. Tärkeät asiat tulisi siis sijoittaa kehotteen alkuun. Kehotteen sanojen painotusta pystytään muuttamaan esimerkiksi AUTOMATIC1111 tapauksessa ()käyttämällä erityistä syntaksia.

Jos se on epäselvää, että tunteeko malli tiettyä sanaa vai ei, voidaan käyttää tämän tutkimiseksi muutamaa tekniikkaa. Helpoin on syöttää haluttu sana yksin kehotteeksi ja katsoa generoiduista kuvista, että onko malli ymmärtänyt mitä on pyydetty. Jos malli ei ymmärrä kehotetta, muistuttaa kuva yleensä sekamelskaa (kts. esimerkkejä sivun alusta). Mallin ymmärrystä sanoista voi vaihtoehtoisesti tutkia myös hakemalla niistä kuvista, joilla mallia on koulutettu.

Joillakin sanoilla on luonnostaan enemmän painoarvoa ja niiden käyttäminen saattaa muuttaa generoitua kuvaa voimakkaasti. Esimerkiksi värit ovat sellaisia, että ne saattavat vuotaa koko kuvaan, kun niillä yritetään muuttaa vain osaa kuvasta.

Seuraavat esimerkit on generoitu kehotteella: “oil on canvas, blue eyes, portrait, caucasian woman, red dress”. Pyyntö sinisistä silmistä vuotaa myös kuvassa esiintyvien naisten vaatteisiin, hiuksiin ja taustaan.

Kehotteella “oil on canvas, blue eyes, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, blue eyes, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, blue eyes, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, blue eyes, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, blue eyes, portrait, caucasian woman, red dress” Kehotteella “oil on canvas, blue eyes, portrait, caucasian woman, red dress”

On myös hyvä huomata, että sanoilla voi olla erilaisia painotuksia riippuen käytetystä mallista. Jotkut mallit ymmärtävät tiettyjä sanoja paremmin kuin toiset.

Taikasanat

Kehotteen taikasanoja ovat sellaiset sanat, jotka eivät suoranaisesti välttämättä liity pyydettävään asiaan, mutta niiden käyttö saattaa parantaa taianomaisesti lopputulosta. Taikasanat ovat monesti sellaisia, että ne on sidottu koulutusdatassa kuviin, joita me ihmiset pidämme eri tavoilla laadukkaina ja se saa siten myös generoitavat kuvat generoitumaan näillä tavoin.

Esimerkkejä taikasanoista:

  • HDR, UHD, 4K, 8k
  • Highly detailed
  • Studio lightning
  • Professional
  • Trending on artstation
  • Canon EOS

Negatiiviset kehotteet

Joskus Stable Diffusion pinttyy tiettyihin asioihin, jotka ilmaantuvat kuviin, vaikka niitä ei sinne haluaisi. Näitä asioita voi yrittää poistaa kuvista käyttämällä negatiivisia syötteitä. Negatiivinen syöte on siis käänteinen normaalista syötteistä, siinä listataan asioita joita lopputuloksessa ei haluta nähdä.

Klassinen esimerkki negatiivisten kehotteiden käytöstä on anatomian parantaminen. Stable Diffusionilla on välillä vaikeuksia ihmisten ruumiinosien generoimisessa, mutta negatiivilla kehotteilla voidaan pyytää generointia “unohtamaan” huono anatomia. Toimivuus tämän osalta on kuitenkin vaihtelevaa ja tapauskohtaista.

Seuraavassa esimerkissä ensimmäinen kuva on generoitu ilman negatiivista kehotetta ja siinä näkyy yksi Stable Diffusionin ongelmista: henkilön kädet ovat generoituneet epäluonnollisen näköisesti. Lisäämällä yksinkertaisen negatiivisen kehotteen: “bad hand anatomy”, tämä ongelma korjaantuu ja kuva säilyy pitkälti myös samanlaisena alkuperäisen kanssa.

Kehotteella “photograph, portrait, caucasian woman, red dress, canon eos, 55mm, bokeh” Kehotteella “photograph, portrait, caucasian woman, red dress, canon eos, 55mm, bokeh” Kehotteella “photograph, portrait, caucasian woman, red dress, canon eos, 55mm, bokeh” ja negatiivisella kehotteella “bad hand anatomy” Kehotteella “photograph, portrait, caucasian woman, red dress, canon eos, 55mm, bokeh” ja negatiivisella kehotteella “bad hand anatomy”


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