Back to rankings

GVCLab/PersonaLive

Pythonarxiv.org/abs/2512.11253

[CVPR 2026] PersonaLive! : Expressive Portrait Image Animation for Live Streaming

cvprcvpr2026talking-headvideo-generation
Star Growth
Stars
3.4k
Forks
487
Weekly Growth
โ€”
Issues
31
2k2.5k3k
Dec 25Feb 26May 26Jul 26
ArtifactsPyPIpip install personalive
README
PersonaLive

Expressive Portrait Image Animation for Live Streaming

Zhiyuan Li1,2,3 ยท Chi-Man Pun1,๐Ÿ“ช ยท Chen Fang2 ยท Jue Wang2 ยท Xiaodong Cun3,๐Ÿ“ช

1 University of Macau ย ย  2 Dzine.ai ย ย  3 GVC Lab, Great Bay University

GitHub

highlight

ย ย 

๐Ÿ“‹ TODO

  • If you find PersonaLive useful or interesting, please give us a Star๐ŸŒŸ! Your support drives us to keep improving.
  • Fix bugs (If you encounter any issues, please feel free to open an issue or contact me! ๐Ÿ™)
  • [2026.05.15] ๐Ÿ”ฅ Release training code.
  • [2026.02.21] ๐Ÿฅณ PersonaLive is accepted by CVPR2026 ๐ŸŽ‰.
  • [2025.12.29] ๐Ÿ”ฅ Enhance WebUI (Support reference image replacement).
  • [2025.12.22] ๐Ÿ”ฅ Supported streaming strategy in offline inference to generate long videos on 12GB VRAM!
  • [2025.12.17] ๐Ÿ”ฅ ComfyUI-PersonaLive is now supported! (Thanks to @okdalto)
  • [2025.12.15] ๐Ÿ”ฅ Release paper!
  • [2025.12.12] ๐Ÿ”ฅ Release inference code, config, and pretrained weights!

โš–๏ธ Disclaimer

  • This project is released for academic research only.
  • Users must not use this repository to generate harmful, defamatory, or illegal content.
  • The authors bear no responsibility for any misuse or legal consequences arising from the use of this tool.
  • By using this code, you agree that you are solely responsible for any content generated.

โš™๏ธ Framework

Image 1

We present PersonaLive, a real-time and streamable diffusion framework capable of generating infinite-length portrait animations.

๐Ÿš€ Getting Started

๐Ÿ›  Installation

# clone this repo
git clone https://github.com/GVCLab/PersonaLive
cd PersonaLive

# Create conda environment
conda create -n personalive python=3.10
conda activate personalive

# Install packages with pip
pip install -r requirements_base.txt

โฌ Download weights

Option 1: Download pre-trained weights of base models and other components (sd-image-variations-diffusers and sd-vae-ft-mse). You can run the following command to download weights automatically:

python tools/download_weights.py

Option 2: Download pre-trained weights into the ./pretrained_weights folder from one of the below URLs:

Finally, these weights should be organized as follows:

pretrained_weights
โ”œโ”€โ”€ onnx
โ”‚   โ”œโ”€โ”€ unet_opt
โ”‚   โ”‚   โ”œโ”€โ”€ unet_opt.onnx
โ”‚   โ”‚   โ””โ”€โ”€ unet_opt.onnx.data
โ”‚   โ””โ”€โ”€ unet
โ”œโ”€โ”€ personalive
โ”‚   โ”œโ”€โ”€ denoising_unet.pth
โ”‚   โ”œโ”€โ”€ motion_encoder.pth
โ”‚   โ”œโ”€โ”€ motion_extractor.pth
โ”‚   โ”œโ”€โ”€ pose_guider.pth
โ”‚   โ”œโ”€โ”€ reference_unet.pth
โ”‚   โ””โ”€โ”€ temporal_module.pth
โ”œโ”€โ”€ sd-vae-ft-mse
โ”‚   โ”œโ”€โ”€ diffusion_pytorch_model.bin
โ”‚   โ””โ”€โ”€ config.json
โ”œโ”€โ”€ sd-image-variations-diffusers
โ”‚   โ”œโ”€โ”€ image_encoder
โ”‚   โ”‚   โ”œโ”€โ”€ pytorch_model.bin
โ”‚   โ”‚   โ””โ”€โ”€ config.json
โ”‚   โ”œโ”€โ”€ unet
โ”‚   โ”‚   โ”œโ”€โ”€ diffusion_pytorch_model.bin
โ”‚   โ”‚   โ””โ”€โ”€ config.json
โ”‚   โ””โ”€โ”€ model_index.json
โ””โ”€โ”€ tensorrt
    โ””โ”€โ”€ unet_work.engine

