StableVideo:使用Stable Diffusion生成连续无闪烁的视频

使用Stable Diffusion生成视频一直是人们的研究目标,但是我们遇到的最大问题是视频帧和帧之间的闪烁,但是最新的论文则着力解决这个问题。

本文总结了Chai等人的论文《StableVideo: Text-driven consistency -aware Diffusion Video Editing》,该论文提出了一种新的方法,使扩散模型能够编辑具有高时间一致性的视频。关键思想是:

1、帧间传播,获得一致的目标外观

2、图集聚合,获得连贯的运动和几何

论文的实验表明,与最先进的方法相比,视频编辑效果更好。

论文提出的StableVideo是一个文本驱动的视频编辑框架,通过对自然视频的大量实验表明,与其他基于扩散的方法相比,StableVideo在保持几何形状和时间连续性的情况下产生优越的编辑结果。

图像编辑与扩散模型

扩散模型已经成为最先进的深度生成模型,用于根据文本提示或条件生成和编辑高保真图像。dall - e2和Stable Diffusion等模型可以合成符合所需文本描述的逼真图像。对于图像编辑也可以基于文本在语义上修改图像。

但是目前为止直接将扩散模型应用于视频编辑仍然是一个挑战。这里的一个最主要的关键的原因是缺乏时间一致性:SD模型是直接独立编辑每一帧,所以往往会导致闪烁效果和不连续的运动。

基于图集表示的视频编辑

为了在视频帧之间平滑地传播编辑,许多研究已经提出将视频分解为图集表示。视频帧被映射到统一的二维坐标空间,称为atlases,它随时间汇总像素。编辑该集合可以在映射过程中对整个视频进行连贯的更改。

以前的研究omnimates和神经分层图集(NLA),将前景和背景分离到不同的图集中。而Text2LIVE在NLA图集上增加了一个额外的图层,用于文本驱动的外观编辑。但是直接使用扩散模型的研究还没有成功

StableVideo框架

StableVideo框架通过结合两者的优点实现了高质量的基于扩散的视频编辑,并具有时间一致性。他的想法是与其直接编辑图集,不如先编辑关键帧,然后将它们聚合到编辑过的图集中,这样可以获得更好的结果。

也就是说具体来说,管道首先使用NLA将输入视频分解为前景和背景图集。然后根据文本提示分别应用扩散模型编辑背景和关键帧前景。为了确保连贯的外观,使用帧间传播编辑前景关键帧。编辑的关键帧被聚合成一个新的前景图集,它与编辑的背景一起重建最终的输出视频。

方法简介

1、基于神经分层图集的视频分解

作为先决条件,使用预训练的NLA模型将输入视频分解为前景和背景图集。这为前景和背景提供了像素坐标和标准化图集坐标之间的映射:

UVb(.) = Mb(I)

UVf(.) = Mf(I)

这里I是输入帧,而UVb和UVf分别给出了背景和前景图集中相应的位置。

2、基于扩散的编辑

实际的编辑过程使用扩散模型Gb和Gf作为背景和前景。Gb直接编辑背景图集,Gf编辑前景关键帧:

Ab_edit = Gb(Ab, text_prompt) //编辑背景图集

Ei = Gf(Fi, text_prompt) //编辑关键帧

与严重扭曲的图集相比,在关键帧上工作提供了更可靠的编辑。

3、帧间传播前景编辑

为了保证关键帧编辑的时间一致性,提出了一种帧间传播机制。对于第一帧F0,扩散模型Gf正常编辑:

E0 = Gf(F0, text_prompt, structure_guidance)

对于随后的帧Fi,编辑的条件是文本提示和前一帧Ei-1的外观:

  • Ei-1到ai - 1f的部分图谱映射
  • 将Ai-1_f反向映射为当前帧E^i
  • 在文本提示和结构指导下对E^i进行降噪,得到Ei

这种传播允许在关键帧之间依次生成具有一致外观的新前景对象。

4、Atlas聚合

编辑后的关键帧使用简单的3D CNN聚合成统一的前景图集。该网络被训练到最小化关键帧和它们从聚合图谱的反向映射之间的重建误差。这种紧密耦合确保编辑被合并到一个暂时一致的图集中。

