Nur eine Anmerkung, dass ich Dream Factory gestartet habe, eine bedeutende Weiterentwicklung davon. Es verfügt über eine (optionale) GUI, echte gleichzeitige Multi-GPU-Unterstützung, eine integrierte Galerie mit vollständiger EXIF-Metadatenunterstützung und viele andere neue Funktionen.
Ich habe die Unterstützung für VQGAN und Disco Diffusion eingestellt, um mich auf stabile Diffusion zu konzentrieren. Wenn Sie also VQGAN und/oder Disco Diffusion möchten, sollten Sie vorerst dabei bleiben. Ansonsten ermutige ich jeden, zur Dream Factory zu migrieren! Ich werde weiterhin Fehlerbehebungen für dieses Repo vornehmen, aber in Zukunft werde ich wahrscheinlich keine neuen Funktionen mehr hinzufügen.
Zur Automatisierung der lokalen Erstellung großer Mengen KI-generierter Kunstwerke. Setzen Sie Ihre GPU(s) ein, um rund um die Uhr KI-generierte Kunstwerke zu erstellen, mit der Möglichkeit, große Eingabeaufforderungswarteschlangen zu automatisieren, die vom Benutzer ausgewählte Themen, Stile/Künstler und mehr kombinieren! Weitere Informationen zu den verfügbaren Modellen finden Sie nach den Beispielbildern.
Einige Beispielbilder, die ich mit diesem Verfahren erstellt habe (diese sind sorgfältig ausgewählt und geschärft):
Beachten Sie, dass ich die in diesem Projekt verwendeten Modelle weder erstellt oder trainiert habe, noch an der ursprünglichen Codierung beteiligt war. Ich habe lediglich die ursprünglichen Colab-Versionen so geändert, dass sie lokal ausgeführt werden können, und etwas Unterstützung für die Automatisierung hinzugefügt. Derzeit unterstützte Modelle mit Links zu ihren ursprünglichen Implementierungen:
Sie benötigen eine Nvidia-GPU, vorzugsweise mit ausreichend VRAM. Je nach Modell und Einstellungen reichen 12 GB VRAM für Ausgabebilder im Format 512 x 512 aus, und 8 GB sollten für 384 x 384 ausreichen (8 GB sollten als angemessenes Minimum angesehen werden!). Um 1024 x 1024-Bilder zu generieren, benötigen Sie etwa 24 GB VRAM oder mehr. Auch die Generierung kleiner Bilder und die anschließende Hochskalierung über ESRGAN oder ein anderes Paket liefert sehr gute Ergebnisse.
Es sollte möglich sein, auf einer AMD-GPU zu laufen, aber Sie müssen Linux verwenden, um die ROCm-Version von Pytorch zu installieren. Ich habe keine AMD-GPU, die ich in einen Linux-Rechner einbauen könnte, daher habe ich das nicht selbst getestet.
Diese Anweisungen wurden auf einem Windows 10-Desktop mit einer Nvidia 3080 Ti-GPU (12 GB VRAM) und auch auf einem Ubuntu Server 20.04.3-System mit einer alten Nvidia Tesla M40-GPU (24 GB VRAM) getestet.
[1] Installieren Sie Anaconda, öffnen Sie das Root-Terminal und erstellen Sie eine neue Umgebung (und aktivieren Sie sie):
conda create --name ai-art python=3.9
conda activate ai-art
[2] Pytorch installieren:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
Beachten Sie, dass Sie Ihre Pytorch-Installation mithilfe des hier verfügbaren Online-Tools anpassen können.
[3] Installieren Sie weitere erforderliche Python-Pakete:
conda install -c anaconda git urllib3
pip install transformers keyboard pillow ftfy regex tqdm omegaconf pytorch-lightning IPython kornia imageio imageio-ffmpeg einops torch_optimizer
[4] Klonen Sie dieses Repository und wechseln Sie in sein Verzeichnis:
git clone https://github.com/rbbrdckybk/ai-art-generator
cd ai-art-generator
Beachten Sie, dass Linux-Benutzer im Klonbefehl möglicherweise einfache Anführungszeichen um die URL benötigen.
[5] Zusätzliche erforderliche Repositorys klonen:
git clone https://github.com/openai/CLIP
git clone https://github.com/CompVis/taming-transformers
[6] Laden Sie die standardmäßigen vorab trainierten VQGAN-Modellprüfpunktdateien herunter:
mkdir checkpoints
curl -L -o checkpoints/vqgan_imagenet_f16_16384.yaml -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fconfigs%2Fmodel.yaml&dl=1"
curl -L -o checkpoints/vqgan_imagenet_f16_16384.ckpt -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fckpts%2Flast.ckpt&dl=1"
Beachten Sie, dass Linux-Benutzer die doppelten Anführungszeichen in den Curl-Befehlen durch einfache Anführungszeichen ersetzen sollten.
[7] (Optional) Laden Sie zusätzliche vorab trainierte Modelle herunter:
Zusätzliche Modelle sind nicht notwendig, bieten Ihnen aber mehr Möglichkeiten. Hier ist eine gute Liste der verfügbaren vorab trainierten Modelle.
Wenn Sie beispielsweise auch das FFHQ-Modell (trainiert auf Gesichtern) möchten:
curl -L -o checkpoints/ffhq.yaml -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/2021-04-23T18-19-01-project.yaml?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fconfigs%2F2021-04-23T18-19-01-project.yaml&force"
curl -L -o checkpoints/ffhq.ckpt -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/last.ckpt?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fcheckpoints%2Flast.ckpt"
[8] (Optional) VQGAN+CLIP testen:
python vqgan.py -s 128 128 -i 200 -p "a red apple" -o output/output.png
Im Ausgabeverzeichnis sollte die Datei „output.png“ angezeigt werden, die einem Apfel ähneln sollte.
[9] Installieren Sie Pakete für die CLIP-gesteuerte Diffusion (wenn Sie nur an VQGAN+CLIP interessiert sind, können Sie von hier bis zum Ende alles überspringen):
pip install ipywidgets omegaconf torch-fidelity einops wandb opencv-python matplotlib lpips datetime timm
conda install pandas
[10] Klon-Repositorys für CLIP-gesteuerte Diffusion:
git clone https://github.com/crowsonkb/guided-diffusion
git clone https://github.com/assafshocher/ResizeRight
git clone https://github.com/CompVis/latent-diffusion
[11] Laden Sie die für die CLIP-gesteuerte Diffusion benötigten Modelle herunter:
mkdir contentmodels
curl -L -o content/models/256x256_diffusion_uncond.pt -C - "https://openaipublic.blob.core.windows.net/diffusion/jul-2021/256x256_diffusion_uncond.pt"
curl -L -o content/models/512x512_diffusion_uncond_finetune_008100.pt -C - "http://batbot.tv/ai/models/guided-diffusion/512x512_diffusion_uncond_finetune_008100.pt"
curl -L -o content/models/secondary_model_imagenet_2.pth -C - "https://ipfs.pollinations.ai/ipfs/bafybeibaawhhk7fhyhvmm7x24zwwkeuocuizbqbcg5nqx64jq42j75rdiy/secondary_model_imagenet_2.pth"
mkdir contentmodelssuperres
curl -L -o content/models/superres/project.yaml -C - "https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1"
curl -L -o content/models/superres/last.ckpt -C - "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1"
Beachten Sie, dass Linux-Benutzer erneut die doppelten Anführungszeichen in den Curl-Befehlen durch einfache Anführungszeichen und die mkdir- Backslashes durch Schrägstriche ersetzen sollten.
[12] (Optional) Testen Sie die CLIP-geführte Diffusion:
python diffusion.py -s 128 128 -i 200 -p "a red apple" -o output.png
Im Ausgabeverzeichnis sollte die Datei „output.png“ angezeigt werden, die einem Apfel ähneln sollte.
[13] Stable Diffusion-Repository klonen (wenn Sie nicht an SD interessiert sind, können Sie von hier bis zum Ende alles überspringen):
git clone https://github.com/rbbrdckybk/stable-diffusion
[14] Installieren Sie zusätzliche Abhängigkeiten, die für Stable Diffusion erforderlich sind:
pip install diffusers
[15] Laden Sie die vorab trainierte Checkpoint-Datei „Stable Diffusion“ herunter:
mkdir stable-diffusionmodelsldmstable-diffusion-v1
curl -L -o stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt -C - "https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt"
Wenn der Curl-Befehl den Prüfpunkt nicht herunterlädt, ist er hinter einer Anmeldung verborgen. Sie müssen sich hier registrieren (erfordert nur E-Mail-Adresse und Namen) und können dann die Checkpoint-Datei hier herunterladen.
Nach dem Herunterladen müssen Sie die .ckpt-Datei im oben erstellten Verzeichnis ablegen und ihr den Namen model.ckpt geben.
[16] (Optional) Stabile Diffusion testen:
Der einfachste Weg, SD zu testen, besteht darin, eine einfache Eingabeaufforderungsdatei mit !PROCESS = Stablediff und einem einzelnen Betreff zu erstellen. Weitere Informationen finden Sie in example-prompts.txt und im nächsten Abschnitt. Angenommen, Sie erstellen zunächst eine einfache Eingabeaufforderungsdatei namens test.txt , können Sie dies testen, indem Sie Folgendes ausführen:
python make_art.py test.txt
Bei Erfolg sollten die Bilder im Ausgabeverzeichnis gespeichert werden (organisiert in Unterverzeichnissen, die nach dem Datum und der Eingabeaufforderungsdatei benannt sind).
[17] Richten Sie ESRGAN/GFPGAN ein (wenn Sie nicht vorhaben, Bilder hochzuskalieren, können Sie dies und alles andere überspringen):
git clone https://github.com/xinntao/Real-ESRGAN
pip install basicsr facexlib gfpgan
cd Real-ESRGAN
curl -L -o experiments/pretrained_models/RealESRGAN_x4plus.pth -C - "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth"
python setup.py develop
cd ..
Du bist fertig!
Wenn Sie während der Ausführung Fehlermeldungen erhalten, die nicht auf unzureichenden GPU-VRAM zurückzuführen sind, und Ihre Installation längere Zeit nicht aktualisiert haben, versuchen Sie, einige der wichtigeren Pakete zu aktualisieren, zum Beispiel:
pip install transformers -U
Im Wesentlichen müssen Sie lediglich eine Textdatei erstellen, die die Themen und Stile enthält, die Sie zum Generieren von Bildern verwenden möchten. Wenn Ihre Eingabeaufforderungsdatei 5 Themen und 20 Stile enthält, werden insgesamt 100 Ausgabebilder erstellt (20 Stilbilder für jedes Thema).
Sehen Sie sich example-prompts.txt an, um zu sehen, wie Eingabeaufforderungsdateien aussehen sollten. Sie können vorerst alles außer den Bereichen [Themen] und [Stile] ignorieren. Zeilen, die mit einem „#“ beginnen, sind Kommentare und werden ignoriert. Zeilen, die mit einem „!“ beginnen, werden ignoriert. sind Einstellungsanweisungen und werden im nächsten Abschnitt erläutert. Ändern Sie vorerst einfach die Beispielthemen und -stile mit dem, was Sie verwenden möchten.
Nachdem Sie example-prompts.txt nach Ihren Wünschen ausgefüllt haben, können Sie einfach Folgendes ausführen:
python make_art.py example-prompts.txt
Abhängig von Ihrer Hardware und Ihren Einstellungen dauert die Erstellung jedes Bildes zwischen einigen Sekunden und einigen Stunden (auf älterer Hardware). Wenn Sie Stable Diffusion ausführen können, empfehle ich es dringend, um die besten Ergebnisse zu erzielen – sowohl in Bezug auf Geschwindigkeit als auch Bildqualität.
Ausgabebilder werden standardmäßig im Verzeichnis „Ausgabe/[aktuelles Datum]-[Name der Eingabeaufforderungsdatei]/“ erstellt. Das Ausgabeverzeichnis enthält eine JPG-Datei für jedes Bild, benannt nach dem Motiv und dem Stil, mit dem es erstellt wurde. Wenn Sie beispielsweise „ein Affe auf einem Motorrad“ als Motiv und „von Picasso“ als Stil haben, wird das Ausgabebild als Ausgabe/[aktuelles Datum]-[Name der Eingabeaufforderungsdatei]/a erstellt -monkey-on-a-motorcycle-by-picasso.jpg (Dateinamen variieren je nach verwendetem Prozess etwas).
Sie können jederzeit STRG+UMSCHALT+P drücken, um die Ausführung anzuhalten (die Pause wird wirksam, wenn das Rendern des aktuellen Bilds abgeschlossen ist). Drücken Sie erneut STRG+UMSCHALT+P , um die Pause aufzuheben. Nützlich, wenn Sie dies auf Ihrem Hauptcomputer ausführen und Ihre GPU für eine Weile für etwas anderes verwenden müssen. Sie können auch STRG+UMSCHALT+R drücken, um die Eingabeaufforderungsdatei neu zu laden, wenn Sie sie geändert haben (die aktuelle Arbeitswarteschlange wird verworfen und eine neue wird aus dem Inhalt Ihrer Eingabeaufforderungsdatei erstellt). Beachten Sie, dass die Tastatureingabe nur unter Windows funktioniert.
Die zum Erstellen jedes Bilds verwendeten Einstellungen werden standardmäßig als Metadaten in jeder ausgegebenen JPG-Datei gespeichert. Sie können die Metadateninformationen zurücklesen, indem Sie ein beliebiges EXIF-Dienstprogramm verwenden oder indem Sie einfach mit der rechten Maustaste auf die Bilddatei im Windows Explorer klicken, „Eigenschaften“ auswählen und dann auf den Bereich „Details“ klicken. Das Feld „Kommentare“ enthält den Befehl, der zum Erstellen des Bildes verwendet wurde.
In Ihre Eingabeaufforderungsdatei können Anweisungen eingefügt werden, um die Einstellungen für alle darauf folgenden Eingabeaufforderungen zu ändern. Diese Einstellungsanweisungen werden angegeben, indem sie in einer eigenen Zeile im Bereich [subject] der Eingabeaufforderungsdatei im folgenden Format eingefügt werden:
![zu ändernde Einstellung] = [neuer Wert]
Für [setting to change] sind die gültigen Anweisungen:
Einige Beispiele:
!PROCESS = vqgan
Dadurch wird der aktuelle KI-Bilderzeugungsprozess festgelegt. Gültige Optionen sind vqgan für VQGAN+CLIP, diffusion für CLIP-gesteuerte Diffusion (Disco Diffusion) oder Stablediff für stabile Diffusion.
!CUDA_DEVICE = 0
Dadurch wird die Verwendung von GPU 0 erzwungen (Standardeinstellung). Nützlich, wenn Sie über mehrere GPUs verfügen – Sie können mehrere Instanzen ausführen, jede mit ihrer eigenen Eingabeaufforderungsdatei, die eine eindeutige GPU-ID angibt.
!WIDTH = 384
!HEIGHT = 384
Dadurch wird die Ausgabebildgröße auf 384 x 384 festgelegt. Eine größere Ausgabegröße erfordert mehr GPU-VRAM. Beachten Sie, dass diese Werte für eine stabile Diffusion ein Vielfaches von 64 sein sollten.
!TRANSFORMER = ffhq
Dadurch wird VQGAN angewiesen, den FFHQ-Transformer (etwas besser bei Gesichtern) anstelle der Standardeinstellung (vqgan_imagenet_f16_16384) zu verwenden. Sie können Schritt 7 in der obigen Einrichtungsanleitung befolgen, um den ffhq-Transformator zusammen mit einem Link zu mehreren anderen zu erhalten.
Was auch immer Sie hier angeben, MUSS im Checkpoints-Verzeichnis als .ckpt- und .yaml-Datei vorhanden sein.
!INPUT_IMAGE = samples/face-input.jpg
Dadurch wird „samples/face-input.jpg“ (oder ein beliebiges von Ihnen angegebenes Bild) als Startbild anstelle des standardmäßigen Zufallsrauschens verwendet. Für gute Ergebnisse müssen Eingabebilder das gleiche Seitenverhältnis wie Ihre Ausgabebilder haben. Beachten Sie, dass bei Verwendung mit stabiler Diffusion die Größe des Ausgabebilds mit der Größe Ihres Eingabebilds übereinstimmt (Ihre Einstellungen für Höhe/Breite werden ignoriert).
!SEED = 42
Dadurch wird 42 als Eingabe-Seed-Wert anstelle einer Zufallszahl (Standard) verwendet. Nützlich für die Reproduzierbarkeit – wenn alle anderen Parameter identisch sind, sollte die Verwendung desselben Startwerts über mehrere Durchläufe hinweg ein identisches Bild erzeugen. Auf „Nichts“ oder „-1“ setzen, um auf die Verwendung eines Zufallswerts zurückzusetzen.
!INPUT_IMAGE =
Wenn Sie einen dieser Werte auf „Nichts“ setzen, wird er auf den Standardwert zurückgesetzt. In diesem Beispiel wird also kein Startbild verwendet.
!STEPS = 50
Legt die Anzahl der Schritte (ähnlich wie bei Iterationen) bei Verwendung der stabilen Diffusion auf 50 fest (Standardeinstellung). Höhere Werte benötigen mehr Zeit und können die Bildqualität verbessern. Werte über 100 führen selten zu spürbaren Unterschieden im Vergleich zu niedrigeren Werten.
!SCALE = 7.5
Legt den Führungsmaßstab bei Verwendung von „Stabile Diffusion“ auf 7,5 fest (Standardeinstellung). Höhere Werte (bis zu einem gewissen Punkt, mehr als ~25 Ergebnisse können seltsam sein) führen dazu, dass die Ausgabe Ihrer Eingabeaufforderung besser entspricht.
!SAMPLES = 1
Legt die Anzahl der Proben bei Verwendung der stabilen Diffusion auf 1 fest (Standardeinstellung). Werte über 1 führen dazu, dass für jede Eingabeaufforderung mehrere Ausgabebilder erstellt werden, was zu einer leichten Zeitersparnis pro Bild führt. Für die Erhöhung sind keine Kosten für den GPU-VRAM erforderlich.
!STRENGTH = 0.75
Setzt den Einfluss des Startbildes auf 0,75 (Standard). Nur relevant, wenn „Stabile Diffusion“ mit einem Eingabebild verwendet wird. Gültige Werte liegen zwischen 0 und 1, wobei 1 der vollständigen Zerstörung des Eingabebilds entspricht und 0 bedeutet, dass das Startbild vollständig intakt bleibt. Werte zwischen 0,25 und 0,75 liefern tendenziell interessante Ergebnisse.
!SD_LOW_MEMORY = no
Verwenden Sie ein gespaltenes Repo mit viel geringeren GPU-Speicheranforderungen, wenn Sie Stable Diffusion verwenden (ja/nein)? Wenn Sie dies auf „Ja“ setzen, wird auf die Verwendung einer speicheroptimierten Version von SD umgeschaltet, mit der Sie Bilder mit höherer Auflösung mit weitaus weniger GPU-Speicher erstellen können (512 x 512-Bilder sollten nur etwa 4 GB VRAM erfordern). Der Nachteil besteht darin, dass die Schlussfolgerung im Vergleich zum offiziellen Standard-Repo viel langsamer ist. Zum Vergleich: Auf einer RTX 3060 dauert die Erstellung eines 512x512-Bildes bei Standardeinstellungen etwa 12 Sekunden; mit !SD_LOW_MEMORY = yes dauert das gleiche Bild über eine Minute. Wir empfehlen, dies auszuschalten, es sei denn, Sie verfügen über weniger als 8 GB GPU-VRAM oder möchten vor der Hochskalierung mit der Erstellung größerer Bilder experimentieren.
!USE_UPSCALE = no
Mit Stable Diffusion erstellte Bilder automatisch hochskalieren (ja/nein)? Verwendet ESRGAN/GFPGAN (siehe zusätzliche Einstellungen unten).
!UPSCALE_AMOUNT = 2
Wie viel soll skaliert werden, wenn !USE_UPSCALE = ja ? Der Standardwert ist 2,0x; Höhere Werte erfordern mehr VRAM und Zeit.
!UPSCALE_FACE_ENH = no
Ob beim Hochskalieren GFPGAN (im Vergleich zum Standard-ESRGAN) verwendet werden soll oder nicht. GFPGAN liefert die besten Ergebnisse bei Gesichtern, kann jedoch etwas schlechtere Ergebnisse liefern, wenn es bei Motiven ohne Gesichter verwendet wird.
!UPSCALE_KEEP_ORG = no
Beim Hochskalieren das unveränderte Originalbild beibehalten (ja/nein)? Bei der Einstellung „Nein“ (Standardeinstellung) wird das Originalbild gelöscht. Bei der Einstellung „Ja“ wird das Originalbild in einem /original -Unterverzeichnis des Bildausgabeordners gespeichert.
!REPEAT = no
Wenn alle Jobs in der Eingabeaufforderungsdatei abgeschlossen sind, wieder am Anfang der Datei neu starten (ja/nein)? Der Standardwert ist „Nein“, wodurch die Ausführung einfach beendet wird, wenn alle Jobs abgeschlossen sind.
TODO: Einstellungsbeispiele fertigstellen und Nutzungstipps/Beispiele hinzufügen, random_art.py dokumentieren