Hotshot-XL ist ein KI-Text-zu-GIF-Modell, das für die Zusammenarbeit mit Stable Diffusion XL trainiert wurde.
Hotshot-XL kann GIFs mit jedem fein abgestimmten SDXL-Modell generieren. Das bedeutet zwei Dinge:
Sie können GIFs mit jedem vorhandenen oder neu optimierten SDXL-Modell erstellen, das Sie verwenden möchten.
Wenn Sie GIFs von personalisierten Motiven erstellen möchten, können Sie Ihre eigenen SDXL-basierten LORAs laden und müssen sich nicht um die Feinabstimmung von Hotshot-XL kümmern. Das ist großartig, da es normalerweise viel einfacher ist, geeignete Bilder für Trainingsdaten zu finden als Videos. Es passt hoffentlich auch in die bestehende LORA-Nutzung/Workflows aller :) Weitere Informationen finden Sie hier.
Hotshot-XL ist mit SDXL ControlNet kompatibel, um GIFs in der gewünschten Komposition/Layout zu erstellen. Siehe den Abschnitt „ControlNet“ weiter unten.
Hotshot-XL wurde darauf trainiert, 1-Sekunden-GIFs mit 8 FPS zu generieren.
Hotshot-XL wurde auf verschiedene Seitenverhältnisse trainiert. Für beste Ergebnisse mit dem Basismodell Hotshot-XL empfehlen wir die Verwendung mit einem SDXL-Modell, das auf 512x512-Bilder abgestimmt wurde. Hier finden Sie ein SDXL-Modell, das wir für die Auflösung 512 x 512 optimiert haben.
Probieren Sie Hotshot-XL hier selbst aus: https://www.hotshot.co
Wenn Sie Hotshot-XL selbst lokal ausführen möchten, fahren Sie mit den folgenden Abschnitten fort.
Wenn Sie Hotshot-XL selbst verwenden, werden Sie mit dem Modell viel mehr Flexibilität/Kontrolle haben. Als sehr einfaches Beispiel können Sie den Sampler ändern. Bisher haben wir mit Euler-A die besten Ergebnisse erzielt, aber möglicherweise finden Sie auch mit einigen anderen interessante Ergebnisse.
pip install virtualenv --upgrade virtualenv -p $(which python3) venv source venv/bin/activate pip install -r requirements.txt
# Make sure you have git-lfs installed (https://git-lfs.com) git lfs install git clone https://huggingface.co/hotshotco/Hotshot-XL
oder besuchen Sie https://huggingface.co/hotshotco/Hotshot-XL
Hinweis : Um die Daten- und Trainingseffizienz zu maximieren, wurde Hotshot-XL mit verschiedenen Seitenverhältnissen um die Auflösung 512 x 512 trainiert. Für beste Ergebnisse mit dem Basismodell Hotshot-XL empfehlen wir die Verwendung mit einem SDXL-Modell, das für Bilder mit einer Auflösung von etwa 512 x 512 optimiert wurde. Sie können unten ein SDXL-Modell herunterladen, das wir mit Bildern in einer Auflösung von 512 x 512 trainiert haben, oder Ihr eigenes SDXL-Basismodell mitbringen.
# Make sure you have git-lfs installed (https://git-lfs.com) git lfs install git clone https://huggingface.co/hotshotco/SDXL-512
oder besuchen Sie https://huggingface.co/hotshotco/SDXL-512
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.gif"
Was Sie erwartet:
Prompt | Sasquatch-Tauchen | ein Kamel, das eine Zigarette raucht | Ronald McDonald sitzt am Kosmetikspiegel und trägt Lippenstift auf | Drake leckt sich die Lippen und starrt durch ein Fenster auf einen Cupcake |
---|---|---|---|---|
Ausgabe |
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.gif" --spatial_unet_base="path/to/stabilityai/stable-diffusion-xl-base-1.0/unet" --lora="path/to/lora"
Was Sie erwartet:
Hinweis : Die folgenden Ausgaben verwenden den DDIMScheduler.
Prompt | SKS-Person, die eine Capri-Sonne anschreit | SKS-Person küsst Kermit den Frosch | SKS-Person im Smoking, die ein Glas Champagner hochhält, Feuerwerk im Hintergrund, HD, hohe Qualität, 4K |
---|---|---|---|
Ausgabe |
python inference.py --prompt="a girl jumping up and down and pumping her fist, hd, high quality" --output="output.gif" --control_type="depth" --gif="https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExbXNneXJicG1mOHJ2dzQ2Y2JteDY1ZWlrdjNjMjl3ZWxyeWFxY2EzdyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/YOTAoXBgMCmFeQQzuZ/giphy.gif"
Standardmäßig erstellt Hotshot-XL Schlüsselbilder aus Ihrem Quell-GIF mit 8 gleichmäßig verteilten Bildern und schneidet die Schlüsselbilder auf das Standardseitenverhältnis zu. Für eine feinere Steuerung erfahren Sie, wie Sie Seitenverhältnisse und Bildraten/-längen variieren.
Hotshot-XL unterstützt derzeit die Verwendung jeweils eines ControlNet-Modells; Es wäre spannend, Multi-ControlNet zu unterstützen.
Was Sie erwartet:
Prompt | Mädchen im Pixar-Stil, das zwei Daumen hochhält, glücklich, hohe Qualität, 8k, 3D, animiertes Disney-Rendering | Keanu Reaves hält ein Schild mit der Aufschrift „HILFE“, HD, hohe Qualität | Eine Frau lacht, HD, hohe Qualität | Barack Obama formt mit seinen Händen einen Regenbogen, das Wort „MAGIC“ vor sich, trägt einen blau-weiß gestreiften Kapuzenpullover, HD, hohe Qualität |
---|---|---|---|---|
Ausgabe | ||||
Kontrolle |
Hinweis : Das Basis-SDXL-Modell ist darauf trainiert, Bilder mit einer Auflösung von etwa 1024 x 1024 optimal zu erstellen. Um die Daten- und Trainingseffizienz zu maximieren, wurde Hotshot-XL mit Seitenverhältnissen um die Auflösung 512 x 512 trainiert. Eine Liste der Seitenverhältnisse, mit denen das Basismodell Hotshot-XL trainiert wurde, finden Sie unter „Zusätzliche Hinweise“.
Wie SDXL wurde Hotshot-XL mit Seitenverhältnis-Bucketing auf verschiedene Seitenverhältnisse trainiert und unterstützt SDXL-Parameter wie Zielgröße und Originalgröße. Das bedeutet, dass Sie allein mit dem Basismodell Hotshot-XL GIFs mit mehreren verschiedenen Seitenverhältnissen und Auflösungen erstellen können.
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.gif" --width=<WIDTH> --height=<HEIGHT>
Was Sie erwartet:
512x512 | 672x384 | 384x672 | |
---|---|---|---|
Ein Affe spielt Gitarre, Naturaufnahmen, HD, hohe Qualität |
Standardmäßig ist Hotshot-XL darauf trainiert, GIFs mit einer Länge von 1 Sekunde und 8 Bildern pro Sekunde zu generieren. Wenn Sie mit der Generierung von GIFs mit unterschiedlichen Bildraten und Zeitlängen experimentieren möchten, können Sie die Parameter video_length
und video_duration
ausprobieren.
video_length
legt die Anzahl der Bilder fest. Der Standardwert ist 8.
video_duration
legt die Laufzeit des Ausgabe-GIF in Millisekunden fest. Der Standardwert ist 1000.
Bitte beachten Sie, dass Sie bei der Änderung dieser Parameter mit instabilen/zitternden Ergebnissen rechnen müssen, da das Modell nur mit 1-Sekunden-Videos bei 8 Bildern pro Sekunde trainiert wurde. Durch die Feinabstimmung von Hotshot-XL können Sie die Stabilität der Ergebnisse für verschiedene Zeitdauern und Bildraten verbessern. Bitte lassen Sie es uns wissen, wenn Sie dies tun!
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.gif" --video_length=16 --video_duration=2000
Hotshot-XL ist darauf trainiert, neben SDXL auch GIFs zu generieren. Wenn Sie nur ein Bild generieren möchten, können Sie einfach video_length=1
in Ihrem Inferenzaufruf festlegen und die zeitlichen Ebenen von Hotshot-XL werden erwartungsgemäß ignoriert.
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.jpg" --video_length=1
Hotshot-XL wurde mit den folgenden Seitenverhältnissen trainiert; Um zuverlässig GIFs außerhalb des Bereichs dieser Seitenverhältnisse zu generieren, sollten Sie Hotshot-XL mit Videos in der Auflösung Ihres gewünschten Seitenverhältnisses feinabstimmen.
Seitenverhältnis | Größe |
---|---|
0,42 | 320 x 768 |
0,57 | 384 x 672 |
0,68 | 416 x 608 |
1,00 | 512 x 512 |
1,46 | 608 x 416 |
1,75 | 672 x 384 |
2,40 | 768 x 320 |
Der folgende Abschnitt bezieht sich auf die Feinabstimmung des Hotshot-XL-Zeitmodells mit zusätzlichen Text-/Videopaaren. Wenn Sie versuchen, GIFs mit personalisierten Konzepten/Themen zu generieren, empfehlen wir, Hotshot-XL nicht zu verfeinern, sondern stattdessen Ihre eigenen SDXL-basierten LORAs zu trainieren und diese einfach zu laden.
Das Skript fine_tune.py
erwartet, dass Ihre Beispiele wie folgt strukturiert sind:
fine_tune_dataset ├── sample_001 │ ├── 0.jpg │ ├── 1.jpg │ ├── 2.jpg ... ... │ ├── n.jpg │ └── prompt.txt
Jedes Beispielverzeichnis sollte Ihre n Schlüsselbilder und eine prompt.txt
Datei enthalten, die die Eingabeaufforderung enthält. Der endgültige Prüfpunkt wird im output_dir
gespeichert. Wir fanden es nützlich, von Zeit zu Zeit Validierungs-GIFs an Weights & Biases zu senden. Wenn Sie sich für die Validierung mit Gewichtungen und Verzerrungen entscheiden, können Sie mit dem Parameter „ validate_every_steps
festlegen, wie oft diese ausgeführt wird.
accelerate launch fine_tune.py --output_dir="<OUTPUT_DIR>" --data_dir="fine_tune_dataset" --report_to="wandb" --run_validation_at_start --resolution=512 --mixed_precision=fp16 --train_batch_size=4 --learning_rate=1.25e-05 --lr_scheduler="constant" --lr_warmup_steps=0 --max_train_steps=1000 --save_n_steps=20 --validate_every_steps=50 --vae_b16 --gradient_checkpointing --noise_offset=0.05 --snr_gamma --test_prompts="man sits at a table in a cafe, he greets another man with a smile and a handshakes"
Es gibt viele Möglichkeiten, Hotshot-XL zu verbessern. Zum Beispiel:
Feinabstimmung von Hotshot-XL bei höheren Bildraten, um GIFs mit längerer/höherer Bildrate zu erstellen
Feinabstimmung von Hotshot-XL bei größeren Auflösungen, um GIFs mit höherer Auflösung zu erstellen
Trainieren Sie zeitliche Schichten für einen latenten Upscaler, um GIFs mit höherer Auflösung zu erstellen
Trainieren eines bildbedingten „Frame-Vorhersage“-Modells für kohärentere, längere GIFs
Trainieren Sie zeitliche Schichten für eine VAE, um Flackern/Dithering in den Ausgaben zu verringern
Unterstützung von Multi-ControlNet für eine bessere Kontrolle über die GIF-Generierung
Training und Integration verschiedener ControlNet-Modelle zur weiteren Kontrolle über die GIF-Generierung (eine feinere Kontrolle des Gesichtsausdrucks wäre sehr cool)
Verschieben von Hotshot-XL in AITemplate für schnellere Inferenzzeiten
Wir ? Beiträge aus der Open-Source-Community! Bitte teilen Sie uns in den Ausgaben oder PRs mit, ob Sie daran interessiert sind, an diesen Verbesserungen oder etwas anderem zu arbeiten!
@software{Mullan_Hotshot-XL_2023, author = {Mullan, John and Crawbuck, Duncan and Sastry, Aakash}, license = {Apache-2.0}, month = oct, title = {{Hotshot-XL}}, url = {https://github.com/hotshotco/hotshot-xl}, version = {1.0.0}, year = {2023} }
Text-zu-Video-Modelle verbessern sich schnell und die Entwicklung von Hotshot-XL wurde stark von den folgenden erstaunlichen Arbeiten und Teams inspiriert:
SDXL
Richten Sie Ihre Latente aus
Machen Sie ein Video
AnimateDiff
Bildvideo
Wir hoffen, dass die Veröffentlichung dieses Modells/dieser Codebasis der Community hilft, diese kreativen Tools weiterhin auf offene und verantwortungsvolle Weise voranzutreiben.