论文阅读VACE: All-in-One Video Creation and Editing

code:https://github.com/ali-vilab/VACE

核心

  • 单个模型同时处理多种视频生成和视频编辑任务
  • 通过VCU(视频条件单元)进行实现

方法

视频任务

所有的视频相关任务可以分为4类

文本生视频

参考图片生视频

视频生视频

视频+mask生视频

VCU

对上述4个任务,制定一个统一的输入范式。text,frame以及mask。

对于每一个不同的任务,text不用变,主要变化F以及M。对于参考图+视频,无非是多了l个参考图的输入。mask对应设置如下表所示。

这样就统一了不同类型任务的输入。

结构

重构了DiT模型用于VACE

Context Tokenization
  • 概念解耦。主要是将视频分为了2部分,一部分是和mask有交互的,需要重新生成;一部分和mask无交互的,需要保持不变。
  • Context Latent Encoding.解藕的两部分以及原始视频、mask分别encoder到latent空间,shape保持一致
  • Context Embedder 将上述3个concat一起输入到transformer中
    代码如下:
python 复制代码
def vace_encode_frames(self, frames, ref_images, masks=None):
    if ref_images is None:
        ref_images = [None] * len(frames)
    else:
        assert len(frames) == len(ref_images)

    if masks is None:
        latents = self.vae.encode(frames)
    else:
        inactive = [i * (1 - m) + 0 * m for i, m in zip(frames, masks)]
        reactive = [i * m + 0 * (1 - m) for i, m in zip(frames, masks)]
        inactive = self.vae.encode(inactive)
        reactive = self.vae.encode(reactive)
        latents = [torch.cat((u, c), dim=0) for u, c in zip(inactive, reactive)]

    cat_latents = []
    for latent, refs in zip(latents, ref_images):
        if refs is not None:
            if masks is None:
                ref_latent = self.vae.encode(refs)
            else:
                ref_latent = self.vae.encode(refs)
                ref_latent = [torch.cat((u, torch.zeros_like(u)), dim=0) for u in ref_latent]
            assert all([x.shape[1] == 1 for x in ref_latent])
            latent = torch.cat([*ref_latent, latent], dim=1)
        cat_latents.append(latent)
    return cat_latents
3.3.2. Fully Fine-Tuning and Context Adapter Tuning

作者设计了两种训练方式。

  • 全训练。直接将video tokens和context tokens相加,然后训练整个DiT
  • Context Adapter Tuning。直训练context Block和context Embed。DiT不动,cotext作为一个控制信号注入到DiT。参考了Res-tuning,也有点controlnet到结构。
    后文也有提到Context Adapter Tuning的效果更好,所以关注这个就可以。

结果

作者自己构建了一个新的数据集,用于评估多类视频任务。

定量

多个任务上的性能超过了sota,特别是在视频质量和视频一致性方面。例如,在图像到视频(I2V)任务中,VACE在多个指标上优于I2VGenXL、CogVideoX-I2V和LTX-Video-I2V等方法。

但是在R2V任务上,keling更胜一筹

定性

消融实验

  • Context Adapter Tuning的训练方式更好
  • 超参数设置Uniform最好
  • Context Adapter设置所有layers最好
  • Concept 解耦更好一点

局限(C.1. Limitations)

  • 生成的质量和风格受基础模型的影响。小模型快,但是质量和连贯性不好。例如身份一致性差,对输入的控制能力较弱。大模型慢,质量高。
  • VACE的训练数据不足,训练时间不足
  • 用户使用起来更复杂一些(对比单一任务模型)

细节

基础模型

在LTX-Video-2B和WAN-T2V-14B两个模型基础上训练

训练卡数:16张A100/128张A100

训练分为3个阶段
  • 基础任务训练,作为构建更复杂任务的基石。具体任务为视频修复和视频扩展
  • 任务扩展训练,扩展模型的能力。包括单输入参考帧到多输入参考帧和单一任务到组合任务
  • 质量提升训练,提升模型生成视频的质量,特别是在高分辨率和长视频序列上的表现。
训练参数

总结

主要是统一了多个不同的视频任务,使得单一模型拥有复杂的能力。创新点注意围绕着接口设计、训练设计。模型核心结构未变。

相关推荐
*Lisen2 小时前
《Adaptive Layer-skipping in Pre-trained LLMs》- 论文笔记
论文阅读
CV-杨帆3 小时前
论文阅读:2023 arxiv A Survey of Reinforcement Learning from Human Feedback
论文阅读·人工智能
0x2114 小时前
[论文阅读]Making Retrieval-Augmented Language Models Robust to Irrelevant Context
论文阅读·人工智能·语言模型
觅与山奈19 小时前
【Mamba】MambaVision论文阅读
论文阅读·深度学习·计算机视觉·mamba
王上上19 小时前
【论文阅读19】-Res-Net (CVPR 2016)-Deep Residual Learning for Image Recognition
论文阅读·resnet·残差连接
SLAM必须dunk19 小时前
SparseDrive---论文阅读
论文阅读·人工智能·深度学习·计算机视觉·目标跟踪
王上上1 天前
【论文阅读21】-PSOSVM-CNN-GRU-Attention-滑坡预测(2024-12)
论文阅读·cnn·gru
zyq~4 天前
【论文阅读笔记】模型的相似性
论文阅读·笔记
开心星人4 天前
【论文阅读】Orion: Online Backdoor Sample Detection via Evolution Deviance
论文阅读