简介

vid2vid是NVIDIA公司提出的一种图像翻译模型 ,通过输入语义图来生成视频,其是在pix2pix、pix2pixHD基础上改进出的模型,三者的演进思想如下:

[1]最早pix2pix框架提出了一种统一的简洁优雅的框架解决了图像翻译问题,使用CGAN代替专家知识实现基本图像翻译效果。

[2]pix2pixHD是在pix2pix基础上改进G和D,可以生成高分辨率图像,并使用一点技巧,能够控制生成多样化的输出。

[3]前两种方式只是针对静态图片的翻译进行设计,如果直接用于视频的翻译会导致帧间不连续的问题,vid2vid是在pix2pixHD基础上考虑加入视频连贯性的设计所提出的视频翻译模型,改造G和D来生成连贯且高质量的视频。

主要思想

整体看vid2vid论文,其思想分为6部分:

[1]最为重要的G和D的设计上,在原来的G上加入光流约束,在D上加入光流信息,并继承pix2pixHD的Coarse-to-fine思想,设计出两个生成器,分别用于生成高分辨率图和低分辨率图,并针对图像粒度和视频粒度的不同需求设计两种不同的PatchGAN判别器,来指导训练。

Coarse-to-fine:将生成器分为两个子网络G1和G2,G1用于全局感知,G2用于局部增强,G1的入和出都是低清晰的,G的入和出都是高清的。

[2]多样化控制输出。为了控制生成视频时对物体的自定义,我们会在原始输入语义labels map外多输入一个featues map,通过改变map中色块的标签来控制事物的替换。

[3]前后景区分建模。对于语义图转街景图任务,前景和背景是有很大区别的,道路这样的背景通常是不动的,因此光流计算较准,得到图像较清晰,而前景的光流计算较为困难,因此针对前后景分别建模,有利于加快收敛速度,针对性的训练。

[4]使用5个损失函数。第一个是图像分布loss,用于保障生成图像的真实度,第二个是视频loss,用于保障生成视频的连贯性,第三个是光流loss,用于保障估算光流的正确性,第四个是Feature matching loss,第五个是Content loss,后两者是将生成的样本和Grund Truth分别放到判别器和VGG 16提取特征,利用特征图计算Element-wise loss,从而保证内容一致,提升训练稳固性。

[5]时域和空域交叉训练。空间上对用于生成不同尺寸的G1和G2分别进行训练,在时间维度上不断增加参与训练帧的维度,从而整体上是一种空间和时间维度交替训练的形式。

[6]多数据集多指标多任务形式效果验证。分别在街景数据集、人脸视频数据集、舞蹈数据集上进行模型的训练,在人类主观得分和FID指标上进行效果的验证,在街景数据集中,vid2vid是 优于其他先进的方法,呈现的视频被人类受试者认为更真实,有较小的FID,我们也尝试了对场景的语义替换,通过修改分割标签,可以将楼替换成树。

此外在姿势转视频任务上,模型可以根据身体形状和运动(包括未曾见过的)生成高分辨率、逼真舞蹈视频。

模型虽然厉害,但是训练不是那么的方便,因为我们往往需要有训练视频对应的语义或者实例label,因此针对不同数据集我们会使用不同的方式获取label。

比如在 Cityscapes数据集任务中,街景视频中只有一部分视频有真实语义分割标注,因此我们会:

[1]使用Deeplabv3 取得 Semantic segmentation label

[2]使用 FlowNet2 做光流法的訓練,得到光流作为真实光流

[3]使用Mask R-CNN训练得到instance segmentation

最后说明了一些模型仍存在的一些问题,比如:

[1]模型难以合成车的转向过程,作者认为也许可以通过融入深度图那样的3D线索来提升效果。

[2]无法确保事物是整个视频中的稳定外观,比如一辆车可能在视频中发生颜色的渐变。

[3]进行语义替换,如树变成建筑时,使用不同的label  shape会导致一些不需要物体的出现,这个可以用更粗的语义标签来训练我们的模型,因为这样训练的模型对标签形状不那么敏感。

网络体系

1.首先介绍下生成器,是一种包括G1和G2两种结构的序列生成器,不断产生每一帧的高清图片,使用G1生成低分辨率图像和光流,G2生成高分辨率图,从左到右的过程如下:

[1]输入语义图和历史图片经过G1生成器得到低清图片和光流估算。

[2]使用历史图片和光流估计得到Warped扭曲图。

[3]利用扭曲图和低清晰图得到最终的高清图片,并进行下一帧图的构建。

