Este repositório contém a implementação oficial do PyTorch de geração diversificada e alinhada de áudio para vídeo por meio de adaptação de modelo de texto para vídeo
Consideramos a tarefa de gerar vídeos diversos e realistas guiados por amostras naturais de áudio de uma ampla variedade de classes semânticas. Para esta tarefa, os vídeos devem estar alinhados global e temporalmente com o áudio de entrada: globalmente, o áudio de entrada é semanticamente associado a todo o vídeo de saída e, temporalmente, cada segmento do áudio de entrada está associado a um segmento correspondente de aquele vídeo. Utilizamos um modelo existente de geração de vídeo condicionado por texto e um modelo de codificador de áudio pré-treinado. O método proposto é baseado em uma rede adaptadora leve, que aprende a mapear a representação baseada em áudio para a representação de entrada esperada pelo modelo de geração de texto para vídeo. Como tal, também permite a geração de vídeo condicionado a texto, áudio e, pela primeira vez, tanto quanto podemos apurar, tanto em texto como em áudio. Validamos nosso método extensivamente em três conjuntos de dados que demonstram diversidade semântica significativa de amostras de áudio e vídeo e propomos ainda uma nova métrica de avaliação (AV-Align) para avaliar o alinhamento de vídeos gerados com amostras de áudio de entrada. AV-Align baseia-se na detecção e comparação de picos de energia em ambas as modalidades. Em comparação com abordagens recentes do estado da arte, nosso método gera vídeos que estão melhor alinhados com o som de entrada, tanto no que diz respeito ao conteúdo quanto ao eixo temporal. Mostramos também que os vídeos produzidos pelo nosso método apresentam maior qualidade visual e são mais diversificados.
git clone [email protected]:guyyariv/TempoTokens.git cd TempoTokens pip install -r requirements.txt
E inicialize um ambiente Accelerate com:
accelerate config
Baixe o modelo pré-treinado do 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"
Execute o comando relevante para cada conjunto de dados em que treinamos, incluindo VGGSound, Landscape e 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 fortemente revisar os arquivos de configuração e personalizar os parâmetros de acordo com suas preferências.
Obtenha os pesos pré-treinados para os três conjuntos de dados nos quais realizamos o treinamento visitando o seguinte link: https://drive.google.com/drive/folders/10pRWoq0m5torvMXILmIQd7j9fLPEeHtS Aconselhamos salvar as pastas no diretório chamado "models/. "
O script inference.py
serve para gerar vídeos usando pontos de verificação treinados. Depois de concluir o treinamento do modelo usando o comando fornecido (ou optar por nossos modelos pré-treinados), você poderá criar vídeos sem esforço a partir dos conjuntos de dados que utilizamos para treinamento, como VGGSound, Landscape e 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
Além disso, você tem a capacidade de gerar um vídeo a partir do seu próprio áudio, conforme demonstrado abaixo:
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.
Nosso código é parcialmente construído com base no ajuste fino de texto para vídeo
Se você usar nosso trabalho em sua pesquisa, cite o seguinte artigo:
@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 repositório é lançado sob a licença MIT conforme encontrado no arquivo LICENSE.