内容提要
PersonaLive是澳门大学等机构提出的实时肖像动画方案,通过流式金字塔去噪使4步扩散仅需一次前向,实现无限长视频生成。它利用三条条件通路分别处理身份、姿态和表情,并采用TensorRT融合优化提速。训练分三阶段,代码和权重已开源。
延伸解读
流式去噪:把多步摊平成流水线
PersonaLive 的核心不是减少去噪步数,而是让不同噪声档的帧共享一次前向。它维护一个固定长度的窗口队列,每轮输入 4 帧、输出 4 帧,等效每帧只需 1/4 次 UNet 前向。这种软件流水线思路可迁移到其他扩散采样场景,吞吐量直接翻倍。
条件解耦:注入位置决定效果
身份、姿态、表情三条条件通路分别注入自注意力 KV、conv_in 残差和交叉注意力,互不挤占容量。表情单独走一路,维度仅 16,开销可忽略,但保证了挑眉、眨眼等细节不被头部运动冲掉。这种解耦到注入点的设计,比单纯分开编码更有效。
工程优化:从图融合到显存自环
TensorRT 导出时把 PoseGuider、MotEncoder、UNet3D、DDIM 一步、VAE 解码融合成一张图,并用 bind() 让滚动状态在显存自环,零拷贝。动态维度只留给参考特征序列,与抗漂移的追加上限对齐。这些优化省掉了大量 host 往返,是实时性的关键。
训练与推理对齐:流式方案不掉质量的前提
Stage 3 微调时序模块时,训练里复现了推理时的滑窗调度,让模型见过不同噪声档共存的分布。同时随机丢弃参考特征 token,逼模型不依赖参考图。训练和推理调度不一致,时序模块就学不到该学的东西,这是流式方案能保持质量的关键。
Q&A
PersonaLive是什么?它解决了什么问题?
PersonaLive是澳门大学、Dzine.ai和大湾区大学GVC Lab提出的实时肖像动画方案,被CVPR2026收录。它解决了肖像动画中质量和速度的矛盾,实现了实时、可流式、无限长度的视频生成,让一张照片加一个摄像头就能实时驱动照片中的人物做表情和转头。
PersonaLive如何实现4步扩散只跑一次前向?
PersonaLive采用流式金字塔去噪机制。它维护一个包含4个窗口的队列,每个窗口有4帧,分别处于不同的噪声档位(t=0, 333, 666, 999)。每轮将新帧加噪到t=999入队,然后将4个窗口拼接成16帧的批,跑一次UNet3D,DDIM让每个窗口按自己的timestep前进一档,最老的窗口到达t=0后出队解码。这样一次前向处理16帧,输出4帧,等效每帧只需1/4次UNet前向。
PersonaLive如何实现无限长视频生成?
PersonaLive通过恒定队列长度实现无限长视频生成。每轮输入4帧、输出4帧,队列长度不随时间增长,因此没有片段边界,也就没有拼接痕迹。
PersonaLive如何处理身份、姿态和表情?
PersonaLive将身份、姿态和表情分别通过三条独立的条件通路注入UNet:身份通过参考图编码后,以KV形式注入自注意力;姿态通过MotionExtractor提取关键点,绘制成彩色圆点图,经PoseGuider处理后加到conv_in输出;表情通过裁剪人脸区域,经MotEncoder编码成token,通过交叉注意力注入。三者互不干扰,保证了表情的丰富性。
PersonaLive如何防止身份漂移?
PersonaLive监控表情嵌入与历史特征的距离,当最小L2距离超过阈值17时,将当前帧的干净图再次通过Reference UNet,将得到的16层特征追加到KV bank中,作为额外的身份锚点。全程最多追加3次,防止KV无限膨胀。
PersonaLive的TensorRT优化具体做了什么?
PersonaLive将PoseGuider、MotEncoder、UNet3D、DDIM一步和VAE解码五个模块融合成一个nn.Module导出为一张TensorRT图,输入23个、输出6个。动态维度只留给参考特征的序列长度,并利用bind()将输出显存地址直接设为下一轮输入地址,实现零拷贝,减少host调用。官方称TensorRT加速约2倍。
PersonaLive的训练分哪几个阶段?
PersonaLive的训练分三个阶段:Stage 1图像级预热,随机timestep加噪预测ε,并强化人脸、眼、嘴区域的MSE;Stage 2四步蒸馏加对抗精修,固定时间表[999,666,333,0],损失包括MSE、LPIPS和StyleGAN2对抗损失;Stage 3时序模块微调,冻结其他模块,只训练temporal_modules,并复现推理时的滑窗调度。
PersonaLive的在线推理流程是怎样的?
在线推理时,浏览器端通过WebSocket上传摄像头帧(JPEG格式),FastAPI主进程只负责协议和队列,推理在子进程中进行。子进程凑够4帧触发一次前向,输出帧经VAE解码后转JPEG,通过asyncio队列推送,推送速率用EMA控制在10-30 FPS。控制面支持pause和reset,reset会清空bank并要求重新上传参考图。
PersonaLive的代码和权重在哪里可以获取?
PersonaLive的代码和权重已开源,仓库在GVCLab/PersonaLive,论文在arXiv:2512.11253,权重在HuggingFace和ModelScope上都有,ComfyUI也有社区实现。