【AIGC-图片生成视频系列-7】MoonShot:实现多模态条件下的可控视频生成和编辑

目录

一. 贡献概述

二. 方法详解​编辑

三. Zero-Shot主题定制视频生成

四. 文本到视频生成

五. 直接使用图像ControlNet

六. 图像动画比较

七. 视频编辑

八. 针对视频生成中多模态 Cross-Attn的消融实验

九. 对视频生成中多模态 Cross-Attn的消融实验

十. 论文

十一. 个人思考


现有的视频扩散模型(VDM)大多仅限于纯文本条件。因此,它们通常缺乏对生成的视频的视觉外观和几何结构的控制。

今天介绍一种名为 MoonShot 的新视频生成模型,它同时基于图像和文本的多模态输入进行条件控制,在视觉质量和时间一致性方面相对于现有模型有了显著的提高。

一. 贡献概述

已有问题及解决方法:

  1. 在视觉外观方面,文字提示词无法精确描述生成的外观。现有解决方法是在一些图片上对模型做微调,从而实现个性化的生成。同样地,对于视频生成,AnimateDiff 依赖于定制的模型权重来注入条件视觉内容,无论是通过 LoRA 还是 DreamBooth。

  2. 在几何结构生成方面,尽管已有的方法,如 ControlNet 和 T2I-Adapter,利用深度、边缘图作为图像生成的视觉条件,但类似的策略对于视频合成仍然是不确定的。  在视频生成中,一些工作重用了预训练的 ControlNet 模块来生成图像。然而,它们需要通过帧传播或跨帧注意力机制来适配文本到图像的模型用于视频生成,导致与基于 VDM 的方法相比,时间一致性较差。

MoonShot是一个视频生成模型,它使用图像和文本输入来生成视频。该模型基于一个名为多模态视频块(MVB)的视频生成模块。

每个MVB都有三个主要的设计考虑因素:

  1. 传统的时空模块用于视频生成,其中包括一个空间卷积层、一个自注意层和一个聚合空间特征的时间注意层。这种设计允许重复使用文本到图像生成模型的预训练权重,而不改变其空间特征分布,从而包证其生成质量。

  2. 解耦的多模态交叉注意层,它在文本和图像输入上调节生成。这两个条件相互补充,以指导生成。此外,图像输入提供参考视觉线索,允许时间模块专注于视频的一致性。这提高了整体的生成质量和帧的连贯性,如实验证明的那样。

  3. 自由选择模块,由于空间特征分布被保留,预训练的图像ControlNet模块可以立即集成,以控制生成的几何结构,而不需要额外的训练开销。

有一点值得强调,MoonShot的设计允许它通过使用图像和文本输入生成高质量的视频。该模型的多模态交叉注意层通过使用文本和图像输入来指导生成过程,进而提高整体生成质量和帧的连贯性。

二. 方法详解

解耦的多模态交叉注意层的总体工作流程和结构。

在训练阶段,使用视频的初始帧作为图像条件。对于推理,模型接受任何图像以及相应的文本。

值得关注的是,在Unet结构中,有一个新颖的操作,解耦Image Feature 和Text Feature 对结果的影响。

具体的:

  1. Latent Feature 经过转换得到Query。

  2. Image Feature 和Text Feature 经过各自相应的Cross-Attn操作,再和Latent Feature 对应的Query做交叉注意操作。

  3. 最将结果cat在一起,继续进入Unet 其余结构中。此举充分结合图片和文字提示的信息。

三. Zero-Shot主题定制视频生成

图片

图片

四. 文本到视频生成

图片

五. 直接使用图像ControlNet

图片

六. 图像动画比较

图片

七. 视频编辑

图片

八. 针对视频生成中多模态 Cross-Attn的消融实验

图片

九. 对视频生成中多模态 Cross-Attn的消融实验

图片

十. 论文

https://arxiv.org/pdf/2401.01827.pdf

十一. 个人思考

这篇文章的提出的多模态Cross-Attn对我启发性很大,但也看到了一些熟悉的影子,比如IP-Adapter, 以及DreaMoving中的content guider,看来结合多种模态组合来引导生成的方法还是挺有潜力的,大家也可以关注一下。


欢迎加入AI杰克王的免费知识星球,海量干货等着你,一起探讨学习AIGC!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java数据结构与算法刷题-----LeetCode62. 不同路径

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…

