Was ist LivePortrait?
LivePortrait ist ein effizientes Porträtanimations-Framework, entwickelt von Kuaishou Technology, das darauf abzielt, lebensechte Videos aus einem einzigen Quellbild zu synthetisieren. Es verwendet das Quellbild als Erscheinungsreferenz und leitet Bewegungen (Gesichtsausdrücke und Kopfhaltung) aus einem Fahrvideo, Audio, Text oder Generierung ab.
Im Gegensatz zu den gängigen Diffusionsmethoden erkundet und erweitert LivePortrait ein implizites Keypoint-basiertes Framework, um eine effektive Balance zwischen Recheneffizienz und Steuerbarkeit zu erreichen. Es konzentriert sich auf bessere Generalisierung, Steuerbarkeit und Effizienz für den praktischen Einsatz. LivePortrait hat eine hohe Generierungsqualität, selbst im Vergleich zu Diffusionsmethoden, und ist gleichzeitig extrem schnell - etwa 12,8 ms pro Frame auf einer RTX 4090 GPU mit PyTorch.
Für weitere Details besuchen Sie
Wie LivePortrait funktioniert
Auf hoher Ebene nimmt LivePortrait ein Quellbild und ein Fahrvideo als Eingaben. Es extrahiert das Erscheinungsbild aus dem Quellbild und die Bewegung aus dem Fahrvideo. Diese werden dann mittels Verzerrungs- und Generierungsmodulen kombiniert, um ein animiertes Porträtvideo zu synthetisieren, das die Identität des Quellbildes beibehält, aber den Bewegungen und Ausdrücken des Fahrvideos folgt.
Die Hauptkomponenten in LivePortrait sind:
- Erscheinungsmerkmal-Extraktor: Kodiert die Identität und Erscheinungsinformationen aus dem Quellbild.
- Bewegungsextraktor: Extrahiert Bewegungsmerkmale (Gesichtspunkte) aus den Fahrvideobildern.
- Verzerrungsmodul: Verwendet die extrahierten Bewegungen, um die Quellbildmerkmale zu verzerren und sie an die Fahrhaltung und den Ausdruck anzupassen.
- Bildgenerator: Nimmt die verzerrten Merkmale und synthetisiert das endgültige fotorealistische animierte Bild.
- Stitching- & Retargeting-Modul: Fügt optional das generierte Porträt wieder in das Originalbild ein und ermöglicht die Steuerung spezifischer Gesichtsregionen wie Augen und Mund.
Diese Module sind effizient gestaltet und arbeiten zusammen, um eine hochwertige, steuerbare LivePortrait-Animation zu ermöglichen.
Wie man ComfyUI LivePortrait verwendet
Dank Knoten und Workflow ist das Erstellen realistischer Porträtanimationen in ComfyUI jetzt einfacher. Im Folgenden finden Sie eine Aufschlüsselung der Hauptkomponenten und Parameter seines ComfyUI LivePortrait-Workflows.
Wichtige Schritte des ComfyUI LivePortrait Img2Vid-Workflows
1. Laden der Live Portrait-Modelle
- Fügen Sie den "DownloadAndLoadLivePortraitModels"-Knoten hinzu
- Stellen Sie die Präzision auf auto oder fp16 für die beste Leistung ein
2. Wählen Sie den Gesichtserkennungsdetektor für LivePortrait
- Sie haben die Wahl zwischen den Knoten "LivePortraitLoadCropper" (InsightFace) und "LivePortraitLoadMediaPipeCropper"
- InsightFace ist genauer, hat aber eine nicht-kommerzielle Lizenz, während MediaPipe auf der CPU schneller, aber weniger genau ist
- Beide geben einen "cropper" aus, der zur Erkennung und zum Zuschneiden von Gesichtern verwendet wird
3. Laden und Vorverarbeiten des Quellbilds für LivePortrait
- Laden Sie Ihr Quellporträtbild mit dem "Load Image"-Knoten
- Ändern Sie die Größe auf 512x512 mit dem "ImageResize"-Knoten
- Verbinden Sie das Bild mit geänderter Größe mit einem "LivePortraitCropper"-Knoten
- Verbinden Sie auch die "cropper"-Ausgabe Ihres ausgewählten Gesichtserkennungsdetektors mit diesem Knoten
- Wichtige Parameter im "LivePortraitCropper"-Knoten
"dsize": Dies legt die Ausgabeauflösung des zugeschnittenen Gesichtsbildes fest
- Standard ist 512, was bedeutet, dass das Gesicht auf 512x512 Pixel zugeschnitten wird
- Höhere Werte schneiden das Gesicht in höherer Auflösung zu, können aber langsamer zu verarbeiten sein
- Niedrigere Werte sind schneller, verlieren aber möglicherweise einige Details
"scale": Dies steuert, wie stark das Gesicht zugeschnitten wird
- Standard ist 2.3, höhere Werte zoomen näher an das Gesicht heran, niedrigere Werte umfassen mehr vom Kopf/Hintergrund
- Sie möchten dies so anpassen, dass der Zuschnitt das gesamte Gesicht und etwas Hintergrund umfasst, aber nicht zu viel zusätzlichen Raum
- Ein guter Gesichtszuschnitt ist wichtig, damit der Bewegungstransfer gut funktioniert
- Typische Werte liegen zwischen 1.8 und 2.5, abhängig von der Rahmung des Quellbildes
"face_index": Wenn mehrere Gesichter im Bild erkannt werden, wählt dies aus, welches zugeschnitten werden soll
- Standard ist 0, was das erste erkannte Gesicht auswählt
- Erhöhen Sie dies, wenn Sie ein anderes Gesicht im Bild auswählen möchten
- Erkannte Gesichter werden basierend auf der Einstellung "face_index_order" (Standard ist von groß nach klein) geordnet
"vx_ratio" und "vy_ratio" (Optional): Diese ermöglichen es Ihnen, den Zuschnitt vertikal (vy) oder horizontal (vx) zu verschieben
- Werte reichen von -1 bis 1
- Beispielsweise verschiebt das Einstellen von vy auf 0.1 den Zuschnitt um 10% der Bildgröße nach oben
- Dies kann hilfreich sein, wenn der automatische Zuschnitt leicht fehl ausgerichtet ist
"face_index_order": Dies legt fest, wie erkannte Gesichter geordnet werden, wenn sie mit face_index ausgewählt werden
- Standard ist "large-small", was von groß nach klein ordnet
- Kann auch von links nach rechts, von oben nach unten usw. geordnet werden
- Dies ist nur relevant, wenn Sie mehrere Gesichter in Ihrem Bild haben
4. Laden und Vorverarbeiten des Fahrvideos für LivePortrait
- Laden Sie Ihr Fahrvideo mit dem "VHS_LoadVideo"-Knoten
- Passen Sie die Anzahl der Frames mit der "frame_load_cap"-Primitive an
- Ändern Sie die Größe der Videoframes auf 480x480 mit einem "GetImageSizeAndCount"-Knoten
- Sie können die Fahrvideoframes optional mit einem weiteren "LivePortraitCropper"-Knoten zuschneiden
5. Anwenden des Bewegungstransfers für LivePortrait
- Fügen Sie den "LivePortraitProcess"-Knoten hinzu
- Verbinden Sie die geladene Pipeline, die Zuschnittsinformationen des Quellbildes, das zugeschnittene Quellbild und die Fahrframes mit dem "LivePortraitProcess"-Knoten
- Wichtige Parameter im "LivePortraitProcess"-Knoten
"lip_zero": Wenn aktiviert, werden die Lippenparameter auf null gesetzt, wenn sie unter einen bestimmten Schwellenwert fallen
- Dies kann helfen, unnatürliche Lippenbewegungen zu reduzieren und die Lippensynchronisation zu verbessern
- Es wird empfohlen, dies zu aktivieren, es sei denn, Sie möchten alle Lippenbewegungen beibehalten
"lip_zero_threshold": Dies legt den Schwellenwert fest, unter dem Lippenparameter auf null gesetzt werden, wenn "lip_zero" aktiviert ist
- Standard ist 0.03, höhere Werte setzen mehr Lippenbewegungen auf null, niedrigere Werte bewahren mehr
- Passen Sie dies an, wenn Sie ändern möchten, wie viel Lippenbewegung unterdrückt wird
"stitching": Wenn aktiviert, wird das animierte Gesicht mittels eines Stitching-Prozesses wieder in das Originalbild eingefügt
- Dies kann helfen, einen nahtloseren Übergang zwischen dem animierten Gesicht und dem Hintergrund zu schaffen
- Es wird empfohlen, dies zu aktivieren, um die natürlichsten Ergebnisse zu erzielen
"delta_multiplier": Dies skaliert die Bewegungsparameter mit einem Multiplikator
- Standard ist 1.0, höhere Werte verstärken die Bewegung, niedrigere Werte verringern sie
- Kann verwendet werden, um die Gesamtintensität der Gesichtsbewegung anzupassen
- Typische Werte liegen zwischen 0.8 und 1.5, abhängig vom gewünschten Effekt
"mismatch_method": Dies legt fest, wie der Workflow mit Unterschieden zwischen der Anzahl der Quell- und Fahrframes umgeht
- Optionen sind "constant", "cycle", "mirror" und "cut"
- "constant" hält am letzten Frame, "cycle" wiederholt sich, "mirror" spielt vorwärts und dann rückwärts, "cut" stoppt
- Standard ist "constant", ändern Sie dies, wenn Sie ein anderes Verhalten wünschen, wenn das Fahrvideo länger oder kürzer als die Quelle ist
"relative_motion_mode": Dies steuert, wie Bewegung vom Fahrvideo auf das Quellbild übertragen wird
- Optionen sind "relative", "source_video_smoothed", "relative_rotation_only", "single_frame" und "off"
- "relative" ist der Standard und verwendet relative Bewegungstransfer
- "off" deaktiviert den Bewegungstransfer vollständig
- Experimentieren Sie mit verschiedenen Modi, um herauszufinden, welcher für Ihren speziellen Anwendungsfall die besten Ergebnisse liefert
"driving_smooth_observation_variance": Dies steuert die Glätte der Fahrbewegung, wenn der "source_video_smoothed" Bewegungsmodus verwendet wird
- Höhere Werte glätten die Bewegung mehr, niedrigere Werte bewahren mehr der ursprünglichen Bewegung
- Standard ist 0.000003, passen Sie dies an, wenn Sie die Glätte der übertragenen Bewegung ändern möchten
6. Ergebnis zusammensetzen (Optional) für LivePortrait
- Um das animierte Gesicht wieder in das Quellbild einzufügen, verwenden Sie den "LivePortraitComposite"-Knoten
- Verbinden Sie das Original-Quellbild, das zugeschnittene animierte Bild, die LivePortrait-Ausgabedaten und eine optionale Maske
- Dies gibt vollständige Frames mit dem animierten Gesicht aus, das eingefügt wurde
7. Retargeting konfigurieren (Optional) für LivePortrait
- Für eine feinere Kontrolle über Augen und Lippen verwenden Sie den "LivePortraitRetargeting"-Knoten
- Aktivieren Sie das Retargeting für Augen und/oder Lippen und passen Sie deren Multiplikatoren an
- Verbinden Sie die Retargeting-Informationen mit "LivePortraitProcess"
Bitte beachten Sie, dass das Insightface-Modell in diesem Workflow erforderlich ist. Das Insightface-Modell (https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip) ist nicht-kommerziell lizenziert.
Wenn Sie an LivePortrait Vid2Vid interessiert sind, verwenden Sie bitte