¿Qué es LivePortrait?
LivePortrait es un marco de trabajo eficiente para la animación de retratos desarrollado por Kuaishou Technology que tiene como objetivo sintetizar videos realistas a partir de una sola imagen fuente. Utiliza la imagen fuente como referencia de apariencia y deriva el movimiento (expresiones faciales y postura de la cabeza) de un video guía, audio, texto o generación.
A diferencia de los métodos de difusión convencionales, LivePortrait explora y extiende un marco de trabajo basado en puntos clave implícitos para equilibrar eficazmente la eficiencia computacional y la controlabilidad. Se centra en una mejor generalización, controlabilidad y eficiencia para su uso práctico. LivePortrait tiene una alta calidad de generación incluso en comparación con los métodos de difusión, mientras que es extremadamente rápido - alrededor de 12.8ms por cuadro en una GPU RTX 4090 con PyTorch.
Para más detalles, visita
Cómo Funciona LivePortrait
A un alto nivel, LivePortrait toma una imagen fuente y un video guía como entradas. Extrae la apariencia de la imagen fuente y el movimiento del video guía. Estos se combinan usando módulos de deformación y generación para sintetizar un video de retrato animado que retiene la identidad de la imagen fuente pero sigue el movimiento y las expresiones del video guía.
Los componentes clave en LivePortrait son:
- Extractor de Características de Apariencia: Codifica la identidad y la información de apariencia de la imagen fuente.
- Extractor de Movimiento: Extrae características de movimiento (puntos clave faciales) de los cuadros del video guía.
- Módulo de Deformación: Utiliza el movimiento extraído para deformar las características de la imagen fuente, alineándolas con la pose y expresión del guía.
- Generador de Imágenes: Toma las características deformadas y sintetiza el cuadro animado final fotorrealista.
- Módulo de Ensamblaje y Retargeting: Opcionalmente ensambla el retrato generado de nuevo en la imagen original y permite controlar regiones faciales específicas como los ojos y la boca.
Estos módulos están diseñados eficientemente y trabajan juntos para permitir una animación de LivePortrait de alta calidad y controlable.
Cómo Usar ComfyUI LivePortrait
Gracias al nodo y flujo de trabajo , crear animaciones de retratos realistas en ComfyUI ahora es más fácil. A continuación se presenta un desglose de los componentes y parámetros clave de su flujo de trabajo ComfyUI LivePortrait.
Pasos Clave del Flujo de Trabajo Img2Vid de ComfyUI LivePortrait
1. Cargar los Modelos de LivePortrait
- Agrega el nodo "DownloadAndLoadLivePortraitModels"
- Ajusta la precisión a auto o fp16 para el mejor rendimiento
2. Elegir el Detector de Rostros para LivePortrait
- Tienes una elección entre los nodos "LivePortraitLoadCropper" (InsightFace) y "LivePortraitLoadMediaPipeCropper"
- InsightFace es más preciso pero tiene una licencia no comercial, mientras que MediaPipe es más rápido en CPU pero menos preciso
- Ambos generan un "cropper" que se utilizará para detectar y recortar rostros
3. Cargar y Preprocesar la Imagen Fuente para LivePortrait
- Carga tu imagen de retrato fuente usando el nodo "Load Image"
- Redimensiona a 512x512 usando el nodo "ImageResize"
- Conecta la imagen redimensionada a un nodo "LivePortraitCropper"
- También conecta la salida "cropper" de tu detector de rostros seleccionado a este nodo
- Parámetros clave en el nodo "LivePortraitCropper"
"dsize": Esto establece la resolución de salida de la imagen de rostro recortada
- El valor predeterminado es 512, lo que significa que el rostro se recortará a 512x512 píxeles
- Valores más altos recortarán el rostro en mayor resolución, pero pueden ser más lentos de procesar
- Valores más bajos serán más rápidos pero pueden perder algunos detalles
"scale": Esto controla cuánto se acercará el recorte del rostro
- El valor predeterminado es 2.3, valores más altos acercarán más al rostro, valores más bajos incluirán más de la cabeza/fondo
- Quieres ajustar esto para que el recorte incluya todo el rostro y algo de fondo, pero no demasiado espacio extra
- Un buen recorte de rostro es importante para que la transferencia de movimiento funcione bien
- Los valores típicos van de 1.8 a 2.5 dependiendo del encuadre de la imagen fuente
"face_index": Si hay múltiples rostros detectados en la imagen, esto selecciona cuál recortar
- El valor predeterminado es 0, que selecciona el primer rostro detectado
- Aumenta esto si quieres seleccionar un rostro diferente en la imagen
- Los rostros detectados se ordenan en base a la configuración de "face_index_order" (el valor predeterminado es de mayor a menor)
"vx_ratio" y "vy_ratio" (Opcional): Estos permiten desplazar el recorte verticalmente (vy) u horizontalmente (vx)
- Los valores varían de -1 a 1
- Por ejemplo, configurar vy en 0.1 desplazará el recorte hacia arriba en un 10% del tamaño del cuadro
- Esto puede ayudar si el recorte automático está ligeramente desalineado
"face_index_order": Esto establece cómo se ordenan los rostros detectados al seleccionar con face_index
- El valor predeterminado es "large-small" que ordena de mayor a menor rostro
- También puede ordenar de izquierda a derecha, de arriba a abajo, etc.
- Esto solo es relevante si tienes múltiples rostros en tu imagen
4. Cargar y Preprocesar el Video Guía para LivePortrait
- Carga tu video guía usando el nodo "VHS_LoadVideo"
- Ajusta num_frames usando el primitivo "frame_load_cap"
- Redimensiona los cuadros del video a 480x480 usando un nodo "GetImageSizeAndCount"
- Opcionalmente puedes recortar los cuadros del video guía usando otro nodo "LivePortraitCropper"
5. Aplicar Transferencia de Movimiento para LivePortrait
- Agrega el nodo "LivePortraitProcess"
- Conecta la tubería cargada, la información de recorte de la imagen fuente, la imagen fuente recortada y los cuadros del guía al nodo "LivePortraitProcess"
- Parámetros clave en el nodo "LivePortraitProcess"
"lip_zero": Cuando está habilitado, esto anulará los parámetros de los labios si caen por debajo de cierto umbral
- Esto puede ayudar a reducir movimientos de labios no naturales y mejorar la sincronización labial
- Se recomienda habilitar esto a menos que específicamente quieras preservar todo el movimiento de los labios
"lip_zero_threshold": Esto establece el umbral por debajo del cual se anularán los parámetros de los labios cuando "lip_zero" está habilitado
- El valor predeterminado es 0.03, valores más altos anularán más movimiento de los labios, valores más bajos preservarán más
- Ajusta esto si quieres cambiar cuánto movimiento de los labios se suprime
"stitching": Cuando está habilitado, esto mezclará el rostro animado de nuevo en la imagen original usando un proceso de ensamblaje
- Esto puede ayudar a crear una transición más fluida entre el rostro animado y el fondo
- Se recomienda habilitar esto para obtener los resultados más naturales
"delta_multiplier": Esto escala los parámetros de movimiento por un multiplicador
- El valor predeterminado es 1.0, valores más altos exagerarán el movimiento, valores más bajos lo reducirán
- Puede usarse para ajustar la intensidad general del movimiento facial
- Los valores típicos van de 0.8 a 1.5 dependiendo del efecto deseado
"mismatch_method": Esto establece cómo maneja el flujo de trabajo los desajustes entre el número de cuadros fuente y guía
- Las opciones son "constant", "cycle", "mirror" y "cut"
- "constant" se mantendrá en el último cuadro, "cycle" hará un bucle, "mirror" se reproducirá hacia adelante y luego hacia atrás, "cut" se detendrá
- El valor predeterminado es "constant", cambia esto si quieres un comportamiento diferente cuando el video guía es más largo o más corto que la fuente
"relative_motion_mode": Esto controla cómo se transfiere el movimiento del video guía a la imagen fuente
- Las opciones son "relative", "source_video_smoothed", "relative_rotation_only", "single_frame" y "off"
- "relative" es el predeterminado y utiliza la transferencia de movimiento relativa
- "off" deshabilitará la transferencia de movimiento por completo
- Experimenta con diferentes modos para ver cuál da los mejores resultados para tu caso específico
"driving_smooth_observation_variance": Esto controla la suavidad del movimiento guía cuando se utiliza el modo de movimiento "source_video_smoothed"
- Valores más altos suavizarán más el movimiento, valores más bajos preservarán más del movimiento original
- El valor predeterminado es 0.000003, ajusta esto si quieres cambiar la suavidad del movimiento transferido
6. Componer el Resultado (Opcional) para LivePortrait
- Para componer el rostro animado de nuevo en la imagen fuente, usa el nodo "LivePortraitComposite"
- Conecta la imagen fuente original, la imagen animada recortada, los datos de salida de LivePortrait y una máscara opcional
- Esto generará cuadros completos con el rostro animado mezclado
7. Configurar Retargeting (Opcional) para LivePortrait
- Para un control más fino sobre los ojos y los labios, usa el nodo "LivePortraitRetargeting"
- Habilita el retargeting de ojos y/o labios y ajusta sus multiplicadores
- Conecta la información de retargeting a "LivePortraitProcess"
Ten en cuenta que el modelo Insightface es necesario en este flujo de trabajo. La licencia del modelo Insightface (https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip) es de naturaleza no comercial.
Si estás interesado en LivePortrait Vid2Vid, por favor usa