O que é LivePortrait?
LivePortrait é um framework eficiente de animação de retratos desenvolvido pela Kuaishou Technology que visa sintetizar vídeos realistas a partir de uma única imagem de origem. Ele usa a imagem de origem como referência de aparência e deriva movimento (expressões faciais e pose da cabeça) de um vídeo de condução, áudio, texto ou geração.
Ao contrário dos métodos de difusão convencionais, o LivePortrait explora e estende um framework baseado em pontos-chave implícitos para equilibrar efetivamente a eficiência computacional e a controlabilidade. Ele se concentra em melhor generalização, controlabilidade e eficiência para uso prático. O LivePortrait tem alta qualidade de geração, mesmo em comparação com métodos de difusão, sendo extremamente rápido - cerca de 12,8ms por frame em uma GPU RTX 4090 com PyTorch.
Para mais detalhes, visite
Como o LivePortrait Funciona
Em um nível alto, o LivePortrait pega uma imagem de origem e um vídeo de condução como entradas. Ele extrai a aparência da imagem de origem e o movimento do vídeo de condução. Estes são então combinados usando módulos de deformação e geração para sintetizar um vídeo de retrato animado que retém a identidade da imagem de origem mas segue o movimento e as expressões do vídeo de condução.
Os principais componentes no LivePortrait são:
- Extrator de Características de Aparência: Codifica a identidade e informações de aparência da imagem de origem.
- Extrator de Movimento: Extrai características de movimento (pontos-chave faciais) dos frames do vídeo de condução.
- Módulo de Deformação: Usa o movimento extraído para deformar as características da imagem de origem, alinhando-as à pose e expressão do vídeo de condução.
- Gerador de Imagem: Pega as características deformadas e sintetiza o frame animado final fotorrealista.
- Módulo de Costura e Retargeting: Opcionalmente costura o retrato gerado de volta na imagem original e permite controlar regiões faciais específicas como olhos e boca.
Esses módulos são projetados de forma eficiente e trabalham juntos para permitir animações LivePortrait de alta qualidade e controláveis.
Como Usar o ComfyUI LivePortrait
Graças ao , criar animações de retratos realistas no ComfyUI agora é mais fácil. A seguir está uma divisão dos principais componentes e parâmetros do fluxo de trabalho ComfyUI LivePortrait.
Principais Etapas do Fluxo de Trabalho ComfyUI LivePortrait Img2Vid
1. Carregar os Modelos Live Portrait
- Adicione o nó "DownloadAndLoadLivePortraitModels"
- Defina a precisão para auto ou fp16 para melhor desempenho
2. Escolher o Detector de Rostos para LivePortrait
- Você tem a opção entre os nós "LivePortraitLoadCropper" (InsightFace) e "LivePortraitLoadMediaPipeCropper"
- InsightFace é mais preciso, mas tem uma licença não comercial, enquanto MediaPipe é mais rápido no CPU, mas menos preciso
- Ambos produzem um "cropper" que será usado para detectar e recortar rostos
3. Carregar e Pré-processar Imagem de Origem para LivePortrait
- Carregue sua imagem de retrato de origem usando o nó "Load Image"
- Redimensione-a para 512x512 usando o nó "ImageResize"
- Conecte a imagem redimensionada a um nó "LivePortraitCropper"
- Também conecte a saída "cropper" do detector de rostos selecionado a este nó
- Parâmetros chave no nó "LivePortraitCropper"
"dsize": Define a resolução de saída da imagem facial recortada
- O padrão é 512, o que significa que o rosto será recortado para 512x512 pixels
- Valores mais altos recortarão o rosto em maior resolução, mas podem ser mais lentos para processar
- Valores mais baixos serão mais rápidos, mas podem perder alguns detalhes
"scale": Controla o quão aproximado será o recorte do rosto
- O padrão é 2.3, valores mais altos aproximam mais o rosto, valores mais baixos incluem mais da cabeça/fundo
- Você deve ajustar isso para que o recorte inclua todo o rosto e um pouco do fundo, mas não muito espaço extra
- Um bom recorte de rosto é importante para que a transferência de movimento funcione bem
- Valores típicos variam de 1.8 a 2.5 dependendo do enquadramento da imagem de origem
"face_index": Se houver vários rostos detectados na imagem, isso seleciona qual recortar
- O padrão é 0, que seleciona o primeiro rosto detectado
- Aumente isso se quiser selecionar um rosto diferente na imagem
- Rostos detectados são ordenados com base na configuração "face_index_order" (o padrão é do maior para o menor)
"vx_ratio" e "vy_ratio" (Opcional): Permitem deslocar o recorte verticalmente (vy) ou horizontalmente (vx)
- Os valores variam de -1 a 1
- Por exemplo, definir vy para 0.1 deslocará o recorte para cima em 10% do tamanho do frame
- Isso pode ajudar se o recorte automático estiver ligeiramente desalinhado
"face_index_order": Define como os rostos detectados são ordenados ao selecionar com face_index
- O padrão é "large-small" que ordena do maior para o menor rosto
- Também pode ordenar da esquerda para a direita, de cima para baixo, etc.
- Isso é relevante apenas se você tiver vários rostos na sua imagem
4. Carregar e Pré-processar Vídeo de Condução para LivePortrait
- Carregue seu vídeo de condução usando o nó "VHS_LoadVideo"
- Ajuste num_frames usando o primitivo "frame_load_cap"
- Redimensione os frames do vídeo para 480x480 usando um nó "GetImageSizeAndCount"
- Você pode opcionalmente recortar os frames do vídeo de condução usando outro nó "LivePortraitCropper"
5. Aplicar Transferência de Movimento para LivePortrait
- Adicione o nó "LivePortraitProcess"
- Conecte o pipeline carregado, crop_info da imagem de origem, imagem de origem recortada e frames de condução ao nó "LivePortraitProcess"
- Parâmetros chave no nó "LivePortraitProcess"
"lip_zero": Quando ativado, isso zerará os parâmetros dos lábios se eles caírem abaixo de um determinado limite
- Isso pode ajudar a reduzir movimentos labiais não naturais e melhorar a sincronização labial
- Recomenda-se ativar isso a menos que você queira especificamente preservar todo o movimento labial
"lip_zero_threshold": Define o limite abaixo do qual os parâmetros dos lábios serão zerados quando "lip_zero" estiver ativado
- O padrão é 0.03, valores mais altos zerarão mais movimento labial, valores mais baixos preservarão mais
- Ajuste isso se quiser mudar quanto movimento labial é suprimido
"stitching": Quando ativado, isso misturará o rosto animado de volta na imagem original usando um processo de costura
- Isso pode ajudar a criar uma transição mais suave entre o rosto animado e o fundo
- Recomenda-se ativar isso para os resultados mais naturais
"delta_multiplier": Isso escala os parâmetros de movimento por um multiplicador
- O padrão é 1.0, valores mais altos exagerarão o movimento, valores mais baixos o reduzirão
- Pode ser usado para ajustar a intensidade geral do movimento facial
- Valores típicos variam de 0.8 a 1.5 dependendo do efeito desejado
"mismatch_method": Define como o fluxo de trabalho lida com discrepâncias entre o número de frames de origem e de condução
- As opções são "constant", "cycle", "mirror" e "cut"
- "constant" manterá o último frame, "cycle" fará um loop, "mirror" tocará para frente e para trás, "cut" parará
- O padrão é "constant", mude isso se quiser um comportamento diferente quando o vídeo de condução for mais longo ou mais curto que o de origem
"relative_motion_mode": Controla como o movimento é transferido do vídeo de condução para a imagem de origem
- As opções são "relative", "source_video_smoothed", "relative_rotation_only", "single_frame" e "off"
- "relative" é o padrão e usa transferência de movimento relativa
- "off" desativará completamente a transferência de movimento
- Experimente diferentes modos para ver qual dá os melhores resultados para seu caso específico
"driving_smooth_observation_variance": Controla a suavidade do movimento de condução ao usar o modo de movimento "source_video_smoothed"
- Valores mais altos suavizarão mais o movimento, valores mais baixos preservarão mais do movimento original
- O padrão é 0.000003, ajuste isso se quiser mudar a suavidade do movimento transferido
6. Compor Resultado (Opcional) para LivePortrait
- Para compor o rosto animado de volta na imagem de origem, use o nó "LivePortraitComposite"
- Conecte a imagem de origem original, a imagem animada recortada, os dados de saída do LivePortrait e uma máscara opcional
- Isso produzirá frames completos com o rosto animado misturado
7. Configurar Retargeting (Opcional) para LivePortrait
- Para controle mais fino sobre olhos e lábios, use o nó "LivePortraitRetargeting"
- Ative o retargeting de olhos e/ou lábios e ajuste seus multiplicadores
- Conecte as informações de retargeting ao "LivePortraitProcess"
Observe que o modelo Insightface é necessário neste fluxo de trabalho. A licença do modelo Insightface (https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip) é de natureza não comercial.
Se você estiver interessado no LivePortrait Vid2Vid, use