StreamingT2V

news2024/11/13 20:33:11

下面首先是参考的一些博客 https://blog.csdn.net/qq_44681809/article/details/137081515

qustion

  • SDEdit:就是给图片加一点噪声然后再用模型去噪,来获得一个更好的帧,比如去掉伪影和污点

  • 这里的分割为m个24帧的块,块与块之间已经有8帧重叠了吗?,就是在分割的时候按重叠分d perservation的吗?

  • 由代码可以看出,它是按照每24帧中间重叠8帧的方式,做好分配规划后,提前取原视频的前trim_length帧,然后再喂给模型去做生成

  • 按照这里的采样的新噪声是采了F-O个帧的来看,是在切分为24帧块的时候就已经把重叠做好了,,,,,不一定,噪声是共享的,但不能说明在切分为24帧块的时候是怎么切的,前好的前一块和后一块公共部分一模一样?还是独立的?还是?
    • 猜测从低分辨率视频的切分应该是前一个块和后一个块不关联的切分,没有太大关系,由于生成也是一块一块生的(生成的时候是每次生成都一样的帧数吗?是24吗?),所以在块和块之间会不一致,所以要解决这个问题
  • 所以这做到了共享噪声

  • 这是什么意思

  • 这里的更新整个长视频的重叠帧是什么意思,是从前一个块的重叠区域取一些帧,从后一个块的重叠区域取一些帧,然后凑成8帧,然后用这个新8帧再替换掉前一个块和后一个块的重叠的8帧是吗?还是把两块儿连在一起,只用一个,相当于去掉8帧?如果是前面一种情况,那初始分块的时候是怎么分的呢,按照这个取的规则,如果刚开始随机一个F_thr为1或者8,那就相当于用一个块的部分替换另一个一个块的部分了,所以初始分块的时候是完全切割分的吗,当然这和生成是怎么生成有关
    • 在每一个t的去噪过程中,同一个块内还要做时间时间层面的注意力什么的,这种应该也会让重叠帧和块内其它帧做内容上的对齐

https://blog.csdn.net/v_JULY_v/article/details/136845242

https://blog.csdn.net/qq_29788741/article/details/137077902

  • 这段长达 1200 帧的 2 分钟视频来自一个文生视频(text-to-video)模型,尽管 AI 生成的痕迹依然浓重,但我们必须承认,其中的人物和场景具有相当不错的一致性。这是如何办到的呢?要知道,虽然近些年文生视频技术的生成质量和文本对齐质量都已经相当出色,但大多数现有方法都聚焦于生成短视频(通常是 16 或 24 帧长度)。然而,适用于短视频的现有方法通常无法用于长视频(≥ 64 帧)。即使是生成短序列,通常也需要成本高昂的训练,比如训练步数超过 260K,批大小超过 4500。如果不在更长的视频上进行训练,通过短视频生成器来制作长视频,得到的长视频通常质量不佳。而现有的自回归方法(通过使用短视频后几帧生成新的短视频,进而合成长视频)也存在场景切换不一致等一些问题。
    为了克服现有方法的缺点和局限,Picsart AI Resarch 等多个机构联合提出了一种新的文生视频方法:StreamingT2V。这也是一种自回归方法,并配备了长短期记忆模块,进而可以生成具有时间一致性的长视频。

summary

  • 该团队提出了条件注意力模块(CAM)。得益于其注意力性质,它可以有效地借用之前帧的内容信息来生成新的帧,同时还不会让之前帧的结构 / 形状限制新帧中的运动情况。
  • 而为了解决生成的视频中人与物外观变化的问题,该团队又提出了外观保留模块(APM):其可从一张初始图像(锚帧)提取对象或全局场景的外观信息,并使用该信息调节所有视频块的视频生成过程。
  • 为了进一步提升长视频生成的质量和分辨率,该团队针对自回归生成任务对一个视频增强模型进行了改进。为此,该团队选择了一个高分辨率文生视频模型并使用了 SDEdit 方法来提升连续 24 帧(其中有 8 帧重叠帧)视频块的质量。
  • 为了使视频块增强过渡变得平滑,他们还设计了一种随机混合方法,能以无缝方式混合重叠的增强过的视频块

  • 这两个T2V是同一个模型吗?
    • 根据代码中来看是的
    • 上面的是初始阶段
    • 上面是自回归阶段

