Che cos'è LivePortrait?
LivePortrait è un framework efficiente per l'animazione di ritratti sviluppato da Kuaishou Technology che mira a sintetizzare video realistici da una singola immagine sorgente. Utilizza l'immagine sorgente come riferimento di aspetto e deriva il movimento (espressioni facciali e posa della testa) da un video di guida, audio, testo o generazione.
A differenza dei metodi diffusi tradizionali, LivePortrait esplora ed estende un framework basato su punti chiave impliciti per bilanciare efficacemente l'efficienza computazionale e la controllabilità. Si concentra su una migliore generalizzazione, controllabilità ed efficienza per un uso pratico. LivePortrait ha una qualità di generazione elevata anche rispetto ai metodi di diffusione, pur essendo estremamente veloce - circa 12.8ms per frame su una GPU RTX 4090 con PyTorch.
Per maggiori dettagli, visita
Come funziona LivePortrait
A un livello alto, LivePortrait prende un'immagine sorgente e un video di guida come input. Estrae l'aspetto dall'immagine sorgente e il movimento dal video di guida. Questi vengono poi combinati utilizzando moduli di deformazione e generazione per sintetizzare un video di ritratto animato che mantiene l'identità dell'immagine sorgente ma segue il movimento e le espressioni del video di guida.
I componenti chiave di LivePortrait sono:
- Estrattore di Caratteristiche dell'Aspetto: Codifica l'identità e le informazioni di aspetto dall'immagine sorgente.
- Estrattore di Movimento: Estrae le caratteristiche di movimento (punti chiave facciali) dai frame del video di guida.
- Modulo di Deformazione: Utilizza il movimento estratto per deformare le caratteristiche dell'immagine sorgente, allineandole alla posa e all'espressione della guida.
- Generatore di Immagini: Prende le caratteristiche deformate e sintetizza il frame animato fotorealistico finale.
- Modulo di Cucitura e Ritargeting: Facoltativamente cuce il ritratto generato sull'immagine originale e permette di controllare regioni facciali specifiche come occhi e bocca.
Questi moduli sono progettati in modo efficiente e lavorano insieme per consentire un'animazione LivePortrait di alta qualità e controllabile.
Come usare ComfyUI LivePortrait
Grazie al nodo e al workflow , creare animazioni realistiche di ritratti in ComfyUI è ora più facile. Di seguito è riportata una panoramica dei componenti chiave e dei parametri del workflow ComfyUI LivePortrait.
Passaggi chiave del Workflow ComfyUI LivePortrait Img2Vid
1. Carica i Modelli Live Portrait
- Aggiungi il nodo "DownloadAndLoadLivePortraitModels"
- Imposta la precisione su auto o fp16 per le migliori prestazioni
2. Scegli il Rilevatore di Volti per LivePortrait
- Hai una scelta tra i nodi "LivePortraitLoadCropper" (InsightFace) e "LivePortraitLoadMediaPipeCropper"
- InsightFace è più accurato ma ha una licenza non commerciale, mentre MediaPipe è più veloce su CPU ma meno accurato
- Entrambi producono un "cropper" che verrà utilizzato per rilevare e ritagliare i volti
3. Carica e Preprocessa l'Immagine Sorgente per LivePortrait
- Carica la tua immagine di ritratto sorgente usando il nodo "Load Image"
- Ridimensionala a 512x512 usando il nodo "ImageResize"
- Collega l'immagine ridimensionata a un nodo "LivePortraitCropper"
- Collega anche l'output "cropper" del rilevatore di volti selezionato a questo nodo
- Parametri chiave nel nodo "LivePortraitCropper"
"dsize": Questo imposta la risoluzione di output dell'immagine del volto ritagliata
- Il valore predefinito è 512, il che significa che il volto verrà ritagliato a 512x512 pixel
- Valori più alti ritaglieranno il volto a una risoluzione più alta, ma potrebbero essere più lenti da processare
- Valori più bassi saranno più veloci ma potrebbero perdere alcuni dettagli
"scale": Questo controlla quanto sarà ingrandito il ritaglio del volto
- Il valore predefinito è 2.3, valori più alti ingrandiranno di più il volto, valori più bassi includeranno più della testa/sfondo
- Devi regolare questo in modo che il ritaglio includa l'intero volto e parte dello sfondo, ma non troppo spazio extra
- Un buon ritaglio del volto è importante per far funzionare bene il trasferimento del movimento
- I valori tipici variano da 1.8 a 2.5 a seconda dell'inquadratura dell'immagine sorgente
"face_index": Se ci sono più volti rilevati nell'immagine, questo seleziona quale ritagliare
- Il valore predefinito è 0, che seleziona il primo volto rilevato
- Aumenta questo valore se vuoi selezionare un volto diverso nell'immagine
- I volti rilevati sono ordinati in base all'impostazione "face_index_order" (predefinito è dal più grande al più piccolo)
"vx_ratio" e "vy_ratio" (Facoltativo): Questi permettono di spostare il ritaglio verticalmente (vy) o orizzontalmente (vx)
- I valori variano da -1 a 1
- Ad esempio, impostare vy a 0.1 sposterà il ritaglio verso l'alto del 10% della dimensione del frame
- Questo può aiutare se il ritaglio automatico è leggermente disallineato
"face_index_order": Questo imposta come vengono ordinati i volti rilevati quando si seleziona con face_index
- Il valore predefinito è "large-small" che ordina dal volto più grande al più piccolo
- Può anche ordinare da sinistra a destra, dall'alto verso il basso, ecc.
- Questo è rilevante solo se hai più volti nella tua immagine
4. Carica e Preprocessa il Video di Guida per LivePortrait
- Carica il tuo video di guida utilizzando il nodo "VHS_LoadVideo"
- Regola num_frames utilizzando il primitive "frame_load_cap"
- Ridimensiona i frame del video a 480x480 utilizzando un nodo "GetImageSizeAndCount"
- Puoi opzionalmente ritagliare i frame del video di guida utilizzando un altro nodo "LivePortraitCropper"
5. Applica il Trasferimento del Movimento per LivePortrait
- Aggiungi il nodo "LivePortraitProcess"
- Collega la pipeline caricata, crop_info dell'immagine sorgente, immagine sorgente ritagliata e frame di guida al nodo "LivePortraitProcess"
- Parametri chiave nel nodo "LivePortraitProcess"
"lip_zero": Quando abilitato, questo azzererà i parametri delle labbra se scendono al di sotto di una certa soglia
- Questo può aiutare a ridurre movimenti innaturali delle labbra e migliorare la sincronizzazione labiale
- Consigliato abilitare questo a meno che non si voglia specificamente preservare tutto il movimento delle labbra
"lip_zero_threshold": Questo imposta la soglia al di sotto della quale i parametri delle labbra verranno azzerati quando "lip_zero" è abilitato
- Il valore predefinito è 0.03, valori più alti azzereranno più movimento delle labbra, valori più bassi ne preserveranno di più
- Regola questo se vuoi cambiare quanto movimento delle labbra viene soppresso
"stitching": Quando abilitato, questo fonderà il volto animato nell'immagine originale utilizzando un processo di cucitura
- Questo può aiutare a creare una transizione più fluida tra il volto animato e lo sfondo
- Consigliato abilitare questo per i risultati più naturali
"delta_multiplier": Questo scala i parametri del movimento con un moltiplicatore
- Il valore predefinito è 1.0, valori più alti esagereranno il movimento, valori più bassi lo ridurranno
- Può essere utilizzato per regolare l'intensità complessiva del movimento facciale
- I valori tipici variano da 0.8 a 1.5 a seconda dell'effetto desiderato
"mismatch_method": Questo imposta come il workflow gestisce le discrepanze tra il numero di frame sorgente e di guida
- Le opzioni sono "constant", "cycle", "mirror", e "cut"
- "constant" terrà l'ultimo frame, "cycle" ripeterà, "mirror" riprodurrà avanti e indietro, "cut" si fermerà
- Il valore predefinito è "constant", cambia questo se vuoi un comportamento diverso quando il video di guida è più lungo o più corto della sorgente
"relative_motion_mode": Questo controlla come il movimento viene trasferito dal video di guida all'immagine sorgente
- Le opzioni sono "relative", "source_video_smoothed", "relative_rotation_only", "single_frame", e "off"
- "relative" è il valore predefinito e utilizza il trasferimento del movimento relativo
- "off" disabiliterà completamente il trasferimento del movimento
- Sperimenta con diverse modalità per vedere quale offre i migliori risultati per il tuo caso d'uso specifico
"driving_smooth_observation_variance": Questo controlla la fluidità del movimento di guida quando si utilizza la modalità di movimento "source_video_smoothed"
- Valori più alti renderanno il movimento più fluido, valori più bassi preserveranno più del movimento originale
- Il valore predefinito è 0.000003, regola questo se vuoi cambiare la fluidità del movimento trasferito
6. Composizione del Risultato (Facoltativo) per LivePortrait
- Per comporre il volto animato nell'immagine sorgente, usa il nodo "LivePortraitComposite"
- Collega l'immagine sorgente originale, l'immagine animata ritagliata, i dati di output di LivePortrait e una maschera opzionale
- Questo produrrà frame completi con il volto animato fuso
7. Configura il Ritargeting (Facoltativo) per LivePortrait
- Per un controllo più fine su occhi e labbra, usa il nodo "LivePortraitRetargeting"
- Abilita il ritargeting degli occhi e/o delle labbra e regola i loro moltiplicatori
- Collega le informazioni di ritargeting a "LivePortraitProcess"
Si noti che il modello Insightface è richiesto in questo workflow. Il modello Insightface (https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip) ha una licenza di natura non commerciale.
Se sei interessato a LivePortrait Vid2Vid, per favore usa