Esta é uma implementação de código para o projeto de último ano do Wish Suharitdamrong, ano 3, bacharelado em ciência da computação na Universidade de Surrey, sobre o tópico Síntese labial audiovisual por meio de representação de marco intermediário.
A demonstração online está disponível em? Abraçando o rosto
Existem duas maneiras de instalar pacotes usando conda ou pip
1.Crie um ambiente conda virtual a partir de environment.yml
2.Use pip para instalar pacotes (certifique-se de usar python 3.7
ou superior, pois a versão mais antiga pode não suportar algumas bibliotecas)
# Crie um ambiente virtual a partir de .yml fileconda env create -f Environment.yml# activate virtual Environmentconda activate fyp
# Use pip para instalar requer pacotespip install -r require.txt
Os conjuntos de dados audiovisuais utilizados neste projeto são LRS2 e LRS3. Os dados LRS2 foram usados para treinamento e avaliação do modelo. Os dados do LRS3 foram utilizados apenas para avaliação do modelo.
Conjunto de dados | Página |
---|---|
LRS2 | Link |
LRS3 | Link |
Baixe o modelo do gerador de pesos
Modelo | Baixar link |
---|---|
Gerador | Link |
Gerador + SyncLoss | Link |
Gerador de atenção + SyncLoss | Link |
Baixe pesos para modelo SyncNet baseado em Landmark Download Link
O peso pré-treinado para o modelo Image2Image Translation pode ser baixado do repositório MakeItTalk na seção de modelos pré-treinados Repo Link.
├── ponto de verificação # Diretório para o ponto de verificação do modelo│ └── gerador # coloque os pesos do modelo do gerador aqui│ └── syncnet # coloque os pesos do modelo Landmark SyncNet aqui│ └── image2image # coloque os pesos do modelo de tradução Image2Image aqui
python run_inference.py --generator_checkpoint <checkpoint_path> --image2image_checkpoint <checkpoint_path> --input_face <image/video_path> --input_audio <audio_source_path>
Usei as mesmas formas de pré-processamento de dados do Wav2Lip para mais detalhes da estrutura de pastas que podem ser encontradas em seu repositório aqui.
python preprocess_data.py --data_root data_root/main --preprocessed_root preprocessed_lrs2_landmark/
# CLI for traning attention generator with pretrain landmark SyncNet discriminator python run_train_generator.py --model_type attnlstm --train_type pretrain --data_root preprocessed_lrs2_landmark/ --checkpoint_dir <folder_to_save_checkpoints>
# CLI for training pretrain landmark SyncNet discriminator python run_train_syncnet.py --data_root preprocessed_lrs2_landmark/ --checkpoint_dir <folder_to_save_checkpoints>
Este projeto utilizou dados do conjunto de dados LRS2 e LRS3 para avaliação quantitativa, a lista de dados de avaliação é fornecida pelo Wav2Lip. A lista de arquivos (dados de vídeo e áudio usados para avaliação) e detalhes sobre o benchmark Lip Sync estão disponíveis em seu repositório aqui.
cd evaluation # generate evaluation videos python gen_eval_vdo.py --filelist <path> --data_root <path> --model_type <type_of_model> --result_dir <save_path> --generator_checkpoint <gen_ckpt> --image2image_checkpoint <image2image_checkpoint>
A base de código deste projeto foi inspirada em Wav2Lip e MakeItTalk. Gostaria de agradecer ao autor de ambos os projetos por disponibilizar on-line a implementação do código de seu incrível trabalho.