论文研读:Text2Video-Zero 无需微调,仅改动<文生图模型>推理函数实现文生视频(Arxiv 2023-03-23)

news/2025/1/7 21:31:07/

论文名:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators

1. 摘要

1.1 方法总结

  • 通过潜空间插值, 实现动作连续帧。

  • 以第一帧为锚定,替换原模型的self-attention,改为cross-attention

实现 保证图片整体场景不变的同时,生成具备运动信息的连续帧

1.2 光流(optical flow) 对齐

这里是论文提到的warping operation (源代码为warp_latents_independently函数), 是其方法核心部分

文中代码基于光流的空间变换,常用于背景对齐、运动补偿。

光流坐标变换的作用是将 latent features 映射到新的空间位置,使得目标特征在连续帧中保持一致

  • 背景特征:光流仅针对背景计算,背景(或不重要区域)的特征被对齐,减少运动带来的不连续性。
  • 转变前: 背景和前景特征未对齐,可能导致运动模糊或抖动。
  • 变化后: 背景平滑且稳定,对应特征对齐到相应的几何位置,输出更加自然。

代码解析:

  • 输入视频帧向量shape为 (batch_size, frames, channels, H, W) ,

  • 计算得到光流矫正向量(reference_flow),形状为 (batch_size, 2,H, W)

其中的2分别代表x方向和y方向(正值向右, 和向下),即每一个像素点有1个偏移量(dx, dy)

  • 即warped后的特征是经过光流变换后的潜向量

对于每个像素(x,y), 矫正后的值为new_coords=(x+dx,y+dy)

  • 归一化, 并插值grid_sample (mode='nearest‘),得到与latent shape相同的潜空间坐标

2.方法

2.1 将运动信息注入潜空间向量

(Motion Dynamics in Latent Codes)

  • 随机采样第一帧的潜向量, x T 1 ∼ N ( 0 , I ) x^1_T \sim N(0,I) xT1N(0,I)
  • 用一个预训练的SD对 x T 1 x^1_T xT1 进行DDIM去噪, ( δ t \delta t δt steps)
  • 定义一个方向向量delta, 这个向量根据图像全局即相机运动原理(从左上到右下),这里默认为一个单位 (1,1)
  • 针对m个帧,在方向向量delta上,增加不同的强度, 比如第k个帧:$\delta^k = \lambda (k-1)\delta $
  • 通过网格函数(warping operation)将方向向量从 δ \delta δ 转换到潜空间, 得到一个具备<delta方向> 插值效果的帧序列
  • 对帧序列进行DDPM加噪( δ t \delta t δt steps)

上述过程,得到一个具备连续方向插值的<帧序列>潜向量

2.2 改变self-attention计算以稳定帧变化

(Reprogramming Cross-Frame Attention)

潜向量注入搞定动作序列后,这一步改动了SD-Unet中attention的计算方式,

具体是将其中的self-attention计算改为cross-attention计算, 原self-attn为:

$ Self-Attn(Q,K,V) = Softmax (QK^T / c) V $

这里假设有m个特征,那么QKV计算就有m次,现在把m次当作m帧,

Q用第i帧, 即 Q^i; K和V都搞定为第一帧(锚定),那么m帧的attention计算为:

C r o s s − F r a m e − A t t n ( Q i , K 1 : m , V 1 : m ) = S o f t m a x ( Q i ) ( K 1 ) T / c ) V 1 Cross-Frame-Attn(Q^i, K^{1:m}, V^{1:m}) = Softmax(Q^i)(K^1)^T / c) V^1 CrossFrameAttn(Qi,K1:m,V1:m)=Softmax(Qi)(K1)T/c)V1

这里原文解释为可以保持图像从第一帧开始的《物体》和《背景》结构的一致性

2.3 背景稳定(非必要)

(Background smoothing —Optional)

这一步通过目标检测模型,将物体和背景分离(二值分类标注),将标注的mask图像用网格函数转换到潜空间,得到M

将M和运动潜向量进行一个同或计算(值相同时结果为真),得到一个背景特征更一致的潜向量序列: x ˉ \bar{x} xˉ,

以第k帧为例:

x ˉ t k \bar{x}^k_t xˉtk = M k ⨀ x k t M^k \bigodot x_{k_t} Mkxkt + ( 1 − M k ) ⨀ ( α x ^ t k ) (1-M^k) \bigodot (\alpha \hat{x}^k_t) (1Mk)(αx^tk) + ( 1 − α ) x t k (1-\alpha)x^k_t (1α)xtk

  • x ^ \hat{x} x^是背景图像进行空间转换后的向量(warped latent code).

  • α = 0.6 \alpha = 0.6 α=0.6 是调参的经验性设置

整体方法如图:
在这里插入图片描述

3. 附带方法

