AIGC之Image2Video(一)| Animate Anyone:从静态图像生成动态视频,可将任意图像角色动画化

       近日,阿里发布了Animate Anyone,只需一张人物照片,结合骨骼动画,就能生成人体动画视频。

图片

项目地址:https://humanaigc.github.io/animate-anyone/

论文地址:https://arxiv.org/pdf/2311.17117.pdf

Github:https://github.com/HumanAIGC/AnimateAnyone

       在图像生成领域视频,尤其是在角色动画(通过驱动信号从静态图像中生成角色视频)生成中,其中角色详细信息的一致性仍然是一个艰巨的问题。为了确保可控性和连续性,引入了一个有效的姿势指导器来指导角色的动作,并采用了一种有效的时间建模方法来确保视频帧之间的平滑过渡。本方法可以通过数据驱动的方式对任意角色进行动画制作,相比其他图像到视频的方法,其在角色动画方面表现更优。此外,本方法在时尚视频和人类舞蹈合成的基准测试中取得了最先进的结果。

图片

一、Animate Anyone介绍

       模型架构,如下图所示:

图片

       网络的初始输入由多帧噪声组成。去噪UNet基于SD的设计进行配置,采用相同的框架和块单元,并继承SD的训练权重。该方法包含三个关键组件:1)ReferenceNet:编码参考图像中字符的外观特征;2)Pose Guider:编码运动控制信号,实现角色的可控动作;3)Temporal Layer:编码时间关系,保证角色运动的连续性。

1.1 ReferenceNet

       在文本生成视频的任务中,文本Prompt包含高级语义,只需要语义与生成的视觉内容相关性即可。然而,在图像生成视频任务,图像特征更详细一些,要求生成的结果更精确匹配。在之前的研究中,重点关注图像驱动生成,大多数方法都采用CLIP图像编码器作为交叉注意中的文本编码器,然而,这种设计未能解决与细节一致性相关的问题。一个原因由于这种限制,CLIP图像编码器的输入包括低分辨率(224×224)图像,导致丢失重要的细粒度细节信息。另一个因素是CLIP经过预训练以匹配语义强调高级特征匹配的文本特征,从而导致在特征编码内的详细特征的不足。

        作者设计了一种参考图像特征提取网络ReferenceNet。对于ReferenceNet,采用了与去噪UNet相同的框架,不包括时间层。与去噪的UNet类似,ReferenceNet从原始SD继承了权重,并且对每个SD的权重更新都是独立进行的。如上图2所示,将self-attention层替换为space-attention层,然后执行self-attention,并提取特征图的前半部分作为输出。这种设计有两个优点:首先,ReferenceNet可以利用原始SD的预训练图像特征建模能力,从而得到良好的初始化特征。其次,由于ReferenceNet和去噪UNet本质上相同的网络结构和共享的初始化权值,去噪UNet可以选择性地从ReferenceNet中学习相同特征空间中相关的特征。利用与文本编码器共享的特征空间,提供参考图像的语义特征,作为有益的初始化,加快整个网络训练过程。

       ControlNet也采用类似的设计,它在去噪UNet中引入了额外的控制特征使用零卷积。然而,控制信息(例如深度或者边缘信息)在空间上与目标图像是对齐的,而参考图像和目标图像在空间上相关但不对齐。因此,ControlNet不是适合直接应用。后续的实验会有具体的分析。

       虽然ReferenceNet引入了与去噪UNet相当数量的参数,但在基于扩散的视频生成中,所有视频帧都要进行多次去噪,而ReferenceNet在整个过程中只需要提取一次特征。因此,在推理过程中,它不会导致计算开销的大幅增加。

1.2 Pose Guider

       ControlNet表现出超出文本Prompt之外且具有高度鲁棒性的条件生成功能。由于去噪的UNet需要微调,本文选择不纳入额外的ControlNet,以防止计算复杂度的显著增加。相反,作者采用了一个轻量级的姿势引导器。这个姿态引导器利用四个卷积层(4×4核,2×2步,使用16,32,64128通道,类似于ControlNet中的条件编码器)以与噪声潜分辨率相同的姿态图像对齐。然后,将处理后的姿态图像与噪声潜层相加,再输入到去噪的UNet中。姿态引导器使用高斯权重进行初始化,并且在最终的投影层中采用零卷积。

1.3 Temporal Layer

       许多研究表明将时间层加入文本生成图像(T2I)的模型中可以捕获视频帧的时间依赖关系,这种设计有助于从预训练好的T2I模型迁移图像生成能力。我们的时间层在Res-Trans块内的空间注意力和交叉注意力组件之后进行集成。temporal层的设计灵感来自AnimateDiff。通过残差连接将来自时间层的特征纳入原始特征。时间层只应用于去噪UNet的Res-Trans块内。对于ReferenceNet,它计算单个参考图像的特征,不参与时间建模。由于姿态引导器实现了角色连续运动的可控性,实验表明,时间层确保了外观细节的时间平滑和连续性,避免了复杂的运动建模。

