Hallo2: Long-Duration and High-Resolution Audio-Driven Portrait Image Animation
讲贡献: 1) 生成长视频, 无appearance drift和时间伪影; 2) 4K分辨率 3) 语义文本标签作为text输入. 总结: 结果显示在长视频Portrait生成领域实现了SOTA效果, 多样可控.
介绍
定义Portrait image Animation: 从reference portrait生成animate video, 使用多种音频信号如:audio, facial landmark or textual description. 这种技术在广泛的引用场景: 高质量电影, 动画产业, 虚拟助手, 可行化用户服务, 交互式教育, 游戏领域. diffusion-based 推动了这一领域的发展.
介绍了先前的几种方法, VASA-1, EMO, AniPortrait, EchoMimic...
首先是长视频生成, 当前有两种方法: 1) 先将一段长视频切分成许多音频片段, 平行生成, 然后在相邻帧和切片运用appearance和motion约束[需要维护appearance和motion的最小差异, 阻碍了多样性的发展, (读者注)用波浪线比喻每一个片段, 为了将所有clip连都一起, 线条趋于保守平缓]; 2) 将前序帧当作条件指导生成[累计误差].
第二是4K分辨率生成, 第三是增强语义控制, 具体方法在method小节再看.
相关工作
Video Diffusion Models
Stable Video Diffusion利用预训练, 微调和数据筛选增强视频生成的质量. Make-A-Video用text-to-image生成技术优化text-to-video的生成, 不需要配对的数据. MagicVideo用3D UNet降低计算量. AnimateDiff通过motion module赋予个性化text-to-image模型animate的能力(wok, 这个总结的nb), VideoComposer集成了motion vectors来动态指导, VideoCrafter和VideoComposer的方法一样但开源了模型:) CogVideoX增强了文本和视频的对齐, MagicTime用metamorphic time-lapse model编码了物理知识.
Portrait Image Animation
(读者注:Portrait Image AnimateDiff和Talking Head Generation在我看来是同一个任务, 原文提到"Significant progress has been made in audio-driven talking head generation and portrait image animation")
LipSyncExpert通过辨别器和novel beachmark改善了嘴唇对齐的准确率, SadRalker和VividTalk使用3D motion 建模和头部pose生成增强表达和时间同步, DiffTalk和DreamTalk改善了生成的appearance, 保持身份一致性, VASA-1和AniTalk集成了精细的面部表达和通用的motion表示, 生成有生活气息, 和谐的animation. 但是生成长视频一直是一个挑战.
Long-Term and High-Resolution Video Generation
Flexible Diffusion Modeling和Gen-L-Video框架在无需额外训练的基础上改善了时间协调性. SEINE和StoryDiffusion介绍generative transition和语义motion预测器支持平滑的场景改变和visual storytelling. StreamingT2V和MovieDreamer使用自回归策略和Diffusion渲染扩展叙事视频, 支持无缝场景切换...
使用学习到的字典离散先验表示在图像恢复中被证明很高效. VQ-VAE通过介绍vecter quantization解决了posterior collapse, 是生成高分辨率的视频音频成为可能. 基于此, VQ-GAN基于Transformer和CNNs创造了一个conteext-rich的字典, 在条件image生成中达到SOTA效果. CodeFormer用codebook实现了blind face restoration.
Preliminaries
LDM, 加噪方法, 去噪loss, crossattn中qkv的计算, 条件表示.
method

Long Duration Animation
Patch-Drop Augmentation. 核心思想是腐蚀先前帧的appearance信息, 只保留motion cue, 确保模型使用参考图的特征来生成appearance, 只使用先前帧的时间动态信息.
关键是一个mask, 分成pxp个patch, 其中r比例的随机区域赋0, 其余区域赋1, 对先前帧做统一的mask.
Gaussian Noise Augmentation. 它说随着生成的进行, 先前的视频帧可能污染appearance或动作, 比如其中有一帧生成不太好, 这种影响会传播到相邻帧, 导致梯度增加, 放大伪影. 为了减轻这种影响, 他们在motion帧中加入高斯噪声, 增强denoiser克服污染的能力.
High-Resolution Enhancement
用了两种方法, codebook和时间层. codebook就一句话引用x论文中的方法, 时间层原理和motion module一样.
后面这个提取输入latent feature的两种方法没看懂, 后面专门去看看它应用的codebook这篇文章吧.
Textual Prompt Control
看上面的图吧, 比我讲要清楚.
network
网络结构自己看图. (wok, 我突然发现用Hallo2的代码很容易复现出EMO, 对于我现在的实验, 用Hallo2作为codebase比用 moore animate anyone要方便)
一阶段正常训练, 二阶段使用了patch drop和高斯噪声增强.
好困, 实验章节就不看了.
感受
它们真的很擅长调研, 思维模式是: 我要解决什么问题, 当前提出过哪些方案, 逐个尝试, 用在新模型上, 找效果最好的, 屡试不爽.
为什么Hallo3比Hallo2要火, 我觉得Hallo2更有学习价值. 为了支持4K生成, 他的方法和x-dance很相似, 在DiT中去学习面部表达收敛太慢了, 我进行降维, 用1D(token化)去表示面部动态, 在DiT只做生成.
高斯噪声增强这里有点在意, 数据增强可以提高模型抗干扰的能力, 虽然教程里见过, 但是在论文里第一次读到.