论文阅读 视频生成(vid2vid) || Few-shot Video-to-Video Synthesis

论文原文:

Ting-Chun Wang, Ming-Yu Liu, Andrew Tao, Guilin Liu, Jan Kautz, and Bryan Catanzaro. "Few-shot Video-to-Video Synthesis", in NeurIPS, 2019.

https://nvlabs.github.io/few-shot-vid2vid/main.pdf

论文地址:

https://nvlabs.github.io/few-shot-vid2vid/
 

目录

摘要

1. Introduction

2. Related Work

3. Few-shot Vid2vid Synthesis 少样本视频-视频合成

3.1 传统的video to video

3.2 few-shot video to video

3.2.1 整体网络结构

3.2.2 网络权重生成模块(E)

3.2.3 SPADE

3.2.4 训练与测试

4. Experiments

实现细节:

数据集

Baselines

评估指标:

主要结果:

limitations

总结


摘要

当前vid2vid(输入视频,输出另一个视频,如输入人体骨架的运动,输出某个真实的人的运动)任务存在两点不足:

  • 缺少训练数据:需要大量的场景数据;
  • 泛化能力差:如pose-to-human任务只能完成对训练数据集中的人的视频生成,不能完成其他不在训练集中的人的动作视频;

本文完成了vid2vid任务的小样本学习,即对于一个新的物体,只需要测试时利用该样本的几张图片,就可以合成该样本的video;

原理:基于注意力机制的网络权重生成模型;

在如下3个数据集上进行了验证:

  • human-dancing videos;
  • talking-head videos;
  • street-scene videos.

 

1. Introduction

前两段主要说要做的few-shot vid2vid是什么:即在几张相同属性image的指导下,完成该属性下视频到视频的转换,如图*所示:

图1 few-shot vid2vid. 其中左边是普通的vid2vid, 泛化能力差,只能对训练集中出现的人生成视频;右:只需要几个新的人的image就能对新人生成视频(few-shot vid2vid)。
  • 第一段: 什么是vid2vid;
  • 第二段: 针对vid2vid泛化能力差的缺点提出了仅通过几张未知样本场景图片即可重建未知场景下视频的few-shot vid2vid任务;

后两段讲文章是怎么做的:

  • 第三段:输入为一个语义视频+几张target domain的images. 其中,image用于配置模型,生成符合target domain的权重;
  • 第四段:说明文章在三个不同的数据集上(跳舞视频;talking head 和 street场景)进行了验证;训练集中的不同场景越多,测试时给出的example images越多,则最后的效果就越好。

2. Related Work

GANs:

  • 本文网络基于conditional GAN; 训练时输入为视频(condition);
  • 测试时会额外输入example images,动态改变生成模型的网络权重.

Image-to-image synthesis:

  • vid2vid的基础就是img2img;
  • 相比于img2img, vid2vid的挑战在于视频帧与帧之间的联系(利用帧间冗余);
  • 相比于其他工作,本文的特点是能够通过几张example images完成对没见过的场景的生成。

Video generative models:

视频生成模型分为三类:

  • 无条件视频生成: 输入噪声,输出视频;
  • 未来帧预测:根据观测到的帧预测未知的帧;
  • vid2vid: 输入语义视频(semantic input),输出真实视频(photorealistiv video).

本文是vid2vid,但是是能够适用于没见过的场景的few-shot的研究;

Adaptive networks:

指网络的部分权重会随输入数据的改变而改变;

Human pose transfer:

输入:人的一个姿势;输出:同一个人的之前没有出现过的姿势。

现有方法基于人体先验,如身体部分建模/人体表面坐标映射。

本文的方法仅仅使用了输入的语义信息,不使用特定的人体先验,因此泛化能力更强。同时,本文方法可以用于视频。

3. Few-shot Vid2vid Synthesis 少样本视频-视频合成

3.1 传统的video to video

$s_1^T \equiv \{ s_{1},s_{2},...,s_{T}\}$ : 输入视频序列,比如是语义分割帧的序列或者边缘图序列;

$x_1^T \equiv \{x_{1},x_{2},...,x_{T}\}$:真实场景的(目标)视频序列;

