AIGC-Animate Anyone阿里的图像到视频 角色合成的框架-论文解读

Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation

论文:https://arxiv.org/pdf/2311.17117
网页:https://humanaigc.github.io/animate-anyone/

在这里插入图片描述

MOTIVATION

  • 角色动画的目标是将静态图像转换成逼真的视频,这在在线零售、娱乐视频、艺术创作和虚拟角色等领域有广泛应用。
  • 尽管生成对抗网络(GANs)和图像动画技术取得了进展,但生成的图像或视频仍存在局部失真、细节模糊、语义不一致和时间不稳定等问题。
  • 目前的研究主要集中在特定任务和基准上,导致泛化能力有限。

CONTRIBUTION

  • 提出Animate Anyone,一种新技术,能够将静态角色图像转换成由特定姿势序列控制的动画视频。网络设计和预训练权重继承自Stable Diffusion (SD),并对去噪UNet进行修改以处理多帧输入。
  • ReferenceNet: 特别设计为对称的UNet结构,用于捕获参考图像的空间细节。通过空间注意力机制在UNet的相应层中整合ReferenceNet的特征,使模型能够在一致的特征空间内学习与参考图像的关系,显著提升外观细节的保持能力。
  • 姿态引导器(Pose Guider): 一个轻量级的姿势引导器,有效将姿势控制信号整合到去噪过程中,确保动画的可控性。
  • Temporal Layer:引入时间层来模拟多帧之间的关系,保持视觉质量的高分辨率细节,同时模拟连续且平滑的时间运动过程。

RELATED WORKS

扩散模型在视频生成中的应用

  • 文本到视频模型:扩散模型在文本到图像应用中的成功,为文本到视频的研究提供了结构上的启示。
  • 时间层插入:一些工作通过在预训练的文本到图像模型中插入时间层,将其转换为视频生成器。
  • Video LDM和AnimateDiff:提出了在大量视频数据上训练的运动模块,这些模块可以注入到大多数个性化的文本到图像模型中,而无需特定调整。
  • VideoComposer和VideoCrafter:扩展了文本到视频的功能到图像到视频,通过在训练期间将图像作为条件控制纳入扩散输入,或将CLIP的文本和视觉特征作为交叉注意力的输入。

扩散模型在人物图像动画中的应用

  • PIDM、LFDM和LEO:提出了将期望的纹理模式注入去噪的人物姿势转移、在潜在空间合成光流序列以及表示运动为流图序列并使用扩散模型合成运动代码的方法。
  • DreamPose和DisCo:利用预训练的稳定扩散模型,并提出适配器来模拟CLIP和VAE图像嵌入,或从ControlNet中汲取灵感,分离姿势和背景的控制。

METHODS

目标是角色动画的姿势引导图像到视频合成。 给定描述角色外观和姿势序列的参考图像,我们的模型会生成该角色的动画视频。

Preliminariy: Stable Diffusion

Stable Diffusion(SD)是一种基于潜在扩散模型(LDM)的图像生成方法。为了降低模型的计算复杂性,SD在潜在空间中对特征分布进行建模。其核心组件包括一个自动编码器(Autoencoder),由编码器(Encoder) E E E和解码器(Decoder) D D D组成。具体过程如下:

  1. 编码过程:给定图像 x x x,编码器首先将其映射到一个潜在表示 z = E ( x ) z = E(x) z=E(x)
  2. 解码过程:解码器将潜在表示 z z z重建为原图像 x recon = D ( z ) x_{\text{recon}} = D(z) xrecon=D(z)

SD通过denoise一个正态分布的噪声 ϵ \epsilon ϵ来生成逼真的潜在表示 z z z。在训练过程中,图像潜在表示 z z z t t t个时间步中被扩散以产生噪声潜在表示 z t z_t zt,去噪UNet被训练用来预测应用的噪声。其优化目标定义如下:

