c't 3003: Die KI, die mich malte | Besser als Lensa

Generiert statt fotografiert: Mit der Open-Source-Software Stable Diffusion lassen sich ziemlich gute Profilbilder von sich selbst herstellen.

In Pocket speichern vorlesen Druckansicht 12 Kommentare lesen

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Lesezeit: 12 Min.
Von
  • Jan-Keno Janssen

Dass man mit Deep-Learning-Text-zu-Bild-Generatoren wie Dall-E oder Midjourney tolle Bilder herstellen kann, hat sich inzwischen herumgesprochen – und wird kontrovers diskutiert. Was das Ganze aber nochmal interessanter macht: Die Bildgenerierungs-Systeme selbst zu trainieren, zum Beispiel mit dem eigenen Gesicht.

Kostenpflichtige Apps wie Lensa vereinfachen den Prozess, aber legt man selbst Hand an, bekommt man bessere Ergebnisse und deutlich mehr Flexibilität. Wir zeigen im 3003-Video, wie man mit den Open-Source-Projekten Stable Diffusion und DreamBooth das perfekte Profilbild hinbekommt.

(Hinweis: Es handelt sich hier um einen Bonusinhalt für Menschen, die das Video oben nicht schauen können oder wollen. Die Informationen auf der Bildspur gibt das Transkript nicht wieder.)

Ist euch das auch aufgefallen, dass in den sozialen Medien auf einmal super viele Leute so dolle Profilbilder haben? Auf denen die Leute aussehen, als seien sie Actionstars, Nachwuchs-Zauberer oder, äh, Zauberelfen? Sehr wahrscheinlich kommt das Ganze von einer (kostenpflichtigen) App namens Lensa, die gerade in den Mobil-App-Charts auf Android und iOS ziemlich weit oben steht. Aber das Tolle ist: Solche Bilder kann man sogar in noch besser lokal auf dem eigenen Rechner generieren, mit der Open-Source-Software Stable Diffusion – also ohne Cloud, und kostenlos. Und mit „Generieren“ meine ich wirklich, dass man kein Pixel selbst anfassen muss, man tippt einfach ein, was man sehen will, also hier zum Beispiel „foto von keno im fitnessstudio, riesige muskeln, bodybuilder“. Oder „keno als chibi figur“, „keno auf einem bemalten teller“, „keno als charakter in einem studio-ghibli-film“. Das kann man wirklich stundenlang machen. (Und normalerweise auch auf Englisch, aber deutsch geht auch, wie ihr seht.)

Ok, manchmal sind die Resultate auch ein bisschen komisch, äh, sind das Füße da neben meinem Kopf? Warum kommt da aus meinem Hals noch ein Keno raus? Warum habe ich einen Schal aus Haaren? Und ganz wichtig: Wo kann ich in der echten Welt so schönen Bartschmuck kaufen? Bleibt dran.

Liebe Hackerinnen, liebe Internetsurfer, herzlich willkommen hier bei…

Ich zeige euch erst mal ganz kurz, wie diese Lensa-App funktioniert: nach der Installation muss man 10 bis 20 Fotos von einem selbst über die App ins Netz schieben. Dann rechnet Lensa – beziehungsweise die von Lensa angemieteten Server – da ungefähr 20 Minuten drauf rum, und am Ende kommen ganz viele schöne oder nicht so schöne Fotos raus. Soweit so gut, aber wie das meiste auf der Welt hat auch Lensa einen Haken: Nämlich zum Beispiel, dass man da seine Fotos hinschicken muss und man nicht genau weiß, was damit eigentlich passiert. Lensa verspricht, die Fotos direkt nach der Verarbeitung zu löschen, aber, überprüfen kann man das natürlich nicht. Und Lensa kostet auch was: Mindestens 3,49 Euro müsst ihr ausgeben, um an die Bilder zu kommen. Das sind dann 50 Stück, jeweils 5 aus 10 unterschiedlichen Genres, also sowas wie „Sci-Fi“ oder „Anime“. Einstellen könnt ihr null Komma null, ihr kriegt halt einfach 50 Fotos, oder 100, oder 200, je nachdem wie viel ihr bezahlt, aber ihr könnt nicht festlegen, wie die aussehen sollen. Ein weiterer Kritikpunkt war: Hat man ausgewählt, dass das eigene Geschlecht weiblich ist, ist die Wahrscheinlichkeit hoch, solche Bilder zu bekommen: Wenig Kleidung, tiefe Dekolletees, hmm, will man vielleicht gar nicht. Das scheint Lensa inzwischen aber geändert zu haben, als ich im Test mein Geschlecht auf weiblich festgelegt habe, war das alles ziemlich angezogen.