最后,将编辑后的前景和背景图集进行映射和合成,得到最终编辑后的视频帧。使用原始的前景分割蒙版来混合图层。

优势

论文对包含复杂动作的自然视频进行了合成、风格转移、背景替换等多种视频编辑场景的演示。定性和定量实验均表明StableVideo优于现有的基于扩散的方法:

  • 与Tune-A-Video相比,文本提示的可信度更高
  • 与Tune-A-Video相比,闪烁和偏差明显减少
  • 通过避免图集扭曲,比Text2LIVE更全面的编辑
  • 比Text2LIVE/Tune-A-Video中的完整视频/编辑再培训更快的推理

消融试验也验证了所提出的传播和聚合模块的贡献——与独立编辑相比,关键帧传播大大提高了外观一致性。对于一个GPU上的70帧768x432视频来说,只需要30秒的运行时间。

安装和使用

 git clone https://github.com/rese1f/StableVideo.git
 conda create -n stablevideo python=3.11
 pip install -r requirements.txt

所有的模型和检测器都可以从ControlNet的页面下载。

然后工作目录是这样的

 StableVideo
 ├── ...
 ├── ckpt
 │   ├── cldm_v15.yaml
 |   ├── dpt_hybrid-midas-501f0c75.pt
 │   ├── control_sd15_canny.pth
 │   └── control_sd15_depth.pth
 ├── data
 │   └── car-turn
 │       ├── checkpoint # NLA models are stored here
 │       ├── car-turn # contains video frames
 │       ├── ...
 │   ├── blackswan
 │   ├── ...
 └── ...

运行

 python app.py

点击渲染按钮后,生成的mp4视频和关键帧将存储在/log目录中。

总结

StableVideo是一种具有扩散模型的高质量和时间一致的文本驱动视频编辑的新方法。其核心思想是编辑关键帧并在它们之间传播外观,并将编辑聚合到统一的图集空间中。大量的实验表明,该方法在编辑广泛的自然视频方面具有优越的连贯性。该技术提供了一种高效的解决方案,以适应强大的扩散模型,实现平滑的视频编辑。

看看我们的演示视频:

https://weixin.qq.com/sph/AkqDCb

最后就是论文地址:

https://avoid.overfit.cn/post/bc9b051949ea48078de19b3d5622e326

作者:TutorMaster

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java集合学习1】ArrayList集合学习及集合概述分析

JavaArrayList集合学习及集合学习概述 一、Java集合概述 Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Col…

Kubernetes(K8S)使用PV和PVC做存储安装mysql

Kubernetes使用PV和PVC做存储安装mysql 环境准备什么是PV和PVC环境准备配置nfs安装nfs配置nfs服务端 创建命名空间配置pv和pvcpv的yaml文件pvc的yaml文件 部署mysql创建mysql的root密码的secret创建mysql部署的yaml部署mysql链接mysql外部链接内部链接 环境准备 首先你需要一个…

Feign在实际项目中使用详解

Feign在实际项目中使用详解 简介一 Feign客户端应该如何提供?二 Feign调用的接口要不要进行包装?2.1.问题描述2.2.问题解决 三 Feign如何抓取业务生产端的业务异常?3.1.分析3.2.Feign捕获不到异常3.3.异常被额外封装3.4.解决方案 案例源码 简…

4.网络设计与redis、memcached、nginx组件(一)

网络组件系列文章目录 第四章 网络设计与redis、memcached、nginx组件 文章目录 网络组件系列文章目录文章的思维导图前言一、网络相关的问题,网络开发中要处理那些问题?网络操作IO连接建立连接断开消息到达消息发送网络操作IO特性 二、网络中IO检测IO函…

springboot整合rabbitmq死信队列

springboot整合rabbitmq死信队列 什么是死信 说道死信,可能大部分观众大姥爷会有懵逼的想法,什么是死信?死信队列,俗称DLX,翻译过来的名称为Dead Letter Exchange 死信交换机。当消息限定时间内未被消费,…

上门服务系统|上门服务小程序如何提升生活质量?