๐ŸŽž๏ธ Offline Inference

Run offline inference with the default configuration:

python inference_offline.py
  • -L: Max number of frames to generate. (Default: 100)
  • --use_xformers: Enable xFormers memory efficient attention. (Default: True)
  • --stream_gen: Enable streaming generation strategy. (Default: True)
  • --reference_image: Path to a specific reference image. Overrides settings in config.
  • --driving_video: Path to a specific driving video. Overrides settings in config.

โš ๏ธ Note for RTX 50-Series (Blackwell) Users: xformers is not yet fully compatible with the new architecture. To avoid crashes, please disable it by running:

python inference_offline.py --use_xformers False

๐Ÿ“ธ Online Inference

๐Ÿ“ฆ Setup Web UI

# install Node.js 18+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install 18

source web_start.sh

๐ŸŽ๏ธ Acceleration (Optional)

Converting the model to TensorRT can significantly speed up inference (~ 2x โšก๏ธ). Building the engine may take about 20 minutes depending on your device. Note that TensorRT optimizations may lead to slight variations or a small drop in output quality.

# Install packages with pip
pip install -r requirements_trt.txt

# src/models/motion_encoder/FAN_temporal_feature_extractor.py
self.pos_embed.pos_embed.requires_grad = False

# Converting the model to TensorRT
python torch2trt.py

๐Ÿ’ก PyCUDA Installation Issues: If you encounter a "Failed to build wheel for pycuda" error during the installation above, please follow these steps:

# Install PyCUDA manually using Conda (avoids compilation issues):
conda install -c conda-forge pycuda "numpy<2.0"

# Open requirements_trt.txt and comment out or remove the line "pycuda==2024.1.2"

# Install other packages with pip
pip install -r requirements_trt.txt

# Converting the model to TensorRT
python torch2trt.py

โš ๏ธ The provided TensorRT model is from an H100. We recommend ALL users (including H100 users) re-run python torch2trt.py locally to ensure best compatibility.

โ–ถ๏ธ Start Streaming

python inference_online.py --acceleration none (for RTX 50-Series) or xformers or tensorrt

Then open http://0.0.0.0:7860 in your browser. (*If http://0.0.0.0:7860 does not work well, try http://localhost:7860)

How to use: Upload Image โžก๏ธ Fuse Reference โžก๏ธ Start Animation โžก๏ธ Enjoy! ๐ŸŽ‰

PersonaLive

Regarding Latency: Latency varies depending on your device's computing power. You can try the following methods to optimize it:

  1. Lower the "Driving FPS" setting in the WebUI to reduce the computational workload.
  2. You can increase the multiplier (e.g., set to num_frames_needed * 4 or higher) to better match your device's inference speed. https://github.com/GVCLab/PersonaLive/blob/6953d1a8b409f360a3ee1d7325093622b29f1e22/webcam/util.py#L73

๐Ÿš„ Model Training

PersonaLive training is organized into three stages. Approximate training time on 8x H100 with default configs: Stage 1 ~13h, Stage 2 ~15h, Stage 3 ~20h.

1๏ธโƒฃ Environment setup

Install base dependencies first (see installation section), then install training-only packages:

pip install -r requirements_train.txt

If you use multi-GPU or multi-node training, configure Accelerate once before launching training:

accelerate config

2๏ธโƒฃ Data preparation

Your dataset should contain a videos directory and a matching boxes directory:

Datasets
โ”œโ”€โ”€ VFHQ
โ”‚   โ”œโ”€โ”€ videos
โ”‚   โ”‚   โ”œโ”€โ”€ example1.mp4
โ”‚   โ”‚   โ”œโ”€โ”€ example2.mp4
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ””โ”€โ”€ boxes
โ”‚       โ”œโ”€โ”€ example1.pt
โ”‚       โ”œโ”€โ”€ example2.pt
โ”‚       โ””โ”€โ”€ ...
โ””โ”€โ”€ ...

