字节跳动开源基于SD1.5的 MagicAnimate 一张照片秒变真人舞蹈视频

news2025/1/11 20:57:57

项目地址:https://github.com/magic-research/magic-animate

显卡要求:12G

MagicAnimate是一项利用先进的扩散模型实现人体图像动画的创新性项目。其核心优势在于确保生成内容的时间一致性,通过提供预训练的稳定扩散V1.5和MSE微调的VAE基础模型,使用户能够轻松入门。

使用MagicAnimate只需要一张照片和一组动作。用户可以选择一张喜欢的小姐姐的照片,然后通过输入一组动作,让AI根据这些信息生成一个舞蹈视频。这个舞蹈视频看起来非常逼真,几乎可以让人误以为是真实人物在跳舞。

为使用MagicAnimate,用户需下载稳定扩散V1.5和MSE微调的VAE预训练基模型,并按照提供的结构组织检查点。安装简便,仅需Python(3.8以上版本)、CUDA(11.3以上版本)和FFmpeg。可通过conda或pip安装依赖项。

推理过程:

MagicAnimate提供了用户友好的推理过程。用户可通过提供的bash脚本在单个GPU上运行推理,或使用另一个脚本在多个GPU上运行,以优化性能。这种简便的推理方式确保了从初学者到经验丰富的研究人员的广泛可访问性。

前几日,阿里研究团队构建了一种名为 Animate Anyone 的方法,只需要一张人物照片,再配合骨骼动画引导,就能生成自然的动画视频。不过,这项研究的源代码还没有发布。

让钢铁侠动起来。

其实在 Animate Anyone 这篇论文出现在 arXiv 上的前一天,新加坡国立大学 Show 实验室和字节联合做了一项类似的研究。他们提出了一个基于扩散的框架 MagicAnimate,旨在增强时间一致性、忠实地保留参考图像并提升动画保真度。并且,MagicAnimate 项目是开源的,目前推理代码和 gradio 在线 demo 已经发布。

图片

  • 论文地址:https://arxiv.org/pdf/2311.16498.pdf
  • 项目地址:https://showlab.github.io/magicanimate/
  • GitHub 地址:https://github.com/magic-research/magic-animate

为了实现上述目标,研究者首先开发了一个视频扩散模型来编码时间信息。接着为了保持跨帧的外观连贯性,他们引入了新颖的外观编码器来保留参考图像的复杂细节。利用这两个创新,研究者进一步使用简单的视频融合技术来保证长视频动画的平滑过渡。

实验结果表明,MagicAnimate 在两项基准测试上均优于基线方法。尤其在具有挑战性的 TikTok 跳舞数据集上,本文方法在视频保真度方面比最强基线方法高出 38%以上。

我们来看以下几个 TikTok 小姐姐的动态展示效果。

图片

图片

图片

除了跳舞的 TikTok 小姐姐之外,还有「跑起来」的神奇女侠。

图片

戴珍珠耳环的少女、蒙娜丽莎都做起了瑜伽。

图片

图片

除了单人,多人跳舞也能搞定。

图片

图片

与其他方法比较,效果高下立判。

图片

还有国外网友在HuggingFace上创建了一个试用空间,创建一个动画视频只要几分钟。不过这个网站已经404了。

图源:https://twitter.com/gijigae/status/1731832513595953365

图片

接下来介绍 MagicAnimate 的方法和实验结果。

方法概览

给定参考图像 I_ref 和运动序列

图片

,其中 N 是帧数。MagicAnimate 旨在合成连续视频

图片

图片

。其中出现画面 I_ref,同时遵循运动序列

图片

。现有基于扩散模型的框架独立处理每个帧,忽略了帧之间的时间一致性,从而导致生成的动画存在「闪烁」问题。

为了解决该问题,该研究通过将时间注意力(temporal attention)块合并到扩散主干网络中,来构建用于时间建模的视频扩散模型

图片

此外,现有工作使用 CLIP 编码器对参考图像进行编码,但该研究认为这种方法无法捕获复杂细节。因此,该研究提出了一种新型外观编码器(appearance encoder)

图片

,将 I_ref 编码到外观嵌入 y_a 中,并以此为基础对模型进行调整。

MagicAnimate 的整体流程如下图 2 所示,首先使用外观编码器将参考图像嵌入到外观嵌入中,然后再将目标姿态序列传递到姿态 ControlNet

图片

中,以提取运动条件

图片

图片

在实践中,由于内存限制,MagicAnimate 以分段的方式处理整个视频。得益于时间建模和强大的外观编码,MagicAnimate 可以在很大程度上保持片段之间的时间和外观一致性。但各部分之间仍然存在细微的不连续性,为了缓解这种情况,研究团队利用简单的视频融合方法来提高过渡平滑度。