普通的vid2vid任务的目标:找到从$s_1^T \equiv \{ s_{1},s_{2},...,s_{T}\}$到重建视频\hat{x}_1^T \equiv \{\hat{x}_{1},\hat{x}_{2},...,\hat{x}_{T}\}的映射。从而使二者的条件分布相同:

p(\hat{x}_{1}^{T}|s_{1}^{T}) = p(x_{1}^{T}|s_{1}^{T})

为了对上述条件分布进行建模,常常使用如下的基于Markov假设的序列生成模型:

通过假设马尔可夫过程来简化图像生成任务,即认为条件分布p(\hat{x}_{1}^{T}|s_{1}^{T})可以分解为

p(\hat{x}_{1}^{T}|s_{1}^{T}) = \prod_{t=1}^T p(\hat{x}_{t}|\hat{x}_{t-\tau}^{t-1},s_{t-\tau}^{t}).

也就是说视频仅仅通过部分的帧序列即可还原,并且第t帧\hat{x}_t只与下面3个有关:

(1) 当前输入帧s_t

(2) 之前的L个输入帧$s_{t-\tau}^{t-1}$;

(即共计L+1个输入帧)

(3)之前的L个生成帧\hat{x}_{t-\tau}^{t-1}

通过训练一个网络F,来使用第t帧\hat{x}_t=F(\hat{x}_{t-L}^{t-1},s_{t-L}^{t})建模条件分布p(\hat{x}_{t}|\hat{x}_{t-L}^{t-1},s_{t-L}^{t}).

通过递归使用F来得到最终的输出,即重建的视频$x_1^T \equiv \{x_{1},x_{2},...,x_{T}\}$

不同的研究给出了序列生成器F的不同的构建方法,一种常见的构造方法(即vid2vid中的构造方法)如下:

F(\hat{x}_{t-\tau}^{t-1},s_{t-\tau}^{t})=(\mathbf{1}-\hat{m}_{t}) \odot \hat{w}_{t-1}(\hat{x}_{t-1})+ \hat{m}_{t} \odot \hat{h}_{t},

其中,\odot表示element-wise操作,1表示全1图像。这样,第一部分就是考虑到光流估计的前一帧;第二部分即为合成的有新像素的图片。上式中各项的含义为

  • \tilde{\mathbf{w}}_{t-1}=W_{\boldsymbol{\theta}_{W}}\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t}\right): 估计的从\hat{x}_{t-1}\hat{x}_{t}的光流;W是光流预测网络。文章通过输入的帧s_{t-\tau}^{t}和之前合成的帧\hat{x}_{t-\tau}^{t-1}来估计光流. \hat{w}_{t-1}(\hat{x}_{t-1})的意思是使用\hat{w}_{t-1}来wrap\hat{x}_{t-1}.
  • \tilde{\mathbf{h}}_{t}=H_{\boldsymbol{\theta}_{H}}\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t}\right)是由生成器H合成的图片;
  • \tilde{\mathbf{m}}_{t}=M_{\boldsymbol{\theta}_{M}}\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t}\right)是遮挡mask,取值为[0,1]之间的连续值,M则是mask预测网络。通过使用连续取值而不是bool值来更好地处理放大区域(也就是图片放大之后会变模糊,一些像素看起来就好像既被遮挡了又没被遮挡),从而更好地恢复细节。

图2(a)给出了vid2vid的结构,相当于是对上式的图示。

图2 vid2vid, few-shot vid2vid以及E和H的网络结构

3.2 few-shot video to video

3.2.1 整体网络结构

为了使模型能够根据unseen domain中的几张example images就给出在unseen domain下的结果,few-shot vid2vid使用了如下方法:

第t帧\hat{x}_t不再只与之前的L+1个输入帧$s_{t-\tau}^{t-1}$和L个生成帧\hat{x}_{t-\tau}^{t-1}有关,同时和目标domain的K个样例图片{\mathbf{e}_{1}, \mathbf{e}_{2}, \ldots, \mathbf{e}_{K}} 和这K张图片对应的语义图片\left\{\mathbf{s}_{\mathbf{e}_{1}}, \mathbf{s}_{\mathbf{e}_{2}}, \ldots, \mathbf{s}_{\mathbf{e}_{K}}\right\}.即:

