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
相关文章:

AIGC之Image2Video(一)| Animate Anyone:从静态图像生成动态视频,可将任意图像角色动画化
近日,阿里发布了Animate Anyone,只需一张人物照片,结合骨骼动画,就能生成人体动画视频。 项目地址:https://humanaigc.github.io/animate-anyone/ 论文地址:https://arxiv.org/pdf/2311.17117.pdf Github…...

区块链的可拓展性研究【04】分片
分片属于layer1扩容 区块链分片是一种技术实现,可以将区块链网络分成多个片段,每个片段负责处理一部分的交易数据。这种方法可以提高区块链网络的处理速度和吞吐量,降低交易确认时间和费用,同时也可以减轻节点运行负担。 在传统…...

blender 粒子系统 roughness 属性
粒子系统中的Roughness是一种用来控制粒子的随机性和不规则性的属性,它可以影响粒子的发射方向、速度、大小、旋转等。Roughness有以下几个子属性: - **Uniform**:这个属性用来控制粒子的发射方向的随机性,即粒子在法线方向上的偏…...

npm ERR! notarget No matching version found for @eslint/eslintrc@^2.1.4.
文章目录 Intro解决流程总结前置信息了解npm 镜像源三个要用到的npm命令 官方源确认查看当前镜像源的详情解决: 切换镜像源后重试重新操作 事后感受华为云再测试 Intro 事由是今天我在用 create-react-app 新建一个用于测试的前端项目。 然后就出现以下报错&#x…...

截取字符串
输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出。 数据范围:字符串长度满足 1≤n≤1000, 1≤k≤n 输入描述: 1.输入待截取的字符串 2.输入一个正整数k,代表截取的长度 输出描述:截取后的字符串…...

【Python】Faker库详解:创建测试数据轻而易举
Python Faker库详解:创建测试数据轻而易举 在软件开发和测试过程中,通常需要大量的测试数据来模拟真实环境。Python的Faker库为开发者提供了一个方便、灵活且强大的工具,用于生成各种虚构数据。本文将深入介绍Faker库,演示其基本…...

Spring boot -- 学习HttpMessageConverter
文章目录 1. Json格式数据获取2. 为什么返回Json格式的数据2.1 注解SpringBootAppliaction2.1.1 SpringBootConfiguration2.1.2 ComponentScan2.1.3 EnableAutoConfiguration2.1.3.1 HttpMessageConvertersAutoConfiguration2.1.3.2 WebMvcAutoConfiguration 2.2 注解RestContr…...

如何选择合适的运筹优化求解器?
文章目录 前言求解器对比问题延伸:商用求解器和开源求解器的差别是什么? 求解器PK总结参考资料 前言 求解器对于运筹算法工程师而言,常常像一个黑盒,我们扔进去输入数据和数学模型,求解器给我们吐出一个解出来。这种状…...

Python 精讲 | 奇葩的 is
大家好,欢迎来到 Crossin的编程教室 ! 接下来的几个例子,可能会颠覆你对 Python 的认知。 我们知道,Python 判断两个数值是否相等的运算符是「」。比如有一个变量 a 是整数 1,另一个变量 b 是小数 1.0,尽管…...

遥感卫星综述(下载和预处理)(持续更新)
遥感卫星综述(下载和预处理) 目录 遥感卫星综述(下载和预处理)一、国产卫星GF-1 WFV 二、国外卫星Sentinel-1Sentinel-2 一、国产卫星 GF-1 WFV 下载 分辨率波段16m4(蓝、绿、红、近红) 预处理: ENVI预处理GF-1号W…...

Nmap脚本未来的发展趋势
Nmap脚本技术的发展趋势和前景 Nmap脚本是一种基于Lua语言开发的脚本,可以扩展Nmap的功能,用于自动化扫描、漏洞检测、服务探测、设备管理等方面。随着网络安全的不断发展和漏洞的不断出现,Nmap脚本技术也在不断发展和壮大。在本文中…...

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 17 章:对话提示
要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 17 章:对话提示 对话提示是一种允许模型生成模拟两个或多个实体之间对话的文本的技术。 通过向模型提供上下文和一组角色或实体,以及他们的角色和背景,并要求模型生成他…...

urllib爬虫 应用实例(三)
目录 一、 ajax的get请求豆瓣电影第一页 二、ajax的get请求豆瓣电影前十页 三、ajax的post请求肯德基官网 一、 ajax的get请求豆瓣电影第一页 目标:获取豆瓣电影第一页的数据,并保存为json文件 设置url,检查 --> 网络 --> 全部 -…...

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第三次作业
part 1 设计一个学籍管理小系统。系统包含以下信息: 学号、学生姓名、性别、出生日、学生所在系名、学生所在系号、课程名、课程号、课程类型(必修、选修、任选)、学分、任课教师姓名、教师编号、教师职称、教师所属系名、系号、学生所选课…...

