Hotshot-XL est un modèle d'IA texte-GIF formé pour fonctionner avec Stable Diffusion XL.
Hotshot-XL peut générer des GIF avec n'importe quel modèle SDXL affiné. Cela signifie deux choses :
Vous pourrez créer des GIF avec n'importe quel modèle SDXL existant ou nouvellement affiné que vous souhaiterez peut-être utiliser.
Si vous souhaitez créer des GIF de sujets personnalisés, vous pouvez charger vos propres LORA basés sur SDXL sans avoir à vous soucier du réglage fin de Hotshot-XL. C'est génial car il est généralement beaucoup plus facile de trouver des images appropriées pour les données d'entraînement que de trouver des vidéos. Nous espérons également qu'il s'intègre dans l'utilisation/les flux de travail LORA existants de chacun :) Pour en savoir plus, cliquez ici.
Hotshot-XL est compatible avec SDXL ControlNet pour créer des GIF dans la composition/mise en page que vous souhaitez. Voir la section ControlNet ci-dessous.
Hotshot-XL a été formé pour générer des GIF d'une seconde à 8 FPS.
Hotshot-XL a été formé sur différents formats d'image. Pour de meilleurs résultats avec le modèle de base Hotshot-XL, nous vous recommandons de l'utiliser avec un modèle SDXL affiné avec des images 512 x 512. Vous pouvez trouver ici un modèle SDXL que nous avons affiné pour les résolutions 512x512.
Essayez Hotshot-XL vous-même ici : https://www.hotshot.co
Ou, si vous souhaitez exécuter Hotshot-XL vous-même localement, passez aux sections ci-dessous.
Si vous utilisez Hotshot-XL vous-même, vous pourrez avoir beaucoup plus de flexibilité/contrôle avec le modèle. A titre d'exemple très simple, vous pourrez changer d'échantillonneur. Nous avons obtenu les meilleurs résultats avec Euler-A jusqu'à présent, mais vous trouverez peut-être des résultats intéressants avec d'autres.
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
ou visitez https://huggingface.co/hotshotco/Hotshot-XL
Remarque : Pour maximiser l'efficacité des données et de la formation, Hotshot-XL a été formé à différents formats d'image autour d'une résolution de 512 x 512. Pour de meilleurs résultats avec le modèle de base Hotshot-XL, nous vous recommandons de l'utiliser avec un modèle SDXL qui a été affiné avec des images autour de la résolution 512x512. Vous pouvez télécharger ci-dessous un modèle SDXL que nous avons formé avec des images à une résolution de 512 x 512, ou apporter votre propre modèle de base SDXL.
# Make sure you have git-lfs installed (https://git-lfs.com) git lfs install git clone https://huggingface.co/hotshotco/SDXL-512
ou visitez 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"
À quoi s'attendre :
Rapide | Plongée sous-marine Sasquatch | un chameau fumant une cigarette | Ronald McDonald assis devant un miroir de courtoisie mettant du rouge à lèvres | Drake se lèche les lèvres et regarde à travers une fenêtre un cupcake |
---|---|---|---|---|
Sortir |
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"
À quoi s'attendre :
Remarque : Les sorties ci-dessous utilisent le DDIMScheduler.
Rapide | sks personne qui crie devant un soleil capri | personne sks embrassant Kermit la grenouille | personne sks portant un smoking tenant une coupe de champagne, feux d'artifice en arrière-plan, hd, haute qualité, 4K |
---|---|---|---|
Sortir |
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"
Par défaut, Hotshot-XL créera des images clés à partir de votre gif source en utilisant 8 images équidistantes et recadrera les images clés au rapport hauteur/largeur par défaut. Pour un contrôle plus fin, découvrez comment faire varier les proportions et les fréquences/longueurs d'image.
Hotshot-XL prend actuellement en charge l'utilisation d'un seul modèle ControlNet à la fois ; prendre en charge Multi-ControlNet serait passionnant.
À quoi s'attendre :
Rapide | fille de style pixar levant les deux pouces, heureuse, haute qualité, 8k, 3d, rendu disney animé | Keanu Reaves tient une pancarte indiquant "AIDE", HD, haute qualité | une femme qui rit, HD, haute qualité | barack obama fait un arc-en-ciel avec ses mains, le mot "MAGIC" devant eux, portant un sweat à capuche rayé bleu et blanc, hd, haute qualité |
---|---|---|---|---|
Sortir | ||||
Contrôle |
Remarque : Le modèle SDXL de base est formé pour créer au mieux des images autour d'une résolution de 1024 x 1024. Pour maximiser l'efficacité des données et de la formation, Hotshot-XL a été formé à des proportions d'environ 512 x 512. Veuillez consulter les Notes supplémentaires pour une liste des formats d'image avec lesquels le modèle de base Hotshot-XL a été entraîné.
Comme SDXL, Hotshot-XL a été formé à différents rapports d'aspect avec le regroupement des rapports d'aspect et inclut la prise en charge des paramètres SDXL tels que la taille cible et la taille d'origine. Cela signifie que vous pouvez créer des GIF dans plusieurs formats et résolutions différents, uniquement avec le modèle de base Hotshot-XL.
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.gif" --width=<WIDTH> --height=<HEIGHT>
À quoi s'attendre :
512x512 | 672x384 | 384x672 | |
---|---|---|---|
un singe jouant de la guitare, images de la nature, haute définition, haute qualité |
Par défaut, Hotshot-XL est formé pour générer des GIF d'une durée de 1 seconde avec 8FPS. Si vous souhaitez jouer avec la génération de GIF avec des fréquences d'images et des durées variables, vous pouvez essayer les paramètres video_length
et video_duration
.
video_length
définit le nombre d'images. La valeur par défaut est 8.
video_duration
définit la durée d'exécution du gif de sortie en millisecondes. La valeur par défaut est 1 000.
Veuillez noter que vous devez vous attendre à des résultats instables/« instables » lors de la modification de ces paramètres, car le modèle n'a été entraîné qu'avec des vidéos 1 s à 8 ips. Vous pourrez améliorer la stabilité des résultats pour différentes durées et fréquences d'images en ajustant Hotshot-XL. S'il vous plaît laissez-nous savoir si vous le faites !
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 est formé pour générer des GIF aux côtés de SDXL. Si vous souhaitez générer simplement une image, vous pouvez simplement définir video_length=1
dans votre appel d'inférence et les couches temporelles Hotshot-XL seront ignorées, comme vous vous en doutez.
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.jpg" --video_length=1
Hotshot-XL a été formé aux formats d'image suivants : pour générer de manière fiable des GIF en dehors de la plage de ces formats d'image, vous souhaiterez affiner Hotshot-XL avec des vidéos à la résolution du format d'image souhaité.
Rapport hauteur/largeur | Taille |
---|---|
0,42 | 320 x 768 |
0,57 | 384 x 672 |
0,68 | 416 x 608 |
1h00 | 512 x 512 |
1,46 | 608 x 416 |
1,75 | 672 x 384 |
2h40 | 768 x 320 |
La section suivante concerne le réglage fin du modèle temporel Hotshot-XL avec des paires texte/vidéo supplémentaires. Si vous essayez de générer des GIF de concepts/sujets personnalisés, nous vous recommandons de ne pas affiner Hotshot-XL, mais plutôt de former vos propres LORA basées sur SDXL et de simplement les charger.
Le script fine_tune.py
s'attend à ce que vos échantillons soient structurés comme ceci :
fine_tune_dataset ├── sample_001 │ ├── 0.jpg │ ├── 1.jpg │ ├── 2.jpg ... ... │ ├── n.jpg │ └── prompt.txt
Chaque exemple de répertoire doit contenir vos n images clés et un fichier prompt.txt
qui contient l'invite. Le point de contrôle final sera enregistré dans output_dir
. Nous avons trouvé utile d'envoyer de temps en temps des GIF de validation à Weights & Biases. Si vous choisissez d'utiliser la validation avec Weights & Biases, vous pouvez définir la fréquence d'exécution avec le paramètre validate_every_steps
.
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"
Nous sommes enthousiastes à l’idée d’améliorer Hotshot-XL de nombreuses manières. Par exemple:
Ajustement précis de Hotshot-XL à des fréquences d'images plus élevées pour créer des GIF à fréquence d'images plus longues/plus élevées
Ajustement précis de Hotshot-XL à des résolutions plus grandes pour créer des GIF de plus haute résolution
Formation de couches temporelles pour un upscaler latent afin de produire des GIF de plus haute résolution
Entraînement d'un modèle de « prédiction de trame » conditionné par l'image pour des GIF plus cohérents et plus longs
Formation de couches temporelles pour un VAE afin d'atténuer le scintillement/le tramage dans les sorties
Prise en charge de Multi-ControlNet pour un meilleur contrôle sur la génération GIF
Formation et intégration de différents modèles ControlNet pour un contrôle plus approfondi de la génération GIF (un contrôle plus fin des expressions faciales serait très cool)
Déplacement de Hotshot-XL dans AITemplate pour des temps d'inférence plus rapides
Nous ? contributions de la communauté open source ! Veuillez nous faire savoir dans les numéros ou les PR si vous souhaitez travailler sur ces améliorations ou autre chose !
@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} }
Les modèles Text-to-Video s'améliorent rapidement et le développement de Hotshot-XL a été grandement inspiré par les travaux et équipes incroyables suivants :
SDXL
Alignez vos latents
Créer une vidéo
AnimerDiff
Image vidéo
Nous espérons que la publication de ce modèle/base de code aidera la communauté à continuer à faire avancer ces outils créatifs de manière ouverte et responsable.