Preprocessing example:

# 1) Extract face / eye / mouth boxes from each frame
python tools/get_boxes.py --video_dir ./Datasets/VFHQ/videos --save_dir ./Datasets/VFHQ/boxes --workers 8

# 2) Generate meta json: [{"video_path": ".../videos/xxx.mp4"}, ...]
python tools/extract_meta_info.py --root_path ./Datasets/VFHQ --dataset_name VFHQ

Then set data.meta_paths in each training config:

data:
  meta_paths:
    - "./data/VFHQ_meta.json"
    - "./data/OtherDataset_meta.json"

3๏ธโƒฃ Download weights

Download the training initialization weights: X-NeMo, pose_guider, and stylegan2_discriminator.

pretrained_weights
โ”œโ”€โ”€ xnemo
โ”‚   โ”œโ”€โ”€ xnemo_motion_encoder.pth
โ”‚   โ”œโ”€โ”€ xnemo_denoising_unet.pth
โ”‚   โ”œโ”€โ”€ xnemo_reference_unet.pth
โ”‚   โ””โ”€โ”€ xnemo_temporal_module.pth
โ”œโ”€โ”€ sd-vae-ft-mse
โ”‚   โ”œโ”€โ”€ diffusion_pytorch_model.bin
โ”‚   โ””โ”€โ”€ config.json
โ”œโ”€โ”€ sd-image-variations-diffusers
โ”‚   โ”œโ”€โ”€ image_encoder
โ”‚   โ”‚   โ”œโ”€โ”€ pytorch_model.bin
โ”‚   โ”‚   โ””โ”€โ”€ config.json
โ”‚   โ”œโ”€โ”€ unet
โ”‚   โ”‚   โ”œโ”€โ”€ diffusion_pytorch_model.bin
โ”‚   โ”‚   โ””โ”€โ”€ config.json
โ”‚   โ””โ”€โ”€ model_index.json
โ”œโ”€โ”€ pose_guider.pth
โ””โ”€โ”€ stylegan2_discriminator_ffhq512.pth

4๏ธโƒฃ Training workflow

Stage 1: Image-level warm-up

Run:

accelerate launch train_stage1.py --config ./configs/train/personalive_stage1.yaml

Default output folder: ./exp_output/personalive_stage1/

Stage 2: Image-level adversarial refinement

Update configs/train/personalive_stage2.yaml to point to Stage 1 outputs:

motion_encoder_path: './exp_output/personalive_stage1/motion_encoder-xxxxx.pth'
denoising_unet_path: './exp_output/personalive_stage1/denoising_unet-xxxxx.pth'
reference_unet_path: './exp_output/personalive_stage1/reference_unet-xxxxx.pth'
pose_guider_path: './exp_output/personalive_stage1/pose_guider-xxxxx.pth'

Run:

accelerate launch train_stage2.py --config ./configs/train/personalive_stage2.yaml

Default output folder: ./exp_output/personalive_stage2/

Stage 3: Temporal module fine-tuning for streaming

Update configs/train/personalive_stage3.yaml to point to Stage 2 outputs:

motion_encoder_path: './exp_output/personalive_stage2/motion_encoder-xxxxx.pth'
denoising_unet_path: './exp_output/personalive_stage2/denoising_unet-xxxxx.pth'
reference_unet_path: './exp_output/personalive_stage2/reference_unet-xxxxx.pth'
pose_guider_path: './exp_output/personalive_stage2/pose_guider-xxxxx.pth'
discriminator_path: './exp_output/personalive_stage2/discriminator-xxxxx.pth'

Run:

accelerate launch train_stage3.py --config ./configs/train/personalive_stage3.yaml

Default output folder: ./exp_output/personalive_stage3/

๐Ÿ“š Community Contribution

Special thanks to the community for providing helpful setups! ๐Ÿฅ‚

  • Windows + RTX 50-Series Guide: Thanks to @dknos for providing a detailed guide on running this project on Windows with Blackwell GPUs.

  • TensorRT on Windows: If you are trying to convert TensorRT models on Windows, this discussion might be helpful. Special thanks to @MaraScott and @Jeremy8776 for their insights.

  • ComfyUI: Thanks to @okdalto for helping implement the ComfyUI-PersonaLive support.

  • Useful Scripts: Thanks to @suruoxi for implementing download_weights.py, and to @andchir for adding audio merging functionality.

