StreamingSVD é uma técnica autoregressiva avançada para geração de texto para vídeo e imagem para vídeo, gerando vídeos longos de alta qualidade com dinâmica de movimento rica, transformando SVD em um gerador de vídeo longo. Nosso método garante consistência temporal em todo o vídeo, alinha-se perfeitamente ao texto/imagem de entrada e mantém alta qualidade de imagem em nível de quadro. Nossas demonstrações incluem exemplos bem-sucedidos de vídeos de até 200 quadros, com duração de 8 segundos, e podem ser estendidos por durações ainda mais longas.
A eficácia da abordagem autorregressiva subjacente não se limita ao modelo base específico utilizado, indicando que melhorias nos modelos base podem produzir vídeos de qualidade ainda mais elevada. StreamingSVD faz parte da família StreamingT2V. Outra implementação bem-sucedida é o StreamingModelscope, que está transformando o Modelscope em um gerador de vídeos longos. Essa abordagem permite gerar vídeos de até 2 minutos de duração, com grande quantidade de movimento e sem estagnação.
Os resultados detalhados podem ser encontrados na página do Projeto.
Nosso código precisa de 60 GB de VRAM na configuração padrão (ao gerar 200 frames). Tente reduzir o número de quadros ou ative a combinação aleatória para reduzir o consumo de memória. Nosso código foi testado em Linux, utilizando Python 3.9 e CUDA 11.7.
git clone https://github.com/Picsart-AI-Research/StreamingT2V.git
cd StreamingT2V/
virtualenv -p python3.9 venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Para executar todo o pipeline que consiste em imagem para vídeo, aprimoramento de vídeo (incluindo nossa combinação aleatória) e interpolação de quadro de vídeo, faça na pasta StreamingT2V
:
cd code
python inference_i2v.py --input $INPUT --output $OUTPUT
$INPUT
deve ser o caminho para um arquivo de imagem ou uma pasta contendo imagens. Espera-se que cada imagem tenha a proporção de 16:9.
$OUTPUT
deve ser o caminho para uma pasta onde os resultados serão armazenados.
Adicione --num_frames $FRAMES
à chamada para definir o número de frames a serem gerados. Valor padrão: $FRAMES=200
Adicione --use_randomized_blending $RB
à chamada para definir se deve usar a combinação aleatória. Valor padrão: $RB=False
. Ao usar a combinação aleatória, os valores recomendados para os parâmetros chunk_size
overlap_size
são --chunk_size 38
e --overlap_size 12
, respectivamente. Esteja ciente de que a combinação aleatória retardará o processo de geração, então tente evitá-la se você tiver memória GPU suficiente.
Adicione --out_fps $FPS
à chamada para definir o FPS do vídeo de saída. Valor padrão: $FPS=24
Nossa proposta de Motion Aware Warp Error (veja nosso artigo) é fornecida aqui.
O código para o modelo StreamingT2V baseado em Modelscope, conforme descrito em nosso artigo, agora pode ser encontrado aqui.
Nosso código e modelo são publicados sob a licença do MIT.
Incluímos códigos e pesos de modelo de SVD, EMA-VFI e I2VGen-XL. Consulte as licenças originais em relação aos códigos e pesos. Devido a essas dependências, o StreamingSVD pode ser usado apenas para fins de pesquisa não comerciais.
Se você usar nosso trabalho em sua pesquisa, cite nossa publicação:
@article{henschel2024streamingt2v,
title={StreamingT2V: Consistent, Dynamic, and Extendable Long Video Generation from Text},
author={Henschel, Roberto and Khachatryan, Levon and Hayrapetyan, Daniil and Poghosyan, Hayk and Tadevosyan, Vahram and Wang, Zhangyang and Navasardyan, Shant and Shi, Humphrey},
journal={arXiv preprint arXiv:2403.14773},
year={2024}
}