Kunstmatige intelligentie (AI) in beeld: Stable Diffusion
De afgelopen maanden veroverde een nieuw stukje kunstmatige intelligentie (oftewel Artificial Intelligence, of AI) de wereld. De naam: Stable Diffusion. Wat is het, wat kan het en hoe kun je met deze grafische AI aan de slag?
Stable Diffusion is in een rap tempo uitgegroeid tot een van de populairste stukjes kunstmatige intelligentie. In dit artikel praat ID.nl jou bij. We behandelen onder andere het volgende:
- De toegevoegde waarde
- Google Colab
- Parameters
- Wil jij meer leren over AI? Lees dan: AI genereert video's
Waar de kunstmatige intelligentie (AI) achter Dall-E 2 geheim is, werd enkele maanden geleden een opensource-alternatief gepubliceerd waarmee iedereen – zelfs op vrij bescheiden eigen hardware – afbeeldingen kan maken op basis van een Engelse beschrijving (prompt genaamd).
Het moois heet Stable Diffusion (of kortweg SD) en de publicatie ervan zorgde voor veel discussie, want sommigen vonden dat je zo’n krachtig stuk gereedschap niet zomaar aan iedereen beschikbaar kunt stellen vanwege mogelijk misbruik. Ondertussen beleven echter miljoenen mensen plezier aan SD en worden er allerlei prachtige nieuwe programma’s omheen gebouwd terwijl dat beoogde misbruik minimaal lijkt.
In dit artikel bekijken we de verschillende manieren om online of op je eigen pc met SD aan de slag te gaan.
Lees ook: Google, Microsoft en ChatGPT: de AI-strijd barst los
Instapmodel
Omdat SD opensource is, wemelt het ondertussen van de aanbieders. Bij sommige partijen betaal je iets voor het gebruik van hun hardware, maar er zijn online ook gratis mogelijkheden, zoals het absolute instapmodel dat luistert naar de naam VoiceArt en dat iedereen met een smartphone gratis kan gebruiken (iOS, Android ).
De naam verwijst naar het feit dat je je prompts zelfs kunt inspreken. Intypen kan echter ook en wanneer we A cute kitten invoeren, verschijnt al snel een afbeelding van een jong katje. Ben je niet tevreden over het resultaat, dan tik je simpelweg op het pictogram rechtsboven waarna SD een nieuwe afbeelding genereert. Ben je wel tevreden dan kun je het plaatje onder andere opslaan, mailen en delen via Instagram of Whatsapp.
Maar hoe kan SD eigenlijk steeds een ander plaatje maken uit één opdracht?
Toegevoegde waarde
Een zeer interessant alternatief voor VoiceArt is Wombo Dream. Deze kun je online gebruiken (dream.ai) of via een iOS- of Android-App. Dream draait al langer mee en maakt daarom naast SD gebruik van allerlei oudere AI. Voordat je in Dream een plaatje maakt moet je een visuele stijl kiezen. Kies je voor Realistic dan gebruik je SD in pure vorm. Andere stijlen voegen (onbekende) trefwoorden toe aan je prompt om het uiterlijk te beïnvloeden. Sommige stijlen gebruiken SD en anderen een oudere (en zeer veel tragere) AI. Je merkt dus snel genoeg met welke je te maken hebt.
Een test
Als voorbeeld maken we een plaatje met de meer uitgewerkte prompt a painting of a city street at night, a detailed matte painting by Evgeny Lushpin, featured on cg society, american scene painting, matte drawing, matte painting, concept art met stijl Realistic. Zoals je ziet verschijnt het resultaat razendsnel.
In de app zie je bij sommige stijlen het woord Premium. Deze zijn alleen beschikbaar voor betalende gebruikers (€ 5,49 per maand of eenmalig € 119,99). Betalende gebruikers hebben als bijkomend voordeel dat Dream per prompt vier afbeeldingen genereert en je prompt-geschiedenis onthoudt. Bovendien kunnen ze Dream gebruiken op het Discord-platform. Een nadeel van Dream is dat je geen controle hebt over instellingen en dat uitvoer altijd in portret-formaat is, wat bij SD lang niet altijd ideaal is. Op dit moment rollen de makers van Dream ook DreamBooth uit, een techniek om eigen beeld aan SD toe te voegen.
Van de makers
Om fondsen te werven voor meer gratis AI biedt het bedrijf achter SD ook een mogelijkheid om de AI online te gebruiken genaamd Dream Studio. In tegenstelling tot de vorige aanbieders heb je hier toegang tot allerlei parameters waarmee je het resultaat kunt beïnvloeden en waar we later op terug komen. Ook kun je gebruik maken van een bestaande afbeelding als startpunt en van inpainting; het veranderen van een deel van een plaatje door middel van een prompt. Na het maken van een account krijg je een aantal gratis credits om het systeem te leren kennen en daarna kun je voor $10 duizend credits kopen, genoeg voor evenveel plaatjes in standaardformaat.
We testen Dream Studio met een prompt voor een meer abstract werkje: abstract transcendental bubbles, by ernie barnes, michael hutter, don maitz, tim white and craola.
Volop keus
De laatste gebruiksvriendelijke online aanbieder van SD die we willen noemen is Nightcafe. Ook Nightcafe stelt je in staat om allerlei parameters van SD in te stellen. Bovendien heb je – net als bij Wombo - de beschikking over zogeheten presets waarmee je makkelijk bepaalde visuele stijlen kunt creëren.
Heb je een gratis account gemaakt bij deze dienst dan heb je als grote voordeel dat je er ook gebruik kunt maken van Dall-e 2 en van oudere modellen zoals VQGAN+CLIP. Zo’n ouder model levert niet het realisme van SD maar kan creatief gezien wel interessant zijn. Bijkomend voordeel van Nightcafe is dat je credits kunt krijgen voor gepubliceerde plaatjes en er daarnaast sowieso dagelijks 5 krijgt. Wil je meer credits gebruiken dan je gratis kunt verdienen dan kun je ofwel een abonnement afsluiten vanaf $9,99 per maand voor 100 credits of credit packs kopen. Dream Studio is aanzienlijk goedkoper maar geeft alleen toegang tot SD.
Colab
Hebben de voorbeelden van de verschillende online aanbieders je belangstelling gewekt maar wil je meer en gratis dan kan dat online via Google Colab. Dankzij het Open Source-karakter van SD wemelt het inmiddels van de afstammelingen en varianten zodat het lastig is om te kiezen welke je het best kunt gebruiken. Een goede is Deforum waarmee je naast plaatjes ook animaties kunt maken (wat wij hier overigens niet zullen doen).
Er zijn twee vereisten. Je moet een Google-account hebben (en dus een Google Drive) en je moet een account hebben bij Hugging Face. Heb je die niet dan kun je rechtsboven op deze site kiezen voor Sign Up.
Nu kun je op huggingface.co/CompVis/stable-diffusion-v-1-4-original het getrainde model van SD downloaden. Log daarvoor zo nodig in en accepteer de voorwaarden. Hierna kun je het bestand sd-v1-4.ckpt (circa 4 GB) downloaden. Ga vervolgens naar je Google Drive en maak daar een map AI en daaronder een map models en een map output. Upload het cktp-bestand naar de map models.
Colab gebruiken 1
Ga nu naar colab.research.google.com/github/deforum/stable-diffusion/blob/main/Deforum_Stable_Diffusion.ipynb.
Een Colab werkblad bestaat uit verschillende cellen die elk een afspeelknop hebben. Klik op de bovenste (bij NVIDIA GPU). Bij het eerste gebruik moet je toestemming geven om het werkblad uit te voeren. Als de cel is uitgevoerd krijgt deze een groen vinkje. Je ziet nu het type GPU dat je in de gratis versie van Colab toegewezen hebt gekregen, vaak een Tesla T4. Die is krachtig genoeg om SD te gebruiken. Vervang in de tweede cel op de eerste twee regels /content door /AI en voer de cel uit. Zoals je ziet worden de namen van de mappen daaronder automatisch aangepast. Voer nu de derde cel uit (Setup Environment) en als deze klaar is cel 4 (Python Definitions).
Colab gebruiken 2
Heeft cel 4 ook een groen vinkje dan voer je cel 5 uit (Select and Load). Dat duurt eenmalig enkele minuten omdat je model van SD wordt gecontroleerd en er het een ander moet worden geïnstalleerd op het Colab-systeem (dus niet op je eigen pc!).
Zoals gezegd ondersteunt Deforum animatie en de instellingen daarvoor vind je in cel 6. Meer informatie hierover vind je op dreamingcomputers.com/deforum-stable-diffusion/deforum-stable-diffusion-settings/. Wij voeren cel 6 uit zoals hij is. Let op: de volgende cel (Prompts) heeft nummer 9. Voer ook deze uit. Voer tot slot cel 10 (Run) uit en scroll naar beneden. Je ziet nu achter elkaar twee afbeeldingen verschijnen die corresponderen met de twee rode prompts in cel 9.
Wil je nieuwe plaatjes maken dan vervang je de rode prompts simpelweg door andere (meer dan twee kan ook) en voer je de cellen 9 en 10 opnieuw uit. Ga je naar je Google Drive dan vind je in de map AI/StableDiffusion mappen met gegenereerde plaatjes. Mocht je instellingen willen bewaren voor een volgend gebruik dan kun je een Colab-werkblad ook kopiëren naar je Google Drive (knop bovenaan werkblad) en hem vervolgens vanaf daar starten.
SD Lokaal
Verreweg de meest veelzijdige manier om SD te gebruiken is op je eigen pc via Stable Diffusion WebUI. Deze werkt al op grafische chips van nVidia met 4 GB geheugen (maar ook op GPU’s van AMD al heeft dat niet de voorkeur). Om WebUI te kunnen gebruiken moeten we enkele voorbereidingen treffen.
Allereerst downloaden we de Python-versie die wordt genoemd op github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Dependencies. Op moment van schrijven is dat de 64-bit Windows-installer 3.10.6. Start deze, zet een vinkje bij Add Python to PATH en rond de installatie af. De tweede vereiste component is de 64-bit installer van Git die je vindt op git-scm.com/download/win.
Open na installatie daarvan een Opdrachtprompt door cmd in het zoekvak van Windows te typen. Vervolgens ga je naar de root van de schijf waar je WebUI wilt installeren (met bijvoorbeeld cd c:\ of cd d:\). Hier geef je het commando git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git dat je desgewenst kunt kopiëren en plakken vanaf de WebUI-site.
Model installeren
Er is nu een nieuwe map aangemaakt met de naam Stable-Diffusion-WebUI. Daaronder vind je een map models\Stable-diffusion. We moeten nu de AI downloaden en installeren. Dat kan met de methode die we hierboven beschreven bij Colab voorbereiden, maar op github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Dependencies vind je nog een alternatieve link die geen account bij Hugging Face vereist en een torrent-link.
Heb je op één van deze manieren sd-v1-4.ckpt gedownload dan kopieer je deze vervolgens naar bovengenoemde map. Optioneel kun je ook nog GFPGAN v1.4 downloaden en deze kopiëren naar de map Stable-Diffusion-WebUI. GFPGAN is een aanvullende AI die gezichten kan verbeteren die SD heeft gemaakt.
We zijn er bijna. Ga in Verkenner naar Stable-Diffusion-WebUI en dubbelklik op webui-user.bat. Dit bat-bestand zal de rest van de benodigde componenten automatisch downloaden en installeren. De eerste keer duurt dat even. Aan het eind zie je in het cmd-venster een lokaal web-adres http://127.0.0.1:7860/. Kopieer dit, open je browser en plak het in de adresbalk. En daar is je werkende WebUI, waar we bovenin een prompt kunnen invullen die met een klik op Generate tot plaatje wordt omgetoverd.
Parameters 1
Bij VoiceArt en Dream kun je niets zelf aanpassen maar bij Dream Studio, Nightcafe, Colab en WebUI heb je (vrijwel) dezelfde parameters waarmee je afbeeldingen kunt beïnvloeden. We behandelen er enkele aan de hand van WebUI. Onder het promptvak biedt WebUI de optie om ‘negatieve prompts’ op te geven; dingen die je juist niet wilt zien. Dit kan helpen om tekst of lijstjes te vermijden die soms je resultaat ontsieren.
Sampling Steps bepaalt hoe snel het plaatje wordt gegenereerd. Er is een verband tussen deze parameter en CFG Scale die je wat lager ziet. De standaardwaarden van 7 en 20 werken vaak goed. Een groter aantal Sampling Steps maakt het resultaat niet per se beter maar meestal wel anders. CFG Scale bepaalt hoe strikt SD zich aan de prompt moet houden. Hogere waarden vergen vaak ook wat meer Sampling Steps, bijvoorbeeld 12 en 40 is ook een goede combinatie.
Parameters 2
Telkens wanneer je op Generate klikt krijg je met dezelfde prompt een ander plaatje omdat het startgetal (seed) willekeurig wordt gekozen. Vul je bij Seed een vast getal in, bijvoorbeeld 100, dan kun je toch nog meer verschillende plaatjes krijgen door een andere Sampling Method te selecteren. Deze bepaalt de manier waarop SD vanaf de oorspronkelijk ruis tot zijn resultaat komt.
Alhoewel je bij exact dezelfde instellingen ook exact het zelfde plaatje krijgt, zal dit zelfs al afwijken wanneer je de waarden van Width en Height aanpast. Wanneer je aan een prompt wilt gaan sleutelen is het dan ook raadzaam om meteen te beginnen in de gewenste resolutie.
Met 512x512 zul je altijd het beste resultaat bereiken maar zeker landschapsformaat (bijvoorbeeld 768x512) werkt meestal ook uitstekend. Bij portretformaat (zoals 512x768) moet je vaak wat meer experimenteren met parameters om een overtuigend resultaat te krijgen. Heb je GFPGAN geïnstalleerd dan kun je deze bij Settings/Face restoration activeren. Zet je vervolgens een vinkje bij Restore Faces op het tabblad Txt2Img dan kan deze menselijke portretten voor je verbeteren. Alle afbeeldingen die je maakt worden automatisch opgeslagen in een map outputs onder de programmamap.
Afsluiten
Om WebUI te sluiten ga je naar het venster met de Opdrachtprompt en daar toets je Ctrl-C en antwoord je Y op de gestelde vraag. Vervolgens kun je de Opdrachtprompt en het browservenster sluiten.
Wil je WebUI later weer gebruiken dan start je opnieuw webui-user.bat en open je in de browser weer http://127.0.0.1:7860/. De vele extra mogelijkheden die WebUI biedt (zoals inpainting, het gebruik van DreamBooth om jezelf aan de AI toe te voegen en meer) moeten we voor nu helaas onbesproken laten maar hopelijk heb je de smaak voldoende te pakken om zelf verder te experimenteren.