L = E z t , c , ϵ , t ( ∣ ∣ ϵ − ϵ θ ( z t , c , t ) ∣ ∣ 2 2 ) L = E_{z_t, c, \epsilon, t} (||\epsilon - \epsilon_\theta(z_t, c, t)||_2^2) L=Ezt,c,ϵ,t(∣∣ϵϵθ(zt,c,t)22)

  • ϵ θ \epsilon_\theta ϵθ表示去噪UNet的函数
  • c c c表示条件信息的嵌入。在原始SD中,使用CLIP ViT-L/14[9]文本编码器将文本提示表示为文本嵌入。
  • 去噪UNet包括四个下采样层、一个中间层和四个上采样层,每个层内的典型块包括三种计算:2D卷积、自注意力和交叉注意力。
  • 在推理时, z T z_T zT从初始时间步 T T T的随机高斯分布中采样,并通过确定性采样过程逐步去噪和恢复为 z 0 z_0 z0,最终由解码器 D D D重建为生成的图像。

网络架构

在这里插入图片描述

论文的网络架构主要包括三个关键组件:ReferenceNet、姿态引导器(Pose Guider)和时间层(Temporal Layer)。

总览

  • 网络输入:多帧噪声。
  • 去噪UNet:基于SD设计,采用相同的框架和块单元,并继承SD的训练权重。
  • 关键组件:
    • ReferenceNet:编码角色外观特征。
    • Pose Guider:编码运动控制信号(motion control signals),实现可控的角色运动。
    • 时间层(Temporal layer):编码时间关系,确保角色运动的连续性。

ReferenceNet

  • 设计:采用与去噪UNet相同的架构(但不包括时间层),继承原始SD的权重,进行独立权重更新。
  • 特征融合:在去噪UNet的自注意力层中替换为空间注意力层。给定来自去噪UNet的特征图 x 1 ∈ R t × h × w × c x_1 \in \mathbb{R}^{t \times h \times w \times c} x1Rt×h×w×c和来自ReferenceNet的特征图 x 2 ∈ R h × w × c x_2 \in \mathbb{R}^{h \times w \times c} x2Rh×w×c,首先复制 x 2 x_2 x2,然后在 w w w维度上与 x 1 x_1 x1连接,执行自注意力,并提取前半部分特征图作为输出。这种设计的优势:
    • ReferenceNet可以利用预训练的图像特征建模能力,结果初始化良好。
    • 由于ReferenceNet和去噪UNet具有相同的网络结构和共享的初始化权重,去噪UNet可以选择性地从ReferenceNet中学习相关特征。
    • 基于扩散的视频生成中,所有视频帧都经过多次去噪,而ReferenceNet在整个过程中只需要提取一次特征。 因此,在推理过程中,不会导致计算开销的大幅增加。

姿态引导器(Pose Guider)

  • 设计:采用四层卷积层(4×4卷积核,2×2步幅,通道数分别为16、32、64、128),将姿态图像与噪声潜在空间对齐。处理后的姿态图像与噪声潜在空间相加,然后输入去噪UNet。
  • Pose Guider用高斯权重初始化,最终投影层使用零卷积。

时间层(Temporal Layer)
在Res-Trans块中的空间注意力和交叉注意力之后插入时间层。首先重塑特征图,然后沿时间维度执行自注意力操作。通过残差连接将时间层的特征整合到原始特征中。

  • 位置:时间层集成在Res-Trans块内的空间注意力(spatial-attention)和交叉注意力(cross-attention)组件之后。这种设计灵感来源于AnimateDiff模型。
  • 特征图重塑:假设输入特征图为 x ∈ R b × t × h × w × c x \in \mathbb{R}^{b \times t \times h \times w \times c} xRb×t×h×w×c,其中 b b b表示批量大小, t t t表示时间步长, h h h w w w表示特征图的高度和宽度, c c c表示通道数。首先将特征图重塑为 x ∈ R ( b × h × w ) × t × c x \in \mathbb{R}^{(b \times h \times w) \times t \times c} xR(b×h×w)×t×c,然后沿着时间维度 t t t进行自注意力操作(即时间注意力)。
  • 时间注意力:时间注意力指的是沿时间维度 t t t进行自注意力计算。这种方式允许模型在处理每一帧时,考虑前后帧的信息,从而捕捉帧与帧之间的时间依赖关系。
  • 应用范围:时间层专门应用于去噪 UNet 的 Res-Trans 块内。 对于ReferenceNet,它计算单个参考图像的特征,并且不参与时间建模。

