image-to-image translation是一个被广泛研究的问题,而video-to-video synthesis则是它的升级版,受到的关注较少

如果不考虑temporal dynamics,直接使用image-to-image translation的方法会生成不连贯(incoherent)、低质量的视频

1 Introduction

据作者所知,之前还没有工作专门提出a general-purpose solution to video-to-video synthesis

本文将video-to-video synthesis定义为distribution matching problem

3 Video-to-Video Synthesis

定义source video frames为 s 1 T = { s 1 , s 2 , ⋯ , s T } \mathbf{s}_1^T=\left \{ \mathbf{s}_1, \mathbf{s}_2, \cdots, \mathbf{s}_T \right \} s1T​={s1​,s2​,⋯,sT​},corresponding real video frames(相当于ground-truth)为 x 1 T = { x 1 , x 2 , ⋯ , x T } \mathbf{x}_1^T=\left \{ \mathbf{x}_1, \mathbf{x}_2, \cdots, \mathbf{x}_T \right \} x1T​={x1​,x2​,⋯,xT​},生成的output video frames为 x ~ 1 T = { x ~ 1 , x ~ 2 , ⋯ , x ~ T } \tilde{\mathbf{x}}_1^T=\left \{ \tilde{\mathbf{x}}_1, \tilde{\mathbf{x}}_2, \cdots, \tilde{\mathbf{x}}_T \right \} x~1T​={x~1​,x~2​,⋯,x~T​}

学习的目标为
p ( x ~ 1 T ∣ s 1 T ) = p ( x 1 T ∣ s 1 T ) ( 1 ) p\left ( \tilde{\mathbf{x}}_1^T\mid \mathbf{s}_1^T \right )=p\left ( \mathbf{x}_1^T\mid \mathbf{s}_1^T \right ) \qquad(1) p(x~1T​∣s1T​)=p(x1T​∣s1T​)(1)

定义生成器 G G G来表达 p ( x ~ 1 T ∣ s 1 T ) p\left ( \tilde{\mathbf{x}}_1^T\mid \mathbf{s}_1^T \right ) p(x~1T​∣s1T​), x ~ 1 T = G ( s 1 T ) \tilde{\mathbf{x}}_1^T=G(\mathbf{s}_1^T) x~1T​=G(s1T​),以及判别器 D D D,则基于GAN的优化目标可以写作:
max ⁡ D min ⁡ G E ( x 1 T , s 1 T ) [ log ⁡ D ( x 1 T , s 1 T ) ] + E s 1 T [ log ⁡ ( 1 − D ( G ( s 1 T ) , s 1 T ) ) ] ( 2 ) \underset{D}{\max}\ \underset{G}{\min}\ E_{\left ( \mathbf{x}_1^T,\mathbf{s}_1^T \right )}\left [ \log D\left ( \mathbf{x}_1^T, \mathbf{s}_1^T \right ) \right ]+E_{\mathbf{s}_1^T}\left [ \log\left ( 1-D\left ( G\left ( \mathbf{s}_1^T \right ), \mathbf{s}_1^T \right ) \right ) \right ] \qquad(2) Dmax​ Gmin​ E(x1T​,s1T​)​[logD(x1T​,s1T​)]+Es1T​​[log(1−D(G(s1T​),s1T​))](2)
注意 D D D的输入有2个

Sequential generator

为了简化问题,作出Markov assumption,将条件概率 p ( x ~ 1 T ∣ s 1 T ) p\left ( \tilde{\mathbf{x}}_1^T\mid \mathbf{s}_1^T \right ) p(x~1T​∣s1T​)分解为
p ( x ~ 1 T ∣ s 1 T ) = ∏ t = 1 T p ( x ~ t ∣ x ~ t − L t − 1 , s t − L t ) ( 3 ) p\left ( \tilde{\mathbf{x}}_1^T\mid \mathbf{s}_1^T \right )=\prod_{t=1}^{T}p\left ( \tilde{\mathbf{x}}_t\mid \tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t \right ) \qquad(3) p(x~1T​∣s1T​)=t=1∏T​p(x~t​∣x~t−Lt−1​,st−Lt​)(3)
上述式子的意思是,假设我们已经生成了前 t − 1 t-1 t−1帧 x ~ 1 t − 1 \tilde{\mathbf{x}}_1^{t-1} x~1t−1​,当前需要生成第 t t t帧 x ~ t \tilde{\mathbf{x}}_t x~t​,使用的信息有

  1. current source frame s t \mathbf{s}_t st​
  2. past L L L source frames s t − L t − 1 \mathbf{s}_{t-L}^{t-1} st−Lt−1​
  3. past L L L generated frames x ~ t − L t − 1 \tilde{\mathbf{x}}_{t-L}^{t-1} x~t−Lt−1​

