首页 > 其他分享 >视频生成-Animate Anyone快读

视频生成-Animate Anyone快读

时间:2024-02-14 10:33:05浏览次数:34  
标签:视频 参考 特征 生成 Anyone UNet 快读 Animate ReferenceNet

AnimateAnyone

目标

给定一张人物的图像和一个运动姿态序列,然后生成这种运动姿态的参考人物的视频片段。

预备知识

  视频生成依赖的基础知识如扩散模型、隐变量扩散模型等在此不再赘述,可以自行查阅相关知识。本博客可供参考的有扩散模型 Diffusion ModelLatent Diffusion Model快读

整体结构

  • ReferenceNet 编码参考人物或者角色的外观特征
  • Pose Guider 从参考运动姿态序列中编码运动姿态特征序列
  • 时间序列建模 在原始SD模型UNet网络结构中加入Temporal layer,参考自AnimateDiff

整体流程图参考Fig.1,运动姿态序列经过Pose Guider编码后直接与多帧噪音相融合,然后输入给去噪UNet结构。这个去噪UNet结构中,每个计算模块都包含Spatial-Attention, Cross-Attention, 和Temporal-Attention层,相比原始LDM添加了时间序列建模层,如Fig.1 右侧虚线中图示。设计并集成ReferenceNet主要是基于以下两点:首先,可以通过ReferenceNet提取细节特征并在Spatial-Attention中应用;其次,从CLIP图像编码器中提取参考图像的语义特征用于Cross-Attention。

Fig.1

ReferenceNet

  在T2V任务中,文本提示表达了高级语义信息,只需要生成与此语义相关的视觉内容即可。但是这种生成可控性相较于本文方法是差一些,而且图像细节也差一些。在I2V任务中,则是使用CLIP图像编码器提取的图像特征替代T2V任务中文本编码器提取的文本特征。因此I2V相比T2V任务应该能生成更细节的图像视频。然而这个设计并没有解决与细节一致性相关的问题。一方面原因是,CLIP图像编码器处理的是低分辨率224x224图片,这就导致丢失了重要的细粒度细节信息。另一个原因,CLIP是训练图文特征信息的匹配,这也导致了编码的图像特征中丢失掉细粒度的信息。因为高层语义信息不需要那么多细节,而是全局的轮廓性的特征。正是基于这两种生成视频任务的不足的思考,因此设计了ReferenceNet。

  ReferenceNet的结构与论文中去噪UNet结构完全相同,排除其中的时序建模层Temporal layer。而且与去噪UNet结构一样,其权重都来自原始的SD,但权重更新是各自更新各自的。下面重点介绍一下ReferenceNet与去噪UNet 特征之间是如何交互融合的。参考Fig.1右侧,每个计算模块内部,图示中用灰色表示Spatial-Attention,蓝色表示Cross-Attention,黄色表示Temporal-Attention。输入给去噪UNet的特征\(x_1 \in \mathbb{R}^{t \times h \times w \times c}\),输入给ReferenceNet的特征\(x_2 \in \mathbb{R}^{h \times w \times c}\)。为了可以将这两种特征可以融合进行计算,首先将\(x_2\)复制\(t\)份,并和特征\(x_1\)沿着\(w\)维度进行拼接,然后进行Spatial-Attention操作,并提取该操作输出的一半作为后续输入特征。这种设计有如下两种好处:首先,ReferenceNet利用源自SD的预训练过的图像特征编码能力,可以提取到较好的初始特征。其次,由于ReferenceNet与去噪UNet具有相同的结构和共享相同的初始化权重,去噪UNet可以选择性地从ReferenceNet学习相同特征空间中的相关特征。最后,使用CLIP的文本编码特征与前面的图像相关特征进行交叉注意力计算。同样地,利用共享的特征空间,为参考图像提供语义特征,作为一个有益的初始化,以加快整个网络的训练。

Pose Guider

  与其它论文不同之处,这里没有重点依赖ControlNet的实现,而是构建了一个四层的卷积神经模块,即4x4的卷积核,2x2移动步长,依次使用16,32,64,128的通道数。实现提取姿态图像特征,并与相同空间分辨率的隐变量噪音对齐。接下来姿态特征与隐变量噪音相加后输入到去噪UNet。

时间序列建模

  可以参考视频生成-AnimateDiff快读

训练策略

  训练分为两个阶段,第一个阶段是训练单张图片生成能力,在给定单张参考图片和单个运动姿态图的条件下,生成高质量的对应姿态的外观图片;第二个阶段,才是训练多帧建模能力,生成视频

阶段一

  • 去除去噪UNet结构中的时间建模层,以适应单张图片的生成
  • 使用原始SD模型参数,初始化去噪UNet和ReferenceNet
  • Pose Guider除了最后的投影层采用了零卷积外,其余都采用高斯初始化权重。
  • VAE编码器和解码器,以及CLIP图片编码器的权重参数都保持固定。

阶段二

  • 在阶段一训练基础上,添加上时序建模模块
  • 使用AnimateDiff预训练参数初始化,时序建模模块
  • 此阶段仅训练时序模块中参数,冻结其它模块的参数

实验

实现细节

  • 收集了5000个角色视频,时长2-10秒
  • 使用DWPose 提取角色姿态信息,然后根据OpenPose渲染成姿态骨架图
  • 在训练阶段一过程中,单个视频帧取样,调整尺寸及中心裁剪为768x768分辨率,以batchsize=64训练30000步
  • 在训练阶段二过程中,以batchsize=4,视频帧长度为24训练10000步
  • 学习率都设置为1e-5
  • 推理阶段,将驱动框架图序列长度扩展到与角色视频长度近似,且采用DDIM取样方式20步完成去噪

