Co to jest LivePortrait?
LivePortrait to wydajny framework do animacji portretów opracowany przez Kuaishou Technology, który ma na celu syntezę realistycznych filmów z jednego obrazu źródłowego. Wykorzystuje obraz źródłowy jako odniesienie wyglądu i wyprowadza ruch (mimikę i pozycję głowy) z filmu sterującego, dźwięku, tekstu lub generowania.
W przeciwieństwie do głównych metod opartych na dyfuzji, LivePortrait bada i rozszerza framework oparty na punktach kluczowych, aby skutecznie zrównoważyć wydajność obliczeniową i kontrolowalność. Skupia się na lepszej generalizacji, kontrolowalności i wydajności w praktycznym użytkowaniu. LivePortrait ma wysoką jakość generowania nawet w porównaniu z metodami dyfuzyjnymi, będąc jednocześnie niezwykle szybkim - około 12,8 ms na klatkę na GPU RTX 4090 z PyTorch.
Więcej szczegółów znajdziesz na
Jak działa LivePortrait
Na wysokim poziomie, LivePortrait przyjmuje obraz źródłowy i film sterujący jako wejścia. Wyodrębnia wygląd z obrazu źródłowego i ruch z filmu sterującego. Są one następnie łączone za pomocą modułów deformacji i generowania, aby zsyntetyzować animowany film portretowy, który zachowuje tożsamość obrazu źródłowego, ale podąża za ruchem i mimiką filmu sterującego.
Kluczowe komponenty w LivePortrait to:
- Ekstraktor Cech Wyglądu: Koduje tożsamość i informacje o wyglądzie z obrazu źródłowego.
- Ekstraktor Ruchu: Wyodrębnia cechy ruchu (punkty kluczowe twarzy) z klatek filmu sterującego.
- Moduł Deformacji: Wykorzystuje wyodrębniony ruch do deformacji cech obrazu źródłowego, dopasowując je do pozy i mimiki sterującej.
- Generator Obrazu: Przyjmuje zdeformowane cechy i syntetyzuje końcową fotorealistyczną animowaną klatkę.
- Moduł Łączenia i Przekierowania: Opcjonalnie łączy wygenerowany portret z powrotem na oryginalny obraz i pozwala kontrolować specyficzne obszary twarzy, takie jak oczy i usta.
Te moduły są wydajnie zaprojektowane i współpracują, aby umożliwić wysokiej jakości, kontrolowaną animację LivePortrait.
Jak używać ComfyUI LivePortrait
Dzięki węzłowi i workflow , tworzenie realistycznych animacji portretów w ComfyUI jest teraz łatwiejsze. Poniżej znajduje się podział kluczowych komponentów i parametrów workflow ComfyUI LivePortrait.
Kluczowe kroki workflow ComfyUI LivePortrait Img2Vid
1. Załaduj modele Live Portrait
- Dodaj węzeł "DownloadAndLoadLivePortraitModels"
- Ustaw precyzję na auto lub fp16 dla najlepszej wydajności
2. Wybierz detektor twarzy dla LivePortrait
- Masz do wyboru węzły "LivePortraitLoadCropper" (InsightFace) i "LivePortraitLoadMediaPipeCropper"
- InsightFace jest bardziej dokładny, ale ma licencję niekomercyjną, natomiast MediaPipe jest szybszy na CPU, ale mniej dokładny
- Oba węzły wyjściowe "cropper" będą używane do wykrywania i kadrowania twarzy
3. Załaduj i przygotuj obraz źródłowy dla LivePortrait
- Załaduj swój portret źródłowy za pomocą węzła "Load Image"
- Zmień jego rozmiar na 512x512 za pomocą węzła "ImageResize"
- Połącz zmieniony rozmiar obrazu z węzłem "LivePortraitCropper"
- Połącz również wyjście "cropper" wybranego detektora twarzy z tym węzłem
- Kluczowe parametry w węźle "LivePortraitCropper"
"dsize": Ustawia rozdzielczość wyjściową przyciętego obrazu twarzy
- Domyślnie 512, co oznacza, że twarz zostanie przycięta do 512x512 pikseli
- Wyższe wartości przycinają twarz w wyższej rozdzielczości, ale mogą być wolniejsze w przetwarzaniu
- Niższe wartości będą szybsze, ale mogą stracić trochę szczegółów
"scale": Kontroluje, jak bardzo zbliżone będzie przycięcie twarzy
- Domyślnie 2.3, wyższe wartości zbliżają bardziej twarz, niższe wartości obejmują więcej głowy/tła
- Chcesz dostosować to tak, aby przycięcie obejmowało całą twarz i trochę tła, ale nie za dużo dodatkowej przestrzeni
- Dobre przycięcie twarzy jest ważne, aby transfer ruchu działał dobrze
- Typowe wartości wahają się od 1.8 do 2.5 w zależności od kadrowania obrazu źródłowego
"face_index": Jeśli w obrazie zostanie wykrytych wiele twarzy, ten parametr wybiera, którą przyciąć
- Domyślnie 0, co wybiera pierwszą wykrytą twarz
- Zwiększ to, jeśli chcesz wybrać inną twarz na obrazie
- Wykryte twarze są uporządkowane na podstawie ustawienia "face_index_order" (domyślnie od największej do najmniejszej)
"vx_ratio" i "vy_ratio" (Opcjonalnie): Pozwalają na przesunięcie przycięcia pionowo (vy) lub poziomo (vx)
- Wartości wahają się od -1 do 1
- Na przykład ustawienie vy na 0.1 przesunie przycięcie w górę o 10% rozmiaru ramki
- Może to pomóc, jeśli automatyczne przycięcie jest lekko niedopasowane
"face_index_order": Ustawia, jak wykryte twarze są uporządkowane przy wyborze za pomocą face_index
- Domyślnie "large-small", co oznacza uporządkowanie od największej do najmniejszej twarzy
- Może również uporządkować od lewej do prawej, od góry do dołu, itp.
- Jest to istotne tylko wtedy, gdy masz wiele twarzy na obrazie
4. Załaduj i przygotuj film sterujący dla LivePortrait
- Załaduj film sterujący za pomocą węzła "VHS_LoadVideo"
- Dostosuj liczbę klatek za pomocą prymitywu "frame_load_cap"
- Zmień rozmiar klatek filmu na 480x480 za pomocą węzła "GetImageSizeAndCount"
- Opcjonalnie możesz przyciąć klatki filmu sterującego za pomocą innego węzła "LivePortraitCropper"
5. Zastosuj transfer ruchu dla LivePortrait
- Dodaj węzeł "LivePortraitProcess"
- Połącz załadowany pipeline, informacje o przycięciu obrazu źródłowego, przycięty obraz źródłowy oraz klatki sterujące z węzłem "LivePortraitProcess"
- Kluczowe parametry w węźle "LivePortraitProcess"
"lip_zero": Po włączeniu, wyzeruje parametry ust, jeśli spadną poniżej określonego progu
- Może to pomóc zmniejszyć nienaturalne ruchy ust i poprawić synchronizację ust
- Zalecane włączenie, chyba że chcesz zachować wszystkie ruchy ust
"lip_zero_threshold": Ustawia próg, poniżej którego parametry ust będą wyzerowane, gdy "lip_zero" jest włączone
- Domyślnie 0.03, wyższe wartości wyzerują więcej ruchu ust, niższe wartości zachowają więcej
- Dostosuj to, jeśli chcesz zmienić, jak dużo ruchu ust jest tłumione
"stitching": Po włączeniu, będzie łączyć animowaną twarz z powrotem na oryginalny obraz za pomocą procesu łączenia
- Może to pomóc stworzyć bardziej płynne przejście między animowaną twarzą a tłem
- Zalecane włączenie dla najbardziej naturalnych wyników
"delta_multiplier": Skaluje parametry ruchu przez mnożnik
- Domyślnie 1.0, wyższe wartości wyolbrzymiają ruch, niższe wartości go redukują
- Może być używane do dostosowania ogólnej intensywności ruchu twarzy
- Typowe wartości wahają się od 0.8 do 1.5 w zależności od pożądanego efektu
"mismatch_method": Ustawia, jak workflow radzi sobie z niedopasowaniami między liczbą klatek źródłowych a sterujących
- Opcje to "constant", "cycle", "mirror" i "cut"
- "constant" utrzymuje ostatnią klatkę, "cycle" zapętla, "mirror" odtwarza do przodu, a potem do tyłu, "cut" zatrzymuje
- Domyślnie "constant", zmień to, jeśli chcesz innego zachowania, gdy film sterujący jest dłuższy lub krótszy od źródłowego
"relative_motion_mode": Kontroluje, jak ruch jest przenoszony z filmu sterującego na obraz źródłowy
- Opcje to "relative", "source_video_smoothed", "relative_rotation_only", "single_frame" i "off"
- "relative" jest domyślne i używa względnego transferu ruchu
- "off" wyłącza transfer ruchu całkowicie
- Eksperymentuj z różnymi trybami, aby zobaczyć, który daje najlepsze wyniki dla twojego konkretnego przypadku użycia
"driving_smooth_observation_variance": Kontroluje płynność ruchu sterującego przy użyciu trybu ruchu "source_video_smoothed"
- Wyższe wartości wygładzają ruch bardziej, niższe wartości zachowują więcej oryginalnego ruchu
- Domyślnie 0.000003, dostosuj to, jeśli chcesz zmienić płynność przenoszonego ruchu
6. Kompozycja wyniku (Opcjonalnie) dla LivePortrait
- Aby skomponować animowaną twarz z powrotem na obraz źródłowy, użyj węzła "LivePortraitComposite"
- Połącz oryginalny obraz źródłowy, przycięty animowany obraz, dane wyjściowe LivePortrait oraz opcjonalną maskę
- To wyjście pełne klatki z animowaną twarzą wkomponowaną
7. Skonfiguruj przekierowanie (Opcjonalnie) dla LivePortrait
- Dla dokładniejszej kontroli nad oczami i ustami, użyj węzła "LivePortraitRetargeting"
- Włącz przekierowanie oczu i/lub ust i dostosuj ich mnożniki
- Połącz informacje o przekierowaniu z "LivePortraitProcess"
Należy pamiętać, że model Insightface jest wymagany w tym workflow. Model Insightface (https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip) ma licencję niekomercyjną.
Jeśli jesteś zainteresowany LivePortrait Vid2Vid, użyj