vid2vid

vid2vid提出了一种通用的video to video的生成框架,可以用于很多视频生成任务。常用的pix2pix没有对temporal dynamics建模,所以不能直接用于video synthesis。下面就pose2body对着vid2vide code简单记录一二。

推荐观看vid2vid youtube

1. Network Architecture

1.1 Sequential Generator

sequential generator在生成当前帧时需要考虑:1)当前帧的输入图片;2)前几帧的输入图片;3)前几帧的生成图片。回看多少帧由n_frames_G设置,如下图中n_frames_G设置为3:

CompositeGenerator

sequential generator可以得到当前帧的预测图intermediate image、前一帧到当前帧的光流图flow map和occlusion mask。之后当前帧的生成结果由前一帧生成结果经由光流warp后的图片(img_warp)和当前帧的预测图(img_raw)通过mask 加权而成,这样做是因为前后连续帧间有非常多的相似信息。

同时对于高分辨率的图片生成,和pix2pixHD一样,提出了coarse-to-fine的generator,通过n_scales_spatial控制:

CompositeLocalGenerator

如果是采用coarse-to-fine generator,在训练时可以通过设置niter_fix_global让Local 部分(高分辨率部分)单独先训几个epoch,和pix2pixHD中做法类似。

1.2 Image Discriminator

image discriminator的目的是给定相同的图片输入,让生成帧和真实帧保持一致。这和pix2pixHD的discriminator并无差别,结构也采用了Multi-scale PatchGAN。

1.3 Video Discriminator

video discriminator的目的是给定相同的光流,让连续的生成帧之间的光流信息和连续的真实帧之间的保持一致。所以image discriminator作用在图片上,video discriminator作用在光流上。

另外,vid2vid设计了temporally multi-scale video discriminator。这里“multi-scale”目的是通过采样连续帧的密度由密到疏,以便捕捉short-term和long-term的光流一致性,具体采样细节在代码get_skipped_frames中体现。每个“scale”(密度)的video discriminator都是一个Multi-scale PatchGAN。

VideoDiscriminator

2. DataLoader

2.1 PoseDataset

PoseDataset用来加载openpose、densepose的label和真实的img,同时在训练时做random scalerandom crop

3. Training

vid2vid训练时的loss比较多。

4. Test

利用sequential generator不断生成就可以了。

Kai Su /
Published under (CC) BY-NC-SA in categories Research  tagged with gan