定性结果

  Fig.2 展示了论文中的方法可以生成任意角色的动画,包括全身人物图、半身肖像图、卡通角色、类人角色。论文方法可以生成高质量和真实的角色细节。而且保持了视频帧之间的连贯。最佳视觉感官对比请参考论文官网

Fig. 2

对比

  论文为了展示其提出方法的有效性,与其它图像动画生成方法进行对比。用了两个特定的基线进行性能评估:时尚视频合成和人类跳舞合成。图片级质量评估方法有SSIM、PSNR、LIPIPS。视频级评估方法FVD。

Fashion Video Synthesis 时尚视频合成目标是使用驱动姿态序列将时尚图片转换为真实的动态视频。采用的UBC时尚视频数据集,包含500个训练视频和100个测试视频,每一个视频包括大约350帧图片。量化对比结果参考Tab.1,各种度量指标都明显优于其它方法。定性的对比图参考Fig.3, 通过对比发现基于DreamPose和BDMM的方法在生成衣服细节方面没有保持很好的一致性,而本论文中的方法则表现更佳。最佳视觉感官对比请参考论文官网

Fig. 3 Tab. 1

Human Dance Generation 专注与合成真实世界场景下的跳舞视频。采用的是TiKTok数据集,340个单人视频用于训练,100个用于测试,平均每个时长10-15秒。按照DisCo数据集拆分方式,使用完全相同测试集,各种方法的量化指标对比参考Tab.2,论文中的方法也是明显优于其它方法。与DisCo定性的对比图参考Fig.4. 最佳视觉感官对比请参考论文官网

Fig. 4 Tab. 1

General Image-to-Video Methods 有大量的研究提出视频生成模型,是基于大规模的训练集驱动的较强的生成能力。选择两个知名且有效的视频生成方法AnimateDiff和Gen2。由于这两种方法没有基于姿态控制进行训练,因此仅考察其相较于参考图,其生成外观图的保真度。参考Fig.5,最佳视觉感官对比请参考论文官网

Fig. 5

标签:视频,参考,特征,生成,Anyone,UNet,快读,Animate,ReferenceNet
From: https://www.cnblogs.com/wolfling/p/18011942

相关文章

  • Animate.css + Vue2
    Animate.css+Vue2包:https://www.npmjs.com/package/vue2-animate安装:npminstall--savevue2-animate导入:import'vue2-animate/dist/vue2-animate.min.css';使用1:<transitionname="fadeLeft"><pv-if="isShow">he......
  • 视频生成-AnimateDiff快读
    AnimateDiff要点准备  视频生成依赖的技术点:StableDiffusion,LatentDiffusionModel,DreamBooth,LoRA。此处不进行相关知识点介绍,如需请查阅相关资料个性化动画生成目标  生成个性化动画的图像模型,一般要求用对应的视频训练集进行额外的微调。而这将使事情变得困难。本文......
  • ComfyUI 安装教程 Animatediff 1000张工作流分享 请收藏
    最近SD的大更新比较少,所以最近转战到ComfyUI,从流程节点,到工作流搭建,使用ComfyUI实现webui的大部分功能,且节点的定义性很强,这就造就了ComfyUI的多样性,但是不得不承认,多节点之间的搭配,是否符合整个底层流程,通过一个工作流实现多节点插件的配合工作是比较复杂的,而ComfyUI不近支持GPU还......
  • 【板子】快读/快写
    //double快读inlinevoidReadouble(double&ans){ ans=0; doubley=1.0; boolflag=0; charch=getchar(); while(!isdigit(ch)&&~ch) { flag|=(ch=='-'); ch=getchar(); } while(isdigit(ch)&&~ch) { ans=ans*10+(ch^48);......
  • vue3中使用animate.css+wow.js
    官网链接:animatewow.js版本声明:"dependencies":{"vue":"^3.3.11","animate.css":"^4.1.1","wow.js":"^1.2.2"},1.安装:npminstallanimate.css--savenpminstallwow.js......
  • 在vue2中使用leaflet.AnimatedMarker来移动某个目标
    需求是:点击某个按钮后让扫描仪沿着某条线移动进行扫描效果:  扫描仪是沿着河流移动的,河流的生成方式通过geojson数据生成,geojson里包含了河流的一些点位的经纬度,扫描仪根据经纬度来移动leaflet:1.9.4 leaflet.AnimatedMarker:1.0.0 1.引入 importLfrom'leaf......
  • Nuxt3教程:添加Autoanimate 动画库
    前言AutoAnimate是一个零配置,插入式动画实用程序,可以为您的Web应用程序添加平滑过渡。您可以将其与React,Solid,Vue,Svelte或任何其他JavaScript应用程序一起使用。正文安装依赖#yarnyarnadd@formkit/auto-animate#npmnpminstall@formkit/auto-animate#pnpmpnpmadd......
  • 操作滚动条小结:scrollIntoView/animate等方法的来龙去脉
    操作滚动条可以通过锚点跳转,JS操作滚动条,与scrollIntoView等方法。对此,我来考古一下。锚点跳转滚动滚动条网页中的锚点跳转是HTML早期功能之一,锚点(anchor)跳转是1991年发布的HTML标准的一部分,这是超文本链接的基本特性。锚点跳转通过使用<a>标签的href属性来创建指向页面内部某......
  • AnimatedList 实现动态列表
    AnimatedList实现动画  AnimatedList和ListView的功能大体相似,不同的是,AnimatedList可以在列表中插入或删除节点时执行一个动画,在需要添加或删除列表项的场景中会提高用户体验。 AnimatedList是一个StatefulWidget,它对应的State类型为AnimatedListState,添加和删......
  • 使用Element.animate()实现动画
    Element.animate()实现<divid="app"><button@click="startAmi">开始</button><p>{{msg}}</p></div><scriptsrc="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><s......