上门服务其实就是本地生活服务的升级,上门服务包含很多行业可以做的。例如:厨师上门、上门家电维修、跑腿等等。如今各类本地化生活服务越来越受大家的喜爱。基于此市场愿景,我们来谈谈上门服务系统功能。 一、上门服务系统功能 1、预约服务…

Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结

Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结。 01 前言 在使用 Go 语言进行 Web 开发时,我们往往会选择一些优秀的库来简化 HTTP 请求的处理。其中,go-resty 是一个被广泛使用的 HTTP 客户端。…

Jetpack Compose UI架构

Jetpack Compose UI架构 引言 Jetpack Compose是我职业生涯中最激动人心的事。它改变了我工作和问题思考的方式,引入了易用且灵活的工具,几乎可轻松实现各种功能。 早期在生产项目中尝试了Jetpack Compose后,我迅速着迷。尽管我已有使用Co…

信息化发展2

信息系统生命周期 1 、软件的生命周期通常包括:可行性分析与项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等阶段。 2 、信息系统的生命周期可以简化为:系统规划(可行性分析与项目开发计划),系统分析…

基于Pytorch的神经网络部分自定义设计

一、基础概念(学习笔记) (1)训练误差和泛化误差[1] 本质上,优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标,后者则关注在给定有限数据量的情况下寻找合适的模型。训练误差和泛化误差通常不…

机器学习十大算法之七——随机森林

0 引言 集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个横型,集成所有模型的建模结果,基本上所有的机器学习领域都可以看到集成学习…

Docker部署gogs仓库

Docker部署gogs Git仓库 拉取镜像 docker pull gogs/gogs查看本地镜像 docker images启动gogs仓库服务 创建数据挂在目录 我在/root目录下创建gogs挂在目录 mkdir gogs启动gogs docker run --namegogs -d -p 10022:22 -p 10880:3000 -v /root/gogs:/data gogs/gogs10022…

破除“中台化”误区,两大新原则考核中后台

近年来,“中台化”已成为许多企业追求的目标,旨在通过打通前后台数据和业务流程,提升运营效率和创新能力。然而,在实施过程中,一些误解可能导致“中台化”未能如预期般发挥作用。本文将探讨这些误解,并提出…

兄弟,王者荣耀的段位排行榜是通过Redis实现的?

目录 一、排行榜设计方案1、数据库直接排序2、王者荣耀好友排行 二、Redis实现计数器1、什么是计数器功能?2、Redis实现计数器的原理(1)使用INCR命令实现计数器(2)使用INCRBY命令实现计数器 三、通过Redis实现“王者荣…

Pycharm链接远程mysql报错

Pycharm链接远程mysql配置及相应报错如下: 解决方法: 去服务器确认Mysql版本号: 我的Mysql为5.7.43,此时Pycharm mysql驱动为8.0版本,不匹配,所以需要根据实际的版本选择对应的驱动;选择对应的版…

【Java架构-包管理工具】-Maven私服搭建-Nexus(三)

本文摘要 Maven作为Java后端使用频率非常高的一款依赖管理工具,在此咱们由浅入深,分三篇文章(Maven基础、Maven进阶、私服搭建)来深入学习Maven,此篇为开篇主要介绍Maven私服搭建-Nexus 文章目录 本文摘要1. Nexus安装…

Mr. Cappuccino的第64杯咖啡——Spring循环依赖问题

Spring循环依赖问题 什么是循环依赖问题示例项目结构项目代码运行结果 Async注解导致的问题使用Lazy注解解决Async注解导致的问题开启Aop使用代理对象示例项目结构项目代码运行结果 Spring是如何解决循环依赖问题的原理源码解读 什么情况下Spring无法解决循环依赖问题 什么是循…

计算机组成原理学习笔记-精简复习版

一、计算机系统概述 计算机系统硬件软件 计算机硬件的发展: 第一代计算机:(使用电子管)第二代计算机:(使用晶体管)第三代计算机:(使用较小规模的集成电路)第四代计算机:(使用较大规模的集成电路) 冯诺依曼体系结构…

Kotlin协程flow的debounce参数timeoutMillis特性

Kotlin协程flow的debounce参数timeoutMillis特性 <dependency><groupId>org.jetbrains.kotlinx</groupId><artifactId>kotlinx-coroutines-core</artifactId><version>1.7.3</version><type>pom</type></dependency&…

error: can‘t find Rust compiler

操作系统 win11 pip install -r requirements.txt 报错如下 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl (95 kB) Building wheels for collected p…