其中1和2可以合并为 s t − L t \mathbf{s}_{t-L}^t st−Lt​, L L L是一个超参数,取值小会造成训练不稳定,取值大会增大GPU消耗,因此在实验中设置 L = 2 L=2 L=2比较合适

将公式(3)中的条件概率 p ( x ~ t ∣ x ~ t − L t − 1 , s t − L t ) p\left ( \tilde{\mathbf{x}}_t\mid \tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t \right ) p(x~t​∣x~t−Lt−1​,st−Lt​)表达为网络 F F F, x ~ t = F ( x ~ t − L t − 1 , s t − L t ) \tilde{\mathbf{x}}_t=F\left ( \tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t \right ) x~t​=F(x~t−Lt−1​,st−Lt​),于是就可以利用网络 F F F逐帧地生成视频

在视频中前后帧之间往往是高度相似的,因此考虑使用光流法,如果前后两帧之间的光流已知,那么可以通过warping前一帧来生成下一帧

具体来说,网络 F F F表达为
F ( x ~ t − L t − 1 , s t − L t ) = ( 1 − m ~ t ) ⊙ w ~ t − 1 ( x ~ t − 1 ) + m ~ t ⊙ h ~ t ( 4 ) F\left ( \tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t \right )=\left ( 1-\tilde{\mathbf{m}}_t \right )\odot \tilde{\mathbf{w}}_{t-1}\left ( \tilde{\mathbf{x}}_{t-1} \right )+\tilde{\mathbf{m}}_t\odot \tilde{\mathbf{h}}_t \qquad(4) F(x~t−Lt−1​,st−Lt​)=(1−m~t​)⊙w~t−1​(x~t−1​)+m~t​⊙h~t​(4)
第1项为光流法中warp前一帧的结果,第2项为生成的图像(hallucinates new pixels),二者使用mask m ~ t \tilde{\mathbf{m}}_t m~t​做权衡
Q: w ~ t − 1 ( x ~ t − 1 ) \tilde{\mathbf{w}}_{t-1}\left ( \tilde{\mathbf{x}}_{t-1} \right ) w~t−1​(x~t−1​)对应了warp操作,可以直接理解为矩阵乘法吗

网络 F F F的运算中又涉及到了3个网络 W W W, H H H和 M M M

  • x ~ t − 1 = W ( x ~ t − L t − 1 , s t − L t ) \tilde{\mathbf{x}}_{t-1}=W\left ( \tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t \right ) x~t−1​=W(x~t−Lt−1​,st−Lt​)表示从帧 x ~ t − 1 \tilde{\mathbf{x}}_{t-1} x~t−1​到 x ~ t \tilde{\mathbf{x}}_t x~t​,使用optical flow prediction network W W W预测的光流
  • h ~ t = H ( x ~ t − L t − 1 , s t − L t ) \tilde{\mathbf{h}}_t=H\left ( \tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t \right ) h~t​=H(x~t−Lt−1​,st−Lt​)表示由generator H H H生成的hallucinated image
  • m ~ t = M ( x ~ t − L t − 1 , s t − L t ) \tilde{\mathbf{m}}_t=M\left ( \tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t \right ) m~t​=M(x~t−Lt−1​,st−Lt​)表示由mask prediction network M M M生成的occlusion mask,未被遮挡的部分可以使用光流解决,被遮挡的部分只能从 h ~ t \tilde{\mathbf{h}}_t h~t​中获取

训练网络 F F F的时候,必须采用coarse-to-fine的方式

【关于光流】
光流定义为图像中的像素的运动速度,前后两帧之间的光流需要使用特定算法(Gunner Farneback’s algorithm)来计算,在本文中使用FlowNet2来计算

Conditional image discriminator

