【飞桨】【论文复现】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模型, 是通过之前对example domain 预先训练得到的。 而这个论文的最重要改动就是把这个
在test 是时候直接计算出来,而且比较少的examples就可以了。 所以如果把图(b) 替换了图(a)蓝色的虚线矩形就是这篇论文的模型了。
是对Source domain, 和Target domain的feature exaction. 图(c) 说generate 出来的
,只是前面两个conv layer用来做打补丁的,就是不是直接生成整个图像,而是通过attension 的方式做小修小改。 作者说这样防止shortcut来直接影响最后的图像,和减少参数量。
有一个细节就是图(c)right panel 的箭头方向, 左边是从下往上, 而右边h_t 是从上往下, 这个很奇怪,有去看看code, 如果是真的话,就是最初级的特征作用于最后的图。
还有一个很有意思的细节,就是图b的 是target domain的特征提取, 是连续向量, 而
是生成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.