Co je LivePortrait?
LivePortrait je efektivní rámec pro animaci portrétů vyvinutý společností Kuaishou Technology, který má za cíl syntetizovat realistická videa z jednoho zdrojového obrázku. Používá zdrojový obrázek jako referenci vzhledu a odvozuje pohyb (obličejové výrazy a pozici hlavy) z řídícího videa, audia, textu nebo generování.
Na rozdíl od mainstreamových metod založených na difuzi, LivePortrait zkoumá a rozšiřuje rámec založený na implicitním bodovém klíči, aby účinně vyvážil výpočetní efektivitu a ovladatelnost. Zaměřuje se na lepší generalizaci, ovladatelnost a efektivitu pro praktické použití. LivePortrait má vysokou kvalitu generování i ve srovnání s metodami difuze, přičemž je extrémně rychlý - asi 12,8 ms na snímek na RTX 4090 GPU s PyTorch.
Pro více informací navštivte
Jak LivePortrait funguje
Na vysoké úrovni, LivePortrait bere zdrojový obrázek a řídící video jako vstupy. Extrahuje vzhled ze zdrojového obrázku a pohyb z řídícího videa. Tyto jsou pak kombinovány pomocí modulů deformace a generování k syntéze animovaného portrétního videa, které zachovává identitu zdrojového obrázku, ale následuje pohyb a výrazy řídícího videa.
Klíčové komponenty v LivePortrait jsou:
- Extraktor vzhledových prvků: Kóduje identitu a informace o vzhledu ze zdrojového obrázku.
- Extraktor pohybu: Extrahuje pohybové prvky (klíčové body obličeje) z rámců řídícího videa.
- Modul deformace: Používá extrahovaný pohyb k deformaci prvků zdrojového obrázku, zarovnává je s pozicí a výrazy řídícího videa.
- Generátor obrázků: Bere deformované prvky a syntetizuje finální fotorealistický animovaný snímek.
- Modul pro šití a přesměrování: Volitelně šije generovaný portrét zpět na původní obrázek a umožňuje kontrolovat specifické obličejové oblasti jako oči a ústa.
Tyto moduly jsou efektivně navrženy a spolupracují, aby umožnily vysoce kvalitní, ovladatelnou animaci LivePortrait.
Jak používat ComfyUI LivePortrait
Díky uzlu a workflow, je nyní snadnější vytvářet realistické animace portrétů v ComfyUI. Následuje rozpis klíčových komponent a parametrů jeho workflow ComfyUI LivePortrait.
Klíčové kroky workflow ComfyUI LivePortrait Img2Vid
1. Načtěte modely Live Portrait
- Přidejte uzel "DownloadAndLoadLivePortraitModels"
- Nastavte přesnost na auto nebo fp16 pro nejlepší výkon
2. Vyberte detektor obličeje pro LivePortrait
- Máte na výběr mezi uzly "LivePortraitLoadCropper" (InsightFace) a "LivePortraitLoadMediaPipeCropper"
- InsightFace je přesnější, ale má nekomerční licenci, zatímco MediaPipe je rychlejší na CPU, ale méně přesný
- Oba výstupy jsou "cropper", který bude použit k detekci a oříznutí obličejů
3. Načtěte a předzpracujte zdrojový obrázek pro LivePortrait
- Načtěte svůj zdrojový portrétní obrázek pomocí uzlu "Load Image"
- Změňte jeho velikost na 512x512 pomocí uzlu "ImageResize"
- Připojte změněný obrázek k uzlu "LivePortraitCropper"
- Také připojte výstup "cropper" vašeho vybraného detektoru obličeje k tomuto uzlu
- Klíčové parametry v uzlu "LivePortraitCropper"
"dsize": Nastavuje výstupní rozlišení oříznutého obrázku obličeje
- Výchozí je 512, což znamená, že obličej bude oříznut na 512x512 pixelů
- Vyšší hodnoty oříznou obličej ve vyšším rozlišení, ale mohou být pomalejší na zpracování
- Nižší hodnoty budou rychlejší, ale mohou ztratit některé detaily
"scale": Řídí, jak blízko bude oříznutí obličeje
- Výchozí je 2.3, vyšší hodnoty přiblíží blíže k obličeji, nižší hodnoty zahrnou více hlavy/pozadí
- Chcete to upravit tak, aby oříznutí zahrnovalo celý obličej a část pozadí, ale ne příliš mnoho volného místa
- Dobré oříznutí obličeje je důležité pro správný přenos pohybu
- Typické hodnoty se pohybují od 1.8 do 2.5 v závislosti na rámování zdrojového obrázku
"face_index": Pokud je na obrázku detekováno více obličejů, toto vybere, který z nich oříznout
- Výchozí je 0, což vybere první detekovaný obličej
- Zvýšíte-li toto, vyberete jiný obličej na obrázku
- Detekované obličeje jsou seřazeny na základě nastavení "face_index_order" (výchozí je od největšího k nejmenšímu)
"vx_ratio" a "vy_ratio" (volitelné): Tyto umožňují posunout oříznutí vertikálně (vy) nebo horizontálně (vx)
- Hodnoty se pohybují od -1 do 1
- Například nastavení vy na 0.1 posune oříznutí nahoru o 10% velikosti rámu
- To může pomoci, pokud je automatické oříznutí mírně nesprávně zarovnáno
"face_index_order": Toto nastavuje, jak jsou detekované obličeje seřazeny při výběru pomocí face_index
- Výchozí je "large-small", což řadí od největšího k nejmenšímu obličeji
- Může také řadit zleva doprava, shora dolů, atd.
- Toto je relevantní pouze pokud máte na obrázku více obličejů
4. Načtěte a předzpracujte řídící video pro LivePortrait
- Načtěte své řídící video pomocí uzlu "VHS_LoadVideo"
- Upravte num_frames pomocí primitivy "frame_load_cap"
- Změňte velikost snímků videa na 480x480 pomocí uzlu "GetImageSizeAndCount"
- Můžete volitelně oříznout snímky řídícího videa pomocí dalšího uzlu "LivePortraitCropper"
5. Aplikujte přenos pohybu pro LivePortrait
- Přidejte uzel "LivePortraitProcess"
- Připojte načtený pipeline, informace o oříznutí zdrojového obrázku, oříznutý zdrojový obrázek a snímky řídícího videa k uzlu "LivePortraitProcess"
- Klíčové parametry v uzlu "LivePortraitProcess"
"lip_zero": Když je povoleno, toto vynuluje parametry rtů, pokud klesnou pod určitý práh
- Toto může pomoci snížit nepřirozené pohyby rtů a zlepšit synchronizaci rtů
- Doporučeno povolit, pokud konkrétně nechcete zachovat veškerý pohyb rtů
"lip_zero_threshold": Toto nastavuje práh, pod který budou parametry rtů vynulovány, když je povoleno "lip_zero"
- Výchozí je 0.03, vyšší hodnoty vynulují více pohybu rtů, nižší hodnoty zachovají více pohybu
- Upravte toto, pokud chcete změnit, kolik pohybu rtů je potlačeno
"stitching": Když je povoleno, toto smíchá animovaný obličej zpět do původního obrázku pomocí procesu šití
- Toto může pomoci vytvořit plynulejší přechod mezi animovaným obličejem a pozadím
- Doporučeno povolit pro nejpřirozenější výsledky
"delta_multiplier": Toto škáluje parametry pohybu pomocí multiplikátoru
- Výchozí je 1.0, vyšší hodnoty zveličí pohyb, nižší hodnoty ho sníží
- Může být použito k úpravě celkové intenzity obličejového pohybu
- Typické hodnoty se pohybují od 0.8 do 1.5 v závislosti na požadovaném efektu
"mismatch_method": Toto nastavuje, jak workflow řeší nesoulady mezi počtem zdrojových a řídících rámců
- Možnosti jsou "constant", "cycle", "mirror" a "cut"
- "constant" bude držet na posledním rámu, "cycle" bude smyčka, "mirror" bude hrát dopředu a pak zpět, "cut" zastaví
- Výchozí je "constant", změňte toto, pokud chcete jiné chování, když je řídící video delší nebo kratší než zdroj
"relative_motion_mode": Toto řídí, jak je pohyb přenášen z řídícího videa na zdrojový obrázek
- Možnosti jsou "relative", "source_video_smoothed", "relative_rotation_only", "single_frame" a "off"
- "relative" je výchozí a používá relativní přenos pohybu
- "off" zcela zakáže přenos pohybu
- Experimentujte s různými režimy, abyste zjistili, který poskytuje nejlepší výsledky pro váš konkrétní případ použití
"driving_smooth_observation_variance": Toto řídí plynulost pohybu řídícího videa při použití režimu přenosu pohybu "source_video_smoothed"
- Vyšší hodnoty více vyhladí pohyb, nižší hodnoty zachovají více původního pohybu
- Výchozí je 0.000003, upravte toto, pokud chcete změnit plynulost přenášeného pohybu
6. Složit výsledek (volitelné) pro LivePortrait
- Chcete-li složit animovaný obličej zpět do zdrojového obrázku, použijte uzel "LivePortraitComposite"
- Připojte původní zdrojový obrázek, oříznutý animovaný obrázek, výstupní data LivePortrait a volitelnou masku
- Toto bude výstupovat plné snímky s animovaným obličejem smíchaným dovnitř
7. Nakonfigurujte přesměrování (volitelné) pro LivePortrait
- Pro jemnější kontrolu nad očima a rty použijte uzel "LivePortraitRetargeting"
- Povolte přesměrování očí a/nebo rtů a upravte jejich multiplikátory
- Připojte informace o přesměrování k uzlu "LivePortraitProcess"
Upozorňujeme, že v tomto workflow je vyžadován model Insightface. Model Insightface (https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip) má nekomerční licenci.
Pokud máte zájem o LivePortrait Vid2Vid, použijte