\tilde{\mathbf{x}}_{t}=F\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t},\left\{\mathbf{e}_{1}, \mathbf{e}_{2}, \ldots, \mathbf{e}_{K}\right\},\left\{\mathbf{s}_{\mathbf{e}_{1}}, \mathbf{s}_{\mathbf{e}_{2}}, \ldots, \mathbf{s}_{\mathbf{e}_{K}}\right\}\right)

从而使序列模型F能够利用测试时给出的样例图片去提取unseen domain合成的视频中的有用特征。

具体而言,设计网络E来提取给出的example images的特征,并使用E计算图像合成网络H的权重\theta_H:

\boldsymbol{\theta}_{H}=E\left(\tilde{\mathbf{x}}_{t-\tau}^{t-1}, \mathbf{s}_{t-\tau}^{t},\left\{\mathbf{e}_{1}, \mathbf{e}_{2}, \ldots, \mathbf{e}_{K}\right\},\left\{\mathbf{s}_{\mathbf{e}_{1}}, \mathbf{s}_{\mathbf{e}_{2}}, \ldots, \mathbf{s}_{\mathbf{e}_{K}}\right\}\right)

网络E不会改变M和W的权重,因为W是光流估计网络,M是遮挡估计网络,在不同的domain中(例如,不同的人脸,不同的人),这两个网络是相同的。

H的网络结构则是SPADE的网络结构。

SPADE生成器主要包括两个部分:

  • 几个空间调制分支;
  • 1个主要的图像合成分支。

在本文中,用于调整权重的网络E仅仅调整H中几个空间调制分支的权重。(如图2(c)所示)这样做的原因是:

  • 大大降低了E需要生成的参数数量,防止过拟合;
  • 避免了example images直接映射为输出图片。

3.2.2 网络权重生成模块(E)

E的作用:学习并提取能够通过控制权重而被用于视频合成分支的模式;

首先考虑只有1个example image的情况(K=1):

将E分为两个部分:

  • 一个样本特征提取器E_f;
  • 一个多层感知器E_p.

具体过程为:

  1. 样本图片e1输入到样本特征提取器E_f中,
  2. 输出为特征表示q;
  3. 特征表示q再输入到多层感知器E_p中,
  4. 输出为权重\theta_H,该权重被用在了图片合成网络H中。

令网络H有L层,分别为

H^{l}, \text { where } l \in[1, L]

则设计E同样有L层,每一层E^l生成用于对应的H^l的权重。具体而言,为了生成H^l的权重\theta_H^l,文章将:

  1. 首先得到E_f的第l层的输出q^l;
  2. 之后,平均池化q^l(因为q^l可能仍是空间维度上的特征图);
  3. 再将其通过多层感知器的第l层E_p^l得到权重\theta_H^l

数学上的解释为,若定义\mathbf{q}^{0} \equiv \mathbf{e}_{1},则:

\mathbf{q}^{l}=E_{F}^{l}\left(\mathbf{q}^{l-1}\right)\boldsymbol{\theta}_{H}^{l}=E_{P}^{l}\left(\mathbf{q}^{l}\right)

输出的权重被用于卷积输入的语义图st,从而得到SPADE中的归一化参数。(如图2(c)所示)

对K>1的情况(即输入多张Example images):

对k张example images,样本特征提取器E_f共计会得到k个特征:\mathbf{q}_{1}, \ldots, \mathbf{q}_{K}. 文章使用了注意力机制来整合这些特征。

具体而言,定义一个新的注意力网络E_A,得到权重\boldsymbol{a}_{k} \in \mathbb{R}^{C \times N}

再得到注意力权重:\boldsymbol{\alpha}_{k}=\left(\boldsymbol{a}_{k}\right)^{T} \otimes \boldsymbol{a}_{t}

并利用该权重整合特征:\mathbf{q}=\sum_{k=1}^{K} \mathbf{q}_{k} \otimes \boldsymbol{\alpha}_{k}

 

3.2.3 SPADE

对SPADE中主要的generator的每一层,文章使用\theta_H^l来计算反归一化系数\gamma^{l} \text { and } \beta^{l}