TP5上传图片压缩尺寸
图片上传,最简单的就是, 方法一: 修改上传限制,不让上传大于多少多少的图片 改一下size即可,默认单位是B换算成M还需要除以两次1024 方法二: 对上传的图片进行缩放,此办法网上找了不少的代码…...

使用 Tailwind CSS 完成导航栏效果
使用 Tailwind CSS 完成导航栏效果 本文将向您介绍如何使用 Tailwind CSS 创建一个漂亮的导航栏。通过逐步演示和示例代码,您将学习如何使用 Tailwind CSS 的类来设计和定制导航栏的样式。 准备工作 在开始之前,请确保已经安装了 Tailwind CSS。如果没…...

docker容器配置MySQL与远程连接设置(纯步骤)
以下为ubuntu20.04环境,默认已安装docker,没安装的网上随便找个教程就好了 拉去mysql镜像 docker pull mysql这样是默认拉取最新的版本latest 这样是指定版本拉取 docker pull mysql:5.7查看已安装的mysql镜像 docker images通过镜像生成容器 docke…...

什么是网站劫持
网站劫持是一种网络安全威胁,它通过非法访问或篡改网站的内容来获取机密信息或者破坏计算机系统。如果您遇到了网站劫持问题,建议您立即联系相关的安全机构或者技术支持团队,以获得更专业的帮助和解决方案。...

LeNet
概念 代码 model import torch.nn as nn import torch.nn.functional as Fclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__() # super()继承父类的构造函数self.conv1 nn.Conv2d(3, 16, 5)self.pool1 nn.MaxPool2d(2, 2)self.conv2 nn.Conv2d(16…...

JavaScript 简单理解原型和创建实例时 new 操作符的执行操作
function Person(){// 构造函数// 当函数创建,prototype 属性指向一个原型对象时,在默认情况下,// 这个原型对象将会获得一个 constructor 属性,这个属性是一个指针,指向 prototype 所在的函数对象。 } // 为原型对象添…...

生成对抗网络——研讨会
时隔一年,再跟着李沐大师学习了GAN之后,仍旧没能在离散优化中实现通用的应用,实在惭愧,借着组内研讨会的机会,再队GAN的前世今生做一个简单的综述。 GAN产生的背景 目前与GAN相关的应用 去reddit社区的机器学习板块…...

Ubuntu 20.04 安装 mysql8 LTS
Ubuntu 20.04 安装 mysql8 LTS sudo apt-get update sudo apt-get install mysql-server -y mysql --version mysql Ver 8.0.35-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) Ubuntu20.04 是自带了 MySQL8. 几版本的,低于 20.04 则默认安装是 MySQL5.7.33…...

蓝桥杯:货物摆放
小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所有的货物最终摆成一个大…...

ganache部署智能合约报错VM Exception while processing transaction: invalid opcode
这是因为编译的字节码不正确,ganache和remix编译时需要选择相同的evm version 如下图所示: remix: ganache: 确保两者都选择london或者其他evm,只要确保EVM一致就可以正确编译并部署, 不会再出现VM Exception while processing…...

金融银行业更适合申请哪种SSL证书?
在当今数字化时代,金融行业的重要性日益增加。越来越多的金融交易和敏感信息在线进行,金融银行机构必须采取必要的措施来保护客户数据的安全。SSL证书作为一种重要的安全技术工具,可以帮助金融银行机构加密数据传输,验证网站身份&…...

文心一言API(高级版)使用
文心一言API高级版使用 一、百度文心一言API(高级版)二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、百度文心一言API(高级版) 基于百度文心一言语言大模型的智能文本对话AI机器…...

C# 任务并行类库Parallel调用示例
写在前面 Task Parallel Library 是微软.NET框架基础类库(BCL)中的一个,主要目的是为了简化并行编程,可以实现在不同的处理器上并行处理不同任务,以提升运行效率。Parallel常用的方法有For/ForEach/Invoke三个静态方法…...

2024年江苏省职业院校技能大赛信息安全管理与评估 第二阶段学生组(样卷)
2024年江苏省职业院校技能大赛信息安全管理与评估 第二阶段学生组(样卷) 竞赛项目赛题 本文件为信息安全管理与评估项目竞赛-第二阶段样题,内容包括:网络安全事件响应、数字取证调查、应用程序安全。 本次比赛时间为180分钟。 …...

飞天使-linux操作的一些技巧与知识点3
http工作原理 http1.0 协议 使用的是短连接,建立一次tcp连接,发起一次http的请求,结束,tcp断开 http1.1 协议使用的是长连接,建立一次tcp的连接,发起多次http的请求,结束,tcp断开ngi…...

Appium获取toast方法封装
一、前置说明 toast消失的很快,并且通过uiautomatorviewer也不能获取到它的定位信息,如下图: 二、操作步骤 toast的class name值为android.widget.Toast,虽然toast消失的很快,但是它终究是在Dom结构中出现过&…...