Este repositorio contiene la implementación oficial de PyTorch de generación de audio a video diversa y alineada mediante la adaptación del modelo de texto a video.
Nos planteamos la tarea de generar vídeos diversos y realistas guiados por muestras de audio naturales de una amplia variedad de clases semánticas. Para esta tarea, se requiere que los videos estén alineados tanto global como temporalmente con el audio de entrada: globalmente, el audio de entrada está asociado semánticamente con todo el video de salida, y temporalmente, cada segmento del audio de entrada está asociado con un segmento correspondiente de ese vídeo. Utilizamos un modelo de generación de video condicionado por texto existente y un modelo de codificador de audio previamente entrenado. El método propuesto se basa en una red de adaptadores liviana, que aprende a asignar la representación basada en audio a la representación de entrada esperada por el modelo de generación de texto a video. Como tal, también permite la generación de vídeo condicionada a texto, audio y, por primera vez hasta donde sabemos, tanto a texto como a audio. Validamos nuestro método ampliamente en tres conjuntos de datos que demuestran una diversidad semántica significativa de muestras de audio y video y además proponemos una métrica de evaluación novedosa (AV-Align) para evaluar la alineación de los videos generados con las muestras de audio de entrada. AV-Align se basa en la detección y comparación de picos de energía en ambas modalidades. En comparación con los enfoques más recientes, nuestro método genera videos que están mejor alineados con el sonido de entrada, tanto con respecto al contenido como al eje temporal. También mostramos que los videos producidos por nuestro método presentan mayor calidad visual y son más diversos.
git clone [email protected]:guyyariv/TempoTokens.git cd TempoTokens pip install -r requirements.txt
E inicialice un entorno Accelerate con:
accelerate config
Descargar el modelo previamente entrenado de BEAT
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"
Ejecute el comando relevante para cada conjunto de datos en el que hemos entrenado, incluidos VGGSound, Landscape y 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
Recomendamos encarecidamente revisar los archivos de configuración y personalizar los parámetros según sus preferencias.
Obtenga los pesos previamente entrenados para los tres conjuntos de datos en los que realizamos la capacitación visitando el siguiente enlace: https://drive.google.com/drive/folders/10pRWoq0m5torvMXILmIQd7j9fLPEeHtS Le recomendamos guardar las carpetas en el directorio denominado "models/. "
El script inference.py
sirve para generar videos utilizando puntos de control entrenados. Una vez que haya completado el entrenamiento del modelo utilizando el comando proporcionado (u haya optado por nuestros modelos previamente entrenados), podrá crear videos sin esfuerzo a partir de los conjuntos de datos que hemos utilizado para el entrenamiento, como VGGSound, Landscape y 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
Además, tienes la capacidad de generar un vídeo a partir de tu propio audio, como se demuestra a continuación:
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.
Nuestro código se basa parcialmente en el ajuste de texto a vídeo.
Si utiliza nuestro trabajo en su investigación, cite el siguiente artículo:
@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} }
Este repositorio se publica bajo la licencia MIT que se encuentra en el archivo LICENCIA.