StreamingT2V: Consistent, Dynamic, and Extendable Long Video Generation from Text

摘要

  • 现有方法大多集中在生成高质量的短视频(通常为 16 或 24 帧),当简单地扩展到长视频合成时,会出现硬切换(hardcuts)

  • StreamingT2V,是一种用于生成 80、240、600、1200 帧或更多帧具有平滑过渡的长视频的自回归方法

  • 关键组件包括:

    • 一种短期记忆块,称为条件注意力模块(conditional attention module,CAM),它通过注意机制将当前生成与从先前块(chunk)提取的特征相关联,从而实现一致的块过渡
    • 一种长期记忆块,称为外观保持模块(Appearance Preservation Module,APM),它从第一个视频块中提取高级场景和对象特征,以防止模型忘记初始场景
    • 一种随机混合(randomized blending)方法,使得将视频增强器自回归地应用于无限长视频时,不会出现块之间的不一致性
  • StreamingT2V,这是一种高质量的无缝文本到长视频生成器,其在一致性和运动方面优于竞争对手

  • 问题:如果将长期记忆模块的锚帧换为自己的图片,不知道能不能做T+I to V的生成?或者将T2V换的模型换位I2V的模型,不知道能不变成T to V的生成?

相关工作

  • 以前的长视频生成工作
  • DynamiCrafter-XL [43],在每个文本交叉注意力中增加一个图像交叉注意力,这导致更好的质量,但仍然导致块之间频繁的不一致性

Preliminary

  • StreamingT2V,是一个在VQ-GAN自动编码器D(E(·))的潜在空间上操作的扩散模型,其中E和D分别是对应的编码器和解码器
  • 给定一个视频V ∈ R_F×H×W×3,它的潜在代码x0 ∈ R_F×h×w×c是通过逐帧应用编码器获得的

方法

  • 我们首先生成了 256 × 256 分辨率的长视频,时长为 5 秒(16fps),然后将它们提升到更高分辨率(720 × 720),整个流程的概述如下图所示

  • 长视频生成部分包括:

    • (初始化阶段)通过预先训练的文本到视频模型(例如可以使用 Modelscope [39])合成第一个 16 帧块(chunk),
    • 以及(Streaming T2V 阶段)通过自回归方式为后续帧生成新内容。对于自回归(见图 3),我们提出了条件注意力模块(CAM),利用前一块的最后 F_cond = 8 帧的短期信息,实现块之间的无缝过渡。此外,我们利用外观保持模块(APM),从一个固定的锚定帧中提取长期信息,使自回归过程在生成过程中能够稳健地保留对象外观或场景细节
    • 在生成了长视频(80、240、600、1200 帧或更多)之后,我们应用流式细化阶段(Streaming Refinement Stage),通过自回归方式应用高分辨率文本到短视频模型(例如可以使用 MS-Vid2Vid-XL [48]),并配备我们的随机混合方法进行无缝的块处理。后一步骤无需额外训练,因此使我们的方法在较低的计算成本下实现。
  • 问题:先生成80帧,然后进行第三阶段,然后再生成剩下的帧?

  • 每次生成16帧,以及输入生成多少次,自回归完后,再去第三阶段

  • 上面是附录里给的详细参数

