StreamingSVD es una técnica autorregresiva avanzada para la generación de texto a video e imagen a video, que genera videos largos de alta calidad con rica dinámica de movimiento, lo que convierte a SVD en un generador de videos largos. Nuestro método garantiza la coherencia temporal en todo el vídeo, se alinea estrechamente con el texto/imagen de entrada y mantiene una alta calidad de imagen a nivel de fotograma. Nuestras demostraciones incluyen ejemplos exitosos de videos de hasta 200 fotogramas, que abarcan 8 segundos, y pueden extenderse por duraciones aún más largas.
La efectividad del enfoque autorregresivo subyacente no se limita al modelo base específico utilizado, lo que indica que las mejoras en los modelos base pueden generar videos de calidad aún mayor. StreamingSVD es parte de la familia StreamingT2V. Otra implementación exitosa es StreamingModelscope, que está convirtiendo Modelscope en un generador de videos de larga duración. Este enfoque permite generar videos de hasta 2 minutos de duración, con una gran cantidad de movimiento y sin estancamiento.
Los resultados detallados se pueden encontrar en la página del Proyecto.
Nuestro código necesita 60 GB de VRAM en la configuración predeterminada (al generar 200 fotogramas). Intente reducir la cantidad de fotogramas o active la combinación aleatoria para reducir la huella de memoria. Nuestro código fue probado en Linux, usando Python 3.9 y 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 ejecutar todo el proceso que consiste en imagen a video, mejora de video (incluida nuestra combinación aleatoria) e interpolación de fotogramas de video, haga lo siguiente desde la carpeta StreamingT2V
:
cd code
python inference_i2v.py --input $INPUT --output $OUTPUT
$INPUT
debe ser la ruta a un archivo de imagen o una carpeta que contenga imágenes. Se espera que cada imagen tenga una relación de aspecto de 16:9.
$OUTPUT
debe ser la ruta a una carpeta donde se almacenarán los resultados.
Agregue --num_frames $FRAMES
a la llamada para definir la cantidad de cuadros que se generarán. Valor predeterminado: $FRAMES=200
Agregue --use_randomized_blending $RB
a la llamada para definir si se utiliza la combinación aleatoria. Valor predeterminado: $RB=False
. Cuando se utiliza una combinación aleatoria, los valores recomendados para los parámetros chunk_size
y overlap_size
son --chunk_size 38
y --overlap_size 12
, respectivamente. Tenga en cuenta que la combinación aleatoria ralentizará el proceso de generación, así que trate de evitarla si tiene suficiente memoria GPU.
Agregue --out_fps $FPS
a la llamada para definir los FPS del video de salida. Valor predeterminado: $FPS=24
Nuestro error de deformación sensible al movimiento propuesto (consulte nuestro artículo) se proporciona aquí.
El código para el modelo StreamingT2V basado en Modelscope, como se describe en nuestro artículo, ahora se puede encontrar aquí.
Nuestro código y modelo está publicado bajo la licencia MIT.
Incluimos códigos y pesos de modelos de SVD, EMA-VFI e I2VGen-XL. Consulte sus licencias originales con respecto a sus códigos y pesos. Debido a estas dependencias, StreamingSVD sólo se puede utilizar con fines de investigación no comerciales.
Si utiliza nuestro trabajo en su investigación, cite nuestra publicación:
@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}
}