【飞桨】【论文复现】Few-shot Video-to-Video Synthesis

百度顶会论文复现营作业

https://aistudio.baidu.com/aistudio/education/group/info/1340

下面是对论文的阅读总结  : Few-shot Video-to-Video Synthesis  

这篇论文是从vid2vid 的工作改进来的, 最重要的improvement是允许用户在test time 的时候提供example photo来生成目标视频。而以前的方法是要对不同的example 分别training, 而且要求不少的pair photos作为训练。

现在的方法只需要提供一张example photo (至少), 而且要求semantic state 要对应某个source video frame, 也就是说,input是source video, 和一些example,source 匹对的photo/frames.

模型描述

大致思路是需要一个H网络 (Network weight generation module), 这个网络是根据 input example/source pairs 生成后面用来改图的ConvLayer参数. 这样就是提供了根据example 来修改source frame。

图(a)就是之前vid2vid模型, 【飞桨】【论文复现】Few-shot Video-to-Video Synthesis 是通过之前对example domain 预先训练得到的。  而这个论文的最重要改动就是把这个 【飞桨】【论文复现】Few-shot Video-to-Video Synthesis 在test 是时候直接计算出来,而且比较少的examples就可以了。 所以如果把图(b) 替换了图(a)蓝色的虚线矩形就是这篇论文的模型了。 

【飞桨】【论文复现】Few-shot Video-to-Video Synthesis

【飞桨】【论文复现】Few-shot Video-to-Video Synthesis是对Source domain, 和Target domain的feature exaction. 图(c) 说generate 出来的 【飞桨】【论文复现】Few-shot Video-to-Video Synthesis ,只是前面两个conv layer用来做打补丁的,就是不是直接生成整个图像,而是通过attension 的方式做小修小改。 作者说这样防止shortcut来直接影响最后的图像,和减少参数量。

有一个细节就是图(c)right panel 的箭头方向, 左边是从下往上, 而右边h_t 是从上往下, 这个很奇怪,有去看看code, 如果是真的话,就是最初级的特征作用于最后的图。

还有一个很有意思的细节,就是图b的 【飞桨】【论文复现】Few-shot Video-to-Video Synthesis 是target domain的特征提取, 是连续向量, 而【飞桨】【论文复现】Few-shot Video-to-Video Synthesis 是生成attension mask,就是类似binary,负责给出source图中需要替换(打补丁)的地方 。 所以两边在特征提取中是不对称的。

 

训练

训练数据就有一堆source, target 配对的frames (我不知道这样的数据怎样来的,估计都是pose,face key point之类), 假设有T frames, 就先从T里面选K frames,作为testing 的输入, 然后其他target frames 就是training labels

这里还有一个细节, T 先是1 (就是一个图), 然后在training 中慢慢增加T,就是越来越长的video。

作者在3种不同的数据集进行实验, dance, face, street. 作者提供了3种baseline 方法作为比较。

Encoder: 就是只提供一个example (target domain) photo, encode 一个style vector作为generator的输入, 这样就是没有之前的H 网络了,也缺乏了之前attension的mapping 机制

ConcatStyle:这个类似上面,就是用Concat 来生成style vector

AdaIN:类似第一个ENCODER,就是生成style vector之前加了一层AdaIN layer

 

估计复现可能遇到的问题

1. 就是文件处理,如何优化IO令到GPU性能最大发挥

2. 就是训练的细节,例如如何采样train set , valid set, test set, 和一些超参数的在pytorch和paddle之间的对应关系

3. 模型的细节, 特别是生成Conv 参数的对应关系,需要确认pytorch 和paddle之间参数format.