二、Animate Anyone训练策略

       训练总共分为两个阶段:第一阶段使用单个视频帧进行训练,在去噪UNet中排除了时间层,模型以单帧噪声作为输入,同时训练ReferenceNet和Pose Guider。参考图像从整个视频剪辑中随机选择。Denoising UNet和ReferenceNet的模型使用SD的预训练权重进行初始化,而Pose Guider使用高斯权重进行初始化,最后的投影层使用零卷积。VAE的编码器和解码器以及CLIP图像编码器的权重都保持不变。这个阶段的优化目标是在给定参考图像和目标姿势的条件下生成高质量的动画图像。第二阶段将时间层引入先前预训练好的模型,并使用AnimateDiff的预训练权重进行初始化。模型的输入是一个24帧的视频剪辑。在这个阶段,只训练时间层,固定网络的其他权重。

三、Animate Anyone实验效果分析

3.1 实验设置

       从互联网收集了5K个角色视频片段(2-10s时长)进行训练,并采用DWPose提取角色的姿势序列(包括身体和手),并使用OpenPose对其进行渲染为姿势骨架图像。训练硬件为4个NVIDIA A100 GPU。在训练过程中,使用了两个阶段的训练,在第一个训练阶段,采样单个视频帧,并调整大小和中心裁剪到768×768的分辨率,batch size设置为64,训练30000步;在第二个训练阶段,使用24帧视频序列,并设置batch size为4,训练10000步。两种学习率都设置为1e-5。在推理过程中,重新调整姿势轮廓的长度来匹配角色参考图像中的特征轮廓,并使用DDIM采样器进行20步去噪。作者采用了时间聚合中的方法,将不同批次的结果连接到生成长视频。为了与其他图像进行公平比较动画方法,作者还在两个特定的基准(UBC时尚视频数据集和TikTok数据集)上训练模型。

3.2 定性分析

图片

       Animate Anyone可以动画化任意角色,包括全身人物、半身肖像、卡通角色和人形角色。它能够生成高清晰度和逼真的角色细节,并在大幅度运动下保持与参考图像的时间一致性,同时在帧之间展现时间连续性。更多视频结果可在补充材料中查看。

3.3 对比分析

       Animate Anyone在时尚视频合成和人类舞蹈生成两个基准测试中进行了评估。使用SSIM、PSNR和LPIPS等指标进行图像质量的定量评估,使用FVD指标进行视频质量的评估。

时尚视频合成

图片

图片

人类舞蹈生成

图片

图片

图像到视频通用方法

图片

3.4 消融实验

图片

图片

四、Animate Anyone不足之处

1.与许多视觉生成模型类似,模型可能难以为手部运动生成高度稳定的结果,有时会导致失真以及运动模糊;

2.由于图像只提供了一个视角,生成角色移动时未见部分的问题是不确定的,可能会导致不稳定性;

3.由于使用了DDPM,该模型的生成效率较低。

参考文献:

[1] https://arxiv.org/pdf/2311.17117.pdf

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

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

相关文章

力扣116. 填充每个节点的下一个右侧节点指针(详细讲解root根节点的理解)

题目: 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右…

酷开科技以创新为动力用大数据提升品牌认知

在21世纪的今天,我们生活在一个被互联网深深改变的世界。互联网不仅改变了我们的生活方式,也正在改变我们的思维方式和工作方式。而互联网作为一种新的发展趋势,更是为我们提供了无数的机会和无限可能性,从电子商务时代到社交网络…

Spring的配置文件,如何配置端口号,,properties,yml获取配置项等方法,外观模式及其优缺点,日志代表的信息

目录 一、回顾 二.如何配置端口号 配置文件,最重要的目的:解决硬编码问题-代码写死 1.常见配置项 yml获取配置项 多次获取配置项(yml会对我们的参数情况,进行的一定类型转换比如数字10,转换成“10”) null:使用k…

交易历史记录20231205 记录

昨日回顾: select top 10000 * from dbo.CODEINFO A left join dbo.全部A股20231205010101 B ON A.CODE B.代码 left join dbo.全部A股20231205CONF D on A.CODED.代码left join dbo.全部A股20231205 G on A.CODEG.代码 left…

常见面试题之死锁

