Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Eine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet

Eine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet

WBOY
WBOYnach vorne
2023-04-12 18:16:031771Durchsuche

Kurz nachdem ChatGPT den Kreis verlassen hatte, gewann das Aufkommen von ControlNet schnell viele Entwickler und normale Benutzer im englischen und chinesischen Internet. Einige Benutzer befürworteten sogar, dass das Aufkommen von ControlNet die KI-Erstellung in den aufrechten Gang brachte . Ära. Es ist keine Übertreibung zu sagen, dass die kontrollierbare Generation als letzte Hochmauer der KI-Erstellung, einschließlich ControlNet, der T2I-Adapter-, Composer- und LoRA-Trainingstechniken aus derselben Zeit, in absehbarer Zeit höchstwahrscheinlich weitere Durchbrüche erzielen wird Dadurch werden die Erstellungskosten des Benutzers erheblich reduziert und die Spielbarkeit der Erstellung verbessert. In nur zwei Wochen seit der Veröffentlichung von ControlNet hat die offizielle Star-Zahl die 10.000-Marke überschritten. Diese Popularität ist zweifellos beispiellos.

Gleichzeitig hat die Open-Source-Community auch die Schwelle für Benutzer erheblich gesenkt. Beispielsweise bietet die Hugging Face-Plattform grundlegende Modellgewichte und allgemeine Modelltrainings-Frameworks Diffusoren, stabil -diffusion-webui hat eine komplette Demo-Plattform entwickelt und Civitai hat eine große Anzahl stilisierter LoRA-Gewichte beigesteuert.

Eine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet

Eine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet

# 🎜 🎜#

Obwohl WebUI derzeit das beliebteste Visualisierungstool ist, hat es schnell verschiedene kürzlich eingeführte Generationsmodelle unterstützt und unterstützt viele Optionen, die Benutzer festlegen können. Da der Schwerpunkt auf der Benutzerfreundlichkeit der Front-End-Schnittstelle liegt, ist die Codestruktur dahinter tatsächlich sehr komplex und für Entwickler nicht benutzerfreundlich genug. Obwohl Webui beispielsweise mehrere Arten des Ladens und der Inferenz unterstützt, kann es weder die Konvertierung unter verschiedenen Frameworks noch das flexible Training von Modellen unterstützen. In Community-Diskussionen haben wir viele Schwachstellen entdeckt, die durch den vorhandenen Open-Source-Code noch nicht gelöst wurden.

Erstens ist das Code-Framework nicht kompatibel mit , derzeit gängigen Modellen, wie z ControlNet, T2I-Adapter, ist nicht mit den gängigen Diffusoren der Stable Diffusion-Trainingsbibliothek kompatibel, und das vorab trainierte ControlNet-Modell kann nicht direkt im Diffusor-Framework verwendet werden.

Zweitens ist das Laden von Modellen begrenzt Derzeit wird das Modell in verschiedenen Formaten gespeichert, z B. .bin, .ckpt, .pth, .satetensors usw. Zusätzlich zu webui bietet das Diffusor-Framework derzeit nur begrenzte Unterstützung für diese Modellformate. Da die meisten LoRA-Modelle hauptsächlich in Safetensors gespeichert werden, ist es für Benutzer schwierig, sie direkt zu verwenden Laden Sie LoRA-Modelle in ein vorhandenes Modell, das auf der Grundlage des Diffusor-Frameworks trainiert wurde.

Drittens Das Basismodell ist limitiert Derzeit basieren ControlNet und T2I-Adapter Für das Training wird Stable-Diffusion-1.5 verwendet, und nur die Modellgewichte unter SD1.5 sind Open-Source-Modelle, auch wenn kontrollierbare Informationen eingeführt werden. Die endgültigen generierten Ergebnisse sind immer noch durch die Fähigkeiten von UNet in SD1.5 begrenzt.

Schließlich ist die Modellausbildung begrenzt Übertragung und Wartung Eine der effektivsten Methoden für bestimmte Bild-IP, aber das Diffusor-Framework unterstützt derzeit nur die LoRA-Einbettung von UNet und kann die Text-Encoder-Einbettung nicht unterstützen, was das LoRA-Training einschränkt. Nach Gesprächen mit der Open-Source-Community erfuhren wir, dass es sich beim Diffusor-Framework um eine allgemeine Codebasis handelt und eine gleichzeitige Anpassung an die kürzlich eingeführten Generationsmodelle geplant ist ; Da viele zugrunde liegende Schnittstellen neu geschrieben werden, dauert die Aktualisierung noch einige Zeit. Zu diesem Zweck sind wir von den oben genannten tatsächlichen Problemen ausgegangen und haben die Führung übernommen, indem wir selbst entwickelte Lösungen für jedes Problem vorgeschlagen haben, um Entwicklern schnell zu helfen, einfacher zu entwickeln.

Komplette Adaptionslösung von LoRA, ControlNet, T2I-Adapter an Diffusoren

LoRA für Diffusoren