Allgemein fand ich nach meinen Tests übrigens die Resultate von Lensa schlechter als die "manuellen" Bilder von Stable Diffusion. Auf den ersten Blick sehen die Lensa-Kenos ganz ok aus, aber wenn man genauer hinschaut, ist zum Beispiel oft ein Auge schief und krumm oder sowas. Bei Stable Diffusion dagegen kann man manuell eine Gesichtsreparatur drüber laufen lassen, Face-Restoration heißt das hier, dann passiert sowas nicht mehr.

Aber was man vielleicht auch nochmal ansprechen sollte: Die „Kunst“, die all diese Systeme erzeugen, bedient sich natürlich am Werk von etlichen Künstlerinnen und Künstlern, man kann vielleicht sagen, dass es sich um Remixe von vorhandenen Bildern im Netz handelt. Sehr oft sieht man auf den berechneten Bilder sogar irgendwelche vermatschten Signaturen – ein ziemlich deutliches Zeichen dafür, dass hier vorhandene Bilder als Grundlage gedient haben. Die Frage ist nun: Darf man die berechneten Bilder kommerziell nutzen? Und wenn ja: Kriegt man das irgendwie hin, dass auch die Leute, die die Quellbilder gemacht haben, irgendwie mitverdienen können? Ich glaube, dass diese Debatte noch sehr intensiv geführt werden, einfach, weil die Bildgenerierungssysteme immer besser werden.

Aber zurück zu Lensa oder besser: Weg von Lensa. Man braucht Lensa nämlich gar nicht, denn unter der Haube benutzt die App einfach den Open-Source-KI-Bildgenerator Stable Diffusion. Tja, und den kann man natürlich auch ohne Lensa benutzen, der läuft sogar auf dem eigenen Rechner.

Es gab ja in den letzten Monaten schonmal einen kleinen Hype um diese Bildgeneratoren, angefangen mit Dall-E beziehungsweise Dall-E 2 von OpenAI, über Midjourney bis hin zu Craiyon. Wir haben dazu ja auch schon ein Video gemacht. Die Systeme haben alle ihre eigenen Charakteristiken und Vorteile und Nachteile, aber Stable Diffusion dürfte mit Abstand die größte Community aufgebaut haben – weil die Software nämlich so wunderbar flexibel ist.

Man kann nämlich einigermaßen einfach sogenannte Models mit eigenen Bildern fein-tunen. Models sind die Grundlage des Bildgenerators, der algorithmische Ansatz. Die Grund-Models von Stable Diffusion, Dall-E und Co sind mit Millionen Bildern aus dem Netz trainiert worden, aber die Wahrscheinlichkeit, dass in deren Models auch Informationen zu finden sind, wie ich zum Beispiel aussehe, ist sehr gering, dafür bin ich nicht berühmt genug und es gibt auch viel zu wenig Bilder von mir im Netz. ABER: Ich kann dem vorhandenen Model das einfach selbst beibringen. Dafür brauche ich, genau wie Lensa, 10 bis 20 Fotos von mir und ja… Dass das genau wie bei Lensa ist, ist natürlich klar, weil dahinter ja auch Stable Diffusion steckt.

Konkret funktioniert das Ganze mit Dreambooth, ein von Google entwickeltes System, um solche Bildgenerierungsmodelle feinzutunen. Und dieses Training mit Dreambooth KÖNNT ihr lokal machen. Aber, und da bin ich jetzt ganz ehrlich: Ich habe das für dieses Video aus diversen Gründen nicht vor der Video-Deadline hinbekommen. Man braucht dafür eine Grafikkarte mit sehr viel Speicher, diese Implementierung zum Beispiel will sage und schreibe 24 GByte haben – und der Entwickler schreibt, dass das Projekt mit Duct-Tape und Kaugummi zusammengehalten wird, und ja, das kann ich bestätigen.

Deshalb habe ich mir das für dieses Video leichter gemacht und das Training in der Cloud auf der Machine-Learning-Plattform Hugging Face gemacht. Und gleich mal der Disclaimer: Es gibt noch dutzende andere Möglichkeiten, so ein Model zu trainieren, ob die hier beschriebene jetzt die BESTE ist – das weiß ich nicht, auf jeden Fall hat sie gut und schnell funktioniert. Aber mir ist natürlich klar, dass der Vorteil gegenüber Lensa, keine Fotos in die Cloud schieben zu müssen, hier natürlich hinten runterfällt. Dafür ist meine Methode preisgünstiger als Lensa und VIEL, VIEL flexibler. Und wie gesagt: Das Dreambooth-Training GEHT theoretisch auch komplett lokal, ganz ohne Cloud.

