Stabile Video-Diffusion

von Stabile Video-Diffusion

Bitte fügen Sie die benötigten Bilder durch Ziehen und Ablegen oder Hochladen lokaler Bilder hinzu. Die Modelle werden schnell bearbeitet,

Abbildung 21
Bild 20

klicken Sie auf die Schaltfläche "Generieren" unten. Beginnen Sie hier mit der Generierung, da sie auf dem A100-Videospeicher läuft. Es wird länger dauern. Der Bild-zu-Video-Effekt wird in nur 177 Sekunden nach der Generierung erscheinen.

Abbildung 22
Bild 22 1

Stabile Video-Diffusion ist eine stabile Video Diffusionsmodell für hochauflösende, moderne Text-zu-Video- und Bild-zu-Video-Generierung. Kürzlich wurden latente Diffusionsmodelle für die 2D-Bildsynthese in generative Videomodelle umgewandelt, indem zeitliche Schichten eingefügt und an kleinen, qualitativ hochwertigen Videodatensätzen feinabgestimmt wurden. Die Trainingsmethoden in der Literatur sind jedoch sehr unterschiedlich, und das Feld muss sich noch auf eine einheitliche Strategie für Videodaten einigen. In diesem Papier identifizieren und bewerten wir drei verschiedene Stufen für ein erfolgreiches Training eines Video-LDM (Latent Diffusion Model): Text-Bild-Vor-Training, Video-Vor-Training und hochwertiges Video-Feintuning.

Diese stabiles Video Diffusionsmodell bietet eine neue Methode zur Erstellung hochwertiger Videos. Es nimmt Text oder Bilder als Eingabe und erzeugt realistische Videos, die sich auf den eingegebenen Inhalt beziehen. Dieses Modell hat ein breites Anwendungspotenzial in der Filmproduktion, der virtuellen Realität, der Spieleentwicklung und anderen Bereichen.

Die Forschung zur stabilen Videodiffusion ist für die Verbesserung der Videogenerierungstechnologie von entscheidender Bedeutung. Sie bietet Forschern einen Rahmen für die weitere Erforschung von Trainingsmethoden und Datenstrategien für Videogenerierungsmodelle, um die Qualität und Wiedergabetreue der generierten Videos zu verbessern.

Stabilität AIein bekanntes KI-Zeichenunternehmen, ist endlich in die KI-generierte Videobranche eingestiegen.

Abbildung 18

Am Dienstag dieser Woche, Stabile Video-Diffusion, ein auf Stable Diffusion basierendes Modell zur Videogenerierung, erschien, und die KI-Gemeinschaft begann sofort, darüber zu diskutieren.

Stabile Video-Diffusions-Bild-zu-Video-Modellkarte

Stabile Video-Diffusion (SVD) Bild-zu-Video ist ein Diffusionsmodell, das ein Standbild als Konditionierungsrahmen verwendet und daraus ein Video erzeugt.

640
640 1
640 2

(SVD) Image-to-Video ist ein latentes Diffusionsmodell, das trainiert wurde, um kurze Videoclips aus einer Bildkonditionierung zu erzeugen. Dieses Modell wurde so trainiert, dass es 25 Bilder mit einer Auflösung von 576×1024 aus einem Kontextbild derselben Größe erzeugt, das von SVD Bild-zu-Video [14 Bilder]. Wir verfeinern auch die weit verbreitete f8-Decoder für zeitliche Konsistenz. Der Einfachheit halber versehen wir das Modell zusätzlich mit dem standardmäßigen frame-wise Decoder hier.

  • Entwickelt von: Stabilität AI
  • Finanziert durch: Stabilität AI
  • Modell-Typ: Generatives Bild-Videomodell
  • Feinabstimmung vom Modell: SVD Bild-zu-Video [14 Bilder]