如图 2 所示,MagicAnimate 将整个视频分解为重叠的片段,并简单地对重叠帧的预测进行平均。最后,该研究还引入图像 - 视频联合训练策略,以进一步增强参考图像保留能力和单帧保真度。

实验及结果

实验部分,研究者在两个数据集评估了 MagicAnimate 的性能,分别是 TikTok 和 TED-talks。其中 TikTok 数据集包含了 350 个跳舞视频,TED-talks 包含 1,203 个提取自 YouTube 上 TED 演讲视频的片段。

首先看定量结果。下表 1 展示了两个数据集上 MagicAnimate 与基线方法的定量结果比较,其中表 1a 显示在 TikTok 数据集上,本文方法在 L1、PSNR、SSIM 和 LPIPS 等重建指标上超越了所有基线方法。

表 1b 显示在 TED-talks 数据集上,MagicAnimate 在视频保真度方面也更好,取得了最好的 FID-VID 分数(19.00)和 FVD 分数(131.51)。

图片

再看定性结果。研究者在下图 3 展示了 MagicAnimate 与其他基线方法的定性比较。本文方法实现了更好的保真度,展现了更强的背景保留能力, 这要归功于从参考图像中提取细节信息的外观编码器。

图片

研究者还评估了 MagicAnimate 的跨身份动画(Cross-identity animation),以及与 SOTA 基线方法的比较,即 DisCo 和 MRAA。具体来讲,他们从 TikTok 测试集中采样了两个 DensePose 运动序列,并使用这些序列对其他视频的参考图像进行动画处理。

下图 1 显示出 MRAA 无法泛化到包含大量不同姿态的驱动视频,而 DisCo 难以保留参考图像的细节。相比之下,本文方法忠实地为给定目标运动的参考图像设置动画,展示了其稳健性。

图片

最后是消融实验。为了验证 MagicAnimate 中设计选择的有效性,研究者在 TikTok 数据集上进行了消融实验,包括下表 2 和下图 4 中有无时间建模、外观编码器、推理阶段视频融合以及图像 - 视频联合训练等。

图片

图片

MagicAnimate 的应用前景也很广。研究者表示,尽管仅接受了真实人类数据的训练,但它展现出了泛化到各种应用场景的能力,包括对未见过的领域数据进行动画处理、与文本 - 图像扩散模型的集成以及多人动画等。

图片

更多细节请阅读原论文。

一张照片,TikTok小姐姐就都能跳舞了-51CTO.COM

计算机视觉GPT时刻!UC伯克利三巨头祭出首个纯CV大模型,推理惊现AGI火花-51CTO.COM

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

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

相关文章

Python-炸弹人【附完整源码】

炸弹人 炸弹人是童年的一款经典电子游戏,玩家控制一个类似"炸弹人"的角色,这个角色可以放置炸弹,并在指定的时间内引爆它们消灭敌人以达到目标,此游戏共设有两节关卡,代码如下: 运行效果&#x…

Qt/C++视频监控拉流显示/各种rtsp/rtmp/http视频流/摄像头采集/视频监控回放/录像存储

一、前言 本视频播放组件陆陆续续写了6年多,一直在持续更新迭代,视频监控行业客户端软件开发首要需求就是拉流显示,比如给定一个rtsp视频流地址,你需要在软件上显示实时画面,其次就是录像保存,再次就是一些…

22、pytest多个参数化的组合

官方实例 # content of test_multi_parametrie.py import pytestpytest.mark.parametrize("x",[0,1]) pytest.mark.parametrize("y",[2,3]) def test_foo(x,y):print("{}-{}".format(x,y))pass解读与实操 要获得多个参数化参数的所有组合&…

vue3里面使用ref和toRef、toRefs

vue3 里面我们经常会使用ref()来接受内部值,返回一个响应式的对象。创建可以使用任何类型的响应式ref。这里对象是响应式的,可以进行更改的,对象有一个value属性,其值就是所传递的原始值。ref() 将传入参数的值包装为一个带 .valu…

【链表Linked List】力扣-83 删除排序链表中的重复元素

目录 题目描述 解题过程 题目描述 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2] 输出:[1,2]示例 2: 输入&#xff1…

【每日OJ —— 94. 二叉树的中序遍历】

每日OJ —— 94. 二叉树的中序遍历 1.题目:94. 二叉树的中序遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:94. 二叉树的中序遍历 2.解法 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间,这样的效率太低…

android开发市场被抢占,鸿蒙能入行吗?

