字节UC伯克利新研究 | Magic-Me:简单有效的主题ID可控视频生成框架

本文主要是介绍字节UC伯克利新研究 | Magic-Me:简单有效的主题ID可控视频生成框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在生成模型领域,针对特定身份(ID)创建内容已经引起了极大的兴趣。在文本到图像生成(T2I)领域,以主题驱动的内容生成已经取得了巨大的进展,使图像中的ID可控。然而,将其扩展到视频生成领域尚未得到很好的探索。今天分享的这个工作,提出了一个简单而有效的主题ID可控视频生成框架,称为Video Custom Diffusion(VCD)。

论文链接:https://arxiv.org/pdf/2402.09368

开源地址:https://github.com/Zhen-Dong/Magic-Me

通过指定由少数图像定义的主题ID,VCD加强了ID信息的提取,并在初始化阶段注入帧间相关性,以稳定地生成具有很大程度上保留身份的视频输出。为实现这一目标,提出了三个关键的新组件,对于高质量的ID保留至关重要:

  1. 通过prompt-to-segmentation训练的ID模块,通过分解身份信息和背景噪声,实现更准确的ID token学习;

  2. 带有3D高斯噪声先验的文本到视频(T2V)VCD模块,以实现更好的帧间一致性;

  3. 视频到视频(V2V)Face VCD和Tiled VCD模块,以去除脸部模糊并提升视频分辨率。

尽管VCD的设计简单,但大量实验证明,VCD能够生成稳定且高质量的视频,并且在选择的强基准线上具有更好的ID。此外,由于ID模块的可转移性,VCD与公开可用的经过微调的文本到图像模型也能很好地配合,进一步提高了其可用性。

介绍

最近在文本到视频(T2V)生成领域的进展使得可以从文本描述中创建一致且逼真的动画,尽管对生成内容的精确控制仍然是一个挑战。在现实世界的应用中,通常需要根据文本描述的背景生成具有特定身份的内容,这就是所谓的身份特定生成任务。在电影制作等场景中,这一点非常重要,因为需要为特定角色进行特定动作的动画制作。类似的情况也发生在广告领域,其中需要在不同的场景或环境中保持一致的产品身份。

在视频生成中控制对象身份,特别是与人相关的场景,仍然是一个挑战。先前的工作通常利用图像参考,主要关注样式和动作,而一些工作通过视频编辑探索定制生成。虽然这些方法提供了综合的控制,例如参考图像、参考视频或深度图来切换样式或一般外观,但它们的重点不在于身份特定控制。如下图2的第一行所示,传统的T2V方法将生成的视频增强为遵循参考图像,而主体身份并未反映出来。

在最近针对身份特定文本到图像(T2I)模型的努力中,取得了显著的进展。这些模型利用与指定ID相关联的少数图像,通过可学习的概念token微调预训练的T2I模型。在推理过程中,网络通过将ID token整合到文本描述中来生成ID特定的图像。将这种方法扩展到视频生成似乎很直观,可以在视频生成模型上保持相同的流程。然而,在下图2的第二行中,生成的ID并不一致,并且视频背景缺乏稳定性。

上图2中观察到的失败案例突显了两个潜在问题。

  1. 收集的参考图像展示了多样的背景,捕捉了同一个人的表情、外观和设置的变化。这种多样性被印在了独特的ID token上。因此,在推理过程中,即使使用相同的ID token,生成的视频帧也可能显示出不同的ID。虽然在图像环境中可能不会造成问题,但在视频生成中就成为了问题。

  2. 当前的视频生成框架依赖于预训练的运动模块来建立帧间一致性。当ID token独立地初始化每个帧并具有多样化的信息时,运动模块可能会难以生成时间上一致的视频帧。

本工作主要关注的是ID特定的定制化,目标是在保留主体ID的同时,用不同的运动和场景来给主体的身份赋予生命。在上图2的底部一行中,本文的方法处理了保留特定身份和引入变化之间的平衡,并解决了以前方法中的两个主要问题。

为了解决第一个问题,提出了一个ID模块,它改善了学习到的ID token信息与主观ID的对齐。该模块将身份的特定特征学习为少量紧凑的文本 token embedding,即扩展的ID token,它比SVDiff的参数数量少大约105倍(16KB vs. 1.7MB)。在优化过程中,ID token的更新完全依赖于对象组件,利用一个从提示到分割的子模块来区分身份和背景。实证结果表明,ID模块在增强ID信息提取和增加生成的视频与用户指定的ID之间的一致性方面是有效的。

为了解决第二个问题,提出了一种新颖的3D高斯噪声先验来建立输入帧之间的相关性。它是无需训练的,并确保在推理阶段初始化时的一致性。因此,尽管ID token可能包含多样化的信息,在去噪过程中,所有帧往往描述出一致的ID,从而产生了改进的视频剪辑。所有帧的初始化噪声之间的协方差由协方差矩阵控制。为了进一步提高生成视频的质量,进一步应用了Face VCD来去噪模糊的面部以恢复远处人的身份,以及Tiled VCD来进一步提高视频的分辨率。VCD框架对T2V和V2V都适用。

本文方法Video Custom Diffusion(VCD),引入了一种模块化方法来进行ID特定的视频生成。优化过程在两个pipeline中重复使用相同的ID模块,即T2V VCD和V2V VCD,以保留身份。基于Stable Diffusion的基础,这些pipeline可以在推理过程中使用任何领域特定模型,在同一基础上进行微调,为像Civitai和Hugging Face等AI生成内容社区提供了宝贵的灵活性,允许非技术用户独立地混合和匹配模块,类似于广泛接受的自由组合DreamBooth、LoRA和前缀 embedding权重。

本文贡献总结如下:

  1. 引入了一种新颖的框架,Video Custom Diffusion(VCD),专门用于生成高质量的ID特定视频。VCD在将ID与提供的图像和文本描述对齐方面表现出显著的改进。

  2. 提出了一种稳健的3D高斯噪声先验用于视频帧去噪,增强帧间相关性,从而提高视频一致性。

  3. 提出了两个V2V模块,即Face VCD和Tiled VCD,用于将视频提升到更高的分辨率。

  4. 设计了一种新的训练范式,通过prompt-to-segmentation的masked loss来减轻ID token中的噪声。

相关工作

主题驱动的文本到图像生成

T2I扩散模型的发展代表了图像生成的一大进步,可以创建逼真的肖像和幻想实体的想象描绘。最近的努力集中在定制这些生成模型上,其中使用预训练的T2I扩散模型以及一组最小的定制主题图像,旨在微调模型并学习与所需主题相关联的唯一标识符。开创性的方法,如Textual Inversion,调整了 token embedding以学习 token与主题图像之间的映射,而不改变模型结构,而DreamBooth则涉及全面的模型微调,以学习主题的概念,并保留通用概念生成的能力。这引发了一系列后续工作,如NeTI,侧重于主题的保真度和身份保留。它进一步扩展到多主题生成,其中模型能够共同学习多个主题,并将它们组合成单个生成的图像。

文本到视频生成

在图像生成的基础上,文本到视频(T2V)似乎是生成模型新应用的下一个突破。与图像生成相比,视频生成更具挑战性,因为它需要高计算成本来保持跨多帧的长期空间和时间一致性,需要以简短视频字幕的模糊提示为条件,并且缺乏具有视频-文本对的高质量标注数据集。早期的探索利用GAN和VAE-based方法以自回归方式生成帧,给定一个字幕,然而,这些工作局限于简单、孤立运动的低分辨率视频。接下来的研究采用大规模的变压器架构来生成长时间、高清质量的视频,但是这些方法面临着显著的训练、内存和计算成本。扩散模型的最近成功引领了以扩散为基础的视频生成新浪潮,开创性的工作如Video Diffusion Models 和 Imagen Video 引入了新的条件采样技术,用于时空视频扩展。MagicVideo通过在低维潜在空间中生成视频剪辑显著提高了生成效率,这之后又被 Video LDM 所跟随。

视频编辑

进一步的进展更加注重控制生成的视频。Tune-a-Video允许在保持动作的同时更改视频内容,通过使用单个文本-视频对微调T2I扩散模型。Text2Video-Zero和Runway Gen提出将可训练的运动动态模块与预训练的Stable Diffusion相结合,进一步实现了由文本和姿势/边缘/图像指导的视频合成,而无需使用任何配对的文本-视频数据。最近,AnimateDiff通过在运动模块的训练中提炼合理的动作先验来对大多数现有的个性化T2I模型进行动画化。

图像动画

以前关于图像动画的研究主要集中在将静态图像扩展为序列帧,而不改变场景或修改角色属性。以前的工作从图像或视频中获取主题,并将另一个视频中发生的动作转移到主题上。本文框架不仅能够对给定的帧进行动画处理,还能够修改主题的属性并更改背景,所有这些都以合理的动作呈现出来。

基础知识

潜在扩散模型。 本工作基于Stable Diffusion,这是潜在扩散模型的一种变体。在训练中,扩散模型以图像和条件c作为输入,并使用图像编码器将编码为潜在代码。潜在代码通过正向过程与高斯噪声ε混合,可以转换为封闭形式。

扩散模型是通过去噪目标来训练以逼近原始数据分布的,其中是模型的预测,通常由UNet建模。

在推理过程中,给定随机高斯噪声初始化和条件c,扩散模型执行反向过程,对于t = T,...,1,通过以下方程得到采样图像的编码:

曝光偏差。 将方程2与方程3进行比较,注意到模型在训练和推理阶段的输入之间存在差异。具体来说,在训练过程中,模型接收zt作为输入,该输入根据方程1从实际数据中进行采样。然而,在推理过程中,模型使用,该值是基于先前的预测计算得到的。这种差异称为曝光偏差,导致推理中的累积误差。在T2V生成中,这种差异在时间维度上也存在。在训练期间,是从实际视频中采样的,通常表现出时间相关性。相反,在推理期间,是通过联合推理得到的,涉及T2I模型和运动模块,其中T2I模型的预测在不同帧之间变化。为了解决这个问题,提出了一种无需训练的方法,即3D高斯噪声先验。该方法在推理期间引入了协方差到噪声初始化中。经验上发现这种方法有助于稳定联合推理,并平衡运动的质量和幅度。

方法

本文提出了一个预处理模块用于VCD,以及一个ID模块和运动模块,如下图3所示。此外提供了一个可选模块,利用ControlNet Tile来对视频进行上采样并生成高分辨率内容。包括来自AnimateDiff 的现成运动模块,并增加了提出的3D高斯噪声先验。ID模块采用了扩展的ID token,具有掩码损失和提示到分割。最后介绍了两个V2V VCDpipeline,Face VCD和Tiled VCD。

3D高斯噪声先验

为了简化,将无需训练的3D高斯噪声先验应用于一个现成的运动模块,以减轻推理过程中的曝光偏差。所选的运动模块扩展了网络以涵盖时间维度。它将2D卷积和注意力层转换为时间伪3D层,符合前面方程2中概述的训练目标。

3D高斯噪声先验。 对于包含f帧的视频,3D高斯噪声先验从多元高斯分布中采样。这里,表示由γ ∈(0,1)参数化的协方差矩阵。

上述描述的协方差确保了初始化的3D噪声在第m和第n帧之间的相同位置呈的协方差。超参数γ代表了稳定性和运动幅度之间的权衡,如下图4所示。较低的γ值会导致具有剧烈运动但增加不稳定性的视频,而较高的γ值会导致更稳定的运动,但幅度降低。

ID模块

尽管先前的研究已经探索了Token embedding 和权重微调用于T2I的身份定制,但很少有人深入研究T2V生成中的身份定制。观察到虽然像CustomDiffusion 或 LoRA 这样的权重调整方法在图像生成中实现了精确的身份,但生成的视频往往显示出有限的多样性和用户输入对齐。

扩展的ID token。 建议使用扩展的ID token仅与条件编码交互,并更好地保留身份的视觉特征,如下图5所示。与原始的LoRA相比,这种方法在下表1中显示出了更高质量的视频。此外,所提出的ID模块仅需要16KB的存储空间,与Stable Diffusion中需要的3.6G参数或SVDiff 中的1.7MB相比,参数空间明显更紧凑。

prompt-to-segmentation。 在工作[11,20]中已经注意到,ID token中的背景噪声编码是保持身份的重要问题。背景噪声可能会破坏条件化的文本 embedding,从而损害图像-文本一致性。在VCD框架中,ID模块在各帧之间引入了不同级别的过拟合的背景噪声预测,这妨碍了运动模块将各种背景对齐为一致的背景。为了去除编码的背景噪声,这里提出了一个简单而强大的方法:提示到分割。由于训练数据已经包含了身份的类别,使用GPT-4V描述图像中的主体以及COCO 中的相应类,并将这些类信息输入Grounding DINO来获取边界框。然后,将这些边界框输入SAM来生成主体的分割mask。在训练期间,仅在mask区域内计算损失。如下图6所示,通过prompt-to-segmentation,生成的视频与用户的提示更加接近。

人脸VCD和平铺VCD

如前面图3所示,由于扩散模型受限于在潜在空间中几个单元内呈现清晰的脸部,其中每个单元由VAE从8x8像素下采样而来,远处的脸部会模糊。为了解决这个问题,提出了人脸VCD。它首先检测并裁剪不同帧的人脸区域,并将人脸帧连接成一个以人脸为中心的视频。然后,通过插值将人脸上采样到512x512,并通过具有相同ID模块的VCD进行部分去噪处理,以便以更高的分辨率更好地恢复身份。然后,将输出降采样过的人脸并粘贴回帧的原始位置。

人脸VCD的输出分辨率仍然有限(512x512)。建议应用平铺VCD来提高视频的分辨率同时保持身份。视频首先通过ESRGAN上采样到1024x1024,然后分割成4个tile,每个tile占据512x512像素。每个tile都通过VCD进行部分去噪,以恢复在ESRGAN上采样中丢失的身份细节。

实验

定性结果

在下图7中呈现了几个结果。本文提出的模型不仅保持了现实基础模型中角色的身份,还在各种类型的风格化模型中保持了身份。从Civitai 获取了开源模型,包括Realist Vision,ToonYou和RCNZ Cartoon 3D。本节首先描述了实现细节和选择的基线的细节。然后,提出了消融研究和与选定基线方法的比较。

实现细节

训练。 除非另有说明,否则ID模块是使用Stable Diffusion 1.5进行训练的,并在推理过程中与Realistic Vision一起使用。将其直接应用于Stable Diffusion 1.5进行视频生成,结合AnimateDiff,会导致视频失真。将扩展的 token tokens的学习率设置为1e-3。批量大小固定为4。每个身份的ID模块在训练过程中进行了200个优化步骤。对于运动模块,将方程4中的γ调整为0.15。在人脸VCD中去噪80%,在平铺VCD中去噪20%。

数据集。 为验证VCD框架的有效性,精心从DreamBooth数据集、CustomConcept101以及互联网上选择了16个主体,确保了人类、动物和物体的多样化代表。对于每个主体,要求GPT-4V创建25个提示,以在不同背景下进行动画制作。为了评估,模型为每个提示生成四个视频,使用不同的随机种子。这个过程总共生成了1600个视频。

评估指标。 从三个角度评估生成的视频。

  1. ID对齐:生成的身份的视觉外观应与参考图像中的视觉外观相匹配。利用CLIP-I和DINO计算每对视频帧和参考图像之间的相似性分数。

  2. 文本对齐:在CLIP特征空间中计算文本图像相似性分数。

  3. 时间平滑性:通过计算所有连续视频帧对之间的CLIP和DINO相似性分数来评估生成的视频的时间一致性。

值得注意的是,时间平滑性不仅受到连续帧之间内容一致性的影响,还受到动作幅度的影响。因此,在比较结果时,建议综合考虑文本对齐、图像对齐和时间平滑性。

基线。 由于缺乏特定于身份的T2V方法,将选择的ID模块与AnimateDiff和几种特定于身份的定制方法进行比较,例如CustomDiffusion 、Textual Inversion (TI) 和LoRA ,所有这些方法都与3D高斯噪声先验结合使用。尽管最近的进展引入了更多针对多身份定制的新方法,例如[17, 20]中的方法,但与这些方法的集成可能留待未来工作。

定量结果

在下表1中呈现了定量结果。最初,评估了两个预训练模型: Stable Diffusion (SD) 和Realistic Vision。Realistic Vision是社区开发的模型,在SD上进行了微调,显示出在生成逼真图像方面的有希望的结果。如表1所示,Realistic Vision通常优于SD,这导致在可能的情况下采用它作为基准模型。然而,对于像DreamBooth这样的模型,它涉及对UNet中的所有权重进行微调,替换基准模型权重是不可行的。其性能通常较其他模型差,突显了广泛微调的局限性。

消融研究

如下表2所示,进行了详细的消融研究,并发现3D高斯噪声先验对视频平滑度、图像对齐度和CLIP-T分数至关重要。相反,去除prompt-to-segmentation模块会增加视频的平滑度,但会降低CLIP-T和CLIP-I分数。这种降低是因为去除会导致 token中编码的背景噪声,从而损坏文本条件。因此,生成的视频缺乏动作,导致更高的平滑度分数。

限制和未来工作

VCD框架有几个改进的方面。首先,当尝试制作具有几个不同身份的视频时,每个身份都有自己特殊的 token embedding和LoRA权重时,它会遇到困难。当这些角色需要相互交互时,生成的视频会比较差。其次,所提出的框架受到动作模块容量的限制。鉴于动作模块只生成短时间的视频,要在保持相同一致性和保真度的情况下延长视频长度并不容易。展望未来,需要致力于使系统能够处理相互交互的多个身份,并确保其在更长的视频中能够保持质量。

结论

本文介绍了Video Custom Diffusion(VCD),这是一个旨在解决主体身份可控视频生成挑战的框架。通过专注于身份信息与逐帧相关性的融合,VCD为生成视频铺平了道路,这些视频不仅跨越帧保持主体的身份,而且稳定而清晰。创新贡献,包括用于精确身份解缠的ID模块、用于增强帧一致性的T2V VCD模块以及用于改善视频质量的V2V模块,共同确立了视频内容中身份保留的新标准。进行的广泛实验证实,与现有方法相比,VCD在生成保持主体身份的高质量、稳定视频方面具有优势。此外,ID模块适应现有的文本到图像模型,增强了VCD的实用性,使其在广泛的应用领域具有多样性。

参考文献

[1] Magic-Me: Identity-Specific Video Customized Diffusion

更多精彩内容,请关注公众号:AI生成未来

这篇关于字节UC伯克利新研究 | Magic-Me:简单有效的主题ID可控视频生成框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/719996

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n