#学习笔记# VALSE 2019.01.09 朱俊彦 --- Learning to Synthesize Images, Videos, and 3D Objects
视频类型:VALSE-webinar
报告时间:2019年01月09日
报告人:MIT朱俊彦
报告题目:Learning to Synthesize Images, Videos, and 3D Objects
报告网址:http://valser.org/article-298-1.html
视频地址:http://www.iqiyi.com/w_19s78pzlsx.html#vfrm=8-8-0-1
Part 1 : image generation
给定一个输入图像x,学习一个生成器G,使输出图像尽可能与真实图像y相似。
该问题面临三个挑战:
- How to design an objective L?
- How to optimize L?
- How to collect data (x, y)?
解决篇
1. How to design an objective L?
pix2pix,可以自动设计损失函数。
不仅要生成高清的图像,还要生成的图像和输入相匹配。
pix2pix提供了一个可学习的损失函数,受到GAN的启发,但也用到了输入图像。
2. How to optimize L?
pix2pixHD, Large-scale optimization。
使用到传统思想 Image Pyramid [Burt and Adelson 1987],即coarse-to-fine。先生成低分辨率的图像,然后增强细节,直到生成高分辨率的图像。
好处:(1)smooth energy landscape 。处理低分辨率图像时,图像的起伏landscape会平缓很多。
(2)reduce the number of parameters。参数数量减少,训练速度加快。
实现:
(1)训练一个模型生成低分辨率图像,pix2pix实现
(2)用低分辨率的输出图像和高分辨率的输入图像结合,生成高分辨率图像。具体如图或参考原文。
3. How to collect data (x, y)?
CycleGAN, learning without pairs. 不用成对的数据,学习两个域间的映射。
First reference: Mark Twain提出,在语言翻译中(如,英语翻译到法语再到英语),即使一个人不懂法语,也可以检查翻译的质量,通过“back translation”,看翻译回来的句子和最初的句子是否一致。
由以上启发提出cycle-consistency loss,解决了mode-collapse问题,从一张马的图像x出发,通过正向映射G,得到输出G(x),同时使用对抗损失来判别输出斑马的真假,同时学习反向的映射F,把斑马再变回马,测量重建的马和原始的马之间的差距。这就解决了mode-collapse的问题。
但是CycleGAN不会永远成功。斑马人的例子,是由于训练数据集中只有野马的图像,没包括马上的骑手,所以在测试阶段对新物体并不有效。
Part 2 : Understanding Black-box Networks
问题:如何理解这样一个黑盒子网络?如果出现问题,该如何调试?
GAN Dissection: Visualizing and Understanding Generative Adversarial Networks
通过训练集,训练出决定某个物体的units,可以控制这个units来控制图像中某物体(如树)的有无或数量,实现对图像中物体的增减。也可以找出决定瑕疵的单元,去除这个单元就能达到去瑕疵的效果。(具体内容和原理见论文,暂时看不懂原理)
Part 3 : 2D-->3D
为了使GAN能够支持视频生成、游戏体验、虚拟现实等场景,我们需要从2D出发,向3D扩展,甚至4D,5D,即包括相机视角、时间戳以及三维空间坐标的五维空间。即vid2vid
#sequential generator#
给定输入语义标签图,我们要生成对应的输出视频,一种方法就是直接用pix2pixHD逐帧生成,但是结果看上去并不好,帧与帧之间有大量的闪烁,因此在英伟达赞助下,我们提出了一种方法。基本思路是使用基于图像扭转(warpping-based)的方法,生成当前帧到下一帧的光流,以及一些细节,再通过基于光流的方法,将两部分融合在一起。网络需要学习光流信息,才能合成下一帧。其中的关键在于,前面生成的帧还可以重复使用,只需要增添一些新的细节即可。每生成一帧后,便将其加入之前的帧序列中,送进网络中。这有点像循环神经网络。
#multi-scale discriminators#
我们还考察了不同的判别器,引入了空间多尺度和时间多尺度,比如时域上我们观察两帧,四帧到八帧的时间尺度,以保持长期的时域一致性。
#progressive training#
同时在训练时,采用增量递进(progressive growing)的策略,先从合成低分辨率图像开始,然后增大分辨率。对时域也同样处理,先生成连续两帧,然后再到四帧,再训练模型生成八帧,直到最后一次生成十六帧。
#alternative training#
空域和时域的增长交替进行,首先合成低分辨率图像,连续四帧,然后让分辨率稍作提升,接着增加帧数,比如八帧,然后再提升分辨率,再增加时长,整个训练是一个增量式的过程。
应用:street views,customized gaming,motion transfer
Part 4 : 2D vs 3D
WGAN-GP是传统的2D生成对抗网络,能够生成样本。提出了Visual object networks,不仅能合成2D图像,还能创建3D模型,可以将模型投影到深度图加掩模的2.5D表示,再合成最终的2D图像。这其中最大的优势在于,可以生成不同视角下的图像,或者改变物体形状而保持视角和表面纹理,或者固定物体形状和视角,只更换表面纹理,从而使这三个要素彼此分离,共同支撑3D场景中的编辑。
#learning 3D disentanglement#
首先给定物体形状的编码,训练一个网络来生成3D模型,同样地,用判别器来检查生成样本是真是假。接着,将3D模型投影,得到2.5D的中间表示,投影算法的实现是可以反向求导的,梯度可以从2.5D表示传回3D模型层。之后再添加纹理,这部分比较像CycleGAN,从2.5D的草图生成2D图像。物体的形状、观察的视角以及表面纹理都可以由对应的编码所控制。整个模型采用端到端训练,对于2D图像和3D模型都有相应的判别器去鉴别真伪,所有的模块一同参与训练。
小结:
图像生成部分之外的部分,没看过论文,理解不是很深刻,具体原理不是很清楚。但是大佬的这些工作让人受益匪浅,在GAN领域真是相当厉害了。趁热打铁补论文~
#学习笔记# VALSE 2019.01.09 朱俊彦 --- Learning to Synthesize Images, Videos, and 3D Objects的更多相关文章
- AWS re:Invent(2019.01.09)
时间:2019.01.09地点:北京国际饭店
- 再起航,我的学习笔记之JavaScript设计模式09(原型模式)
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 我们 ...
- 【Scala学习笔记】第01弹——Scala安装与配置
安装Scala之前先要安装JDK(1.5以上),最好安装JDK 1.8+,安装好JDK后配置JDK的环境变量. 然后去Scala官网(http://www.scala-lang.org/downloa ...
- 【Cocos2d-X开发学习笔记】第01期:PC开发环境的详细搭建
本文使用的是cocos2d-x-2.1.4版本 ,截至目前为止是最新稳定版 所谓的开发环境就是制作游戏的地方,打个比方读者就会十分清楚了.比如提到做饭,人们都会想到厨房.这是 因为厨房有炉灶.烟机.水 ...
- zabbix学习笔记----安装----2019.03.26
1.zabbix官方yum源地址:repo.zabbix.com 2.安装zabbix server zabbix server使用mysql作为数据库,在zabbix 3.X版本,安装zabbix- ...
- zabbix学习笔记----概念----2019.03.25
1.zabbix支持的通讯方式 1)agent:专用的代理程序,首推: 2)SNMP: 3)SSH/Telnet: 4)IPMI,通过标准的IPMI硬件接口,监控被监控对象的硬件特性. 2)zab ...
- 2019.01.09 bzoj2599: [IOI2011]Race(点分治)
传送门 题意:给一棵树,每条边有权.求一条路径,权值和等于K,且边的数量最小. 思路: 考虑点分治如何合并. 我们利用树形dpdpdp求树的直径的方法,边dfsdfsdfs子树边统计答案即可. 代码: ...
- 2019.01.09 bzoj3697: 采药人的路径(点分治)
传送门 点分治好题. 题意:给出一棵树,边分两种,求满足由两条两种边数相等的路径拼成的路径数. 思路: 考虑将边的种类转化成边权−1-1−1和111,这样就只用考虑由两条权值为000的路径拼成的路径数 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
随机推荐
- HDOJ1010 (DFS+奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Tortoisesvn 如何在资源管理器中断开连接
你在这个文件夹下打开“工具—文件夹选项—查看”,勾选“显示隐藏的文件夹”选项,可以看到在SVN所在的文件夹下面, 有一个.svn文件夹,把它删除了,刷新一下就可以了.
- 【转】onclick事件与href='javascript:function()'的区别
href='javascript:function()'和onclick能起到同样的效果,一般来说,如果要调用脚本还是在onclick事件里面写代码,而不推荐在href='javascript:fun ...
- 2016.1.23 通过cmd在程序中执行sql脚本
System.Diagnostics.Process pro = new System.Diagnostics.Process(); pro.StartInfo.FileName = "cm ...
- .Net 使用 GregorianCalendar 获取任意一天为一年的第几周
private static int GetWeekOfYear(DateTime dt) { GregorianCalendar gc = new GregorianCalendar(); int ...
- scrapy xpath 节点关系
父节点 子节点 兄弟节点 先辈节点 后代节点
- LNMP 1.4 nginx启动脚本和配置文件
编写Nginx启动脚本,写入下面这段,授权755 vim /etc/init.d/nginx #!/bin/bash # chkconfig: - # description: http servic ...
- CSS3 高级属性
尽管现代浏览器已经支持了众多的CSS3属性,但是大部分设计师和开发人员貌似依然在关注于一些很“主流”的属性,如border-radius.box-shadow或者transform等.它们有良好的文档 ...
- setAttribute这个方法
setAttribute这个方法,在JSP内置对象session和request都有这个方法,这个方法作用就是保存数据,然后还可以用getAttribute方法来取出.比如现在又个User对象,Use ...
- Android基础学习:Android环境搭建
在3年前,自学过Android的一些基础知识,但是那个时候Linux等其他的知识结构比较薄弱,理解得不是很深刻,后来因项目变动的原因,没有再搞Android相关的东西了.时过境迁,还是因为项目变动,重 ...