定义image级别的conditional 判别器 D I D_I DI​,用于判别真实的pair ( x t , s t ) \left ( \mathbf{x}_t, \mathbf{s}_t \right ) (xt​,st​)和假的pair ( x ~ t , s t ) \left ( \tilde{\mathbf{x}}_t, \mathbf{s}_t \right ) (x~t​,st​)

Conditional video discriminator

定义video级别的conditional 判别器 D V D_V DV​,给定光流作为条件,判别真假output frames

具体来说,对于连续的K个real images x t − K t − 1 \mathbf{x}_{t-K}^{t-1} xt−Kt−1​,其光流序列为 w t − K t − 2 \mathbf{w}_{t-K}^{t-2} wt−Kt−2​,那么 D V D_V DV​负责判别真实的pair ( x t − K t − 1 , w t − K t − 2 ) \left ( \mathbf{x}_{t-K}^{t-1}, \mathbf{w}_{t-K}^{t-2} \right ) (xt−Kt−1​,wt−Kt−2​)和假的pair ( x ~ t − K t − 1 , w t − K t − 2 ) \left ( \tilde{\mathbf{x}}_{t-K}^{t-1}, \mathbf{w}_{t-K}^{t-2} \right ) (x~t−Kt−1​,wt−Kt−2​)

Foreground-background prior

当使用semantic segmentation masks作为source video时,可以将semantic segmentation分为foreground和background,利用这个信息可以生成更好的video

具体来说,将image hallucination network H H H拆分为foreground model h ~ F , t = H F ( s t − L t ) \tilde{\mathbf{h}}_{F,t}=H_F(\mathbf{s}_{t-L}^t) h~F,t​=HF​(st−Lt​)和background model h ~ B , t = H B ( x ~ t − L t − 1 , s t − L t ) \tilde{\mathbf{h}}_{B,t}=H_B(\tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t) h~B,t​=HB​(x~t−Lt−1​,st−Lt​),则公式(4)修改如下
F ( x ~ t − L t − 1 , s t − L t ) = ( 1 − m ~ t ) ⊙ w ~ t − 1 ( x ~ t − 1 ) + m ~ t ⊙ ( ( 1 − m B , t ) ⊙ h ~ F , t + m B , t ⊙ h ~ B , t ) ( 9 ) F\left ( \tilde{\mathbf{x}}_{t-L}^{t-1}, \mathbf{s}_{t-L}^t \right )=\left ( 1-\tilde{\mathbf{m}}_t \right )\odot \tilde{\mathbf{w}}_{t-1}\left ( \tilde{\mathbf{x}}_{t-1} \right )+\tilde{\mathbf{m}}_t\odot \left ( (1-\mathbf{m}_{B,t})\odot \tilde{\mathbf{h}}_{F,t}+\mathbf{m}_{B,t}\odot \tilde{\mathbf{h}}_{B,t} \right ) \qquad(9) F(x~t−Lt−1​,st−Lt​)=(1−m~t​)⊙w~t−1​(x~t−1​)+m~t​⊙((1−mB,t​)⊙h~F,t​+mB,t​⊙h~B,t​)(9)
其中 m B , t \mathbf{m}_{B,t} mB,t​是根据ground truth segmentation mask s t \mathbf{s}_t st​计算得到的

使用Foreground-background prior可以极大地提高生成video的视觉质量,付出的代价仅仅是video中会有一些轻微的闪烁

Multimodal synthesis

在特征空间上做一些随机处理,从而可以生成多段不同的视频

4 Experiments

总共进行了3种类型的视频生成

  1. Semantic manipulation,见Figure 2
  2. Sketch-to-video synthesis for face swapping,见Figure 5
  3. Pose-to-video synthesis for human motion transfer,见Figure 6



    【总结】
    本文提出了Video-to-Video生成的方法,相当于将pix2pix扩展到video上,在训练时,需要使用逐帧对应的两个视频序列(semantic segmentation mask -> video,sketch -> video,pose -> video)进行训练,在测试时,以dance video为例,给定一段video,对其提取pose序列,然后可以生成一段逼真的video,相当于将视频中的人进行了替换