训练策略

训练过程分为两个阶段:

  1. 第一阶段
  • 训练内容:在这一阶段,模型使用单个视频帧进行训练,不包括时间层。
  • 模型输入:模型输入为单帧噪声。
  • 组件训练:在这一阶段同时训练ReferenceNet和Pose Guider。
  • 参考图像选择:从整个视频片段中随机选择参考图像。
  • 权重初始化:
    • 去噪UNet和ReferenceNet的模型权重基于Stable Diffusion(SD)的预训练权重进行初始化。
    • Pose Guider使用高斯权重初始化,最终的投影层使用零卷积。
    • VAE的编码器和解码器的权重,以及CLIP图像编码器的权重在训练过程中保持固定。
  • 优化目标:使模型能够在给定的参考图像和目标姿势条件下生成高质量的动画图像。
  1. 第二阶段
  • 时间层引入:将时间层加入到之前训练好的模型中。
  • 权重初始化:使用AnimateDiff的预训练权重来初始化时间层。
  • 模型输入:模型输入变为24帧的视频片段。
  • 权重固定:在这一阶段,只训练时间层,而保持网络其余部分的权重不变。
  • 训练目的:通过训练时间层,增强模型在视频帧之间的时间连贯性,进一步提升生成动画的质量。

EXPERIMENT

为了证明方法在动画化各种角色中的适用性,从互联网上收集了 5K 角色视频剪辑(2-10 秒长)来训练模型。 我们使用DWPose提取视频中角色的姿势序列,包括身体和手,将其渲染为OpenPose[5]的姿势骨架图像。 实验在 4 个 NVIDIA A100 GPU 上进行

  • 第一阶段训练:

    • 数据处理:从视频中采样单帧,调整大小并中心裁剪到768×768分辨率。
    • 训练步骤:训练30000步,每批次大小为64。
    • 学习率:设置为1e-5。
  • 第二阶段训练:

    • 数据处理:使用24帧视频序列进行训练。
    • 训练步骤:训练10000步,每批次大小为4。
    • 学习率:设置为1e-5。

推理过程中,重新·调整驱动姿势骨架的长度以接近参考图像中角色的骨架长度,并使用DDIM采样器进行20步去噪。采用EDGE中的时间聚合方法(temporal aggregation),将不同批次的结果连接起来生成长视频。

实验结果表明:Animate anyone可以对任意角色进行动画处理,包括全身人物、半身肖像、卡通人物和人形人物。能够生成高清和逼真的角色细节。即使在实质性运动下,它也能保持与参考图像的时间一致性,并在帧之间表现出时间连续性。
在这里插入图片描述

为了展示animate anyone的优越性,在三个特定基准(UBC时尚视频数据集、TikTok数据集和Ted-talk数据集)上评估了其性能,并进行了与其他方法的对比实验。

  • 时尚视频合成:

    • 定量对比:在UBC时尚视频数据集上的定量对比结果如表1所示,我们的方法在视频指标上表现尤为突出。在这里插入图片描述
    • 定性对比:图4展示了与其他方法的定性对比,其他方法在保持衣物细节一致性方面表现不佳,而animate anyone能够有效保持衣物细节的一致性。在这里插入图片描述
  • 人类舞蹈生成:

    • 定量对比:在TikTok数据集上的定量对比结果如表2所示,animate anyone的方法取得了最佳结果。在这里插入图片描述

    • 定性对比:图5展示了与DisCo方法的定性对比,在复杂的舞蹈序列中,animate anyone的方法在保持视觉连续性和处理多样化角色外观方面表现更好。在这里插入图片描述

  • 讲话手势生成:

  • 定量对比:在Ted-talk数据集上的定量对比结果如表3所示,animate anyone显著优于DisCo和SD-I2V。图6展示了与MRAA和TPSMM方法的定性对比,animate anyone能够生成更加准确和清晰的结果。
    在这里插入图片描述