条件注意力模块

  • 我们利用了文本到视频模型的预训练能力(例如 Modelscope [39]),作为长视频生成的先验,以自回归的方式进行,在接下来的写作中,我们将这个预训练的文本到(短)视频模型称为 Video-LDM。

  • 为了通过前一块的一些短期信息(见图 2,中)自回归地调节 Video-LDM,受 ControlNet [46] 的启发,我们提出了条件注意力模块(CAM),它由特征提取器和一个注入到 Video-LDM UNet 中的特征注入器组成

    • 特征提取器利用逐帧图像编码器 E_cond,这个用的VQ-GAN的编码器
    • 后跟与 Video-LDM UNet 到其中间层相同编码器层(并使用 UNet 的权重进行初始化),这里CAM的特征注入器应该是直接把Video-LDM的前一半拿过来,然后再可训练
  • 对于特征注入,我们让 UNet 中的每个长距离跳连接通过交叉注意力来关注由 CAM 生成的相应特征。

  • 令 x 表示在零卷积后的 E_cond 的输出

    • 为什么要有零卷积
  • 我们使用加法,将 x 与 CAM 的第一个时间 transformer 块的输出融合

    • 为什么要有个这部分?
      • 时间特征的捕捉:时间变换器模块(temporal transformer block)设计用来处理时间序列数据,它可以捕捉视频帧序列之间的时间动态和关联性
      • 噪声的作用:向数据添加噪声并通过模型去除这些噪声的过程能够帮助模型学习如何在帧之间填充正确的时间动态
      • 数据增强:通过噪声添加和去除的过程也可以被看作是一种数据增强技术,它可以帮助模型变得更加鲁棒,能够处理更多的不确定性
    • 这里的直接相交操作是通道数变多了,还是逐元素值相加
  • 对于将 CAM 的特征注入到 Video-LDM Unet 中,我们考虑 UNet 的跳跃连接特征x_SC ∈ R^(b×F×h×w×c)。

    • 我们对 x_SC 应用时空分组归一化(spatio-temporal group norm),并在 x_SC 上应用线性投影 P_in
      • 空间-时间组归一化会考虑一个视频块(或帧序列)的所有帧,并在整个块中同时对空间和时间维度进行归一化。这有助于网络捕捉到视频中的运动模式和其他时间动态,同时减少内部协变量偏移(internal covariate shift)
      • 在神经网络中使用的空间-时间组归一化(spatio-temporal group norm)通常指的是对数据进行规范化处理,以使得数据的分布具有固定的均值和标准差(例如均值为0,标准差为1),这样的处理有利于模型的训练和泛化
      • 线性投影通常是一个全连接层或者线性层,没有激活函数,作用是将输入数据(这里是归一化后的特征)映射到另一个空间,作用可能是特征转换、降维/升维、数据预处理
    • 让 x′_SC ∈ R^((b·w·h)×F×c) 表示重塑后的张量,我们通过时间多头注意力(T-MHA),即对每个空间位置(和 batch)独立地
      • 对每个batch下的像素都做
    • 令 x′_SC 以相应的 CAM 特征 x_CAM ∈ R^((b·w·h)×F_cond×c) 为条件,其中 F_cond 是条件帧的数量,对于查询、键和值,使用可学习的线性映射 P_Q、P_K、P_V,我们应用 TMHA,其中键和值来自 x_CAM,而查询来自 x′_SC,即
    • 最后,我们使用线性投影 P_out。通过使用适当的重塑操作 R,将 CAM 的输出添加到跳跃连接中(与 ControlNet [46] 中的方式相同)
  • 因此,x′′′ 在 UNet 的解码器层中使用。投影 P_out 是零初始化的,因此在训练开始时,CAM 不会影响基础模型的输出,这有助于提高训练的收敛性。

外观保持模块

  • 自回归视频生成器通常会忘记初始对象和场景特征,导致外观变化严重
  • 为了解决这个问题,我们利用提出的外观保持模块(APM)来结合长期记忆,利用第一个块的固定锚定帧中包含的信息
    • 我们将锚定帧的 CLIP [25] 图像 token 与文本指令中的 CLIP 文本 token 混合,通过使用线性层将 clip 图像 token 扩展为 k = 8 个 token,并在 token 维度上连接文本和图像编码,然后使用投影块,得到 x_mixed ∈ R^(b×77×1024)
    • 对于每个交叉注意力层 l,我们引入一个权重 α_l ∈ R(初始化为 0),通过对 x_mixed 和文本指令的常规 CLIP 文本编码的加权和来执行交叉注意力
    • 第 5.3 节的实验表明,轻量级的 APM 模块有助于在自回归过程中保持场景和身份特征(见图 6)
  • 1D卷积可以沿着时间轴扫描并提取特征,识别序列中的局部模式,例如视频帧之间的运动变化或连续性