生成器的主要结构如左图,其在pix2pix的粗到细G基础上加上了历史信息,G1被称为全局生成网络,G2称为局部提升网络,其中局部提升网络包含一个卷积前向端、一系列残差结构、一个反卷积反向到端,局部提升网络分为两次输入,一次输入是大小为1024*512的输入图,一次是G2的前一部分特征图结合G1的生成图结合作为输入。

在训练期间,我们首先按照他们的分辨率训练全局生成器和训练局部提升器,然后联合所有的网络来进行精调。

进行公式化理解的话,在每一帧构建时要依靠当前的输入特征图st,历史输入特征图    ,历史的生成视频帧 ,经过前向模型得到新的x,不断序列进行得到最后的输出   ,序列化生成模型可以表示为如下的形式(右图中,下对应左边,上对应右边):

其中上式子s是输入的特征图,x是真实标注,有冒号的x是生成图,m表示输出结果的模糊程度(从前一阵捕获到的扭曲像素)、w表示光流估算、h表示当前帧生成的结果, 表示点乘,l表示全为1的特征图 ,实验中L长度设为2,表示利用前两个时刻的历史信息。

这m、w、h三个变量都是用CNN表示的,可以理解为当m越大,像素扭曲过多导致光流法无法处理时,我们依赖于生成图,扭曲较小时则依赖于光流估算结果。

2.在判别器部分,我们根据判别需求提出了两个条件判别器,图像判别器用于保证生成图片的真实性,与标签同属一个图像域,视频判别器用于在光流角度进行保证,保证在相同光流下生成图和真实图之间的相似性,注重是否连贯。

此外对于图片判别器,使用一种多尺寸判别器的方式,因为为了区分高分辨率的图像,判别器需要很大的感受野,则需要有更深更大卷积核的网络,这会占据大量的资源,这里提出三个相同网络结构,不同尺寸的判别器,对真实和合成图像进行单倍、2倍、4倍采样得到三个尺度的图像金字塔,判别器D1、D2、D3使用三种不同尺寸的真假图片进行训练,其中:

[1].粗糙尺度判别器有大的感受野,有更多图像全局视角信息,能够引领生成器生成全局一致的图像。

[2].精细尺度的判别器鼓励生成器能够生成更加精细的细节,这也使得训练由粗到细的生成器更加容易。

文中说,如果不使用多尺度的判别器,生成图像中经常出现一些重复的图案。

3.整体来看,我们使用如下的目标函数来训练得到时序视频合成器F。其中 是通过 图片判别器得到的结果, 是由视频判别器得到的结果, 表示光流估计的损失,是可调节的权重参数,前三者的损失函数依次如下,其中光流估计的误差分为两部分,一部分是指估计光流和ground truth光流之间的点差,第二部分表示从当前帧扭曲到下一帧时的扭曲损失。

额外

此外在网络体系中,还有两个重要的部分:前背景分离建模、多样化控制输出。

1.由于我们会将语义标注视频作为输入,因此可以根据标注的语义可以分为前景和背景,利用背景图变化小、光流法能准确估计,而前景图变化较大,光流法难捕获的特点,我们针对构建前景模型Hf和背景模型Hb,可以发现前景模型未使用历史生成图信息,只是使用语义分割图,从而可以加快速度。

                                     

对应的,我们可以将之前的序列生成模型替换为如下的形式,  为1表示背景模型,为0表示前景模型。

2.在多样化控制输出上,不同于pix2pix实现生成多样性的方法(使用Dropout),这里采用了一个非常巧妙的办法,即学习一个条件作为条件GAN的输入(输入标签和聚类中心),不同的输入条件就得到了不同的输出,从而实现了多样化的输出,而且还是可编辑的。具体做法如下:

[1].首先训练一个编码器

[2].利用编码器提取原始图片的特征(3维度的feature map),然后根据语义分割Labels信息进行Average pooling,得到特征。这个Features的每一语义类像素的值都代表了这类标签的信息。

[3].如果输入图像有足够的多,那么Features的每一类像素的值就代表了这类物体的先验分布。 对所有输入的训练图像通过编码器提取特征,然后进行K-means聚类,得到K个聚类中心,以K个聚类中心代表不同的颜色,纹理等信息(获得同一物体不同的颜色和纹理,k个聚类就有k种每种物体下的像素值分布情况)。

