论文:Vid2Vid
代码:项目主页
Vid2Vid作为pix2pix,pix2pixHD的改进版本,重点解决了视频到视频转换过程中的前后帧不一致性问题。
视频生成的难点
GAN在图像生成领域虽然研究十分广泛,然而在视频生成领域却还存在许多问题。主要原因在于生成的视频很难保证前后帧的一致性,容易出现抖动。对于视频问题,最直观的想法便是加入前后帧的光流信息作为约束,Vid2Vid也不例外。由于Vid2Vid建立在pix2pixHD基础之上,加入时序约束。因此可以实现高分辨率视频生成
作者给出的方案
- 生成器加入光流约束
- 判别器加入光流信息
- 对前景、背景分别建模
1.对生成器加入光流约束
符号定义:
- 输入图像序列:
- 目标图像序列:
- 生成的图像序列:
视频-视频转换问题可以建模为如下一个条件分布:
那么我们可以训练一个CNN,将条件分布建模为
进一步可以表示为:
上面这个公式有三个未知量,,。这三个未知量都是通过学习一个CNN得到的
表示帧到帧的光流,光流的计算通过学习一个CNN来实现。表示利用帧光流信息预测得到的第帧的输出
表示当前帧的输出结果,也是利用CNN来实现。
表示输出结果的模糊程度。
最终输出的结果由和加权得到。二者的权重通过学习一个CNN来实现,权重代表生成结果的模糊程度,越模糊,则的比重越低。
如何学习一个计算光流的CNN
这个其实很简单,用表示生成前后两帧图片的光流,表示目标图像(Ground truth)前后两帧的光流。训练时只要最小化二者的重构误差就可以了。此外,利用第t帧的光流信息以及第帧的Ground truth应当能够完美重构第帧。所以Loss如下:
第一点改进就是这些啦。下面说一下第二点。
2.对判别器器加入光流约束
这里作者使用了两个判别器,一个是图像粒度的判别器。这个比较简答,使用CGAN。
另一个是视频粒度的判别器。输入为视频序列及其光流信息,同样输入到CGAN。
3. 对前景,背景分别建模
对于语义地图转换为街景图这个任务,作者还分别对前景,背景进行建模,以加快收敛速度。具体来说,可以把语义地图中的“行人”,“车辆”当做前景,“树木”,“道路”当做背景。背景通常都是不动的,因此光流计算会很准,所以得到的图像也会很清晰。因此,我们可以设置一个mask,控制前景和背景的透明度。具体公式如下:
和分别代表前景和背景。二者也是通过CNN实现,是背景的不透明度。
整个文章的idea就是上述三点了。对于前两点,在视频生成领域非常有借鉴意义。