自回归视频增强

  • 为了进一步提高我们文本到视频结果的质量和分辨率,我们利用一个高分辨率(1280x720)的文本到(短)视频模型(Refiner Video-LDM,见图 3),自回归地增强生成视频的 24 帧块

  • 使用文本到视频模型作为 24 帧块的精化器/增强器是通过将大量噪声添加到输入视频块中,并使用文本到视频扩散模型(SDEdit [22] 方法)进行去噪来实现的

    • SDEdit:就是给图片加一点噪声然后再用模型去噪,来获得一个更好的帧,比如去掉伪影和污点
  • 更具体地说,

    • 我们采用高分辨率文本到视频模型(例如 MS-Vid2Vid-XL [40, 48]),
      • MS-Vid2Vid-XL是什么分辨率的
    • 以及首先通过双线性上采样 [2] 将 24 帧的低分辨率视频块上采样到目标高分辨率,
    • 然后我们使用图像编码器 E 对帧进行编码,以获得潜在代码 x0
    • 然后,我们应用 T′ < T 个前向扩散步骤,以便 x_T′ 仍包含信号信息(主要是关于视频结构)
    • 并使用高分辨率视频扩散模型进行去噪。
  • 然而,独立增强每个块的简单方法会导致不一致的过渡(见图 4 (a))

  • 我们通过在连续块之间使用共享噪声并利用我们的随机混合方法来解决这个问题

  • 给定我们的低分辨率长视频,我们将其分割成 m 个长度为 F = 24 帧的块 V1,…,Vm,以便每两个连续的块具有 O = 8 帧的重叠

    • 切分的时候就让它重叠8帧切的吗?
      • 是的,上面有代码
  • 从 T′ 开始,我们必须采样噪声来执行一个去噪步骤,我们从第一个块 V1 开始,并采样噪声 ϵ_1 ∼ N(0, I),其中 ϵ_1 ∈ R^(F×h×w×c)。对于每个后续块 V_i,i > 1,我们采样噪声 ˆϵi ∼ N(0, I),其中 ˆϵi ∈ R^((F−O)×h×w×c),并沿帧维度将其与前一个块的 O 个重叠帧的噪声链接


  • 如果直接用 ϵ \epsilon ϵi进行Vi块的加噪去噪,得到X_t-1(i) ,这种方法并不足以消除过渡不一致(见图 4 (b))。

  • 为了显著提高一致性,我们提出了随机混合方法。考虑到连续两个块 V_(i−1)、Vi 在去噪步骤 t−1 时的潜在编码

  • 块 V_(i−1) 的潜在编码 x_(t−1) (i−1) 在其前几帧到重叠帧之间具有平滑过渡,而块 Vi 的潜在编码 x_(t−1) (i) 在重叠帧到其后续帧之间具有平滑过渡。因此,我们通过串联两个潜在编码来组合它们:随机从 {0, . . . ,O} 中采样一个帧索引 f_thr,然后从中取前 f_thr 帧的潜在编码,从中取从 fthr + 1 开始的帧的潜在编码

  • 然后,我们更新整个长视频的潜在编码 x_(t−1) 上的重叠帧,并执行下一个去噪步骤

  • 通过在重叠区域中使用潜在编码的概率混合,我们成功地减少了块之间的不一致性(见图 4©)。

  • 问题:这里的更新重叠帧是指怎么更新?

    • 整个视频序列是连着的,然后把重叠部分替换掉
  • MS-Vid2Vid由达摩院研发和训练,主要用于提升文生视频、图生视频的分辨率和时空连续性,其训练数据包含了精选的海量的高清视频、图像数据(最短边>720),可以将低分辨率的(16:9)的视频提升到更高分辨率(1280 * 720),可以用于任意低分辨率的的超分

  • 最终生成的视频大小是多少?

  • unet的网络最后一维是512,但为什么初始生成的视频是256?
    -可能在unet后面又做了其它处理,这得仔细看代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1645740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js之遍历方法