Video-to-Video Synthesis(NeurIPS18)相关推荐

  1. 深入理解l内核v4l2框架之video for linux 2(一)

    在看了很多关于v4l2驱动的例程之后,想深入研究下linux内核的v4l2框架,顺便把这些记录下来,以备查用. Video for Linux 2 随着一些视频或者图像硬件的复杂化,V4L2驱动也越来 ...

  2. 深入理解l内核v4l2框架之video for linux 2(转载)

    在看了很多关于v4l2驱动的例程之后,想深入研究下linux内核的v4l2框架,顺便把这些记录下来,以备查用. Video for Linux 2 随着一些视频或者图像硬件的复杂化,V4L2驱动也越来 ...

  3. Linux V4L2子系统-Video设备框架分析(二)

    1.概述 在V4L2子系统中,Video设备是一个字符设备,设备节点为/dev/videoX,主设备号为81,次设备号范围为0-63.在用户空间,应用可以通过open/close/ioctl/mmap ...

  4. 限制 video 播放 快进 (vue)

    限制/禁止 video 播放 快进 html script html <video ref="video" :src="videoUrl" control ...

  5. Bus Video System CodeForces - 978E(思维)

    题意:现有n个公交车站,给出每个公交车站上下车的人数变化,正为上车,负为下车,公交车的最大容量为w.问,最开始时,公交车的可能人数有多少种.如果任何人数都与后面给出的上下情况冲突的话,输出0. 直接看 ...

  6. 洛谷P4762: [CERC2014]Virus synthesis(PAM)

    解析 自己对PAM的理解不够深刻. 最优方案必然是先选择一个偶回文串,递归构造出它的一半.花一步逆序,然后暴力解决剩下的. 这似乎已经依稀出现了某种dp的思路. 考虑如何更好的转移.设计 transx ...

  7. 论文撰写的学习(一):标题的撰写

    一.学习思路 论文阅读与论文写作是两种完全不同的任务,只专注于论文的阅读不能仔细参考优秀论文的写作思路.写作技巧对于自己的研究工作知识事倍功半.希望通过接下来的学习能够掌握论文的撰写的思路与技巧. 二 ...

  8. 《视频直播技术详解》之(四):编码和封装

    七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣. 结合七牛实时流网络 LiveNet 和直播云解 ...

  9. linux 烧写(1)

    第一部分: 一.BootLoader的概念 BootLoader是系统加电启运行的第一段软件代码.回忆一下PC的体系结构我们可以知道,PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬 ...

最新文章

  1. window.onload和jquery中$(function(){ })的区别
  2. 网站收录慢的如“蜗牛”,是什么原因导致的?
  3. asp.net 图片 上传 打水印 高质量缩略图
  4. php经典面试题时间,php 经典面试题及答案
  5. MYSQL学习笔记2--mysql 静态和动态plugin
  6. Android 中文 API (20) —— DatePicker
  7. c246芯片组服务器主板,支持Xeon E-2100系列:ASRock 华擎 发布 C246M WS 主板
  8. 双核浏览器切换内核(模式)的行为分析
  9. OpenBmc开发5:bitbake介绍与使用
  10. 初识HTTP——基于《图解HTTP》
  11. SpringSecurity-12-PasswordEncoder密码加密简介
  12. 解决使用Edge(必应)浏览器搜索之后显示untitled的问题
  13. 研报复现初探—华泰金工人工智能选股系列之boosting模型
  14. 火狐浏览器打不开淘宝首页的解决办法
  15. SCQA结构化表达--提升沟通效果
  16. 优雅编程之这样重构函数(续),你就“正常”了(二十)
  17. Serverless 底座的持续创新
  18. vue 实现一个滑块拖动验证功能
  19. Python在线聊天室
  20. python3.6打包成exe文件_详解如何将python3.6软件的py文件打包成exe程序

热门文章

  1. 如何用最简单的办法合并视频并压缩
  2. excel如何在某列中的每个单元格都插入同一公式?
  3. 专题测试05·二重积分【李艳芳全程班】
  4. SSO搭建(框架KISSO)
  5. 盘点让新加坡人骄傲的十大品牌!来新加坡必买必逛!
  6. 人工智能联合会主席杨强:人工智能如何落地?
  7. 时间不一定能证明许多东西,但一定会让你看透许多东西。
  8. 【四足机器人】从零开始搭建四足机器人mini cheetah仿真环境(零)准备工作
  9. 程序员必须知道的几个Git代码托管平台
  10. Microsoft Project 使用