3.1 与带条件的微调方法结合 (Conditional and Specialized Text-to-Video)

这里介绍可以control-net 及 dreambooth 结合,实现带条件控制的编辑。

  • control-net效果(pose control):

在这里插入图片描述
在这里插入图片描述

  • dreambooth效果(edge control):

在这里插入图片描述

3.2 与图像编辑模型结合 (Video Instruct-Pix2Pix)

存在Prompt2Prompt 和 Intstruct-Pix2Pix这类在SD基础上进行图像编辑的模型,

上述模型强化了《改变文本编辑图像》的功能,但这类方法是预训练的,数据和模型消耗大。

这里同样对上述预训练模型进行self-attn 到 cross-attn的转换操作,可以实现视频的风格编辑,效果如图:

在这里插入图片描述

4.实验

4.1 参数设置

  • 模型版本: SD1.5
  • 视频格式:8 frames (这个可以增加,但每一帧都是靠第一帧计算), 512x512

4.2 消融实验

测试提出的两个改进方法效果:

  • 潜空间加光流动作
  • self-attn改为cross-frame-atten

在这里插入图片描述

4.3 整体效果

这个方法有3个作用

  1. 通过一段文字,生成对应动画:

在这里插入图片描述

  1. 通过描边或pose支架,再结合文本生成相关动画

在这里插入图片描述
在这里插入图片描述

  1. 改变动画的风格
    在这里插入图片描述

5. 论文摘录

(1) we first enrich the latent codes of gen
erated frames with motion information to keep the global
scene and the background time consistent; (2) we then use cross-frame attention of each frame on the first frame to
preserve the context, appearance, and identity of the fore
ground object throughout the entire sequence.Two novel post-hoc techniques to enforce temporally
consistent generation, via encoding motion dynamics
in the latent codes, and reprogramming each frames
self-attention using a new cross-frame attention.By using cross frame attention, the ap
pearance and structure of the objects and background as
well as identities are carried over from the first frame to
subsequent frames, which significantly increases the tem
poral consistency of the generated frames (see Fig. 10 and
the appendix, Figures 16, 20, 21).

6. Ref:

  • https://github.com/Picsart-AI-Research/Text2Video-Zero

http://www.ppmy.cn/news/1560974.html

相关文章

Python中的ast.literal_eval:安全地解析字符串为Python对象

Python中的ast.literal_eval&#xff1a;安全地解析字符串为Python对象 什么是ast.literal_eval&#xff1f;为什么说它是“安全”的&#xff1f; 如何使用ast.literal_eval&#xff1f;示例1&#xff1a;将字符串转换为列表示例2&#xff1a;将字符串转换为字典示例3&#xff…

适配器模式(类适配器,对象适配器)

1. 适配器模式简介 适配器模式用于解决接口不兼容问题&#xff0c;将一个类的接口转换成客户期望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的类可以协同工作。适配器模式主要分为两类&#xff1a; 类适配器模式&#xff1a;通过继承适配者类来实现适配。…

25考研希望渺茫,工作 VS 二战,怎么选?

25考研希望不大&#xff0c;找工作VS二战&#xff0c;怎么选&#xff1f; 考研落幕&#xff0c;今年的考研可谓是难上加难&#xff0c;很多人甚至发出灵魂三问&#xff0c;直击25考研出题组 因为题难&#xff0c;感觉今年希望不大&#xff0c;也不想调剂&#xff0c;是就业好呢…

STM32-ADC模数转换

定义&#xff1a; ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC【表示转化的范围是0-2^12 - 1】&#xff0c;1us转换时间 输…

GNU链接器简介

GNU链接器简介 1 使用简单程序简介链接脚本1.1 测试程序1.2 编译测试程序1.2.1 不使用链接器编译1.2.1.1 不使用链接器编译1.2.1.2 读取objdump_test 的结构 1.2.2 使用链接器去链接1.2.2.1 链接脚本1.2.2.2 使用链接脚本编译1.2.2.3 读取objdump 的结构 2 链接脚本2.1 基本连接…

Spring Boot自动装配代码详解

概述 Spring Boot自动装配是其核心特性之一&#xff0c;它能够根据项目中添加的依赖自动配置Spring应用程序。通过自动装配&#xff0c;开发人员可以减少大量的配置工作&#xff0c;快速搭建起一个可用的Spring应用。 关键组件和注解 SpringBootApplication注解 这是Spring Bo…

【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程

前言 &#x1f31f;&#x1f31f;本期讲解关于spring aop的入门介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

2000-2020年各省地区生产总值数据/各省gdp数据

2000-2020年各省地区生产总值数据/各省gdp数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;行政区划代码、地区、年份、地区生产总值 4、范围&#xff1a;31省 指标解释&#xff1a;地区生产总值&#xff08;Regional GDP&#xf…