今天在 GitHub Trending 上看到一个有意思的项目:PersonaLive,一个由澳门大学、GVC Lab、Dzine.ai 等机构提出的实时可流式肖像动画扩散框架,支持从单张参考图和驱动视频生成无限长度的高表现力动态肖像视频,已被 CVPR 2026 接收。
一、项目概述
PersonaLive 的核心目标是解决现有肖像动画方案的几个痛点:
- 无法实时生成:大多数方案需要先生成完整视频再输出,无法做到直播场景下的实时驱动
- 视频长度受限:受限于 VAE 隐空间和显存,生成时长通常只有几秒
- 表情表现力不足:驱动信号单一,导致生成结果表情僵硬、头部运动单调
PersonaLive 通过以下核心设计解决了这些问题:
- 流式推理策略(Streaming Generation):将推理拆分为小块(chunk)依次生成,前一块的隐状态作为下一块的初始化,从而突破显存限制
- **时间模块(Temporal Module)**微调:在预训练 SD 的基础上,引入时序建模模块并分三阶段训练
- 实时 WebUI:提供摄像头实时驱动方案,支持 TensorRT 加速,约 2 倍推理加速
项目提供了完整的训练代码、推理代码、ComfyUI 插件和预训练权重(Hugging Face / ModelScope 均可下载)。
二、技术原理
2.1 整体架构
PersonaLive 的架构分为以下几个核心组件:
参考图像编码器(Reference UNet):使用 SD 的 Image Variations 模型(sd-image-variations-diffusers)对输入的参考肖像图进行编码,提取身份特征。
姿态引导器(Pose Guider):接收 MediaPipe Face Mesh 提取的 21 个关键点热图,将其映射为与隐特征相同维度的引导特征。
运动编码器(Motion Encoder):对驱动视频中每一帧的人脸 patch 提取运动隐表示,与参考图像特征通过 Mutual Self-Attention 进行融合。
时序去噪 UNet(3D UNet):在 SD UNet 基础上引入时序注意力层,处理 (B, C, T, H, W) 形状的隐变量,进行时序去噪。
关键代码片段——推理入口(inference_offline.py):
from src.pipelines.pipeline_pose2vid import Pose2VideoPipeline_Stream
pipe = Pose2VideoPipeline_Stream(
vae=vae,
image_encoder=image_enc,
reference_unet=reference_unet,
denoising_unet=denoising_unet,
motion_encoder=motion_encoder,
pose_encoder=pose_encoder,
pose_guider=pose_guider,
scheduler=scheduler,
)
# 流式生成,支持 12GB 显存生成任意长度视频
gen_video = pipe(
ori_pose_images, ref_image_pil,
dri_faces, ref_face_pil,
width, height, len(dri_faces),
num_inference_steps=4,
guidance_scale=1.0,
temporal_window_size=4,
temporal_adaptive_step=4,
).videos
流式生成的关键参数:
temporal_window_size:每次处理的帧数窗口temporal_adaptive_step:每步滑动帧数
2.2 三阶段训练策略
PersonaLive 的训练分为三个阶段,层层递进:
| 阶段 | 目标 | 主要策略 | 约耗时(8×H100) |
|---|---|---|---|
| Stage 1 | 图像级预热 | 学习单帧动画重建,固定参考分支 | ~13h |
| Stage 2 | 对抗细化 | 引入 StyleGAN2 判别器提升图像质量 | ~15h |
| Stage 3 | 时序微调 | 引入时间模块,支持连续流式生成 | ~20h |
Stage 3 是实现无限长度生成的关键——时间模块通过时序注意力机制,让模型学习跨帧一致性,从而在滑动窗口生成时保证时序连贯。
2.3 TensorRT 加速
官方提供了完整的 TensorRT 转换脚本 torch2trt.py,可将 UNet 转换为 TensorRT 引擎(约 2 倍加速)。转换后仅需 H100 级别的 GPU 即可达到实时(25fps)。
# 核心转换逻辑
from src.modeling.framed_models import unet_work
model = unet_work(
pose_guider, motion_encoder,
denoising_unet, vae, scheduler, timesteps,
)
# 导出 ONNX → 优化 → 生成 TensorRT Engine
⚠️ 注意:官方提供的 TensorRT 模型基于 H100 编译,所有用户都建议本地重新转换以获得最佳兼容性。
三、安装与快速开始
3.1 环境要求
- Python 3.10
- CUDA 11.8+ / RTX 3090 及以上
- 至少 12GB 显存(流式模式)推荐 24GB
- conda / venv 环境管理
3.2 安装步骤
# 克隆仓库
git clone https://github.com/GVCLab/PersonaLive
cd PersonaLive
# 创建 conda 环境
conda create -n personalive python=3.10
conda activate personalive
# 安装基础依赖
pip install -r requirements_base.txt
# 下载预训练权重(自动下载脚本)
python tools/download_weights.py
RTX 50 系列(Blackwell 架构)用户注意:xformers 尚未完全适配 Blackwell,需显式关闭:
python inference_offline.py --use_xformers False
3.3 最简运行示例
离线推理(生成视频):
python inference_offline.py
# 或自定义帧数和参数
python inference_offline.py -L 200 --use_xformers False
实时 WebUI 推理:
# 安装 Node.js 18+
source web_start.sh
# 浏览器打开 http://localhost:7860
四、使用方法与进阶
4.1 自定义参考图与驱动视频
python inference_offline.py \
--reference_image ./path/to/your_ref.jpg \
--driving_video ./path/to/your_video.mp4 \
-L 100
4.2 ComfyUI 集成
社区贡献的 ComfyUI-PersonaLive 插件支持在 ComfyUI 中使用 PersonaLive,无需命令行操作,适合设计师用户。
4.3 训练自定义数据集
项目支持 VFHQ 等数据集训练,三阶段配置均在 configs/train/ 下:
# Stage 1
accelerate launch train_stage1.py --config ./configs/train/personalive_stage1.yaml
# Stage 2(需更新权重路径指向 Stage 1 输出)
accelerate launch train_stage2.py --config ./configs/train/personalive_stage2.yaml
# Stage 3(时序微调)
accelerate launch train_stage3.py --config ./configs/train/personalive_stage3.yaml
五、常见问题与解决方案
Q:PyCUDA 安装失败,编译报错?
# 使用 conda 安装避免编译问题
conda install -c conda-forge pycuda "numpy<2.0"
pip install -r requirements_trt.txt
Q:WebUI 打开后摄像头没有反应?
- 检查 Node.js 版本是否 >= 18
- 部分浏览器(如 Firefox)需要使用
bytes_to_tensor路径,确保使用最新版本
Q:生成视频闪烁严重?
- 适当增大
temporal_window_size(默认 4),但会增加显存占用 - 确保驱动视频质量清晰,人脸区域占比合理
Q:RTX 50 系列推理崩溃?
- 确认使用
--use_xformers False参数 - 如 TensorRT 转换失败,建议使用
none加速模式
六、总结
PersonaLive 是一个工程完成度非常高的肖像动画开源项目,涵盖从模型训练到部署推理的完整链路。其流式推理策略解决了 Diffusion 模型显存受限的问题,CVPR 2026 的学术背书也证明了其创新性。对于有实时驱动、直播Avatar、数字人等需求的用户,这是一个值得关注和尝试的项目。
项目主页:https://github.com/GVCLab/PersonaLive
论文:ArXiv 2512.11253
预训练模型:Hugging Face | ModelScope