[4].实际生成图像时,除了输入语义标签信息(每个标签都会对应k个聚类效果,这样的话其实就代表一类物体下的不同情况),还要从K个聚类中心随机选择一个,即选择一个颜色/纹理风格](在实例分割图基础上增加维度,来控制输出样式)

在论文中上这样描述的:

Vid2Vid多图详解相关推荐

  1. 36 张图详解应用层协议:网络世界的最强王者

    上帝视角 应用层 我们前面介绍过 TCP/IP 模型的下三层,分别是网络接入层.网络层和传输层.它们都是为应用层服务的,传输应用层的各种数据,现在我们就来看看最高层的应用层. 应用层 在 TCP/IP ...

  2. 多图详解教程:Eclipse 3.6连接Tomcat 7

    多图详解教程:最新版本Java环境Eclipse 3.6连接最新版本开源Web服务器Tomcat 7.假如我们想将Java 的项目自己配环境浏览的话可以来看一下本文. 本文总共分为3大步分别为配置JR ...

  3. Android-Binder进程间通讯机制-多图详解

    本系列: Android-Binder进程间通讯机制-多图详解 一次Binder通信最大可以传输多大的数据?​​​​​​​ 关于Binder (AIDL)的 oneway 机制 概述 最近在学习Bin ...

  4. python 制作gif-利用Python如何制作好玩的GIF动图详解

    前言 之前我们分享过用Python进行可视化的9种常见方式.其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表. 假如电脑上没有 ...

  5. python变量命名规则思维导图_Python思维导图详解

    Python思维导图 Python思维导图详解 第一阶段:学习Python基础语法,主要学习变量的使用以及类型.变量的计算和输入输出.变量的命名.运算符.if判断语句.while循环语句.字符串.常量 ...

  6. spi四种工作模式时序图_SPI总线协议及SPI时序图详解

    嵌入式linux QQ交流群:175159209,欢迎爱好者加入交流技术问题! SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种 ...

  7. python二维图颜色函数_Python绘图之二维图与三维图详解

    各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import ...

  8. UML(Unified Modeling Language)统一建模语言--类图详解

    UML(Unified Modeling Language)统一建模语言--类图详解   2010-05-12 作者:fenglin1985 来源:fenglin1985的blog   类图是面向对象 ...

  9. 多图详解freeBSD8.2安装过程

    多图详解freeBSD8.2安装过程 Wmware新建freeBSD虚拟机,光盘挂载freeBSD.iso.真机光驱放freeBSD光盘,修改bios光驱启动,选择1安装系统,选择4则可以修改root ...

  10. 多图详解Spring框架的设计理念与设计模式

    Spring作为现在最优秀的框架之一,已被广泛的使用,51CTO也曾经针对Spring框架中的JDBC应用做过报道.本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的 ...

最新文章

  1. Centos系统上安装php遇到的错误解决方法集锦
  2. Android图片缓存之Lru算法
  3. Mybatis sql注入问题
  4. C# JSON格式数据用法
  5. Mac 生成SSH Key
  6. dubbo整合springmvc 使用 学习二(spring+dubbo+zookeeper单机服务)
  7. AD09由英文改中文菜单步骤
  8. maya将模型导入到unity
  9. 周杰:推荐只是一个新的信息的传播方式
  10. php时间戳转换为英文日期格式,PHP时间戳和日期格式相互转换
  11. idea项目打包和部署
  12. Domain-Adversarial Training of Neural Networks
  13. modprobe 及 配置文件 /etc/modprobe.conf
  14. 云基础架构安全_这是使您的云基础架构稳定,安全和可扩展的方法。
  15. 小程序页面中时间戳-获取当前年月日
  16. pytorch的expand_as和expand
  17. DICOM医学图像格式转换的C++实现 DIOCM转 BMP、读取DICOM图像(转载)
  18. 密度聚类(CFDP)原理与实现
  19. Android默认短信应用常识
  20. 信息系统项目管理师试题精选(四)

热门文章

  1. python pil_Python PIL composite()用法及代码示例
  2. 动画--easeljs中的movieClip控件示例?
  3. python中sys模块是干什么的_python中sys模块的介绍和使用
  4. c语言元音字母辅音字母,英语字母中的5个元音字母和21个辅音字母
  5. 网站备案需要什么材料
  6. 计算机或信息化的专业职称,信息系统项目管理师是高级职称吗?
  7. Unity Translate方法使用指南
  8. 10 大白帽黑客专用的 Linux 操作系统
  9. 英语发音规则---ea字母组合发音规律
  10. 柳传志回应“联想5G投票事件”:不要罔顾事实挑拨离间