Implementação de pesquisa do LivePortrait
Kuaishou Technology · animação de retratos · fluxos de trabalho com imagens e vídeos
Dê vida aos retratos com uma imagem de origem e uma direção de movimento escolhida.
🔥 Atualizações
2025/06/01: 🌍 Ao longo do último ano, LivePortrait tornou-se uma solução eficiente de animação de retratos para pessoas, gatos e cães, usada em plataformas de vídeo, ferramentas criativas e fluxos de trabalho de pesquisa.2025/01/01: 🐶 Atualizamos o modelo Animals com dados de treinamento adicionais e renovamos os recursos de exemplo. Os detalhes estão disponíveis aqui.2024/10/18: ❗ As versões das dependências foram atualizadas para melhorar a segurança e a consistência da instalação. Consulte as notas de alteração.2024/08/29: 📦 O pacote para Windows foi atualizado com um processo de configuração mais simples e suporte a atualizações.2024/08/19: 🖼️ O modo orientado por imagem e o controle regional agora são compatíveis, permitindo uma direção mais precisa do retrato.2024/08/06: 🎨 A edição precisa de retratos foi adicionada à interface para um controle mais detalhado das expressões.2024/08/05: 📦 Usuários do Windows podem acessar o pacote de instalação com um clique para os modos Humans e Animals.2024/08/02: 😸 Um novo modelo Animals foi lançado com várias melhorias adicionais.2024/07/25: 📦 O pacote para download agora inclui um caminho de execução direto para usuários do Windows.2024/07/24: 🎨 A edição da pose dos retratos de origem foi adicionada, com um limiar de detecção padrão mais baixo.2024/07/19: ✨ A edição de vídeos de retrato, também conhecida como v2v, é compatível com fluxos de trabalho compatíveis.2024/07/17: 🍎 O suporte ao Apple Silicon foi adicionado ao fluxo de trabalho Humans.2024/07/10: 💪 São compatíveis a concatenação de áudio e vídeo, o recorte automático do vídeo de condução e a criação de modelos de movimento.2024/07/09: 🤗 Uma demonstração online foi lançada para experimentar o fluxo de trabalho sem configuração local.2024/07/04: 😊 O código inicial de inferência e os modelos foram disponibilizados para pesquisa e experimentação.2024/07/04: 🔥 A página inicial do projeto e o relatório técnico foram disponibilizados junto com a primeira implementação pública.
Introdução 📖
Este repositório, chamado LivePortrait, contém uma implementação oficial em PyTorch para animação eficiente de retratos com controle de junção e redirecionamento. O fluxo de trabalho transforma um retrato de origem em movimentos expressivos, mantendo a identidade original e a estrutura visual coerentes.
O LivePortrait está sendo aprimorado continuamente para pesquisa, exploração criativa e experimentos práticos de imagem para vídeo. Se você encontrar um problema ou tiver uma sugestão, use o fluxo de trabalho do projeto para compartilhá-la.
Primeiros passos 🏁
1. Clone o código e prepare o ambiente 🛠️
Observação
Certifique-se de que seu sistema tenha git, condae FFmpeg instalados antes de executar o fluxo de trabalho local.
git clone https://github.com/KlingTeam/LivePortrait
cd LivePortrait
# create env using conda
conda create -n LivePortrait python=3.10
conda activate LivePortrait
Para usuários de Linux 🐧 ou Windows 🪟
A dependência X-Pose é necessária para o modo Animais. Verificar a versão do CUDA é opcional se você quiser executar apenas o modo Humanos.
Verifique suas versões do CUDA
Primeiro, verifique a versão do CUDA instalada:
nvcc -V # example versions: 11.1, 11.8, 12.1, etc.
Em seguida, instale a versão correspondente do torch. Estes são exemplos de comandos:
# for CUDA 11.1
pip install torch==1.10.1+cu111 torchvision==0.11.2 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
# for CUDA 11.8
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu118
# for CUDA 12.1
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121
Por fim, instale as dependências restantes:
pip install -r requirements.txt
Para usuários de macOS com Apple Silicon
A dependência X-Pose não oferece suporte ao macOS, portanto, pode ser ignorada. O modo Humanos funciona normalmente, enquanto o modo Animais não é compatível com esta plataforma.
# for macOS with Apple Silicon users
pip install -r requirements_macOS.txt
2. Baixe os pesos pré-treinados 📥
A maneira mais fácil de baixar os pesos pré-treinados é usar o cliente de linha de comando do Hugging Face:
# !pip install -U "huggingface_hub[cli]"
huggingface-cli download KlingTeam/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"
Se o espelho principal estiver indisponível, use o endpoint alternativo:
# !pip install -U "huggingface_hub[cli]"
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download KlingTeam/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"
Como alternativa, baixe o pacote completo de pesos nos recursos do projeto indicados pelo link e coloque os arquivos descompactados em ./pretrained_weights.
Certifique-se de que a estrutura de diretórios corresponda à organização esperada antes de iniciar a inferência.
3. Inferência 🚀
Uso rápido (humanos) 👤
# For Linux and Windows users
python inference.py
# For macOS users with Apple Silicon
PYTORCH_ENABLE_MPS_FALLBACK=1 python inference.py
Uma execução bem-sucedida produz um vídeo de saída chamado animations/s6--d0_concat.mp4. Ele combina o vídeo de condução, a imagem ou o vídeo de origem e o resultado gerado.
Você pode alterar a entrada especificando os argumentos source e driving:
# source input is an image
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4
# source input is a video
python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d0.mp4
# more options
python inference.py -h
Uso rápido (animais) 🐱🐶
O modo para animais foi testado no Linux e no Windows com uma GPU NVIDIA.
Primeiro, compile a operação MultiScaleDeformableAttention e depois execute o script de inferência para animais:
cd src/utils/dependencies/XPose/models/UniPose/ops
python setup.py build install
cd -
python inference_animals.py -s assets/examples/source/s39.jpg -d assets/examples/driving/wink.pkl --driving_multiplier 1.75 --no_flag_stitching
Uma execução bem-sucedida produz animations/s39--wink_concat.mp4.
Recorte automático do vídeo de condução 📢📢📢
Importante
Para o seu próprio vídeo de condução, recomendamos:
- Recortar para uma proporção de tela 1:1 ou ativar
--flag_crop_driving_video. - Mantenha a área da cabeça em destaque e minimize o movimento dos ombros.
- Use um rosto de frente com uma expressão neutra no primeiro quadro.
Veja abaixo um exemplo de recorte automático:
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d13.mp4 --flag_crop_driving_video
Ajuste --scale_crop_driving_video e --vy_ratio_crop_driving_video quando o recorte automático precisar de refinamento.
Criação de modelo de movimento
Modelos de movimento gerados automaticamente que terminam com .pkl podem acelerar a inferência e ajudar a proteger a privacidade do vídeo de origem:
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d5.pkl # portrait animation
python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d5.pkl # portrait video editing
4. Interface do Gradio 🤗
O projeto inclui uma interface Gradio para um fluxo de trabalho mais acessível:
# For Linux and Windows users
python app.py
# For macOS with Apple Silicon
PYTORCH_ENABLE_MPS_FALLBACK=1 python app.py
O modo Animais tem uma interface separada e é testado no Linux com uma GPU NVIDIA:
python app_animals.py
Você pode especificar --server_port, --share, e --server_name conforme necessário.
O modo opcional --flag_do_torch_compile pode tornar as inferências posteriores mais rápidas após sua etapa inicial de otimização:
# enable torch.compile for faster inference
python app.py --flag_do_torch_compile
Observação: torch.compile não é compatível com Windows e macOS.
Ou experimente o fluxo de trabalho online por meio de LivePortrait 🤗
5. Avaliação da velocidade de inferência 🚀🚀🚀
Use o script de velocidade para avaliar o tempo de inferência de cada módulo:
# For NVIDIA GPU
python speed.py
As observações sobre as medições estão disponíveis nos recursos do projeto.
Recursos da comunidade 🤗
Descubra ferramentas e recursos de aprendizado contribuídos pela comunidade do LivePortrait.
Projetos desenvolvidos pela comunidade
| Repositório | Descrição | Autor / Links |
|---|---|---|
| AVTR-1 | Modelo de talking head conversacional em tempo real que utiliza condicionamento de áudio diádico e um renderizador de deformação de retratos no estilo do LivePortrait. | @avaturn-live |
| ditto-talkinghead | Talking head orientado por áudio em tempo real. | ArXiv, Página inicial |
| FasterLivePortrait | Versão mais rápida em tempo real usando TensorRT. | @warmshao |
| AdvancedLivePortrait-WebUI | WebUI dedicada baseada em Gradio, iniciada a partir de um fluxo de trabalho avançado de nós do LivePortrait. | @jhj0517 |
| FacePoke | Um aplicativo de transformação da cabeça em tempo real controlado pelo cursor. | @jbilcke-hf |
| FaceFusion | O FaceFusion integra o LivePortrait como processadores de restauração de expressões e edição facial. | @henryruhs |
| sd-webui-live-portrait | Extensão de WebUI que adiciona recursos do LivePortrait a um fluxo de trabalho existente do Stable Diffusion. | @dimitribarbot |
| ComfyUI-LivePortraitKJ | Um nó do ComfyUI que usa o MediaPipe como alternativa ao InsightFace. | @kijai |
| ComfyUI-AdvancedLivePortrait | Um nó mais rápido do ComfyUI com pré-visualização em tempo real que inspirou muitas ferramentas da comunidade. | @PowerHouseMan |
| comfyui-liveportrait | Um nó do ComfyUI compatível com múltiplos rostos e interpolação de expressões. | @shadowcz007 |
Ambientes de teste, 🤗 HuggingFace Spaces e outros
- Espaço FacePoke
- Espaço do editor de expressões
- Editor de expressões no Replicate
- Demonstração de controle facial em tempo real no FAL
- Ambiente de teste do Replicate
- O Nuke pode usar o LivePortrait por meio de um nó criado pela comunidade; os detalhes estão disponíveis aqui.
- O LivePortrait também está disponível pelo Poe.
Tutoriais em vídeo
- Fluxo de trabalho de vídeo para vídeo do LivePortrait por @curiousrefuge
- Tutorial do Google Colab por @Planet Ai
- Análise do artigo por @TwoMinutePapers
- LivePortrait avançado no ComfyUI por TutoView
- Explorando o LivePortrait e Uma análise aprofundada do LivePortrait por TheoreticallyMedia
- Tutorial prático do LivePortrait por @AI Search
- Tutorial do ComfyUI por @Sebastian Kamph
- Um tutorial no BiliBili
E tantas outras contribuições atenciosas da comunidade continuam expandindo o ecossistema do LivePortrait 💖
Agradecimentos 💐
Agradecemos aos colaboradores do FOMM, Open Facevid2vid, SPADE, InsightFace, X-Pose e à comunidade mais ampla de pesquisa aberta por seu trabalho e suas contribuições.
Considerações éticas 🛡️
As tecnologias de animação de retratos envolvem riscos sociais, incluindo o possível uso indevido na criação de mídias enganosas. Use o fluxo de trabalho com responsabilidade, obtenha permissão para as imagens de origem e identifique claramente os resultados sintéticos ou editados quando apropriado. Os resultados sintetizados atuais podem conter artefatos visuais que podem ajudar na detecção. O projeto não assume responsabilidade legal pelos resultados gerados.
Citação 💖
Se o LivePortrait for útil para seu projeto ou pesquisa, cite o trabalho usando o seguinte BibTeX:
@article{liveportrait2024,
title = {LivePortrait: Efficient Portrait Animation with Stitching and Retargeting Control},
author = {LivePortrait Research Team},
journal = {arXiv preprint},
year = {2024}
}
Vida longa à pesquisa aberta.
Contato 📧
Pesquisa do LivePortrait; perguntas e solicitações de colaboração podem começar pelo fluxo de trabalho do projeto.
Histórico de estrelas 🌟
Clique para ver o gráfico de estrelas