Hotshot-XL é um modelo de IA de texto para GIF treinado para funcionar junto com Stable Diffusion XL.
Hotshot-XL pode gerar GIFs com qualquer modelo SDXL ajustado. Isso significa duas coisas:
Você poderá criar GIFs com qualquer modelo SDXL existente ou recém-ajustado que queira usar.
Se quiser fazer GIFs de assuntos personalizados, você pode carregar seus próprios LORAs baseados em SDXL e não precisa se preocupar com o ajuste fino do Hotshot-XL. Isso é incrível porque geralmente é muito mais fácil encontrar imagens adequadas para dados de treinamento do que encontrar vídeos. Esperamos que também se encaixe no uso/fluxos de trabalho existentes do LORA :) Veja mais aqui.
Hotshot-XL é compatível com SDXL ControlNet para criar GIFs na composição/layout que você desejar. Consulte a seção ControlNet abaixo.
Hotshot-XL foi treinado para gerar GIFs de 1 segundo a 8 FPS.
Hotshot-XL foi treinado em várias proporções. Para obter melhores resultados com o modelo Hotshot-XL básico, recomendamos usá-lo com um modelo SDXL que foi ajustado com imagens de 512x512. Você pode encontrar um modelo SDXL que ajustamos para resoluções de 512x512 aqui.
Experimente o Hotshot-XL aqui: https://www.hotshot.co
Ou, se você quiser executar o Hotshot-XL localmente, continue nas seções abaixo.
Se você estiver executando o Hotshot-XL, poderá ter muito mais flexibilidade/controle com o modelo. Como um exemplo muito simples, você poderá alterar o amostrador. Vimos melhores resultados com Euler-A até agora, mas você pode encontrar resultados interessantes com alguns outros.
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 visite https://huggingface.co/hotshotco/Hotshot-XL
Nota : Para maximizar a eficiência dos dados e do treinamento, o Hotshot-XL foi treinado em várias proporções em torno da resolução de 512x512. Para obter melhores resultados com o modelo Hotshot-XL básico, recomendamos usá-lo com um modelo SDXL que foi ajustado com imagens em torno da resolução de 512x512. Você pode baixar um modelo SDXL que treinamos com imagens em resolução 512x512 abaixo ou trazer seu próprio modelo básico SDXL.
# Make sure you have git-lfs installed (https://git-lfs.com) git lfs install git clone https://huggingface.co/hotshotco/SDXL-512
ou visite 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"
O que esperar:
Incitar | Mergulho Sasquatch | um camelo fumando um cigarro | Ronald McDonald sentado diante de um espelho de maquilhagem e passando batom | Drake lambendo os lábios e olhando pela janela para um cupcake |
---|---|---|---|---|
Saída |
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"
O que esperar:
Nota : As saídas abaixo usam o DDIMScheduler.
Incitar | pessoa sks gritando com um sol capri | pessoa sks beijando Kermit, o sapo | pessoa sks vestindo um smoking segurando uma taça de champanhe, fogos de artifício no fundo, hd, alta qualidade, 4K |
---|---|---|---|
Saída |
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"
Por padrão, o Hotshot-XL criará quadros-chave a partir do seu gif de origem usando 8 quadros igualmente espaçados e cortará os quadros-chave na proporção padrão. Para um controle mais refinado, aprenda como variar as proporções e as taxas/durações de quadros.
Atualmente, o Hotshot-XL suporta o uso de um modelo ControlNet por vez; apoiar Multi-ControlNet seria emocionante.
O que esperar:
Incitar | garota estilo pixar colocando dois polegares para cima, feliz, alta qualidade, 8k, 3d, renderização animada da Disney | keanu reaves segurando uma placa que diz "AJUDA", hd, alta qualidade | uma mulher rindo, hd, alta qualidade | Barack Obama fazendo um arco-íris com as mãos, a palavra "MAGIC" na frente deles, vestindo um moletom listrado azul e branco, hd, alta qualidade |
---|---|---|---|---|
Saída | ||||
Controlar |
Nota : O modelo SDXL básico é treinado para criar melhor imagens com resolução em torno de 1024x1024. Para maximizar a eficiência dos dados e do treinamento, o Hotshot-XL foi treinado em proporções em torno de resolução de 512x512. Consulte as Notas Adicionais para obter uma lista de proporções com as quais o modelo base do Hotshot-XL foi treinado.
Assim como o SDXL, o Hotshot-XL foi treinado em várias proporções com intervalo de proporção e inclui suporte para parâmetros SDXL como tamanho do alvo e tamanho original. Isso significa que você pode criar GIFs em diversas proporções e resoluções diferentes, apenas com o modelo Hotshot-XL básico.
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.gif" --width=<WIDTH> --height=<HEIGHT>
O que esperar:
512x512 | 672x384 | 384x672 | |
---|---|---|---|
um macaco tocando violão, imagens da natureza, hd, alta qualidade |
Por padrão, o Hotshot-XL é treinado para gerar GIFs com 1 segundo de duração e 8FPS. Se quiser brincar com a geração de GIFs com taxas de quadros e durações de tempo variadas, você pode experimentar os parâmetros video_length
e video_duration
.
video_length
define o número de quadros. O valor padrão é 8.
video_duration
define o tempo de execução do gif de saída em milissegundos. O valor padrão é 1000.
Observe que você deve esperar resultados instáveis/"nervosos" ao modificar esses parâmetros, pois o modelo só foi treinado com vídeos de 1s a 8fps. Você poderá melhorar a estabilidade dos resultados para diferentes durações de tempo e taxas de quadros ajustando o Hotshot-XL. Por favor, deixe-nos saber se você fizer isso!
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 é treinado para gerar GIFs junto com SDXL. Se desejar gerar apenas uma imagem, você pode simplesmente definir video_length=1
em sua chamada de inferência e as camadas temporais do Hotshot-XL serão ignoradas, como seria de esperar.
python inference.py --prompt="a bulldog in the captains chair of a spaceship, hd, high quality" --output="output.jpg" --video_length=1
Hotshot-XL foi treinado nas seguintes proporções; para gerar GIFs de maneira confiável fora da faixa dessas proporções, você desejará ajustar o Hotshot-XL com vídeos na resolução da proporção desejada.
Proporção | Tamanho |
---|---|
0,42 | 320x768 |
0,57 | 384x672 |
0,68 | 416x608 |
1,00 | 512x512 |
1,46 | 608x416 |
1,75 | 672x384 |
2h40 | 768x320 |
A seção a seguir refere-se ao ajuste fino do modelo temporal Hotshot-XL com pares adicionais de texto/vídeo. Se você estiver tentando gerar GIFs de conceitos/assuntos personalizados, recomendamos não fazer o ajuste fino do Hotshot-XL, mas sim treinar seus próprios LORAs baseados em SDXL e apenas carregá-los.
O script fine_tune.py
espera que suas amostras sejam estruturadas assim:
fine_tune_dataset ├── sample_001 │ ├── 0.jpg │ ├── 1.jpg │ ├── 2.jpg ... ... │ ├── n.jpg │ └── prompt.txt
Cada diretório de amostra deve conter seus n quadros-chave e um arquivo prompt.txt
que contém o prompt. O ponto de verificação final será salvo em output_dir
. Achamos útil enviar GIFs de validação para Weights & Biases de vez em quando. Se você optar por usar a validação com Pesos e Vieses, poderá definir a frequência com que isso será executado com o parâmetro 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"
Estamos entusiasmados em melhorar o Hotshot-XL de muitas maneiras. Por exemplo:
Ajuste fino do Hotshot-XL em taxas de quadros maiores para criar GIFs com taxas de quadros mais longas/mais altas
Ajuste fino do Hotshot-XL em resoluções maiores para criar GIFs de resolução mais alta
Treinando camadas temporais para um upscaler latente para produzir GIFs de resolução mais alta
Treinar um modelo de "previsão de quadro" condicionado por imagem para GIFs mais coerentes e mais longos
Treinamento de camadas temporais para um VAE para mitigar oscilações/tremilhamentos nas saídas
Suporta Multi-ControlNet para maior controle sobre a geração de GIF
Treinar e integrar diferentes modelos ControlNet para maior controle sobre a geração de GIF (um controle mais preciso da expressão facial seria muito legal)
Movendo o Hotshot-XL para AITemplate para tempos de inferência mais rápidos
Nós ? contribuições da comunidade de código aberto! Informe-nos nas edições ou PRs se estiver interessado em trabalhar nessas melhorias ou em qualquer outra coisa!
@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} }
Os modelos de texto para vídeo estão melhorando rapidamente e o desenvolvimento do Hotshot-XL foi muito inspirado nos seguintes trabalhos e equipes incríveis:
SDXL
Alinhe seus latentes
Faça um vídeo
AnimarDiff
Vídeo de imagem
Esperamos que o lançamento deste modelo/base de código ajude a comunidade a continuar impulsionando essas ferramentas criativas de maneira aberta e responsável.