Dieses Repo enthält die offizielle PyTorch-Implementierung der vielfältigen und ausgerichteten Audio-zu-Video-Generierung über Text-zu-Video-Modellanpassung
Wir betrachten die Aufgabe, vielfältige und realistische Videos zu generieren, die sich an natürlichen Audiobeispielen aus den unterschiedlichsten semantischen Klassen orientieren. Für diese Aufgabe müssen die Videos sowohl global als auch zeitlich mit dem Eingabeaudio abgeglichen werden: Global ist das Eingabeaudio semantisch mit dem gesamten Ausgabevideo verknüpft, und zeitlich ist jedes Segment des Eingabeaudios einem entsprechenden Segment von zugeordnet dieses Video. Wir verwenden ein vorhandenes textkonditioniertes Videogenerierungsmodell und ein vorab trainiertes Audio-Encoder-Modell. Die vorgeschlagene Methode basiert auf einem leichtgewichtigen Adapternetzwerk, das lernt, die audiobasierte Darstellung der Eingabedarstellung zuzuordnen, die vom Text-zu-Video-Generierungsmodell erwartet wird. Als solches ermöglicht es auch die Videogenerierung, die auf Text, Audio und, soweit wir wissen, zum ersten Mal sowohl auf Text als auch auf Audio basiert. Wir validieren unsere Methode umfassend anhand von drei Datensätzen, die eine signifikante semantische Vielfalt von Audio-Video-Samples zeigen, und schlagen außerdem eine neuartige Bewertungsmetrik (AV-Align) vor, um die Ausrichtung generierter Videos mit eingegebenen Audio-Samples zu bewerten. AV-Align basiert auf der Erkennung und dem Vergleich von Energiespitzen in beiden Modalitäten. Im Vergleich zu aktuellen State-of-the-Art-Ansätzen generiert unsere Methode Videos, die sowohl inhaltlich als auch zeitlich besser auf den Eingangston abgestimmt sind. Wir zeigen auch, dass mit unserer Methode produzierte Videos eine höhere visuelle Qualität aufweisen und vielfältiger sind.
git clone [email protected]:guyyariv/TempoTokens.git cd TempoTokens pip install -r requirements.txt
Und initialisieren Sie eine Accelerate-Umgebung mit:
accelerate config
Laden Sie das vorab trainierte Modell von BEAT herunter
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"
Führen Sie den entsprechenden Befehl für jeden Datensatz aus, den wir trainiert haben, einschließlich VGGSound, Landscape und 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
Wir empfehlen dringend, die Konfigurationsdateien zu überprüfen und die Parameter entsprechend Ihren Wünschen anzupassen.
Erhalten Sie die vorab trainierten Gewichte für die drei Datensätze, an denen wir trainiert haben, indem Sie den folgenden Link besuchen: https://drive.google.com/drive/folders/10pRWoq0m5torvMXILmIQd7j9fLPEeHtS Wir empfehlen Ihnen, die Ordner im Verzeichnis mit dem Namen „models/“ zu speichern. "
Das Skript inference.py
dient der Generierung von Videos mithilfe trainierter Checkpoints. Sobald Sie das Modelltraining mit dem bereitgestellten Befehl abgeschlossen haben (oder sich für unsere vorab trainierten Modelle entschieden haben), können Sie mühelos Videos aus den Datensätzen erstellen, die wir für das Training verwendet haben, wie z. B. VGGSound, Landscape und 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
Darüber hinaus haben Sie die Möglichkeit, aus Ihrem eigenen Audio ein Video zu erstellen, wie unten gezeigt:
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.
Unser Code basiert teilweise auf Text-To-Video-Finetuning
Wenn Sie unsere Arbeit in Ihrer Forschung nutzen, zitieren Sie bitte den folgenden Artikel:
@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} }
Dieses Repository wird unter der MIT-Lizenz veröffentlicht, wie in der LICENSE-Datei zu finden.