局限性

  • 手部运动的稳定性:模型可能难以为手部运动生成稳定的结果,有时可能会导致图像扭曲和运动模糊。手部的细节和复杂性可能对模型的预测和生成提出了更高的要求。

  • 视角问题:由于图像仅从一个角度提供信息,生成角色运动过程中看不见的部分是一个不适定问题,可能会遇到潜在的不稳定性。这意味着模型在处理视角变化或视角之外的信息时可能会面临挑战。

  • 运行效率:使用了DDPM(Denoising Diffusion Probabilistic Models)的模型相比于非扩散模型的方法在运行效率上较低。这可能影响模型在需要实时或快速生成动画视频的应用场景中的实用性。

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

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

相关文章

ip地址怎么写才是的对的?合法ip地址正确的格式

IP地址怎么写才是的对的?在互联网的世界里,IP地址就像是我们生活中的门牌号码,它是每个设备在网络中的唯一标识。正确的书写IP地址对于确保网络通信的顺畅至关重要。本文将带您了解合法IP地址的正确格式与书写规范,并深入探讨其在…

css如何动态累计数字?

导读:css如何动态累计数字?用于章节目录的序列数生成,用css的计数器实现起来比 js方式更简单! 伪元素 ::after ::before伪元素设置content 可以在元素的首部和尾部添加内容,我们要在元素的首部添加序列号&#xff0c…

Spring AI 介绍以及与 Spring Boot 项目整合

Spring AI 项目旨在简化使用 Spring Boot 开发包含人工智能功能的应用程序,提供抽象和支持多种模型提供商及矢量数据库提供商。 Spring AI 的功能特点 支持主流模型提供商:如 OpenAI、Microsoft、Amazon、Google 和 Huggingface 等。支持多种模型类型&a…

如何从magento1迁移到magento2

m2相较m1 变化可以说非常大,相当于从头到位都改写一遍,更现代化,更优雅。除了数据库表变化不是很大。 主要迁移的内容有: 1,主题 2,插件(自己开发的或者第三方插件) 3,数据库 主题 不能迁移到m…

STM32上实现spwm调制原理分析

在STM32微控制器上实现SPWM(正弦脉宽调制,Sinusoidal Pulse Width Modulation)调制的核心是利用高频载波(三角波)与低频基波(正弦波)作比较得出。 那么在STM32里三角波和正弦波分别是什么&…

java实现分类下拉树,点击时对应搜索---后端逻辑

一直想做分类下拉,然后选择后搜索的页面,正好做项目有了明确的需求,查找后发现el-tree的构件可满足需求,数据要求为:{ id:1, label:name, childer:[……] }形式的,于是乎,开搞! 一…