先创建一个数组&#xff0c;然后使用for.in进行遍历&#xff0c;如下图所示sub代表下标并且遍历几次&#xff0c;arr代表数组 <script>let arr [1, 2, 3, 4, 5, 6];for (let sub in arr) {console.log(arr);}</script> 第二种方法则是for循环遍历&#xff0c;根据…

el-select 点击按钮滚动到选择框顶部

主要代码是在visibleChange 在这个 popper 里面找到 .el-select-dropdown__list let popper ref.$refs.popper const ref this.$refs.select let dom popper.querySelector(.el-select-dropdown__list) setTimeout(() > { dom.scrollIntoView() }, 800) <templat…

【哈希表】Leetcode 14. 最长公共前缀

题目讲解 14. 最长公共前缀 算法讲解 我们使用当前第一个字符串中的与后面的字符串作比较&#xff0c;如果第一个字符串中的字符没有出现在后面的字符串中&#xff0c;我们就直接返回&#xff1b;反之当容器中的所有字符串都遍历完成&#xff0c;说明所有的字符串都在该位置…

Java二维码、条码生成及解码工具类

功能描述 生成二维码、条码解码使用谷歌的zxing依赖 引入依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version> </dependency><dependency><groupId>…

pandas学习笔记11

DataFrame结构 DataFrame 一个表格型的数据结构&#xff0c;既有行标签&#xff08;index&#xff09;&#xff0c;又有列标签&#xff08;columns&#xff09;&#xff0c;它也被称异构数据表&#xff0c;所谓异构&#xff0c;指的是表格中每列的数据类型可以不同&#xff0c;…

解决jar包中没有主清单目录的问题

文章目录 解决jar包中没有主清单目录的问题问题描述环境描述方法一 | 阿里巴巴构造器的通用解决方案方式二 | 指定MANIFEST.MF路径 解决jar包中没有主清单目录的问题 问题描述 很简单可能很多人都遇到过&#xff0c;maven项目打成jar包后执行报错&#xff1a;jar包中没有主清单…

Python_4-对象序列化操作

文章目录 Python中对象数据持久化操作模块学习笔记marshal模块优点缺点使用示例保存数据到文件从文件读取数据 shelve模块优点缺点使用示例保存数据到文件从文件读取数据 总结 Python中对象数据持久化操作模块学习笔记 在Python中&#xff0c;数据持久化指的是将程序中的数据结…

【go项目01_学习记录04】

学习记录 1 集成 Gorilla Mux1.1 为什么不选择 HttpRouter&#xff1f;1.2 安装 gorilla/mux1.3 使用 gorilla/mux1.4 迁移到 Gorilla Mux1.4.1 新增 homeHandler1.4.2 指定 Methods () 来区分请求方法1.4.3 请求路径参数和正则匹配1.4.4 命名路由与链接生成 1 集成 Gorilla Mu…

零基础入门学习Python第二阶01生成式(推导式),数据结构

Python语言进阶 重要知识点 生成式&#xff08;推导式&#xff09;的用法 prices {AAPL: 191.88,GOOG: 1186.96,IBM: 149.24,ORCL: 48.44,ACN: 166.89,FB: 208.09,SYMC: 21.29}# 用股票价格大于100元的股票构造一个新的字典prices2 {key: value for key, value in prices.i…

DS二叉搜索树

前言 我们在数据结构初阶专栏已经对二叉树进行了介绍并用C语言做了实现&#xff0c;但是当时没有对二叉搜树进行介绍&#xff0c;而是把他放到数据结构进阶构专栏的第一期来介绍&#xff0c;原因是后面的map和set&#xff08;红黑树&#xff09;是基于搜索树的&#xff0c;这里…

