Sora 技术参考文献
-- Mocogan: Decomposing motion and content for video generation
计划根据openai关于Sora介绍的参考文献,做一系列的技术介绍。
openai 关于Sora的介绍网址。 对于该文章的翻译和简介见文章
Generating Videos with Scene Dynamics
文章主要工作
视频中的视觉信号可以分为内容和运动两部分。内容指定了视频中有哪些物体,而运动描述了它们的动态。基于这个前提,文章提出了运动和内容分解的生成对抗网络(MoCoGAN)框架,用于视频生成。所提出的框架通过将一系列随机向量映射到一系列视频帧来生成视频。每个随机向量由内容部分和运动部分组成。虽然内容部分保持固定,但运动部分被实现为一个随机过程。为了以无监督的方式学习运动和内容的分解,引入了一种新颖的对抗学习方案,利用图像和视频鉴别器。
由于视频是关于物体(内容)执行动作(运动),图像的潜在空间应进一步分解为两个子空间,其中第一个子空间(内容子空间)中的点的偏差导致视频片段中的内容变化,第二个子空间(运动子空间)中的偏差导致时间运动。通过这种建模,不同执行速度的同一动作的视频只会导致运动空间中轨迹的不同遍历速度。分解运动和内容允许更受控的视频生成过程。通过改变内容表示同时固定运动轨迹,有不同物体执行相同运动的视频。通过改变运动轨迹同时固定内容表示,有同一物体执行不同运动的视频,如图1所示。
文章提出了运动和内容分解的生成对抗网络(MoCoGAN)框架,用于视频生成。它通过依次生成视频帧来生成视频片段。在每个时间步骤,一个图像生成网络将一个随机向量映射到一个图像。随机向量由两部分构成,第一部分从内容子空间采样,第二部分从运动子空间采样。由于短视频片段中的内容通常保持不变,使用高斯分布对内容空间进行建模,并使用相同的实现来生成视频片段中的每个帧。另一方面,通过递归神经网络从运动空间采样,网络参数在训练过程中学习。
笔者总结
作者的贡献在于
- 提出了一种新颖的GAN框架,用于无条件视频生成,将噪声向量映射到视频上。
- 将视频的生成分解为控制视频生成中内容和运动两个部分
- 利用GAN框架,使用大量视频做无监督训练
笔者认为:不同研究者看待视频生成的角度不同,导致大家建模方向的差异。Sora的上一篇参考文献,是将视频生成,分解为前景和背景的生成;本篇文章是分解为内容和运动的生成。
将视频的生成进行分解的原因是视频生成任务比较复杂,要保证视频图像生成的精准,还要保证时间序列上的动作合理性。
本篇文章提供了一种视频生成的思路。但是笔者认为还是具有较大局限性:
- 分解为视频内容和运动的形式,进行视频生成,只能进行简单场景的视频生成。即视频内容是不怎么变化的。例如生成人的微笑视频,只能保持用户的正面在视频中一直是面向镜头的,如果是用户转头了,或者视频后续加入了前面没有出现的场景信息,如沙发等。在这种情景下,就无法进行很好地生成。作者的实验过程中,也基本上都是视频画面没有太大变化的。
- 作者在训练模型的过程中,运动部分的输入向量是随机生成的,那就无法知道随机的向量,表示什么样的运动。无法对模型进行很好地解释,同时训练过程可能也会特别久,难以收敛。
模型
作者认为视频的生成应该包括两个部分,一个是视频的内容,另外一个是运动的情况。作者举了个例子是一个包含人对着摄像头笑的过程,不同人的脸部图像是不同的,这是视频内容的不同,但是不同人的微笑的过程和肌肉动作都是类似的,例如嘴巴上翘等。作者使用两个隐向量分别表示这两种内容: 和。
此外,作者也期望使用GAN训练架构,来训练该生成模型,这样可以使用大量的无监督视频文件进行模型训练。
作者的模型架构如下图:
从下而上,首先红色部分是一个循环神经网络,从一个高斯随机向量产生运动的序列表示...。然后结合视频内容向量,输入图像生成器中,输出生成的视频桢序列...。需要注意的是所有的视频桢都共享一个图像内容的隐表示。
上方的紫色部分是GAN模型的判别器。判别器输入一个视频桢序列,由两个判别器进行判别输入的视频是真实的视频,或者是由生成器生成的。第一个判别器是从视频中随机采样一个图片,然后判别这个图片是生成的,还是真实的。第二个判别器是从视频中裁剪出T个视频桢,然后判别这个视频片段是真实的还是生成的。
判别器主要是从内容方面判别真实性;是从视频内容是否连贯等时间角度判别是否是一个真实的视频。