也就是说,在普通的SPADE中,\gamma^{l} \text { and } \beta^{l}是从输入语义图s_t中得到的固定系数;

而在这篇文章中,\gamma^{l} \text { and } \beta^{l}则通过\theta_H^l动态生成。

\theta_H^l共包括了三个部分的权重:\boldsymbol{\theta}_{S}^{l}, \boldsymbol{\theta}_{\gamma}^{l} \text { and } \boldsymbol{\theta}_{\boldsymbol{\beta}}^{l}

其中,\boldsymbol{\theta}_{S}^{l}是用于提取共同特征的共享层;其输出经\boldsymbol{\theta}_{\gamma}^{l} \text { and } \boldsymbol{\theta}_{\boldsymbol{\beta}}^{l}生成\gamma^{l} \text { and } \beta^{l}。计算方法为:

\begin{array}{c} \mathbf{p}_{S}^{l}=\left\{\begin{array}{ll} \mathbf{s}_{t}, & \text { if } l=0 \\ \sigma\left(\mathbf{p}_{S}^{l-1} \otimes \boldsymbol{\theta}_{S}^{l}\right), & \text { otherwise } \end{array}\right. \\ \qquad \begin{aligned} \gamma^{l}=\mathbf{p}_{S}^{l} \otimes \boldsymbol{\theta}_{\gamma}^{l}, \quad \boldsymbol{\beta}^{l}=\mathbf{p}_{S}^{l} \otimes \boldsymbol{\theta}_{\boldsymbol{\beta}}^{l} \\ \mathbf{p}_{H}^{l}=\boldsymbol{\gamma}^{l} \odot \hat{\mathbf{p}}_{H}^{l}+\boldsymbol{\beta}^{l} \end{aligned} \end{array}

3.2.4 训练与测试

可选:warping example images:

为了减小负担,可以选择将example image和合成的帧\tilde{\mathbf{h}}_{t}相结合。方法如下:

\tilde{\mathbf{h}}_{t}^{\prime}=\left(\mathbf{1}-\tilde{\mathbf{m}}_{e_{t}}\right) \odot \tilde{\mathbf{w}}_{e_{t}}\left(\mathbf{e}_{1}\right)+\tilde{\mathbf{m}}_{e_{t}} \odot \tilde{\mathbf{h}}_{t}

该技巧对example images和target images非常相近的情况有效。(如姿态合成任务,背景一样)

损失函数

与vid to vid相同;

训练时:使用s_1^Tx_1^T监督训练,example images则通过从x中随机采K个样本获得。

T的选择

刚开始T=1, 后来过几个epoch增大一倍,从而变为视频。

测试阶段

能够输入任意多个example images.

 

4. Experiments

实现细节:

ADAM, lr=0.0004, ( β1;β2) = (0:5; 0:999), 8 * 32GB V100

数据集

  • YouTube dancing videos.
  • Street-scene videos.
  • Face videos.

Baselines

  • Encoder.
  • ConcatStyle.
  • AdaIN.

(尚无few-shot vid2vid的研究,故使用别的baseline提取特征并生成类似的泛化结果)

评估指标:

  • FID
  • Pose error
  • 分割准确性
  • Human subjective score(使用亚马逊AMT)

主要结果:

表1 定量统计结果
图3 跳舞视频合成结果
图4 不同方法的跳舞视频合成结果
图5 街景合成结果
图6 人脸视频合成结果

 

图7 数据集多样性对结果的影响

limitations

依旧是泛化能力,当目标domain和训练集中的domain差别太大时,如使用计算机动画,则效果会很差。

除此之外,当语义图不准确的时候,结果也会不准确。

 

总结

本文的few-shot特点能够使用unseen domain的example image(s)指导视频合成,且效果较好。

======================================================================================================

本文为阅读笔记,阅读的论文是:

Ting-Chun Wang, Ming-Yu Liu, Andrew Tao, Guilin Liu, Jan Kautz, and Bryan Catanzaro. "Few-shot Video-to-Video Synthesis", in NeurIPS, 2019.

本阅读笔记原载于 我的博客

如有错误,请联系 rxnlos@126.com

======================================================================================================

 

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R.X. NLOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值