强化学习1——多臂老虎机(上)

在强化学习中,关注智能体在与环境的交互中学习,成为试错型学习。多臂老虎机不存在状态信息,只有动作和奖励,是最简单的“和环境交互中学习“。 什么是多臂老虎机 老虎机_百度百科 (baidu.com) 多臂老虎机即有多个摇杆的老虎机&a…

[python]gym安装报错ERROR: Failed building wheel for box2d-py

报错截图: box2d是一个游戏领域的2D图形C引擎,用来模拟2D刚体物体运动和碰撞。 swig是一个将c/c代码封装为Python库的工具(是Python调用c/c库的一种常见手段),所以在运行时box2d会依赖到swig。而swig并不是一个python库…

vivado xsim 终端 模拟

只模拟的话直接终端运行会快很多 计数器举例 mkdir srccounter.v module counter(input wire clk,input wire rst_n,output reg[31:0] cnt ); always (posedge clk or negedge rst_n)if(!rst_n)cnt < 31h0;elsecnt < cnt1;endmodule tb.v module tb; wire[31:0] out…

Guarded Suspension模式--适合等待事件处理

Guarded是被守护、被保卫、被保护的意思&#xff0c; Suspension则是暂停的意思。 如果执行现在的处理会造成问题&#xff0c; 就让执行处理的线程进行等待--- 这就是Guarded Suspension模式。 模式通过让线程等待来保证实例的安全性。 一个线程ClientThread会将请求 Request的…

MyBatis 源码分析(四):反射模块

前言 上一篇我们了解了Mybatis解析器模块&#xff0c;MyBatis 源码分析&#xff08;三&#xff09;&#xff1a;解析器模块 本篇我们来了解反射模块。相比 parsing 包来说&#xff0c;reflection 包的代码量大概是 2-3 倍。当然&#xff0c;不要慌&#xff0c;都是比较简单的代…

16、Kubernetes核心技术 - 节点选择器、亲和和反亲和

目录 一、概述 二、节点名称 - nodeName 二、节点选择器 - nodeSelector 三、节点亲和性和反亲和性 3.1、亲和性和反亲和性 3.2、节点硬亲和性 3.3、节点软亲和性 3.4、节点反亲和性 3.5、注意点 四、Pod亲和性和反亲和性 4.1、亲和性和反亲和性 4.2、Pod亲和性/反…

【Java技术专题】「攻破技术盲区」攻破Java技术盲点之unsafe类的使用指南(打破Java的安全管控— sun.misc.unsafe)

Java后门机制 — sun.misc.unsafe 打破Java的安全管控关于Unsafe的编程建议实例化Unsafe后门对象使用sun.misc.Unsafe创建实例单例模式处理实现浅克隆&#xff08;直接获取内存的方式&#xff09;直接使用copyMemory原理分析 密码安全使用Unsafe类—示例代码 运行时动态创建类超…

lombok注解 @Data使用在继承类上时出现警告解决

一、警告问题 1、Data注解 Data 包含了 ToString、EqualsAndHashCode、Getter / Setter和RequiredArgsConstructor的功能。 当使用 Data注解时&#xff0c;则有了 EqualsAndHashCode注解&#xff08;即EqualsAndHashCode(callSuperfalse)&#xff09;&#xff0c;那么就会在此…

Transformer-MM-Explainability

two modalities are separated by the [SEP] token&#xff0c;the numbers in each attention module represent the Eq. number. E h _h h​ is the mean&#xff0c; ∇ \nabla ∇A : ∂ y t ∂ A {∂y_t}\over∂A ∂A∂yt​​for y t y_t yt​ which is the model’s out…

新手小白必了解c语言之字符串函数

本篇介绍字符串库函数为 目录 引言 一&#xff1a;字符串函数的头文件为#include 二&#xff1a;求字符串长度函数 &#xff08;strlen&#xff09; 1.函数介绍 2.函数使用举例 3.模拟实现 三&#xff1a;字符串复制函数(strcpy) 1.函数介绍 2.函数使用举例 3.模…

Java BIO、NIO、AIO、Netty知识详解(值得珍藏)

1. 什么是IO Java中I/O是以流为基础进行数据的输入输出的&#xff0c;所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。 在Java类库中&#xff0c;IO部分的内容是很庞大的&#xff0c;因为它涉及的领…