Animate Face (face vid2vid) icon

Animate Face (face vid2vid)

1 VersionVisualize

Drives a static reference face with the expressions and pose of an incoming video stream using face-vid2vid. The reference face stays the same identity; the driver frames supply the motion.

How it fits

{{type:Image}} (driver frames) --> {{component:animate_face_face_vid2vid}} --> {{type:Image}}
                                          |
                                          +-- reference identity bound via {{param:source_face}} file

Pick this when one fixed identity (a single source image) should be animated by a live or recorded video of a different face — virtual avatars, reenactment, talking-head demos. A GPU is strongly preferred. auto uses CUDA when available and otherwise runs on CPU; cuda also falls back to CPU with a warning if CUDA is unavailable.

Typical backends

  • Live browser avatar: {{component:input_browser_webcam}} -> {{component:animate_face_face_vid2vid}} -> {{component:output_browser_stream}}.
  • Camera-driven avatar to file: {{component:input_camera}} -> {{component:animate_face_face_vid2vid}} -> {{component:output_video_file}}.
  • Pre-recorded reenactment: {{component:input_video_file}} -> {{component:animate_face_face_vid2vid}} -> {{component:output_video_file}}.
  • Remote video URL reenactment: {{component:input_video_url_ffmpeg}} -> {{component:animate_face_face_vid2vid}} -> {{component:output_browser_stream}}.
  • Chained identity swap: {{component:input_camera}} -> {{component:animate_face_face_vid2vid}} -> {{component:swap_faces_insightface}} for an additional swap on the animated frame.

Caveats

  • The bound file is the REFERENCE identity (identity to preserve). The streaming {{type:Image}} is the DRIVER (expressions and pose to copy). Swapping the two roles produces meaningless output.
  • The bound path accepts a file OR a directory. When pointed at a directory, the worker scans for png / jpg / jpeg (case-insensitive) and picks the first match alphabetically; additional images are ignored with a printed warning.
  • The reference must be discoverable at startup; missing files cause the worker to exit during initialization, not at runtime.
  • When {{param:split}} is true, the worker emits a horizontal concat of [detected driver face | animated result], each resized to half the input width and full input height. The output frame matches the input width but the animation occupies only the right half.
  • When {{param:split}} is false and a face is detected, the worker emits only the 256x256 animated result. Downstream sinks must account for this fixed model output size.
  • When {{param:split}} is false and the driver frame contains no detectable face, the worker silently emits the "Face not detected" placeholder instead of erroring. Downstream code that assumes an always-animated frame must detect this case.
  • The model weights are downloaded from Google Drive on first run and reused after the cache is warm; first-run cold start includes the download time.
  • Input frames are converted to BGR internally; callers do not need to colour-convert upstream.

Versions

  • 7e22babddefaultlatestlinux/amd64

    live-test prerelease 2026-05-27T12:03:39Z