# 🎜 🎜#Diese Lösung besteht darin, LoRA-Gewichte in verschiedenen Formaten flexibel in das Diffusor-Framework einzubetten, d. h. das Modell, das basierend auf dem Diffusor-Training gespeichert wurde. Da das Training von LoRA normalerweise das Basismodell einfriert, kann es problemlos als steckbare Module als Stil- oder IP-bedingte Einschränkungen in bestehende Modelle eingebettet werden. LoRA selbst ist eine allgemeine Trainingstechnik. Ihr Grundprinzip besteht darin, dass die Anzahl der Parameter des Moduls erheblich reduziert werden kann. Derzeit wird es bei der Bilderzeugung im Allgemeinen zum Trainieren von steckbaren Modulen verwendet Der eigentliche Zweck besteht darin, es mit der Ausgabe des Basismodells in Form von Residuen zusammenzuführen.

Das erste ist die Einbettung von LoRA-Gewichten. Derzeit werden die auf der Civitai-Plattform bereitgestellten Gewichte hauptsächlich im ckpt- oder Safetensors-Format gespeichert, unterteilt in die folgenden zwei Situationen.

(1) Vollständiges Modell (Basismodell + LoRA-Modul)

Wenn das vollständige Modell vorhanden ist Safetensors-Format, kann über das folgende Diffusor-Skript konvertiert werden 🎜🎜#

python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.safetensors--dump_path save_dir --from_safetensors

Nach Abschluss der Konvertierung können Sie direkt die API von Diffusoren verwenden, um das Modell zu laden

python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.ckpt--dump_path save_dir

(2) Nur LoRA (enthält nur das LoRA-Modul)

# 🎜🎜#Derzeit unterstützen Diffusoren offiziell nicht das Laden nur von LoRA-Gewichten, und LoRA-Gewichte werden auf Open-Source-Plattformen grundsätzlich in dieser Form gespeichert. Im Wesentlichen wird die Neuzuordnung des Schlüsselwerts in LoRA-Gewichten abgeschlossen und an das Diffusormodell angepasst. Aus diesem Grund unterstützen wir diese Funktion selbst und stellen Konvertierungsskripte zur Verfügung.

from diffusers import StableDiffusionPipeline
pipeline = StableDiffusionPipeline.from_pretrained (save_dir,torch_dtype=torch.float32)
Es müssen nur das Modell im Diffusor-Format und die LoRA-Gewichte im Safetensor-Format angegeben werden. Wir stellen eine Beispielkonvertierung zur Verfügung.

pipeline = StableDiffusionPipeline.from_pretrained (model_id,torch_dtype=torch.float32)
model_path = "onePieceWanoSagaStyle_v2Offset.safetensors"
state_dict = load_file (model_path)
Darüber hinaus kann LoRA selbst aufgrund seines geringen Gewichts das Training mit kleinen Datenmengen schnell abschließen und in andere Netzwerke eingebettet werden. Um nicht auf die vorhandenen LoRA-Gewichte beschränkt zu sein, unterstützen wir das LoRA-Training mit mehreren Modulen (UNet+Text-Encoder) im Diffusor-Framework und haben eine PR in der offiziellen Codebasis eingereicht (https://github.com/ Huggingface/Diffusers/Pull /2479) und unterstützt das Training von LoRA in ColossalAI.

Der Code ist Open Source unter: https://github.com/haofanwang/Lora-for-Diffusers

#🎜🎜 ######## 🎜🎜#ControlNet für Diffusoren#🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜 ## 🎜 🎜##🎜 🎜#Diese Lösung soll die Verwendung von ControlNet im Diffusor-Framework unterstützen. Basierend auf einigen Versuchen der Open-Source-Community stellen wir einen vollständigen Anwendungsfall von ControlNet+Anything-V3 bereit und unterstützen den Ersatz des Basismodells vom ursprünglichen SD1.5 durch das Anything-v3-Modell, sodass ControlNet über eine bessere Animationsgenerierung verfügt Fähigkeiten.

Darüber hinaus unterstützen wir auch ControlNet+Inpainting und stellen eine an Diffusoren angepasste Pipeline zur Verfügung,

# 🎜🎜#

Eine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet und Multi-ControlNet für die Steuerung mehrerer Bedingungen.

Der Code ist Open Source unter: https:/ /github.com/haofanwang/ControlNet-for-Diffusers

Eine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet

T2I-Adapter für Diffusoren

# 🎜🎜# Eine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet

Ähnlich wie ControlNet unterstützen wir auch die Adaption des Open Source T2I-Adapters an Diffusoren bei zur gleichen Zeit.

Eine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet

Der Code ist Open Source unter: https://github.com/haofanwang/T2I-Adapter-for-Diffusers

#🎜 🎜## 🎜🎜#

Derzeit stehen die oben genannten drei Anpassungslösungen der Community als Open Source zur Verfügung und wurden in ControlNet bzw. T2I-Adapter offiziell anerkannt. Sie haben auch Dank vom Autor von Stable-Diffusion-Webui-Colab erhalten. Wir führen Gespräche mit Verantwortlichen der Diffusoren und werden die Integration der oben genannten Lösung in die offizielle Codebasis in naher Zukunft abschließen. Sie können unsere Arbeit auch gerne vorab ausprobieren. Wenn Sie Fragen haben, können Sie uns direkt kontaktieren und wir werden so schnell wie möglich antworten.

Das obige ist der detaillierte Inhalt vonEine vollständige Reihe von Tutorials zur Anpassung des Diffusers-Frameworks finden Sie hier! Vom T2I-Adapter zum beliebten ControlNet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen