赞
踩
考虑到文生视频开始爆发,比如11月份就是文生视频最火爆的一个月
加之不止一个B端客户找到七月,希望帮其做文生视频的应用,故我司第一项目组准备在AIGC模特之后,做文生视频项目,最终把文生3D、文生数字人都串起来
当然,我司还是三大项目组
今2023年2月,之前开发stable diffusion最初版本的Runway提出了首个AI编辑模型Gen-1,Gen-1可以在原视频的基础上,编辑出咱们想要的视频。无论是粗糙的3D动画,还是用手机拍出来的摇摇晃晃的视频,Gen-1都可以升级出一个不可思议的效果(当然,其背后原因是Gen1 trained jointly on images and videos)
比如用几个包装盒,Gen-1就可以生成一个工厂的视频,化腐朽为神奇,就是这么简单
Gen-1对应的论文为:Structure and Content-Guided Video Synthesis with Diffusion Models,顺带说一嘴,有的文章会把这篇论文混淆成Gen2的论文,但实际上,runway只对外发布了Gen-1的论文,2的论文在23年年底之前还没对外发,大家注意
如下图所示,可以基于潜在视频扩散模型(latent video diffusion models),通过给定「下图中间部分」的原始输入图像,然后既可以通过如「下图左上角」的文字引导生成视频,也可以通过如「下图左下角」的图像引导生成视频
怎么做到的呢?
咱们模型的目标是保留视频结构的同时(结构一般指视频的几何、动力学的特征,比如对象的形状、位置以及他们的时间变化),编辑视频的内容(内容一般指的是视频外观及其语义的特征,比如对象的颜色、样式以及场景的光亮度)
为了实现这一目标,需要基于结构表示和内容表示的基础上学习视频的生成模型,从而通过输入的视频推断出其结构表示,然后根据编辑视频的描述文本进行修改(modify it based on a text prompt c describing the edit),如下图所示
扩散模型的正向扩散过程被定义为
将符合正太分布的噪声缓慢添加到每个样本,得到,该正向扩散过程模拟一个马尔科夫链,噪声的方差为,而
至于逆向过程则根据以下公式定义
其中,方差是固定的,只需学习其中的均值即可,我们需要优化目标的损失函数即为
最终转化为
友情提醒,如果你对上述扩散模型DDPM的推导有任何疑问,可参见此文的第二部分《AI绘画能力的起源:从VAE、扩散模型DDPM、DETR到ViT/Swin transformer》,对关于DDPM的每一步骤的推导都非常详尽
为了可以正确的对视频帧的分布进行建模,需要做以下工作
//待更
扩散模型非常适合对等条件分布进行建模,由于大规模配对的视频-文本数据集比较缺乏,所以只能限制在无字幕的视频数据上进行训练
内容表示层面上
// 待更
很多同学还没来得及体验Gen-1,没想到在2023年3月份,runway很快又推出了Gen-2的内测版本,并于6月份正式对外发布(这是runway对Gen-2介绍的页面:https://research.runwayml.com/gen2),相比Gen-1,Gen-2获得了史诗级的升级——可以从头开始生成视频。如果说去年发布的stable diffusion/midjourney是文生图的代表,那Gen2便是文生视频的第一个代表
Gen-2便可以根据上面这张图片生成对应的视频
Gen2:Image to Video
Gen-2在11月份连续推出2次重大更新
11月16日,Meta发布文生视频模型Emu Video,该模型既支持灵活的图像编辑(例如把「兔子」变成「吹小号的兔子」,再变成「吹彩虹色小号的兔子」),也支持根据文本和图像生成高分辨率视频(例如让「吹小号的兔子」欢快地跳舞)
那其背后的原理是怎样的呢?事实上,这其中涉及两项工作
在其官方博客中,Meta 展望了这两项技术的应用前景,比如让社交媒体用户自己生成动图、表情包,按照自己的意愿编辑照片和图像等等。当然,关于生成动图/表情包这点,Meta 在之前的 Meta Connect 大会上发布 Emu 模型时也提到过(参见:Meta 版 ChatGPT 来了:Llama 2 加持,接入必应搜索,小扎现场演示)
接下来,我们分别介绍下这两个模型
Emu Edit对应的论文为《Emu Edit: Precise Image Editing via Recognition and Generation Tasks》,其项目地址则为:https://emu-edit.metademolab.com/
如该论文中所说,如今每天都有数百万人使用图像编辑。然而,流行的图像编辑工具要么需要相当多的专业知识,使用起来很耗时,要么非常有限,仅提供一组预定义的编辑操作,如特定的过滤器
好在如今基于指令的图像编辑(Instruction-based image editing)试图让用户使用自然语言指令来解决这些限制。例如,用户可以向模型提供图像并指示其「给鸸鹋穿上消防员服装」这样的指令
然而,虽然像 InstructPix2Pix 这类基于指令的图像编辑模型可以用来处理各种给定的指令,但
顺带说明下,instructable - pix2pix引入了一个可指导的图像编辑模型,他们通过同时利用GPT-3和Prompt-to-Prompt来开发这个模型,以生成一个用于基于指令的图像编辑的大型合成数据集,并利用该数据集来训练一个可遵循指令的图像编辑模型
与使用合成数据集的InstructPix2Pix不同,Mag-icBrush通过要求人类使用在线图像编辑工具,开发了一个人工标注的指令引导的图像编辑数据集,然后在此数据集上微调instructable - pix2pix可以提高图像编辑能力
为了解决这些问题,Meta 引入了 Emu Edit,这是首个在多样化的任务上训练而成的图像编辑模型,如前所述,Emu Edit 可以根据指令进行自由形式的编辑,包括本地和全局编辑、删除和添加背景、颜色改变和几何变换、检测和分割等任务。
与当今许多生成式 AI 模型不同,Emu Edit 可以精确遵循指令,确保输入图像中与指令无关的像素保持不变。例如,下图左侧,用户给出指令「将草地上的小狗移除」,移除物体后的图片几乎看不出来有什么变化,再比如下图右侧,移除图片中左下角的文本,再给图片换个背景,Emu Edit 也能处理得很好:
考虑到市面上已有的数据规模、多样性、质量都有限,故为了训练这个模型,Meta 开发了一个包含 16个不同的任务 和 1000 万个合成样本的数据集,每个样本都包含一个输入图像、对要执行任务的描述(即文本指令),以及目标输出图像、任务索引「Each example (cI , cT , x, i)in our dataset, contains an input image cI , a text instruction cT , a target image x, and a task index i (out of the sixteen)」,具体而言:
Region-Based Editing
|
Local
: Substituting one object for another, altering an object’s attributes (e.g., “make it smile”)
|
Remove: Erasing an object from the image
| Add: Inserting a new object into the image |
Texture
: Altering an object’s visual characteristics with out affecting its structure (e.g., painting over, filling or
covering an object)
| Background: Changing the scene’s background |
Free-Form Editing |
Global
: Edit instructions that affect the entire image, or that can not be described using a mask (e.g., “let’s see it
in the summer”)
| Style: Change the style of an image |
Text Editing
: This involves text-related editing tasks
such as adding, removing, swapping text, and altering the
text’s font and color
| ||
Vision tasks
|
Detect
: Identifying and marking a specific object with in the image with a rectangle bounding box
|
Segment
: Isolating and marking an object in the image
| Color: Color adjustments like sharpening and blurring |
Image-to-Image Translation
: Tasks that involve bi directional image type conversion, such as sketch-to image, depth map-to-image, normal map-to-image,pose to-image,segmentation map-to-image, and so on
|
- def get_content_instruction(new_prompt):
- optional_verbs = choice(["include", "place", "position", "set", "incorporate", "alongside",
- "give", "put", "insert", "together with", "with", "make", "integrate",
- "have", "append", "make", "add", "include"])
-
- # system message #
- system_message = (
- f"<<SYS>>\n"
- "You are an assistant that only speaks JSON. Do not write normal text. The assistant answer is "
- "JSON with the following string fields: 'edit', 'edited object','output'. Here is the latest "
- "conversation between Assistant and User.\n"
- "<</SYS>>"
- )
-
- # introduction message #
- intro_message = (
- f"[INST]User: Hi, My job to take a given caption ('input') and to output the following: an "
- f"instruction for {optional_verbs} an object to the image ('edit'), the object to {optional_verbs} "
- "('edited object'), and the caption with the object ('output'). Please help me do it. "
- "I will give you the 'input', and you will help. When you reply, use the following format: "
- "{\"edit\": '<instruction>', 'edited object': '<object>', 'output': '<caption>'}[/INST]\n"
- "Assistant: Sure, I'd be happy to help! Please provide the actual input caption you'd like me to "
- f"read and I'll assist you with writing an instruction to {optional_verbs} an object to the "
- "image, writing the added object and writing the caption with the object."
- )
-
- # shuffling #
- random.seed(torch.randint(1 << 32, ()).item())
- shuffle(few_shot_examples)
- few_shot_examples = few_shot_examples[:int(len(few_shot_examples) * 0.6)]
- prompt = system_message + intro_message + "".join(few_shot_examples)
-
- # add the test prompt #
- prompt += f"[INST]User: {new_prompt}[/INST]"
-
- return prompt
和经典老方法一样,先做预训练,然后微调(The Emu model is a two-stage approach that begins with a pre-training phase and concludes with aquality fine-tuning stage)。该方法的关键在于,微调数据集相对较小,只包含几千张图像,但必须具有非凡的质量,通常需要人工标注
而在训练方法上主要有两个关键
下面重点解释一下学习任务嵌入( Learned Task Embedding)
为了引导生成过程走向正确的发展方向,他们为数据集中的每个任务学习一个嵌入向量
- 在训练期间,给定我们数据集中的一个样本,我们使用任务索引,从嵌入表中获取任务的嵌入向量,并与模型权重联合优化它(we use the task index, i, to fetch the task’s embedding vector, vi, froman embedding table, and optimize it jointly with the modelweights)
- 具体而言,我们通过交叉注意交互将任务嵌入到U-Net中,并将其添加到时间步长嵌入中(We do so by introducing the task embedding vias an additional condition to the U-Net, ϵθ. Concretely,we integrate the task embedding into the U-Net via cross-attention interactions, and by adding it to the timestep em-beddings)
优化问题更新为
其中是我们数据集中的任务总数,是来自数据集中的输入图像、输入指令文本、目标图像和任务索引的四元组
// 待更
大型文生图模型在网络规模的图像-文本对上经过训练,可生成高质量的多样化图像,然问题是
因此,Meta 的研究者提出了 EMU VIDEO,其论文为《EMU VIDEO:Factorizing Text-to-Video Generation by Explicit Image Conditioning》,其项目地址为https://emu-video.metademolab.com/,通过显式的中间图像生成步骤来增强基于扩散的文本到视频生成的条件
具体来说,他们将文生视频问题分解为两个子问题:
再说一下更多细节
- 我们用预训练的文本到图像模型初始化F,以确保它能够在初始化时生成图像
由于是从预训练的T2I模型初始化并保持冻结状态的,因此我们的模型保留了从大型图像-文本数据集中学习到的概念和风格多样性,并使用它来生成i。这不需要额外的训练成本,而不像Imagen video那样对图像和视频数据进行联合微调以保持这种风格
Since the spatial layers are initialized from a pretrained T2I model and kept frozen, our model retains the conceptual and stylistic diversity learned from large image-text datasets, and uses it to generate I. This comes at no additional training cost unlike approaches [Imagen video] that do joint finetuning on image and video data to maintain such style
当然,许多直接的T2V方法[比如Align your latents: High-resolution video synthesis with latent diffusion models,再比如Make-a-video: Text-to-video generation without text-video data]也从预训练的T2I模型初始化,并保持空间层冻结。然而,它们没有采用我们基于图像的因子分解,因此不能保留T2I模型的质量和多样性Many direct T2V ap-proaches [7, 68] also initialize from a pretrained T2I modeland keep the spatial layers frozen. However, they do notemploy our image-based factorization and thus do not re-tain the quality and diversity in the T2I model
接下来,我们只需要训练F来解决第二步,即推断以文本提示和起始帧为条件的视频
我们通过对起始帧I进行采样,并要求模型同时使用文本提示pxw和图像I调节来预测T帧,从而使用视频-文本对来训练F- 由于使用潜在扩散模型,所以首先使用按帧应用的图像自动编码器将视频V转换为潜在空间X∈R T ×C×H×W,这降低了空间维度
再之后,利用自动编码器的解码器,可以将潜空间转换回像素空间(The latent space can be converted back to the pixel spaceusing the autoencoder’s decode)
视频的T帧被独立去噪,以产生去噪输入Xt,扩散模型被训练去噪(The T frames of the videoare noised independently to produce the noised input Xt,which the diffusion model is trained to denoise)- 我们使用预训练的T2I模型初始化潜在扩散模型F
像「上文1.1.2.2 时空潜在扩散(Spatio-temporal Latent Diffusion)」所述的一样,我们添加了新的可学习的时间参数:
在每个空间卷积之后添加一个一维时间卷积
在每个空间注意力层之后添加一个一维时间注意力层
原始的空间卷积层和注意力层被独立应用到每个T帧上,并保持冻结
预训练的T2I模型已经是文本条件,结合上面描述的图像条件,F同时是文本和图像条件
The pretrained T2I model is already text conditioned and combined with the image conditioning described above,Fis conditioned on both text and image
最终如此操作带来的好处是
从展示的 demo 中可以看到,EMU VIDEO 已经可以支持 4 秒的视频生成。在论文中,他们还探讨了增加视频时长的方法
作者表示,通过一个小的架构修改,他们可以在 T 帧上约束模型并扩展视频。因此,他们训练 EMU VIDEO 的一个变体,以「过去」16 帧为条件生成未来 16 帧。在扩展视频时,他们使用与原始视频不同的未来文本提示,效果如图 7 所示。他们发现,扩展视频既遵循原始视频,也遵循未来文本提示。
11月18日,字节半路杀出发布PixelDance
在官网(https://makepixelsdance.github.io)中,PixelDance 给出了两种不同的视频生成模式
第一种是基础模式(Basic Mode),用户只需要提供一张指导图片+文本描述,PixelDance 就可以生成有高度一致性且有丰富动态性的视频,其中指导图片可以是真实图片,也可以利用现有的文生图模型生成。
从展示的结果来看,真实风格、动画风格、二次元风格、魔幻风格,PixelDance 通通都可以解决,人物动作、脸部表情、相机视角控制、特效动作,Pixeldance 也都可以很好的完成
第二种是高级魔法模式(Magic Mode),给了用户更多发挥想象力和创造力的空间。在这种模式下,用户需要提供两张指导图片+文本描述,可以更好地生成更有难度的各种炫酷特效镜头
除此之外,官网还展示了完全使用 PixelDance 制作的 3 分钟故事短片
而达到这样拔群的视频生成效果,并没有依赖复杂的数据集和大规模的模型训练,PixelDance 在公开的 WebVid-10M 数据集上仅用 1.5B 大小的模型就达到了上述效果
此外,还可以通过用户一个简单的草图作为视频的最后一帧指导视频生成过程(we take the image sketch as anexample and finetune PixelDance with image sketch [49]as the last frame instruction)
字节团队提出PixelDance的这篇论文《Make Pixels Dance: High-Dynamic Video Generation》中(论文地址:https://arxiv.org/abs/2311.10982,demo 地址:https://makepixelsdance.github.io),可读性非常高,我所看到的关键原因在于毕竟是咱们国人写的,值得反复品读
论文中指出了视频生成难以做出好效果的原因:相比于图片生成,视频生成具有特征空间显著更大、动作多样性显著更强的特点。这就导致了现有的视频生成方法难以学到有效的时域动作信息,生成的视频虽然图片质量较高,但动态性非常有限
而PixelDance是一种基于潜在扩散模型的视频生成方法,以<文本,第一帧,最后一帧>指令为条件(conditioned on <text,first frame,last frame> instructions)
但最后一帧怎么获取呢?因为最后一帧跟第一帧不同,为此,他们开发了三种技术
论文中讲到,之所以长视频为何不太好生成,原因在于长视频要求连续视频片段之间的无缝过渡以及场景和人物的长期一致性
一般有两种方法:
- 自回归方法(autoregressive methods)[15,22,41]采用滑动窗口来生成以前一片段为条件的新片段
1) autoregressive methods [15, 22, 41] employ a sliding window to generate a new clip conditioned on the previous clip
然而,自回归方法很容易受到质量退化的影响,因为随着时间的推移,误差累积- 分层方法[9,15,17,53]首先生成稀疏帧,然后插值中间帧
hierarchical methods [9, 15, 17, 53] generate sparse frames first, then interpolate intermediate frames
至于分层方法,它需要长视频进行训练,由于在线视频中镜头频繁变化,长视频很难获得
此外,跨更大的时间间隔生成时间上连贯的帧会加剧挑战,这往往会导致初始帧的质量较低,使得插值后期很难取得良好的效果最终,为了生成长视频,PixelDance被训练为严格地遵循第一帧指令,其中前一个视频片段的最后一帧(the last frame from preceding clip),被用作生成后续片段的第一帧指令(is used as the first frame instruction for generating the subsequent clip)
我们采用广泛使用的2D UNet作为扩散模型,该模型由一系列空间下采样层和一系列插入跳跃连接的空间上采样层构成(We take the widely used 2D UNetas diffusion model, which is constructed with a series of spatial downsampling layers followed by a series of spatial upsampling layers with inserted skip connections)
最终他们在WebVid-10M上训练视频扩散模型,该模型包含约10M的短视频片段,平均时长为18秒,以分辨率336 ×596为主,可惜的是WebVid-10M有两个问题:
因此,我们用其他自收集的500K无水印视频片段来扩展我们的训练数据,这些视频片段描述了现实世界的实体,如人类、动物、物体和景观,并与粗粒度的文本描述配对。尽管只包含适度的比例,但将该数据集与WebVid-10M相结合进行训练可以确保PixelDance能够在图像指令不含水印的情况下生成无水印视频(we surprisingly find that combining this dataset with WebVid-10M for training ensures that PixelDance is able to generate watermark-free videos if the image instructions are free of watermarks)
PixelDance在「视频-文本数据集」和「图像-文本数据集」上进行联合训练(PixelDance is trained jointly on video-text dataset and image-text dataset),具体而言
具体来说,我们利用了现有的T2I模型Stable Diffusion V2.1获取第一帧指令,并生成视频给出的文字和第一帧指令(generate videos given the text and first frame instructions)
根据之前的工作[7,44],我们随机选择每个示例中的一个提示符来生成总共2990个视频进行评估,并计算MSR-VTT数据集上的Fr响应视频距离(FVD)[40],和CLIP-similarity (CLIPSIM)[47]
MSR-VTT和UCF-101的Zero-short评价结果分别如下面两个表所示
如之前所述,他们的视频生成方法包含三个不同的指令:文本,第一帧和最后一帧指令
// 待更
11月21日,开发并维护stable diffusion后续版本的Stability AI终于发布了他们自家的生成式视频模型Stable Video Diffusion(SVD),支持文本到视频、图像到视频生成,并且还支持物体从单一视角到多视角的转化,也就是3D合成:
SVD对应的论文为:《Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets》
论文中确定了训练SVD的三个步骤:
总之,SVD基于Stable Diffusion 2.1,首先用约6亿个样本的视频数据集预训练了基础模型(we apply our proposed curation scheme toa large video dataset comprising roughly 600 million sam-ples and train a strong pretrained text-to-video base model)
然后在较小的高质量数据集上对基础模型进行微调,用于高分辨率的下游任务(finetune the base model on a smaller, high-qualitydataset for high-resolution downstream tasks )
斯坦福的一博士生郭文景(Demi Guo)曾在去年参加Runway的首届AI电影节,发现Runway和Adobe Photoshop的工具并不好用,自己所在团队的作品也并未获奖,于是导致了之后所发生的这一系列事
Pika 1.0不仅能根据文字图片,流畅地生成一段视频,动静转换就在一瞬间:
而且可编辑性还特别强,指定视频中的任意元素,一句话就能实现快速“换装”:
此外,通过Pika 1.0生成的视频比较唯美,比如下面这个宫崎骏画风的视频,我自己还反复看了两三遍,^_^
总结一下,Pika 1.0的新功能包括:
- 文本生成视频/图像生成视频:输入几行文本或上传图像,就可以通过AI创建简短、高质量的视频
- 视频-视频不同风格转换:将现有视频转换为不同的风格,包括不同的角色和对象,同时保持视频的结构
- 扩展(expand):扩展视频的画布或宽高比,将视频从TikTok 9:16格式更改为宽屏16:9格式,AI模型将预测超出原始视频边界的内容,相当于先预测 后补全或填充所需的内容
- 更改:使用 AI 编辑视频内容,比如更换衣服、添加另一个角色、更改环境或添加道具
- 扩展(Extend):使用 AI 扩展现有视频剪辑的长度
- 全新Web界面:Pika 将在Discord和Web上提供
以往,通过分数蒸馏,比如DreamFusion、ProlificDreamer等模型,进行文本到3D的生成质量虽高,但运行时间可能长达10个小时。
最新论文中,斯坦福和pika的研究人员通过此论文《DreamPropeller: Supercharge Text-to-3D Generation with Parallel Sampling》,联合提出了一种基于分数蒸馏的加速方法——DreamPropeller,能够将现有方法的速度提高4.7倍
DreamPropeller整体架构如下图所示
如下是与其他模型的可视化比较,可以看出,使用DreamPropeller的方法能以更短的运行时间实现同样高质量的生成
对DreamFusion图库中的30个提示进行量化评估。运行时间以秒为单位。最新研究的方法达到了具有竞争力的质量,同时速度提高了4倍以上
// 待更
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。