根据最新的数据,华为Mate60系列在上市第二周就成功占据了国内手机市场的17%份额,排名第二。而机构预测,华为手机在第37周有望超过20%的市场份额,成为国内手机市场的冠军。 一开始,人们对HarmonyOSNEXT持保留态度&…

国产麒麟操作系统部署记录

前提:部署项目首先要安装各种软件,在内网环境下无法在线下载。 思路:首先部署一台能上网的系统,在此系统下只下载包,然后传到另一台内网系统下进行安装; 1、最开始yum未安装,因此需要先安装yu…

PHP短信接口防刷防轰炸多重解决方案三(可正式使用)

短信接口盗刷轰炸:指的是黑客利用非法手段获取短信接口的访问权限,然后使用该接口发送大量垃圾短信给目标用户 短信验证码轰炸解决方案一(验证码类解决)-CSDN博客 短信验证码轰炸解决方案二(防止海外ip、限制ip、限制手机号次数解决)-CSDN博客 PHP短信…

JavaScript 数组方法 reduce() 的用法

一、概述 在JavaScript中,reduce()方法是一个非常实用的数组方法,它接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。这个方法在处理数组…

数据结构 | 二叉树的各种遍历

数据结构 | 二叉树的各种遍历 文章目录 数据结构 | 二叉树的各种遍历创建节点 && 创建树二叉树的前中后序遍历二叉树节点个数二叉树叶子节点个数二叉树第k层节点个数二叉树查找值为x的节点二叉树求树的高度二叉树的层序遍历判断二叉树是否是完全二叉树 我们本章来实现二…

【C语言】指针与数组的潜在联系

目录 前言 改变固有数组的平面思维 注意: 数组操作与指针等价 指针数组 数组指针 笔试加深理解: 解析: 前言 《C Traps and Pitfalls》(C语言缺陷与陷阱)中有一句著名的见解: “在C语言中,指针与数组这两个概念…

MUC\GD32低功耗模式简介

 前言 低功耗模式在现在的开发中尤为重要,特别是在使用电池的设备中,今天我们就拿GD32来聊一聊低功耗模式,以及他们使用的状态与唤醒方式以及耗电情况。 GD32支持的低功耗模式:  省电模式 MCU支持三种省电模式&#xff0…

SpringBoot3-创建自定义启动器,使用自定义starter启动器

1、创建自定义启动工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.a…

647. Palindromic Substrings 516. Longest Palindromic Subsequence

647. Palindromic Substrings Given a string s, return the number of palindromic substrings 回文子串 in it. A string is a palindrome when it reads the same backward as forward. A substring is a contiguous sequence of characters within the string. nomal: …

Hello World!

一、minist数据集 深度学习编程特有的hello world程序&#xff1a;采用minist数据集完成意向特定深度学习项目 1、minist数据集介绍 MNIST数据集是一个广泛使用的手写数字识别数据集&#xff0c;它包含了许多不同人手写的数字图片。这个数据集被广泛用于研究手写数字识别&…

文件上传漏洞(带实例)

漏洞介绍&#xff1a; 现代互联网的Web应用程序中&#xff0c;上传文件是一种常见的功能&#xff0c;因为它有助于提高业务效率&#xff0c;如企业的OA系统&#xff0c;允许用户上传图片&#xff0c;视频&#xff0c;头像和许多其他类型的文件。然而向用户提供的功能越多&#…

海外服务器和国内服务器有什么样的区别呢

海外服务器和国内服务器有什么样的区别呢&#xff0c;其实呢在外形方面是大同小异&#xff0c;除了外形还有一些其他方面还存在这一些差异。 一&#xff0c;地理位置的差异。 海外服务器——有可能在中国数据中心之外的任何国家地区&#xff0c;例如美国服务器&#xff0c;韩…

深度解析IP应用场景API:提升风险控制与反欺诈能力

前言 在当今数字化时代&#xff0c;网络安全和用户数据保护成为企业日益关注的焦点。IP应用场景API作为一种强大的工具&#xff0c;不仅能够在线调用接口获取IP场景属性&#xff0c;而且具备识别IP真人度的能力&#xff0c;为企业提供了卓越的风险控制和反欺诈业务能力。本文将…

企业如何结合数字化技术实现精益生产

企业要想长远良性发展&#xff0c;就必须不断追求生产效率的极致&#xff0c;才能不断对抗各方各面带来的压力。结合国家大环境趋势&#xff0c;绿色生产已然成为了国家关注的重点&#xff0c;所以老旧耗能的企业生产模式注定会被时代所淘汰。企业只有紧跟国家的发展步伐&#…