Ce dépôt contient l'implémentation officielle de PyTorch de la génération audio-vidéo diversifiée et alignée via l'adaptation du modèle texte-vidéo.
Nous considérons la tâche de générer des vidéos diverses et réalistes guidées par des échantillons audio naturels provenant d'une grande variété de classes sémantiques. Pour cette tâche, les vidéos doivent être alignées à la fois globalement et temporellement avec l'audio d'entrée : globalement, l'audio d'entrée est sémantiquement associé à l'intégralité de la vidéo de sortie, et temporellement, chaque segment de l'audio d'entrée est associé à un segment correspondant de cette vidéo. Nous utilisons un modèle de génération vidéo conditionné par du texte existant et un modèle d'encodeur audio pré-entraîné. La méthode proposée est basée sur un réseau d'adaptateurs léger, qui apprend à mapper la représentation basée sur l'audio à la représentation d'entrée attendue par le modèle de génération texte-vidéo. En tant que tel, il permet également la génération vidéo conditionnée au texte, à l'audio et, pour la première fois à notre connaissance, à la fois au texte et à l'audio. Nous validons notre méthode de manière approfondie sur trois ensembles de données démontrant une diversité sémantique significative des échantillons audio-vidéo et proposons en outre une nouvelle métrique d'évaluation (AV-Align) pour évaluer l'alignement des vidéos générées avec les échantillons audio d'entrée. AV-Align est basé sur la détection et la comparaison des pics d'énergie dans les deux modalités. Par rapport aux approches récentes de pointe, notre méthode génère des vidéos mieux alignées avec le son d'entrée, à la fois en ce qui concerne le contenu et l'axe temporel. Nous montrons également que les vidéos produites par notre méthode présentent une qualité visuelle supérieure et sont plus diversifiées.
git clone [email protected]:guyyariv/TempoTokens.git cd TempoTokens pip install -r requirements.txt
Et initialisez un environnement Accelerate avec :
accelerate config
Téléchargez le modèle pré-entraîné BEATs
mkdir -p models/BEATs/ && wget -P models/BEATs/ -O "models/BEATs/BEATs_iter3_plus_AS2M_finetuned_on_AS2M_cpt2.pt" "https://valle.blob.core.windows.net/share/BEATs/BEATs_iter3_plus_AS2M_finetuned_on_AS2M_cpt2.pt?sv=2020-08-04&st=2023-03-01T07%3A51%3A05Z&se=2033-03-02T07%3A51%3A00Z&sr=c&sp=rl&sig=QJXmSJG9DbMKf48UDIU1MfzIro8HQOf3sqlNXiflY1I%3D"
Exécutez la commande appropriée pour chaque ensemble de données sur lequel nous nous sommes entraînés, notamment VGGSound, Landscape et AudioSet-Drum.
accelerate launch train.py --config configs/v2/vggsound.yaml
accelerate launch train.py --config configs/v2/landscape.yaml
accelerate launch train.py --config configs/v2/audioset_drum.yaml
Nous vous recommandons fortement de revoir les fichiers de configuration et de personnaliser les paramètres selon vos préférences.
Obtenez les poids pré-entraînés pour les trois ensembles de données sur lesquels nous avons effectué une formation en visitant le lien suivant : https://drive.google.com/drive/folders/10pRWoq0m5torvMXILmIQd7j9fLPEeHtS Nous vous conseillons de sauvegarder les dossiers dans le répertoire nommé "models/. "
Le script inference.py
sert à générer des vidéos à l'aide de points de contrôle entraînés. Une fois que vous avez terminé la formation du modèle à l'aide de la commande fournie (ou opté pour nos modèles pré-entraînés), vous pouvez facilement créer des vidéos à partir des ensembles de données que nous avons utilisés pour la formation, tels que VGGSound, Landscape et AudioSet-Drum.
accelerate launch inference.py --mapper_weights models/vggsound/learned_embeds.pth --testset vggsound
accelerate launch inference.py --mapper_weights models/landscape/learned_embeds.pth --testset landscape
accelerate launch inference.py --mapper_weights models/audioset_drum/learned_embeds.pth --testset audioset_drum
De plus, vous avez la possibilité de générer une vidéo à partir de votre propre audio, comme démontré ci-dessous :
accelerate launch inference.py --mapper_weights models/vggsound/learned_embeds.pth --audio_path /audio/path
> python inference.py --help usage: inference.py [-h] -m MODEL -p PROMPT [-n NEGATIVE_PROMPT] [-o OUTPUT_DIR] [-B BATCH_SIZE] [-W WIDTH] [-H HEIGHT] [-T NUM_FRAMES] [-WS WINDOW_SIZE] [-VB VAE_BATCH_SIZE] [-s NUM_STEPS] [-g GUIDANCE_SCALE] [-i INIT_VIDEO] [-iw INIT_WEIGHT] [-f FPS] [-d DEVICE] [-x] [-S] [-lP LORA_PATH] [-lR LORA_RANK] [-rw] options: -h, --help show this help message and exit -m MODEL, --model MODEL HuggingFace repository or path to model checkpoint directory -p PROMPT, --prompt PROMPT Text prompt to condition on -n NEGATIVE_PROMPT, --negative-prompt NEGATIVE_PROMPT Text prompt to condition against -o OUTPUT_DIR, --output-dir OUTPUT_DIR Directory to save output video to -B BATCH_SIZE, --batch-size BATCH_SIZE Batch size for inference -W WIDTH, --width WIDTH Width of output video -H HEIGHT, --height HEIGHT Height of output video -T NUM_FRAMES, --num-frames NUM_FRAMES Total number of frames to generate -WS WINDOW_SIZE, --window-size WINDOW_SIZE Number of frames to process at once (defaults to full sequence). When less than num_frames, a round robin diffusion process is used to denoise the full sequence iteratively one window at a time. Must be divide num_frames exactly! -VB VAE_BATCH_SIZE, --vae-batch-size VAE_BATCH_SIZE Batch size for VAE encoding/decoding to/from latents (higher values = faster inference, but more memory usage). -s NUM_STEPS, --num-steps NUM_STEPS Number of diffusion steps to run per frame. -g GUIDANCE_SCALE, --guidance-scale GUIDANCE_SCALE Scale for guidance loss (higher values = more guidance, but possibly more artifacts). -i INIT_VIDEO, --init-video INIT_VIDEO Path to video to initialize diffusion from (will be resized to the specified num_frames, height, and width). -iw INIT_WEIGHT, --init-weight INIT_WEIGHT Strength of visual effect of init_video on the output (lower values adhere more closely to the text prompt, but have a less recognizable init_video). -f FPS, --fps FPS FPS of output video -d DEVICE, --device DEVICE Device to run inference on (defaults to cuda). -x, --xformers Use XFormers attnetion, a memory-efficient attention implementation (requires `pip install xformers`). -S, --sdp Use SDP attention, PyTorch's built-in memory-efficient attention implementation. -lP LORA_PATH, --lora_path LORA_PATH Path to Low Rank Adaptation checkpoint file (defaults to empty string, which uses no LoRA). -lR LORA_RANK, --lora_rank LORA_RANK Size of the LoRA checkpoint's projection matrix (defaults to 64). -rw, --remove-watermark Post-process the videos with LAMA to inpaint ModelScope's common watermarks.
Notre code est partiellement construit sur Text-To-Video-Finetuning
Si vous utilisez nos travaux dans votre recherche, veuillez citer l’article suivant :
@misc{yariv2023diverse, title={Diverse and Aligned Audio-to-Video Generation via Text-to-Video Model Adaptation}, author={Guy Yariv and Itai Gat and Sagie Benaim and Lior Wolf and Idan Schwartz and Yossi Adi}, year={2023}, eprint={2309.16429}, archivePrefix={arXiv}, primaryClass={cs.LG} }
Ce référentiel est publié sous la licence MIT telle que trouvée dans le fichier LICENSE.