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

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

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

相关文章

YOLOv8 YoLov8l 模型输出及水果识别

🍨 本文为[🔗365天深度学习训练营学习记录博客 🍦 参考文章:365天深度学习训练营 🍖 原作者:[K同学啊 | 接辅导、项目定制] 🚀 文章来源:[K同学的学习圈子](https://www.yuque.com/m…

Android app性能优化指南

Android应用性能优化指南 提高应用程序的性能以实现更流畅的用户体验和更高的可见度。 性能在任何应用程序的成功中发挥着重要的作用。为用户提供流畅无缝的体验应该是开发人员的重点。 应用程序大小 在用户开始使用我们的应用程序之前,他们需要下载应用程序并将…

TypeScript入门实战笔记 -- 开篇 为什么要选择 TypeScript ?

typescript 在线编辑器http://typescript.p2hp.com/play?#code/JYOwLgpgTgZghgYwgAgJIFUDO1Uhge2QG8AoZc5YAEwC5kQBXAWwCNoBuMikOJiOzGCigA5pwrI4ANzhg4UAPwChozgF8SmmAxAIwwfCGRYcefAAoADlHyXMdDNii4CASmJdyCQ5nwAbCAA6P3wRKxs7ABpkAHJrW0wY1xINEhNnM3MiSlpkAEZonj46GIBrROQ1…

C/C++之输入输出

文章目录 一.C语言的输入输出1.printfi. 输出整数ii. 浮点数iii.字符 & 字符串 2.scanfi.整数ii.浮点数iii. 字符 & 字符串 3.特殊用法i. * 的应用ii. %n 的应用iii. %[] 的应用 二.C中的输入输出1.couti. 缓冲区(buffer)ii. cout之格式化输出 2…

区块链optimism主网节点搭建

文章目录 官方参考资料编译环境搭建编译Optimism Monorepo编译op-geth 执行下载数据快照生成op-geth和op-node通信密钥op-geth执行脚本 op-node执行脚本 启动日志op-gethop-node 本文是按照官方参考资料基于源码的方式成功搭建optimism主网节点。 官方参考资料 源码&#xff1…

【设计模式-4.4】行为型——模板方法模式

说明:本文介绍设计模式中行为型设计模式中的,模板方法模式; 生存 模版方法模式是行为型设计模式,关注于对象的行为。在《秒懂设计模式》(刘韬 著)中举了一个例子,例如哺乳动物的生存技能&…

1688API接口系列,商品详情数据丨搜索商品列表丨商家订单类丨1688开放平台接口使用方案

1688商品详情接口是指1688平台提供的API接口,用于获取商品详情信息。通过该接口,您可以获取到商品的详细信息,包括商品标题、价格、库存、描述、图片等。 要使用1688商品详情接口,您需要先申请1688的API权限,并获取ac…

【开源】基于Vue+SpringBoot的河南软件客服系统

文末获取源码,项目编号: S 067 。 \color{red}{文末获取源码,项目编号:S067。} 文末获取源码,项目编号:S067。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、…

uniapp 云打包 生成安卓证书文件

现在使用uniapp来开发小程序,H5,APP越来越多了,目前开发了一款APP,使用的也是uniapp。在此记录下用uniapp开发app云打包时约到的一些问题吧。 前因是我司安卓同学休产假,像云打包时需要的证书文件只能自己动手来搞。看…

Avaya Aura Device Services 任意文件上传漏洞复现

0x01 产品简介 Avaya Aura Device Services是美国Avaya公司的一个应用软件。提供一个管理 Avaya 端点功能。 0x02 漏洞概述 Avaya Aura Device Services 系统PhoneBackup接口处存在任意文件上传漏洞,攻击者可绕过验证上传任意文件获取服务器权限。 0x03 影响范围…

使用Jmeter进行http接口测试

前言: 本文主要针对http接口进行测试,使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试。 一、开发接口…

Mac电脑vm虚拟机 VMware Fusion Pro中文 for mac

VMware Fusion Pro是一款功能强大的虚拟机软件,适用于需要在Mac电脑上运行其他操作系统的用户。它具有广泛的支持、快速稳定的特点以及多种高级功能,可以满足用户的各种需求和场景。 多操作系统支持:VMware Fusion Pro允许在Mac电脑上运行多…

平台工程文化:软件开发的创新路径和协作之道

在快速发展的软件开发领域,具有前瞻性思维的企业组织正在拥抱平台工程文化的变革力量。这种创新方法强调创建共享平台、工具和实践,使开发人员能够更快、更高效地交付高质量的软件。在本文中,我们将深入探讨平台工程文化的核心原则和深远的好…

Scala 从入门到精通

Scala 从入门到精通 数据类型 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:…

基于STM32 + DMA介绍,应用和步骤详解(ADC多通道)

前言 本篇博客主要学习了解DMA的工作原理和部分寄存器解析&#xff0c;针对ADC多通道来对代码部分&#xff0c;应用部分作详细讲解&#xff0c;掌握代码编程原理。本篇博客大部分是自己收集和整理&#xff0c;如有侵权请联系我删除。 本次博客开发板使用的是正点原子精英版&am…

springboot_java养老院老年人问诊服务预约系统ssm

系统的目标是为管理员&#xff0c;服务者&#xff0c;医生和用户搭建一个网上沟通平台&#xff0c;保证四方的安全&#xff0c;并使四方的利益最大化。 .用户&#xff1a; &#xff08;1&#xff09;用户注册登入页面&#xff1a;用户进行操作时需要是已注册登入用户 &#xff…

WireShark监控浏览器登录过程网络请求

软件开发中经常前后端扯皮。一种是用Chrome浏览器的开发者工具 来看网络交互&#xff0c;但是前提是 网络端口的确是通的。 WireShark工作在更低层。 这个工具最大的好处&#xff0c;大家别扯皮&#xff0c;看网络底层的log&#xff0c;到底 你的端口开没开&#xff0c; 数据…

结合ColorUI组件开发微信小程序

1.自定义组件生命周期函数&#xff1a; Component({data: {},attached() {console.log("自定义组件生命周期函数 attached--先执行");this.getPos();},ready() {console.log("ready生命周期函数---在attached之后执行")},methods: {getPos() {var that th…

uniapp 使用 $emit和$on——$on中无法为data中的变量赋值

问题在于this的指向&#xff0c; 解决办法是使用变量保存$on&#xff0c;其次再为data中的值赋值 以下是具体代码&#xff1a; 1、html代码&#xff1a; <view class"form_picker" click"selePositionFun()"><view class""><inp…

基于remix+metamask+ganache的智能合约部署调用

在我们部署合约时为了让它更接近真实区块链去中心化体验&#xff0c;我们需要调用小狐狸&#xff08;Metamask&#xff09;来进行真实交易&#xff0c;而metamask里没有内置虚拟测试币&#xff0c;我们需要进行调用Ganache来添加带有虚拟测试币的账号。以上就是三者的关系&…