๐ŸŽฌ More Results

๐Ÿ‘€ Visualization results

๐Ÿคบ Comparisons

โญ Citation

If you find PersonaLive useful for your research, welcome to cite our work using the following BibTeX:

@article{li2025personalive,
  title={PersonaLive! Expressive Portrait Image Animation for Live Streaming},
  author={Li, Zhiyuan and Pun, Chi-Man and Fang, Chen and Wang, Jue and Cun, Xiaodong},
  journal={arXiv preprint arXiv:2512.11253},
  year={2025}
}

โค๏ธ Acknowledgement

This code is mainly built upon Moore-AnimateAnyone, X-NeMo, StreamDiffusion, RAIN and LivePortrait, thanks to their invaluable contributions.

Related repositories
amusi/CVPR2026-Papers-with-Code

CVPR 2026 ่ฎบๆ–‡ๅ’Œๅผ€ๆบ้กน็›ฎๅˆ้›†

cvprcvpr2020
22.8k2.8k
amusi/CVPR2025-Papers-with-Code

CVPR 2025 ่ฎบๆ–‡ๅ’Œๅผ€ๆบ้กน็›ฎๅˆ้›†

cvprcvpr2020
19.1k2.6k
amusi/CVPR2024-Papers-with-Code

CVPR 2024 ่ฎบๆ–‡ๅ’Œๅผ€ๆบ้กน็›ฎๅˆ้›†

cvprcvpr2020
18.7k2.6k
zziz/pwc

This repository is no longer maintained.

machine-learningpaper
15.3k2.4k
guanyingc/latex_paper_writing_tips

Tips for Writing a Research Paper using LaTeX

TeXlatexpaper
3.8k413
mkocabas/VIBE

Official implementation of CVPR2020 paper "VIBE: Video Inference for Human Body Pose and Shape Estimation"

PythonPyPIOthervideo-pose-estimation3d-pose-estimation
arxiv.org/abs/1912.05656
3.2k577
ChenLiu-1996/figures4papers

My Python scripts to make high-quality figures for publications in top AI conferences and journals.

PythonPyPIfigurespython
chenliu-1996.github.io
2.8k167
ZiqiaoPeng/SyncTalk

[CVPR 2024] This is the official source for our paper "SyncTalk: The Devil is in the Synchronization for Talking Head Synthesis"

PythonPyPIOthertalking-face-generationtalking-head
ziqiaopeng.github.io/synctalk/
1.6k197
jeffffffli/HybrIK

Official code of "HybrIK: A Hybrid Analytical-Neural Inverse Kinematics Solution for 3D Human Pose and Shape Estimation", CVPR 2021

PythonPyPIMIT License3d-pose-estimationsmpl
1.6k188
niessner/BundleFusion

[Siggraph 2017] BundleFusion: Real-time Globally Consistent 3D Reconstruction using Online Surface Re-integration

C++Otherreconstructioncomputervision
graphics.stanford.edu/projects/bundlefusion/
1.6k355
DWCTOD/CVPR2024-Papers-with-Code-Demo

ๆ”ถ้›† CVPR ๆœ€ๆ–ฐ็š„ๆˆๆžœ๏ผŒๅŒ…ๆ‹ฌ่ฎบๆ–‡ใ€ไปฃ็ ๅ’Œdemo่ง†้ข‘็ญ‰๏ผŒๆฌข่ฟŽๅคงๅฎถๆŽจ่๏ผCollect the latest CVPR (Conference on Computer Vision and Pattern Recognition) results, including papers, code, and demo videos, etc., and welcome recommendations from everyone!

Apache License 2.0cvpr2021cvpr
1.4k154
zhaoyang97/Paper-Notes

๐Ÿ“š ๆ•ฐๅƒ็ฏ‡ AIใ€LLMใ€NLPใ€CV ้กถไผš่ฎบๆ–‡่งฃ่ฏป๏ผŒๆฏ็ฏ‡ 5 ๅˆ†้’Ÿ่ฏปๆ‡‚ๆ ธๅฟƒๆ€ๆƒณใ€‚

PythonPyPIOtherpaper-notespaper-reading
papernotes.org
1.2k52