Introdução geral
O AniPortrait é uma estrutura inovadora para a geração de animações de retratos realistas acionadas por áudio. Desenvolvido pela Huawei, Yang Zejun e Wang Zhisheng do Tencent Game Know Yourself Lab, o AniPortrait é capaz de gerar animações de alta qualidade a partir de áudio e imagens de retrato de referência, e até mesmoFornecer vídeo para reencenação facial. Usando técnicas avançadas de representação intermediária em 3D e animação facial em 2D, a estrutura é capaz de gerar efeitos de animação naturais e suaves para diversos cenários de aplicação, como produção de filmes e televisão, âncoras virtuais e pessoas digitais.
Lista de funções
- Animação orientada por áudio: gere a animação de retrato correspondente a partir da entrada de áudio.
- Animação orientada por vídeo: fornece vídeo para reprodução facial, gerando animações faciais realistas.
- Geração de animação de alta qualidade: use representação intermediária em 3D e técnicas de animação facial em 2D para gerar efeitos de animação de alta qualidade.
- Demonstração da interface do usuário na Web: forneça uma demonstração on-line por meio da interface do usuário na Web do Gradio para uma experiência amigável.
- Treinamento e inferência de modelos: suporte ao treinamento e à inferência de modelos, os usuários podem personalizar os dados para treinamento e geração.
Usando a Ajuda
montagem
construção de ambientes
Versão recomendada do Python >= 3.10 e versão do CUDA = 11.7. Siga as etapas abaixo para criar o ambiente:
pip install -r requirements.txt
download de peso
Todos os arquivos de peso devem ser colocados no diretório. /pretrained_weights
diretório. Faça o download manual do arquivo de pesos da seguinte forma:
- Faça o download dos pesos treinados, incluindo as seguintes partes:
denoising_unet.pth
ereference_unet.pth
epose_guider.pth
emotion_module.pth
etc. - Faça o download de pesos pré-treinados para o modelo básico e outros componentes:
- StableDiffusion V1.5
- sd-vae-ft-mse
- codificador_de_imagem
- wav2vec2-base-960h
A estrutura do arquivo de pesos é organizada da seguinte forma:
. /pretrained_weights/
|-- image_encoder
||-- config.json
| `-- pytorch_model.bin
|-- sd-vae-ft-mse
| |-- config.json
| |-- diffusion_pytorch_model.bin
| `-- diffusion_pytorch_model.safetensors
|-- stable-diffusion-v1-5
| |-- feature_extractor
| | `-- preprocessor_config.json
| |- model_index.json
| |-- unet
|| |-- config.json
| `-- diffusion_pytorch_model.bin
| `-- v1-inference.yaml
|-- wav2vec2-base-960h
||- config.json
| |-- feature_extractor_config.json
| |-- preprocessor_config.json
| |- pytorch_model.bin
||- README.md
| |- special_tokens_map.json
| |-- tokeniser_config.json
|-- vocab.json
|-- audio2mesh.pt
|-- audio2pose.pt
|-- denoising_unet.pth
|-- film_net_fp16.pt
|-- motion_module.pth
|-- pose_guider.pth
|-- reference_unet.pth
IU da Web do Gradio
Experimente nossa demonstração na Web com o seguinte comando. Também fornecemos oDemonstração on-line.
python -m scripts.app
inferência
Observe que é possível definir o comando-L
para o número desejado de quadros gerados, por exemplo-L 300
.
Métodos de aceleraçãoSe demorar muito para gerar o vídeo, você poderá fazer o download do arquivofilm_net_fp16.pte colocado em. /pretrained_weights
Catálogo.
Veja a seguir os comandos da CLI para executar o script de raciocínio:
autodirigido
python -m scripts.pose2vid --config . /configs/prompts/animation.yaml -W 512 -H 512 -acc
referenciávelanimation.yaml
para adicionar sua própria imagem de referência ou vídeo de pose. Para converter o vídeo original em um vídeo de pose (sequência de pontos-chave), você pode executar o seguinte comando:
python -m scripts.vid2pose --video_path pose_video_path.mp4
reaparecimento facial
python -m scripts.vid2vid --config . /configs/prompts/animation_facereenac.yaml -W 512 -H 512 -acc
existiranimation_facereenac.yaml
Adicione o vídeo da face de origem e a imagem de referência ao
Driver de áudio
python -m scripts.audio2vid --config . /configs/prompts/animation_audio.yaml -W 512 -H 512 -acc
existiranimation_audio.yaml
Adicionar áudio e imagens de referência à seção Excluiranimation_audio.yaml
acertou em cheiopose_temp
Você pode ativar o modelo audio2pose. Você também pode usar esse comando para gerar o controle de pose da cabeça para o modelopose_temp.npy
::
python -m scripts.generate_ref_pose --ref_video . /configs/inference/head_pose_temp/pose_ref_video.mp4 --save_path . /configs/inference/head_pose_temp/pose.npy
trem
Preparação de dados
downloadVFHQresponder cantandoCelebV-HQ. Extraia os pontos-chave do vídeo original e grave o arquivo json de treinamento (aqui está um exemplo de processamento do VFHQ):
python -m scripts.preprocess_dataset --input_dir VFHQ_PATH --output_dir SAVE_PATH --training_json JSON_PATH
Atualizar linhas no perfil de treinamento:
dados.
json_path: JSON_PATH
Estágio 1
Executar comando:
accelerate launch train_stage_1.py --config . /configs/train/stage1.yaml
Estágio 2
Ponderação dos módulos de movimento pré-treinadosmm_sd_v15_v2.ckpt
(link para download) colocado em. /pretrained_weights
diretório. No diretóriostage2.yaml
O arquivo de configuração especifica os pesos de treinamento para o estágio 1, por exemplo:
stage1_ckpt_dir: '. /exp_output/stage1'
stage1_ckpt_step: 30000
Executar comando:
accelerate launch train_stage_2.py --config . /configs/train/stage2.yaml