LIUNX系统编程:进程池的实现

1.什么是进程池 每一个可执行程序&#xff0c;在被执行前都要转化为进程&#xff0c;操作系统都要为其创建PCB&#xff0c;地址空间&#xff0c;页表&#xff0c;构建映射关系&#xff0c;进程池就是创建进程时&#xff0c;创建很多个进程&#xff0c;如果要执行程序&#xff…

ROS仿真小车与SLAM

ROS仿真小车与SLAM ROS中机器小车的仿真实验一、建立模型1.创建功能包导入依赖&#xff1a;创建urdf,launch文件&#xff1a; 2.可视化 二、添加雷达传感器1.编写xacro文件2.集成launch文件3.添加摄像头和雷达传感器my_camera.urdf.xacro文件&#xff1a;my_laser.urdf.xacro文…

Retrofit源码解析

整体概述 这个是我看完Retrofit的源码后&#xff0c;站在一个高的维度俯瞰整个Retrofit的架构得到的结论。 Retrofit的出现就是对OKHttp做了一个二次封装&#xff0c;为什么要封装&#xff1f;我认为核心目的就是让使用更加的方便。都对哪里进行了封装&#xff1f; 封装了请求…

从一到无穷大 #25 DataFusion:可嵌入,可扩展的模块化工业级计算引擎实现

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言架构总览与可扩展性Catalog and Data SourcesFront End逻辑计划与逻辑计划优化器…

c3 笔记6 认识css样式表

<link>与import应该如何选择?事实上&#xff0c;使用link与import链接外部样式文件的效果看起来是一样的&#xff0c;区别在于<link>是HTML标记而import属于CSS语法。<link>标记有rel、type与href属性&#xff0c;可以指定CSS样式表的名称&#xff0c;这样就…

深度学习之DCGAN

目录 须知 转置卷积 DCGAN 什么是DCGAN 生成器代码 判别器代码 补充知识 LeakyReLU&#xff08;x&#xff09; torch.nn.Dropout torch.nn.Dropout2d DCGAN完整代码 运行结果 图形显示 须知 在讲解DCGAN之前我们首先要了解转置卷积和GAN 关于GAN在这片博客中已经很…

攻防世界-NewsCenter

题目信息 分析过程 题目打开是有个输入框可以用来输入搜索信息&#xff0c;初步判断是个sql注入的题目。接下来判断能否进行sql注入&#xff1a; 输入 hi&#xff0c;有搜索结果&#xff0c;如下图: 输入hi’,无结果&#xff0c;如下图&#xff1a; 初步判定是hi‘后面还有单引…

【Axure高保真原型】动态伸缩信息架构图

今天和大家分享动态伸缩信息架构图的原型模板&#xff0c;我们可以通过点击加减按钮来展开或收起子内容&#xff0c;具体效果可以点击下方视频观看或者打开预览地址来体验 【原型效果】 【Axure高保真原型】动态伸缩信息架构图 【原型预览含下载地址】 https://axhub.im/ax9/…

Python批量修改图片文件名中的指定名称

批量处理图像时&#xff0c;图片名有时需要统一&#xff0c;本教程仅针对图片中名如&#xff1a;0001x4.png&#xff0c;批量将图片名中的x4去除&#xff0c;只留下0001.png的情况。 如果想要按照原图片顺序批量修改图片名&#xff0c;参考其它博文&#xff1a;按照原顺序批量…

SpringBoot整合rabbitmq使用案例

RocketMQ&#xff08;二十四&#xff09;整合SpringBoot SpringBoot整合rabbitmq使用案例 一 SpringBoot整合RocketMQ实现消息发送和接收消息生产者1&#xff09;添加依赖2&#xff09;配置文件3&#xff09;启动类4&#xff09;测试类 消息消费者1&#xff09;添加依赖2&…