vid2vid
vid2vid是NVIDIA公司提出的一种图像翻译模型 ,通过输入语义图来生成视频,是在pix2pix、pix2pixHD基础上改进得到的模型。pix2pix、pix2pixHD是图像生成模型,而vid2vid是在pix2pixHD基础上考虑加入视频连贯性的设计所提出的视频翻译模型,通过改造G和D来生成连贯且高质量的视频。
(s_1)^T≡{s1, s2, ..., sT }表征源视频帧的序列。例如,它可以是一个语义分割掩码或边缘图的序列。(x_1)^T≡{x1, x2, ..., xT }是相应的真实视频帧的序列。视频生成的目标是学习一个映射函数,该函数可以将(s_1)^T转换为输出视频帧的序列,(x_1)˜^T≡{x˜1, x˜2, ..., x˜T },从而使给定(s_1)^T的(x_1)˜^T的条件分布与给定(s_1)^T的(x_1)^T的条件分布相同。
vid2vid是一个条件性GAN框架。将输入源序列映射到相应的输出帧序列:(x_1)^T= G((s_1)^T)。通过解决最小优化问题来训练生成器,该问题由下式给出
其中D是鉴别器。在求解上式时,最小化p((x_1)˜^T|(s_1)^T)和p((x_1)^T|(s_1)^T)之间的Jensen-Shannon分歧是一项具有挑战性的任务。vid2vid提出了新的网络设计和用于视频到视频合成的时空目标。
Sequential generator
首先,对优化问题做马尔可夫假设,即当前帧生成的视频仅与前L 帧的信息相关,而不是与整个1∼t 帧的视频序列的信息都相关,因此上式的约束条件为:
在生成第t 帧视频时,只需要将下边三类信息送入网络即可:
1) 当前第t 帧的条件输入s_t;
2) 前L帧的条件输入(s_(t−L))^(t−1);
3) 模型生成的前L帧图像(x~t−L)^(t−1)。
对于输入2)和3),马尔可夫假设保证只需要提供前L帧的信息,而不是前边所有帧的信息,从而使网络更容易优化。文章通过实验发现L一般取2效果较好,L太小会损失时序信息,L太大会造成巨大的GPU开销且提升的效果也有限。
视频信号在连续帧中包含大量的冗余信息。如果连续帧之间的光流(optical flow)是已知的,可以通过对当前帧的warping来估计下一帧。除了被遮挡的区域外,这种估计基本正确。基于这一观察,将F建模为
第一部分对应的是前一帧warped像素,而第二部分则是新的像素的 hallucinates 。
Conditional image discriminator DI
DI的目的是确保在相同的源图像下,每个输出帧都类似于真实图像。这个条件判别器应该对真实的一对(x_t, s_t)输出1,对假的一对(x˜t, s_t)输出0。
Conditional video discriminator DV
DV的目的是确保给定相同的光流的情况下,连续的输出帧与真实视频的时间动态相似。DI以源图像为条件,而DV以光流为条件。令(w_t-k)^(t-2)表征K个连续真实图像(x_t-k)^(t-1)的K-1个光流。DV对一对真实的图像((x_t-k)^(t-1), (w_t-k)^(t-2))输出1,对一对假的图像((x~_t-k)^(t-1), (w_t-k)^(t-2))输出0。
Learning objective function
通过解决以下问题来训练顺序视频合成函数F
其中LI是由条件图像判别器DI定义的图像上的GAN损失,LV是由DV定义的连续K帧上的GAN损失,LW是流量估计损失。在整个实验中,基于网格搜索,将权重λW设置为10。使用鉴别器特征匹配损失和VGG特征匹配损失,这种处理方式能够提高收敛速度和训练稳定性。
Foreground-background prior
对于语义图转街景图任务,前景和背景是有很大区别的,道路这样的背景通常是不动的,因此光流计算较准,得到图像较清晰,而前景的光流计算较为困难,因此针对前后景分别建模,有利于加快收敛速度,进行有针对性的训练。
有了前景-背景先验,可以通过以下方式得到F:
Multimodal synthesis
合成网络F是一个单模态的映射函数。给定一个输入源视频,它只能生成一个输出视频。为了实现多模态合成,对源视频采用了一个特征嵌入方案,该方案由实例级语义分割掩码组成。具体来说,在训练时,训练一个图像编码器E,将ground-truth图像编码为一个d维的特征图。然后,对该图进行实例平均汇集,使同一物体的所有像素共享相同的特征向量。然后,将实例平均的特征图z_t和输入的语义分割掩码st送入生成器F。一旦训练完成,就对属于同一对象类别的特征向量进行高斯混合分布。在测试时,使用该对象类别的估计分布为每个对象实例抽取一个特征向量。鉴于不同的特征向量,生成器F可以合成具有不同视觉外观的视频。
vid2vid网络结构
vid2vid使用了两阶段的Generator,第一阶段G1用来生成全局粗糙的低分辨率视频,第二阶段G2用来生成局部精细化的高分辨率视频。其中,G1的输入是下采样2倍之后,前L帧+当前帧的Semantic map序列以及之前L帧生成图像的序列,在经过下采样和提特征之后,在网络的中间将两路输入提取的feature map相加,接着在网络后部又分出两个分支,来生成未加光流约束的原始图像以及光流和权重mask。G2的输入是原始分辨率的Semantic map序列以及生成图像,在经过2倍下采样+提特征的卷积层之后,将两个分支提取的feature map分别与G1对应的两路输出相加,然后分别送入G2后半部分的两个分支,进行局部细节的refine。
图6. 用于低分辨率视频的网络架构(G1)。网络接收一些语义标签图和先前生成的图像,并输出中间帧以及流程图和mask
图7. 用于高分辨率视频的网络结构(G2)。对标签图和以前的帧下采样处理后送入低分辨率网络G1。然后,将来自高像素网络和低像素网络最后一层的特征相加,送入另一个系列的残差块,以输出最终图像
当前 SOTA!平台收录 vid2vid共1个模型实现资源。
项目 | SOTA!平台项目详情页 |
Vid2vid | 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/vid2vid |