StreamingSVD est une technique autorégressive avancée pour la génération de texte en vidéo et d'image en vidéo, générant de longues vidéos de haute qualité avec une dynamique de mouvement riche, transformant SVD en un générateur de vidéos longues. Notre méthode garantit la cohérence temporelle tout au long de la vidéo, s'aligne étroitement sur le texte/l'image d'entrée et maintient une qualité d'image élevée au niveau de l'image. Nos démonstrations incluent des exemples réussis de vidéos allant jusqu'à 200 images, s'étalant sur 8 secondes, et peuvent être prolongées sur des durées encore plus longues.
L'efficacité de l'approche autorégressive sous-jacente ne se limite pas au modèle de base spécifique utilisé, ce qui indique que les améliorations apportées aux modèles de base peuvent produire des vidéos de qualité encore supérieure. StreamingSVD fait partie de la famille StreamingT2V. Une autre implémentation réussie est StreamingModelscope, qui transforme Modelscope en un générateur de vidéos longues. Cette approche permet de générer des vidéos d'une durée maximale de 2 minutes, présentant une quantité de mouvement élevée et aucune stagnation.
Les résultats détaillés peuvent être trouvés sur la page Projet.
Notre code a besoin de 60 Go de VRAM dans le paramètre par défaut (lors de la génération de 200 images). Essayez de réduire le nombre d'images ou d'activer le mélange aléatoire pour réduire l'empreinte mémoire. Notre code a été testé sous Linux, en utilisant Python 3.9 et 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
Pour exécuter l'intégralité du pipeline comprenant l'image vers la vidéo, l'amélioration vidéo (y compris notre mélange aléatoire) et l'interpolation d'images vidéo, effectuez à partir du dossier StreamingT2V
:
cd code
python inference_i2v.py --input $INPUT --output $OUTPUT
$INPUT
doit être le chemin d'accès à un fichier image ou à un dossier contenant des images. Chaque image doit avoir un rapport hauteur/largeur de 16:9.
$OUTPUT
doit être le chemin d'accès à un dossier dans lequel les résultats seront stockés.
Ajoutez --num_frames $FRAMES
à l'appel pour définir le nombre de frames à générer. Valeur par défaut : $FRAMES=200
Ajoutez --use_randomized_blending $RB
à l'appel pour définir s'il faut utiliser le mélange aléatoire. Valeur par défaut : $RB=False
. Lors de l'utilisation du mélange aléatoire, les valeurs recommandées pour les paramètres chunk_size
et overlap_size
sont respectivement --chunk_size 38
et --overlap_size 12
. Veuillez noter que le mélange aléatoire ralentira le processus de génération, alors essayez de l'éviter si vous disposez de suffisamment de mémoire GPU.
Ajoutez --out_fps $FPS
à l'appel pour définir le FPS de la vidéo de sortie. Valeur par défaut : $FPS=24
Notre proposition d'erreur de déformation sensible au mouvement (voir notre article) est fournie ici.
Le code du modèle StreamingT2V basé sur Modelscope, tel que décrit dans notre article, peut maintenant être trouvé ici.
Notre code et notre modèle sont publiés sous la licence MIT.
Nous incluons les codes et les poids des modèles SVD, EMA-VFI et I2VGen-XL. Veuillez vous référer à leurs licences originales concernant leurs codes et poids. En raison de ces dépendances, StreamingSVD ne peut être utilisé qu’à des fins de recherche non commerciales.
Si vous utilisez nos travaux dans vos recherches, veuillez citer notre publication :
@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}
}