KI-basierte Bildbearbeitungstools haben in den letzten Jahren große Fortschritte gemacht. Heutzutage ist es recht einfach, schöne, stilvolle Porträts von Menschen und Tieren zu erstellen. KI-Modelle sind jedoch höchst unvorhersehbar. Daher verlassen sich die meisten Tools darauf, dass der Benutzer (oder ein Mensch) schlechte Generationen aussortiert und die beste findet.
Dies ist das klassische „Human in the Loop“-Problem, das KI-Tools oft plagt. Es stellt sich heraus, dass man mit ein paar cleveren Tricks und sorgfältiger Feinabstimmung eine Pipeline erstellen kann, die bei der überwiegenden Mehrheit der Haustiere zuverlässig funktioniert. Sie ist äußerst widerstandsfähig gegenüber Variationen in Haltung, Beleuchtung usw.
In diesem Beitrag werde ich näher darauf eingehen, wie es funktioniert und welche kleinen Tricks das ermöglichen. Hier sind einige Beispiele für Porträts, die Sie mit dieser Pipeline erstellen können.
Lasst uns anfangen!
Der Kern der Technik ist der IPAdapter. Er ist im Wesentlichen eine Möglichkeit, ein Modell mit einem Bild statt mit Text aufzufordern (wörtlich steht er für Image Prompt Adapter). Anstatt also Texteinbettungen zu verwenden, wird ein Bild verwendet, um die Einbettungen zu erhalten. Dies ist sehr leistungsstark, da es den Stil und die Struktur eines Bildes direkt erfassen kann, anstatt dass jemand das, was er von einem Bild will, in Text übersetzen muss. In unserem ComfyUI IPAdapter-Knoten haben wir zwei Eingänge, einen für den Stil und einen für die Komposition. Wir verwenden ein Bild mit einem Aquarellgemälde für den Stil und geben das Originalbild für die Komposition ein (da wir dieselbe Komposition beibehalten, aber den Stil ändern wollen).
Da wir nun eine Möglichkeit haben, den Stil konsistent zu halten, können wir uns darauf konzentrieren, das Haustier originalgetreu darzustellen. IPAdapter legen großen Wert auf die Bildqualität, und die Bildähnlichkeit leidet darunter. Wir müssen also etwas tun, damit die Ausgabe wie das gleiche Objekt aussieht wie die Eingabe.
Die Antwort darauf ist ControlNet. ControlNets sind eine weitere coole Technik, um zusätzliche Einschränkungen für den Bilderzeugungsprozess bereitzustellen. Mit einem ControlNet können Sie Einschränkungen in Form von Kanten, Tiefe, menschlicher Haltung usw. angeben. Ein großartiges Merkmal von ControlNets ist, dass sie gestapelt werden können. Sie können also ein Kanten-ControlNet haben, das die Ausgabe dazu zwingt, ähnliche Kanten wie die Eingabe zu haben, und auch ein Tiefen-ControlNet, das die Ausgabe dazu zwingt, ein ähnliches Tiefenprofil zu haben. Und genau das mache ich hier.
Es stellt sich heraus, dass Controlnets nicht nur mit anderen Controlnets stapelbar sind, sondern auch im Tandem mit dem oben erwähnten IPAdapter arbeiten können. Und das sind die Tools, die wir hierfür verwenden werden: IPAdapter mit einem Quellbild, um den Stil zu erhalten, ControlNet mit einem cleveren Kantendetektor, um auf Kanten basierende Einschränkungen vorzunehmen, und Controlnet mit Tiefe, um auf Tiefenprofil basierende Einschränkungen vorzunehmen.
Das ist eigentlich alles, was Sie an Techniken brauchen, aber was ich beim Experimentieren mit maschinellem Lernen für die Produktion gelernt habe, ist, dass ein Großteil des Werts dieser Dinge darin liegt, sich die Zeit zu nehmen, alle Ihre Parameter perfekt abzustimmen. Also möchte ich ein wenig darüber sprechen.
Haben Sie schon einmal ein Modell mit erstaunlichen Beispielausgaben gefunden, es an Ihren eigenen Bildern ausprobiert und festgestellt, dass sie schrecklich aussehen? Oft liegt der einzige Grund dafür darin, dass das Modell nicht für Ihre Bilder optimiert wurde. Manchmal kann sich das wie ein komplettes Hindernis anfühlen, denn wo fangen wir überhaupt mit der Feinabstimmung eines vorab trainierten Modells an?! Hier ist, was ich zu diesem Thema gelernt habe. Dies geht auch über diese spezielle Pipeline hinaus, daher ist es allgemein gut, über dieses Wissen zu verfügen.
ControlNets sind sehr leistungsstark, daher müssen Sie darauf achten, ihre Auswirkungen auf die Ausgabe zu kontrollieren. Glücklicherweise können wir mit den benutzerdefinierten Knoten in ComfyUI die Auswirkungen von ControlNets reduzieren und ihre Auswirkungen jederzeit stoppen. Wir stellen also den Kantendetektor auf 75 % Stärke ein und sorgen dafür, dass er die Generierung bei 75 % nicht mehr beeinflusst, und der Tiefendetektor stoppt bei 30 %. Der Grund, warum wir sie am Ende stoppen, anstatt nur ihre Stärke zu reduzieren, besteht darin, dass das Netzwerk so alle von ihnen verursachten Artefakte in den letzten Schritten „bereinigen“ kann, ohne extern eingeschränkt zu sein. Es macht das Bild einfach schöner. Es verwendet also nur seine Trainingsdaten, um die Dinge so schön wie möglich aussehen zu lassen, wobei die Kanten und die Tiefe ignoriert werden.
Die andere große Sache, die abgestimmt werden muss, ist der KSampler. Hier gibt es eine Menge kleiner Dinge zu tun, aber ich werde nur kurz auf einige davon eingehen:
Zuerst haben wir die Schritte. Das ist buchstäblich die Anzahl, wie oft das Modell wiederholt ausgeführt wird. Je öfter es ausgeführt wird, desto stilisierter wird Ihre Ausgabe und desto weiter entfernt sie sich vom Originalbild. Die Auswirkungen davon sind oft nicht so offensichtlich, es lohnt sich also, damit herumzuspielen.
Dann gibt es CFG. Ich verstehe das ehrlich gesagt nicht ganz, aber aufgrund des Namens – Classifier Free Guidance – gehe ich davon aus, dass es steuert, wie weit das Modell das Bild ohne Einschränkungen durch die Eingabeaufforderungen ändern darf, um es besser aussehen zu lassen. Dies wirkt sich auch erheblich auf das Ausgabebild aus, es lohnt sich also, damit herumzuspielen.
Ein weiterer kleiner Trick, den ich hier anwende, besteht darin, den Bildgenerierungsprozess mit dem Eingabebild statt mit einem leeren Bild zu starten und die Rauschunterdrückung gering zu halten. Dadurch wird sichergestellt, dass die Ausgabe in Bezug auf Farben und Texturen ähnlich aussieht.
Eine Sache, die ich bisher nie erwähnt habe, ist die Textaufforderung, die Sie bemerken werden! Überraschend, da dies normalerweise die einzige Konditionierung ist, die Sie Diffusionsmodellen bereitstellen. Aber in diesem Fall haben wir so viele andere Möglichkeiten der Konditionierung, dass die Textaufforderungen normalerweise nur im Weg sind. In diesem Fall ist die Aufforderung also buchstäblich nur „ein Hund“. Ich verwende die Textaufforderung in einigen der stilisierteren Porträts etwas häufiger, wie zum Beispiel bei dem Kochhund oder dem im Badezimmer.
Im Wesentlichen ist dies mehr oder weniger nur ein „KI-Filter“, der Bilder in Aquarellporträts umwandelt. Aber es ist erstaunlich, wie flexibel dies sein kann. Um beispielsweise das Porträt des duschenden Hundes zu erstellen, habe ich buchstäblich einfach Bilder in einem Bildbearbeitungstool zusammengefügt und diese als Eingabe verwendet! Das Modell kümmert sich darum, alles zu vereinheitlichen und das Bild zu bereinigen.
Entfernen Sie nun den Hintergrund, fügen Sie etwas Text hinzu und Boom! Sie haben ein wunderschönes Porträt, das alle kleinen Details Ihres Haustieres einfängt und es immer im besten Licht darstellt!
Vielen Dank an @cubiq für seine Arbeit an ComfyUI-Knoten und seine tolle Erklärserie auf YouTube! Der Großteil dieser Pipeline wurde von ihm erstellt und in seinen Videos erklärt.
Wenn Sie ein Haustierporträt ohne all diese Mühe haben möchten, können Sie hier eines kaufen: pawprints.pinenlime.com!