Für Forschungszwecke empfehlen wir unsere generative-modelle Github-Repository (https://github.com/Stability-AI/generative-models), das die gängigsten Diffusionsverfahren (sowohl für Training als auch für Inferenz) implementiert.

Das obige Diagramm bewertet die Präferenz der Nutzer für SVD-Image-to-Video gegenüber GEN-2 und PikaLabs. SVD-Image-to-Video wird von menschlichen Wählern in Bezug auf die Videoqualität bevorzugt. Für Details zur Nutzerstudie verweisen wir auf die Forschungsarbeit

Das Modell ist nur für Forschungszwecke gedacht. Mögliche Forschungsbereiche und Aufgaben sind

  • Forschung über generative Modelle.
  • Sicherer Einsatz von Modellen, die das Potenzial haben, schädliche Inhalte zu erzeugen.
  • Ausloten und Verstehen der Grenzen und Verzerrungen von generativen Modellen.
  • Erstellung von Kunstwerken und Verwendung in Design- und anderen künstlerischen Prozessen.
  • Anwendungen in pädagogischen oder kreativen Werkzeugen.

Ausgeschlossene Verwendungszwecke werden im Folgenden beschrieben.

Das Modell wurde nicht darauf trainiert, Personen oder Ereignisse sachlich oder wahrheitsgetreu darzustellen, weshalb die Verwendung des Modells zur Generierung solcher Inhalte nicht in die Fähigkeiten dieses Modells passt. Das Modell sollte nicht in einer Weise verwendet werden, die gegen die Stability AI-Richtlinien verstößt. Richtlinie zur akzeptablen Nutzung.

  • Die erzeugten Videos sind recht kurz (<= 4 Sekunden), und das Modell erreicht keinen perfekten Fotorealismus.
  • Das Modell kann Videos ohne Bewegung oder sehr langsame Kameraschwenks erzeugen.
  • Das Modell kann nicht über Text gesteuert werden.
  • Das Modell kann keinen lesbaren Text darstellen.
  • Gesichter und Menschen im Allgemeinen werden möglicherweise nicht richtig generiert.
  • Der Autocodierungsteil des Modells ist verlustbehaftet.

Das Modell ist nur für Forschungszwecke bestimmt.

Überprüfen Sie https://github.com/Stability-AI/generative-models

Abbildung 18

Generative Modelle von Stability AI

Muster1

21. November 2023

  • Wir veröffentlichen Stable Video Diffusion, ein Bild-zu-Video-Modell, für Forschungszwecke:
    • SVD: Dieses Modell wurde so trainiert, dass es 14 Bilder mit einer Auflösung von 576×1024 bei einem gleich großen Kontextbild erzeugt. Wir verwenden den Standard-Bildkodierer aus SD 2.1, ersetzen aber den Dekodierer durch einen zeitlich angepassten Entflickungsdecoder.
    • SVD-XT: Gleiche Architektur wie SVD aber abgestimmt auf die Erzeugung von 25 Bildern.
    • Wir bieten eine Streamlit-Demo skripte/demo/video_sampling.py und ein eigenständiges Python-Skript scripts/sampling/simple_video_sample.py für die Inferenz beider Modelle.
    • Zusammen mit dem Modell veröffentlichen wir eine technischer Bericht.

26. Juli 2023

Probe2

4. Juli 2023

  • Ein technischer Bericht über SDXL ist jetzt verfügbar hier.

22. Juni 2023

  • Wir geben zwei neue Diffusionsmodelle für Forschungszwecke heraus:
    • SDXL-Basis-0,9: Das Basismodell wurde für eine Vielzahl von Seitenverhältnissen auf Bildern mit einer Auflösung von 1024^2 trainiert. Das Basismodell verwendet OpenCLIP-ViT/G und CLIP-ViT/L für die Textkodierung, während das Refiner-Modell nur das OpenCLIP-Modell verwendet.
    • SDXL-Refiner-0.9: Der Refiner wurde für die Entrauschung von qualitativ hochwertigen Daten mit geringem Rauschen trainiert und sollte daher nicht als Text-Bild-Modell verwendet werden, sondern nur als Bild-Bild-Modell.

Wenn Sie diese Modelle für Ihre Forschung nutzen möchten, bewerben Sie sich bitte über einen der folgenden Links: SDXL-0.9-Basismodellund SDXL-0.9-Refiner. Das bedeutet, dass Sie sich für einen der beiden Links bewerben können - und wenn Sie die Genehmigung erhalten, können Sie auf beide zugreifen. Bitte loggen Sie sich in Ihr Hugging Face-Konto mit der E-Mail Ihrer Organisation ein, um den Zugang zu beantragen. Wir planen, bald (Juli) eine vollständige Version zu veröffentlichen.

Allgemeine Philosophie

Modularität ist Trumpf. Dieses Repo implementiert einen konfigurationsgesteuerten Ansatz, bei dem wir Submodule durch den Aufruf von instantiate_from_config() auf Objekte, die in yaml configs definiert sind. Siehe Konfigs/ für viele Beispiele.

Changelog vom alten ldm codebase

Für die Ausbildung verwenden wir PyTorch-Blitzaber es sollte einfach sein, andere Trainingswrapper um die Basismodule herum zu verwenden. Die Kernklasse des Diffusionsmodells (früher LatentDiffusion, jetzt DiffusionEngine) wurde bereinigt:

  • Keine umfangreiche Unterklassenbildung mehr! Wir behandeln jetzt alle Arten von Konditionierungseingaben (Vektoren, Sequenzen und räumliche Konditionierungen sowie alle Kombinationen davon) in einer einzigen Klasse: GeneralConditionersiehe sgm/modules/encoders/modules.py.
  • Wir unterscheiden zwischen Ratgebern (z. B. klassifikatorfreie Ratgeber, siehe sgm/modules/diffusionmodules/guiders.py) von den Probenehmern (sgm/modules/diffusionmodules/sampling.py), und die Probenehmer sind unabhängig vom Modell.
  • Wir übernehmen die "Denoiser-Framework" sowohl für das Training als auch für die Inferenz (die bemerkenswerteste Änderung ist wahrscheinlich die Option, kontinuierliche Zeitmodelle zu trainieren):
    • Diskrete Zeitmodelle (Denozer) sind einfach ein Spezialfall der kontinuierlichen Zeitmodelle (Denozer); siehe sgm/modules/diffusionmodules/denoiser.py.
    • Die folgenden Merkmale sind nun unabhängig: Gewichtung der Diffusionsverlustfunktion (sgm/modules/diffusionmodules/denoiser_weighting.py), Vorkonditionierung des Netzes (sgm/modules/diffusionmodules/denoiser_scaling.py) und die Abtastung der Lärmpegel während der Ausbildung (sgm/modules/diffusionmodules/sigma_sampling.py).
  • Auch die Autoencoding-Modelle wurden bereinigt.

1. Klonen Sie das Repository

git clone [email protected]:Stability-AI/generative-models.git cd generative-models

2. Einrichten der Virtualenv

Dies setzt voraus, dass Sie sich auf der generative-modelle root nach dem Klonen.

HINWEIS: Dies wird getestet unter python3.10. Bei anderen Python-Versionen kann es zu Versionskonflikten kommen.

PyTorch 2.0# Erforderliche Pakete von pypi installieren python3 -m venv .pt2 source .pt2/bin/activate pip3 install -r requirements/pt2.txt

3. Installieren Sie sgm

pip3 install .

4. Installieren Sie sDaten für die Ausbildung

pip3 install -e git+https://github.com/Stability-AI/datapipelines.git@main#egg=sdata

Verpackung

Dieses Repository verwendet PEP 517-konforme Paketierung unter Verwendung von Schraffur.

Um ein verteilbares Rad zu erstellen, installieren Sie Luke und laufen Lukenbau (unter Angabe von -t Rad überspringt die Erstellung einer sdist, die nicht notwendig ist).

pip install hatch
Luke bauen -t Rad

Sie finden das erstellte Paket in Dist/. Sie können das Rad einbauen mit pip install dist/*.whl.

Beachten Sie, dass das Paket nicht derzeit Abhängigkeiten angeben; Sie müssen die erforderlichen Pakete je nach Anwendungsfall und PyTorch-Version manuell installieren.

Wir bieten eine streamlit Demo für Text-zu-Bild- und Bild-zu-Bild-Sampling in skripte/demo/sampling.py. Wir stellen Dateihashes sowohl für die gesamte Datei als auch nur für die gespeicherten Tensoren in der Datei bereit (siehe Modell Spezifikation für ein Skript, das dies auswertet). Die folgenden Modelle werden derzeit unterstützt:

  • SDXL-Basis-1.0Datei-Hash (sha256): 31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b Tensordaten Hash (sha256): 0xd7a9105a900fd52748f20725fe52fe52b507fd36bee4fc107b1550a26e6ee1d7
  • SDXL-Refiner-1.0Datei-Hash (sha256): 7440042bbdc8a24813002c09b6b69b64dc90fded4472613437b7f55f9b7d9c5f Tensordaten Hash (sha256): 0x1a77d21bebc4b4de78c474a90cb74dc0d2217caf4061971dbfa75ad406b75d81
  • SDXL-Basis-0,9
  • SDXL-Refiner-0.9
  • SD-2.1-512
  • SD-2.1-768

Gewichte für SDXL:

SDXL-1.0: Die Gewichte des SDXL-1.0 sind verfügbar (vorbehaltlich einer CreativeML Open RAIL++-M Lizenz) hier:

SDXL-0.9: Die Gewichte des SDXL-0.9 sind verfügbar und unterliegen einer Forschungslizenz. Wenn Sie diese Modelle für Ihre Forschung nutzen möchten, bewerben Sie sich bitte über einen der folgenden Links: Modell SDXL-base-0.9und SDXL-Refiner-0.9. Das bedeutet, dass Sie sich für einen der beiden Links bewerben können - und wenn Sie die Genehmigung erhalten, können Sie auf beide zugreifen. Bitte loggen Sie sich in Ihr Hugging Face-Konto mit der E-Mail Ihrer Organisation ein, um den Zugang zu beantragen.

Nachdem Sie die Gewichte erhalten haben, legen Sie sie in Kontrollpunkte/. Als nächstes starten Sie die Demo mit

streamlit run scripts/demo/sampling.py --server.port

Die mit unserem Code erzeugten Bilder verwenden die unsichtbares Wasserzeichen Bibliothek, um ein unsichtbares Wasserzeichen in die Modellausgabe einzubetten. Wir stellen auch ein Skript zur Verfügung, um dieses Wasserzeichen leicht zu erkennen. Bitte beachten Sie, dass dieses Wasserzeichen nicht dasselbe ist wie in früheren Stable Diffusion 1.x/2.x-Versionen.

Um das Skript auszuführen, müssen Sie entweder eine funktionierende Installation wie oben haben oder ein experimentell Importieren mit nur einer minimalen Anzahl von Paketen:python -m venv .detect source .detect/bin/activate pip install "numpy>=1.17" "PyWavelets>=1.1.1" "opencv-python>=4.1.0.25" pip install -no-deps invisible-watermark

Um das Skript auszuführen, müssen Sie eine funktionierende Installation wie oben beschrieben haben. Das Skript kann dann auf folgende Weise verwendet werden (vergessen Sie nicht, Ihre virtuelle Umgebung vorher zu aktivieren, z. B. Quelle .pt1/bin/activate):# eine einzelne Datei testen python scripts/demo/detect.py # mehrere Dateien auf einmal testen python scripts/demo/detect.py ... # alle Dateien in einem bestimmten Ordner testen python scripts/demo/detect.py /*

Wir stellen Beispiele für Trainingskonfigurationen in configs/example_training. Um ein Training zu starten, führen Sie

python main.py --base configs/ configs/

wobei die Konfigurationen von links nach rechts zusammengeführt werden (spätere Konfigurationen überschreiben die gleichen Werte). Dies kann verwendet werden, um Modell-, Trainings- und Datenkonfigurationen zu kombinieren. Sie können jedoch auch alle in einer einzigen Konfiguration definiert werden. Um zum Beispiel ein klassenbedingtes pixelbasiertes Diffusionsmodell auf MNIST zu trainieren, führen Sie aus:python main.py -base configs/example_training/toy/mnist_cond.yaml

ANMERKUNG 1: Verwendung der Nicht-Spielzeug-Datensatz-Konfigurationen configs/example_training/imagenet-f8_cond.yamlconfigs/example_training/txt2img-clipl.yaml und configs/example_training/txt2img-clipl-legacy-ucg-training.yaml für das Training müssen je nach verwendetem Datensatz (der voraussichtlich in einer tar-Datei in der webdatensatz-format). Um die Teile zu finden, die angepasst werden müssen, suchen Sie nach Kommentaren, die BENUTZER: in der jeweiligen Konfiguration.

ANMERKUNG 2: Dieses Repository unterstützt sowohl pytorch1.13 und pytorch2für das Training generativer Modelle. Für das Training von Autoencodern wie z. B. in configs/example_training/autoencoder/kl-f4/imagenet-attnfree-logvar.yamlnur pytorch1.13 wird unterstützt.

ANMERKUNG 3: Training latenter generativer Modelle (wie z. B. in configs/example_training/imagenet-f8_cond.yaml) erfordert das Abrufen des Kontrollpunkts von Gesicht umarmen und die Ersetzung der CKPT_PATH Platzhalter in diese Zeile. Das Gleiche gilt für die mitgelieferten Text-Bild-Konfigurationen.

Konditionierer

Die GeneralConditioner wird über die Funktion Aufbereiter_Konfiguration. Sein einziges Attribut ist emb_models, eine Liste verschiedener Einbettungen (alle geerbt von AbstractEmbModel), die zur Konditionierung des generativen Modells verwendet werden. Alle Einbettungen sollten definieren, ob sie trainierbar sind oder nicht (ist_ausbildbar, Standard Falsch), wird eine klassifikatorfreie Beratungsabbruchrate verwendet (ucg_rate, Standard 0), und eine Eingabetaste (Eingabe_Schlüssel), zum Beispiel, txt für die Textkonditionierung oder cls für Klassenkonditionierungen. Bei der Berechnung von Konditionierungen erhält der Embedder batch[input_key] als Eingabe. Wir unterstützen derzeit zwei- bis vierdimensionale Konditionierungen, und Konditionierungen verschiedener Einbettungen werden entsprechend verkettet. Beachten Sie, dass die Reihenfolge der Einbettungen in der Aufbereiter_Konfiguration ist wichtig.

Netzwerk

Das neuronale Netz wird über die Option netzwerk_konfiguration. Dies wurde früher als unet_configwas nicht allgemein genug ist, da wir mit Transformator-basierten Diffusions-Backbones experimentieren wollen.

Verlust

Der Verlust wird konfiguriert durch Verlust_Konfiguration. Für das Training des Standard-Diffusionsmodells müssen Sie Folgendes einstellen sigma_sampler_config.

Wie bereits erwähnt, ist der Probenehmer unabhängig vom Modell. In der sampler_configlegen wir die Art des numerischen Lösers, die Anzahl der Schritte, die Art der Diskretisierung sowie z. B. Guidance Wrappers für klassifikatorfreie Führung fest.

Für umfangreiches Training empfehlen wir die Verwendung der Datenpipelines aus unserer Datenpipelines Projekt. Das Projekt ist in der Anforderung enthalten und wird automatisch einbezogen, wenn Sie die Schritte aus dem Abschnitt Installation. Kleine Map-ähnliche Datensätze sollten hier im Repository definiert werden (z. B. MNIST, CIFAR-10, ...) und ein Diktat von Datenschlüsseln/Werten zurückgeben, z. B.,example = {"jpg": x, # this is a tensor -1...1 chw "txt": "ein schönes Bild"}

wobei wir Bilder im Format -1...1, kanalorientiert, erwarten.

de_DEGerman