定义 死锁就是两个或两个以上的线程在执行过程中,由于竞争资源或者互相通信导致彼此占用对方的锁资源而造成的一种阻塞现象,在没有外界作用下都在等待对方释放锁资源,导致程序无法进行下去。 上代码 public class t9 {public static void m…

MongoDB知识总结

这里写自定义目录标题 MongoDB基本介绍MongoDB基本操作数据库相关集合相关增删改查 MongoDB基本介绍 简单介绍 MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产…

基于 Stereo R-CNN 的自动驾驶 3D 目标检测

论文地址:https://openaccess.thecvf.com/content_CVPR_2019/papers/Li_Stereo_R-CNN_Based_3D_Object_Detection_for_Autonomous_Driving_CVPR_2019_paper.pdf 论文代码:https://github.com/HKUST-Aerial-Robotics/Stereo-RCNN 论文背景 大多数 3D 物…

Failed to connect to github.com port 443 after 21055 ms: Timed out

目前自己使用了梯*子还是会报这样的错误,连接不到的github。 查了一下原因: 是因为这个请求没有走代理。 解决方案: 设置 -> 网络和Internet -> 代理 -> 编辑 记住这个IP和端口 使用以下命令: git config --global h…

TCP实现一对一聊天

一,创建类 二,类 1.ChatSocketServer类 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Sca…

Redis哨兵(sentinel)

文章目录 简介搭建框架具体步骤主要文件参数开始配置 案例分析原有的master挂了 哨兵运行流程和选举原理主观下线客观下线(Objectively Down)选举出领导者哨兵(哨兵中选出兵王) 选新的master使用建议 简介 将某一个从库转换为新主库,继续对外服务将某一个从库转换为…

Apache Flink(七):Apache Flink快速入门 - DataStream BATCH模式

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 下面使用Java代码使用DataStream…

HarmonyOS应用开发者高级认证考试答案

一、判断题 云函数打包完成后,需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用(错)在column和Row容器组件中,aligntems用于设置子组件在主轴方向上的对齐格式,justifycontent用于设置子组件在交叉轴…

Java异步编程之利器:Guava异步编程实践

第1章:引言 - 为什么要用Guava进行异步编程? 大家好,我是小黑!今天咱们要聊的是Guava在异步编程中的应用。首先,让我们搞清楚为什么要用Guava来处理异步任务。在Java的世界里,异步编程是个老话题了&#x…

Android--Jetpack--Databinding详解

不经一番寒彻骨,怎得梅花扑鼻香 一,定义 DataBinding, 又名数据绑定,是Android开发中非常重要的基础技术,它可以将UI组件和数据模型连接起来,使得在数据模型发生变化时,UI组件自动更新。是 MVVM 模式在 An…

Day52力扣打卡

打卡记录 Collapsing Strings&#xff08;Trie树&#xff09; 链接 #include <iostream> #include <algorithm> using namespace std; const int N 2e6 10; int son[N][26], idx, cnt1[N], cnt2[N]; int main() {auto insert [&](string& str, int* c…

计算机基础知识66

Auth的补充 #概念&#xff1a;是django 的一个app&#xff0c;关于用户的登录&#xff0c;退出&#xff0c;注册... # 配置文件中配置&#xff1a;表会被迁移 INSTALLED_APPS [django.contrib.auth,] # auth有哪些表---权限控制&#xff1a; Permission&#xff1a;auth_permi…

【PyTorch】权重衰减

文章目录 1. 理论介绍2. 实例解析2.1. 实例描述2.2. 代码实现 1. 理论介绍 通过对模型过拟合的思考&#xff0c;人们希望能通过某种工具调整模型复杂度&#xff0c;使其达到一个合适的平衡位置。权重衰减&#xff08;又称 L 2 L_2 L2​正则化&#xff09;通过为损失函数添加惩…

HTTPS 的通信加解密过程,证书为什么更安全?

目录 一、什么是https 二、HTTPS 的加解密过程 三、HTTPS 为什么更安全&#xff1f; 一、什么是https HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种通过加密和身份验证保护数据传输安全的通信协议。它是在常用的HTTP协议基础上添加了 SSL/TLS 加…

Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 论文阅读

Memorizing Normality to Detect Anomaly: Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 摘要1.介绍2.相关工作异常检测Memory networks 3. Memory-augmented Autoencoder3.1概述3.2. Encoder and Decoder3.3. Memory Module with Attention-based S…

redis中使用事务

事务是指一个执行过程&#xff0c;要么全部执行成功&#xff0c;要么失败什么都不改变。不会存在一部分成功一部分失败的情况&#xff0c;也就是事务的ACID四大特性&#xff08;原子性、一致性、隔离性、持久性&#xff09;。但是redis中的事务并不是严格意义上的事务&#xff…