CVPR23_LFDM
CVPR2023 论文实现:给定一张照片,生成该人物的动态视频(表情、动作、手势)
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
CVPR2023 论文实现:给定一张照片,生成该人物的动态视频(表情、动作、手势)
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你上传一张人物照片,系统就能生成这个人点头、转身、微笑的连贯视频——这不是科幻,而是 2023 年 CVPR 论文 Conditional Image-to-Video Generation with Latent Flow Diffusion Models(LFDM)已经实现的技术。
来自 Snap Research 和清华大学的研究团队提出了一种全新的图像驱动视频生成范式:给定一张条件图片(比如一个人的正面照),LFDM 能够生成该人物做各种动作的动态视频。论文于 2023 年 3 月发布在 arXiv(2303.13744),并在 CVPR 2023 大会上正式发表。
LFDM 的核心创新在于 两阶段生成架构,将视频生成拆解为「表达学习」和「动作生成」两个独立模块:
LFAE 模块负责从视频序列中提取「表达特征」,即视频中人物的外貌和身份信息。它的核心任务是将原始视频帧映射到一个紧凑的潜空间表征,同时通过 光流(Optical Flow) 来建模帧与帧之间的运动信息。
具体来说,LFAE 采用了 Encoder-Decoder 结构,配合 3D 卷积 和 旋转位置编码(Rotary Embedding) 来捕获时空特征。光流信息作为辅助监督信号,引导网络学习到更具有表达力的人脸/人体表征。这种设计让 LFAE 能够将「外观」和「运动」解耦——外观信息编码到 AE 的 latent code 中,运动信息编码到 flow field 中。
DM 模块负责在给定条件图片(LFAE 编码的 latent 表征)的条件下,生成对应的光流序列。这是整个 pipeline 的核心生成器。
DM 采用的是 DDPM(Denoising Diffusion Probabilistic Models) 框架,通过逐步去噪的方式从随机噪声中生成连贯的光流序列。条件信息通过 Cross-Attention 机制注入扩散过程,让模型学会「什么样的动作应该对应什么样的外观」。
两阶段的输出再通过 LFAE 的 Decoder 重建为最终视频帧。整个流程可以理解为:先找对人(LFAE),再生成动作(DM)。
直接生成视频像素的难点在于高维度和时序一致性难以保证。光流(Optical Flow)描述的是两帧之间每个像素的运动向量,是一种紧凑、连续的中间表征。LFDM 的核心洞察是:光流空间比像素空间更适合扩散模型学习,因为光流具有更好的局部结构和连续性,而且生成光流再解码为视频可以保证像素级别的时序一致性。
LFDM 在三个人脸/人体视频数据集上进行了充分验证:
| 数据集 | 内容 | 难度 | 生成帧数 |
|---|---|---|---|
| MUG | 人脸表情视频 | 中等 | 40帧 |
| MHAD | 人体动作捕捉 | 较高 | 40帧 |
| NATOPS | 手部手势识别 | 高 | 40帧 |
MUG 数据集用于训练和测试人脸表情动画;MHAD(Berkeley Multimodal Human Action Database)包含多种人体动作;NATOPS 是航空手势识别数据集,对手势动作的精准度要求极高。实验表明,LFDM 在跨数据集泛化上也表现出色——用 MUG 训练的模型直接应用到 FaceForensics 数据集上仍能生成质量不错的结果。
项目采用模块化设计,代码组织清晰:
CVPR23_LFDM/
├── LFAE/ # Latent Flow Autoencoder 模块
│ ├── modules/ # 3D CNN、旋转位置编码等核心网络
│ ├── train.py # LFAE 训练脚本
│ └── test_flowautoenc_*.py # 各数据集测试脚本
├── DM/ # Diffusion Model 模块
│ ├── modules/ # U-Net 去噪网络、交叉注意力等
│ ├── train_video_flow_diffusion_*.py # 各数据集训练脚本
│ └── test_video_flow_diffusion_*.py # 各数据集测试脚本
├── config/ # YAML 配置文件(超参数、数据路径)
├── demo/ # 可运行演示脚本(demo_mug.py 等)
├── preprocessing/ # 数据集预处理脚本
└── requirements.txt # 依赖清单
核心依赖包括:
三个数据集均需预处理为固定格式:视频帧统一 resize 到 128×128,分辨率为 224×224 的人脸数据也需要 resize。预处理脚本(preprocessing/preprocess_*.py)负责将原始视频转换为项目所需的帧堆叠格式。
运行 demo/demo_mug.py 等脚本,输入单张图片 + 预训练模型路径,即可生成对应人物的动画视频。关键参数包括帧数(默认40帧)、输入分辨率(128×128)和条件缩放因子(cond_scale)。
LFDM 的两阶段潜空间设计为「图像驱动视频生成」提供了一个优雅且可解释的解决思路。将外观与运动解耦的核心洞察影响了后续多个工作(包括作者团队 2024 年的 CVPR 2024 后续工作 TI2V-Zero)。
代码采用 BSD-2-Clause 开源协议,为研究者提供了完整的训练、测试、推理流程,是视频生成领域极具参考价值的开源实现。截至目前,该项目在 GitHub 获得 471 Stars、42 Forks,在 latent diffusion video generation 细分领域具有较高的学术影响力。
LFDM 是一个高质量的 CVPR 2023 论文官方实现,专注于「以图生视频」任务。两阶段潜空间扩散架构(外观编码 + 动作生成)提供了一种清晰且有效的技术路径。项目代码结构完整、文档丰富,但属于研究级别代码,对硬件和数据集有一定要求,更适合 AI 研究者和工程师用于复现和改进。