Golang | Leetcode Golang题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; const L 10 var bin map[byte]int{A: 0, C: 1, G: 2, T: 3}func findRepeatedDnaSequences(s string) (ans []string) {n : len(s)if n < L {return}x : 0for _, ch : range s[:L-1] {x x<<2 | bin[byte(ch)]}cnt : map[int]in…

文件创建与查看

touch touch命令用于创建一个新的文件。 语法&#xff1a;touch Linux路径 其中路径可以是相对路径、绝对路径或者特殊路径符都可以。 改图展示了通过 touch test.txt 命令创建了一个 test.txt文件&#xff0c;其中深色的代表文件夹&#xff0c;白色的代表文件。 使用 ls -lh…

[MYSQL] 数据库基础

1.什么是数据库 从数据库的名字可以看出,它是用来操作(增删查改....)数据的,事实上也的确如此,通过数据库,我们可以更方便.更高效的来操作.管理数据 以文件形式存储数据的缺点 文件的安全问题文件不利于数据的查询和删除文件不利于存储海量数据操作文件并不方便 为了解决上述问…

汽车IVI中控开发入门及进阶(二十九):i.MX6

前言: i.MX 6双/6Quad处理器集成多媒体应用处理器,是不断增长的多媒体产品系列的一部分,提供高性能处理,并针对最低功耗进行了优化。 i.MX 6Dual/6Quad处理器采用先进的quad-ArmCortex-A9内核,运行速度高达800 MHz,包括2D和3D图形处理器、1080p视频处理和集成电源管理。…

深入分析 Android BroadcastReceiver (六)

文章目录 深入分析 Android BroadcastReceiver (六)1. 广播机制的高级优化策略1.1 使用 Sticky Broadcast&#xff08;粘性广播&#xff09;示例&#xff1a;粘性广播&#xff08;过时&#xff0c;不推荐&#xff09; 1.2 使用 LiveData 和 ViewModel 进行组件通信示例&#xf…

潜艇伟伟迷杂交版植物大战僵尸2024最新免费安卓+ios苹果+iPad分享

嗨&#xff0c;亲爱的游戏迷们&#xff01;今天我要给你们种草一个超有趣的游戏——植物大战僵尸杂交版。这款游戏不仅继承了原有经典游戏的核心玩法&#xff0c;还加入了许多创新元素&#xff0c;让玩家能够体验到前所未有的乐趣。快来跟随我一起探索这个神奇的世界吧&#xf…

Android模拟器linux内核的下载,编译,运行,驱动开发测试

Android模拟器linux内核的下载&#xff0c;编译&#xff0c;运行&#xff0c;内核模块开发 1.下载适合Android模拟器的内核 git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git git branch -a git checkout android-goldfish-4.14-gchips 新建一个目录…

PriorityQueue详解(含动画演示)

目录 PriorityQueue详解1、PriorityQueue简介2、PriorityQueue继承体系3、PriorityQueue数据结构PriorityQueue类属性注释完全二叉树、大顶堆、小顶堆的概念☆PriorityQueue是如何利用数组存储小顶堆的&#xff1f;☆利用数组存储完全二叉树的好处&#xff1f; 4、PriorityQueu…

nvm安装

1、官网下载nvm压缩包 Releases coreybutler/nvm-windows (github.com)https://github.com/coreybutler/nvm-windows/releases 2、安装nvm cmd下查看nvm版本号 nvm version 3、配置镜像 在安装目录下找到settings.txt文件&#xff0c;追加淘宝镜像 node_mirror:https:/…

安卓逆向经典案例-XX谷

H5app逆向——XX谷 这里显示为真&#xff0c;说明app没有禁用WebView调试。 所以调试考虑 反编译出错利用字符串加密或者反射的方式去禁用调试 通过什么方式可以查找自己想frida hook的类&#xff1f; 在使用 Frida 进行逆向工程时&#xff0c;查找你想要 hook 的类和方法是…

Python中使用PyQT5库时报错:没有Qt平台插件可以初始化

一、发现问题&#xff1a;无限易pythonGo打开执行的时候报&#xff1a;“没有Qt平台插件可以初始化&#xff0c;请重新安装应用程序。”的错误&#xff0c;点击确定后无限易崩溃闪退。 二、解决问题&#xff1a; 1、重新安装依赖&#xff0c;打开CMD输入pip list&#xff0c;查…

day3-xss漏洞(米斯特web渗透测试)

day3-xss漏洞&#xff08;米斯特web渗透测试&#xff09; XSSXss种类三种反射型1.反射型xss2.存储型xss3.DOM型xss XSS Xss有一部分是前端的有一部分不是前端的&#xff0c;我们来看一下&#xff0c;昨天的HTML注入修复方法应灵活使用。 HTML注入是注入一段HTML&#xff0c;那…

2.超声波测距模块

1.简介 2.超声波的时序图 3.基于51单片机实现的代码 #include "reg52.h" #include "intrins.h" sbit led1P3^7;//小于10&#xff0c;led1亮&#xff0c;led2灭 sbit led2P3^6;//否则&#xff0c;led1灭&#xff0c;led2亮 sbit trigP1^5; sbit echo…

Qt利用Coin3D(OpenInventor)进行3d绘图

文章目录 1.安装1.1.下载coin3d1.2.下载quarter1.3.解压并合并 2.在Qt中使用3.画个网格4.加载wrl模型5.画个锤子并旋转6.加载自定义视口文件 1.安装 1.1.下载coin3d 首先&#xff0c;到官网下载[coin3d/coin] 我是Qt5.15.2vs2019的&#xff0c;因此我选择这个coin-4.0.2-msvc…