So, jetzt aber schnell das Tutorial: Erstmal müsst ihr 10 bis 20 Bilder von euch raussuchen. Möglichst mit unterschiedlichen Gesichtsausdrücken, Perspektiven und ein paar Fotos, wo man mehr von eurem Körper seht als das Gesicht, sind vermutlich auch nicht verkehrt. Diese 16 Fotos habe ich für mein Training verwendet. Jetzt müsst ihr die Bilder noch auf 512 x 512 Pixel beschneiden, das geht zum Beispiel mit dem Browser-Tool Birme (keine Angst, das läuft lokal, eure Fotos werden hier noch nicht ins Netz geschickt).

So, jetzt loggt ihr euch in Higging Face ein beziehungsweise, wenn ihr noch keinen Account habt, legt einen an. Jetzt geht ihr auf den sogenannten Space „Dreambooth-Training“ von Multimodalart. Die URL findet ihr unten in der Beschreibung. Nun auf „Duplicate Space“ klicken, das dauert nun ein paar wenige Minuten – so lange das arbeitet, steht hier oben „Building“, ihr könnt immer auf „open logs“ klicken, um zu schauen, was gerade so passiert. Wenn das fertig ist, müsst ihr noch kurz eine stärkere GPU anmieten, das geht unter „Settings“. Ich habe die „T4 small“ genommen, das hat bei mir ungefähr 60 US-Cent gekostet.

Das Neuzuweisen der Software dauert nochmal ein bisschen länger, etwa 10 Minuten circa. So, hier in diesem Dropdown-Menü „person“ auswählen, als Basemodel benutze ich Version 1.5, weil die meisten UIs mit den 2.0ern noch nicht gut funktionieren. Ganz wichtig, hier jetzt eingeben, wie ihr die Person nennen wollt, ihr müsst ja bei den Textprompts irgendwie sagen, dass ihr die trainierte Person da sehen wollt. Also möglichst einen Text nehmen, der in normaler nicht vorkommt. Ich habe keno4004 benutzt.

Hier alles lassen, das Häkchen bei "automatically remove" unbedingt lassen, damit ihr nicht noch die GPU bezahlt, wenn die Berechnung durch ist. Hier nochmal den Namen eingeben und nun braucht ihr nur noch ein Token: Draufklicken, "new token", "write" auswählen und dann copy-pasten.

So, los geht das Training, das dauert ungefähr 20 Minuten.

So, und jetzt könnt ihr schon in Huggingface loslegen mit dem Bilderberechnen. Das geht einfach hier unter „Models“ -- zwar sehr rudimentär, man kann nix einstellen, aber es geht, und es wird euch übrigens kein Geld berechnet, das läuft nicht auf der kostenpflichtigen GPU.

Ihr könnt Stable Diffusion auch lokal verwenden, Ihr braucht dafür aber entweder eine NVidia-Grafikkarte mit mindestens 4 GByte Speicher oder einen Apple-Rechner mit M1. Man kann sich das auch irgendwie hinfrickeln, dass das auf AMD-GPUs oder nur auf CPUs läuft – aber das ist naja, Gefrickel.

Ich würde euch für die Nutzung von Stable Diffusion eine der vielen Community-UIs empfehlen.

Am populärsten ist wohl Automatic1111, für das es auch einen vollautomatischen Installer gibt (Links in der Beschreibung). Um das mit eurem Abbild trainierte Model dort zu verwenden, müsst ihr die CKPT-Datei von Huggingface herunterladen und diese in den Ordner „models/Stable-Diffusion“ eurer Automatic1111-Installation werfen. Auf der Oberfläche dann einfach hier oben unter „Stable Diffusion Checkpoint“ auswählen.

Ich persönlich finde Automatic1111 ziemlich überladen und das Userinterface verwirrend. Ich habe für die generierten Bilder, die in diesem Video zu sehen sind, InvokeAI verwendet, das hat eine deutlich übersichtlichere Oberfläche und gefällt mir insgesamt sehr gut. Für InvokeAI gibt es auch einen automatischen Installer, aber man muss vorher Python installiert haben.

Ihr müsst auf alle Fälle mit den Prompts herumprobieren, um richtig gute Ergebnisse zu bekommen. Stable Diffusion ist bekannt dafür, dass man da richtige Romane schreiben muss. Als Inspiration könnt ihr zum Beispiel die Website PromptHero verwenden, da gibt’s viele schöne Ergebnisse mit den entsprechenden Prompts.

Ja, und nun viel Spaß! Ich muss ganz ehrlich sagen, dass ich mit Stable Diffusion schon ganze Tage verbracht habe, so viel Spaß macht das. Also, plant genug Zeit ein.

Tschüß!


c't 3003 ist der YouTube-Channel von c't. Die Videos auf c’t 3003 sind eigenständige Inhalte und unabhängig von den Artikeln im c’t magazin. Redakteur Jan-Keno Janssen und die Video-Producer Şahin Erengil und Pascal Schewe veröffentlichen jede Woche ein Video.

(jkj)