雷锋网 AI 科技评论按:生成式对抗性网络 GANs 是近几年最热门的机器学习范式之一,它“图像生成效果好”和“训练困难、效果不稳定”的特点吸引了许许多多研究者付出精力进行 GANs 的研究。虽然它在大尺寸图像和图像逼真程度方面的表现仍然有限,但仍然是目前最好的图像生成范式。

所以当看到如此逼真的高分辨率生成图像的时候,我们几乎要以为这是 GANs 的新突破。虽然图中还有一些扭曲和不自然,但是细节和物体的结构已经比较完善。然而定睛一看,这样的效果居然是一个单向的端到端网络完成的!

介绍这项成果的论文「Photographic Image Synthesis with Cascaded Refinement Networks」(用级联优化网络生成照片级图像)已被 ICCV 2017 收录,这篇论文是斯坦福大学博士陈启峰(第一作者)和英特尔实验室视觉组主管 Vladlen Koltun 共同完成的;两人此前也有合作。陈启峰初中时就开始学习信息学,不仅2008年全奖就读香港科技大学,2012年时更同时被斯坦福大学、哈佛大学、MIT、普林斯顿大学、UC 伯克利、UCLA等9所高校全奖录取硕士博士学位,最终选择了斯坦福大学,并于今年6月获得计算机博士学位。

以下雷锋网(公众号:雷锋网) AI 科技评论就对这篇论文做详细的介绍。

想法提出

作者们的目标是生成大尺寸的、质量接近照片的图像。这个目标有足够的难度,现有的基于 GANs 的方法生成的图像在尺寸和逼真程度上都有各种问题,而 GANs 本身训练困难的特点更是雪上加霜。所以 GANs 的方法不适用。

作者们想到了这样一个点子,假如给定一个街道布局,比如左图这样,不同的物体也做出了语意级别的区分,一个熟练的画手可以很快根据这样的布局画出一幅画,专业的艺术家甚至可以可以据此创造出像照片一样真实的画作。那么,能否把这样的能力赋予一个计算模型呢?就是给定一个带有语意物体布局的场景(左图),能否让一个人工智能系统生成一张这个场景对应的照片级的图像(右图)呢?

另一方面,这个任务也有现有的成果可以类比,那就是图像的语意分割。“从一张真实世界的图像生成语义分割布局图像”,就和作者们的想法“从语义布局图像生成照片级图像”互为逆任务。既然图像分割可以用端到端卷积网络来做,那么从“分割结果”生成图像也就可以用端到端卷积网络来做。

图像生成任务有哪些特点

不过端到端网络的总体结构还不足以保证图像的质量。所以作者们在根据其它现有的网络结构做了很多实验以后,列举出了三项他们认为非常重要的特点,模型要满足这三点才能有足够好的表现。

全局的协调性: 照片中物体的结构要正确,许多物体的结构都不是在局部独立存在的,它们可能有对称性。比如如果一辆车左侧的刹车灯亮了,那右侧的刹车灯也要亮。

高分辨率:为了达到足够高的分辨率,模型需要具有专门的分辨率倍增模块。

记忆力 (Memory):网络需要有足够大的容量才能复现出图像中物体足够多的细节。一个好的模型不仅在训练集中要有好的表现,也要有足够的泛化能力,都需要网络容量足够大。

巧妙的网络结构设计

为了同时达到以上的三个特点,作者们设计了一个由多个分辨率倍增模块组成的级联优化网络 CRN。

模型一开始生成的图像分辨率只有 4x8,通过串接的多个分辨率倍增前馈网络模块,分辨率逐步翻番,最终达到很高的图像分辨率(比如最后一个模块把512x1024的图像变成1024x2048)。这就是论文标题的“Cascaded Refinement Networks”的体现。这样做的好处是,

1. 覆盖大范围的物体特征一开始的时候都是在很小的临近范围内表示的,它们的总体特征在一开始就是协调的,在分辨率逐步升高的过程中也能够保持下来,就达到了“全局的协调性”。

2. 在提高分辨率的过程中,使用串接的多个前馈网络模块就可以对整个模型做端到端的训练,如果这部分用 GANs 就没办法端到端训练,而且分辨率选择的灵活性也变差了。这样就保证了“高分辨率”。

3. 增加更多的分辨率倍增模块可以提高网络容量,作者们表示只要硬件能够支持就可以增加更多的模块,现在他们实验中用到的网络有超过1亿个参数,已经用尽了GPU的显存空间,但是有明确的证据表明继续增大网络容量可以继续提高图像质量。这样模块化的网络也就非常方便在硬件资源充足的情况下拓展网络容量。

每个分辨率增倍模块都在各自的分辨率下工作,它们的输入有两部分,一部分是降采样到当前模块分辨率的输入语义布局图像 L,另一部分是上一级模块的输出特征层 Fi-1 (最初的模块没有这一项输入),其中包含若干个 feature map。输出的 Fi 分辨率在输入 Fi-1 的基础上长宽都为2倍。

单个模块的示意图,L 和 Fi-1 为模块输入;语义布局图像 L 需要降采样,来自上一个模块的 Fi-1 需要升采样。

每个模块都由输入、中间、输出三个特征层组成,其中在输入层直接翻倍分辨率,并且没有使用升倍卷积,因为那样会带来特征的瑕疵。除了最后一个模块要输出最终结果外,每个模块的每个层后都跟着一个 3x3 卷积层、正则化层和LReLU非线性层。

对于论文中测试的输出分辨率为 1024 x 2048 的模型,一共用到了9个分辨率增倍模块。在每个模块的特征层中包含 feature map 数目的选择上,第一个到第五个模块为1024,第六到第七为512,第八个为128,最后一个为32。

训练损失和训练过程

“从语义布局图像生成照片级图像”其实是一个约束不完全的问题,同一个布局图像对应的足够真实的照片级图像可以有许多种。所以即便在训练时,作者们也是把布局对象对应的照片称为“参考图像”而已。

损失函数设计

对于约束不完全的训练问题,作者们希望找到一个最适合的损失函数。若直接对训练输出和参考图像做像素对像素的对比,会对足够真实的内容也造成很大的惩罚,比如生成的车颜色不同的时候就会有很大惩罚,但这其实是不必要的。所以作者们选择了内容表征的方法,或者说是感知损失、特征匹配的方法,跟视觉网络中的特征匹配激活对应,这样就与参考图像的低级特征保持了足够的距离。

具体的做法上作者们另辟蹊径,借助一个 VGG-19 图像感知模型,提取它识别的图像特征中高低不同的某几层作为计算训练损失的依据,从而同时涵盖了图像特征中边缘、颜色等低级细粒度特征和物体、类别等高级总体布局特征,从而构建了全面、强力的损失函数。

生成多样化的图像

作者们认为,既然“从语义布局图像生成照片级图像”本身就会带来多种结果,所以他们应当让模型也生成多种不同的结果。他们首先尝试了让网络生成多张不同的图像然后从中选出最好的一张;然后最终更换为了一个更强大的损失函数,它起到的作用类似于在所有生成图像中分别选择每个语义类别对应的图像中最真实的那部分, 然后把它们全部拼在一起,从而让最终的输出图像得到了非常高的真实度。下图即为加入多样性损失之后,让模型从同一个输入生成的9张不同图像。

效果测试

作者们把所提的CRN网络与在同样的测试条件下与其它网络做了对比,包括 GANs(修改了鉴别器加入了语意分割损失)、全分辨率网络(中间层也是全分辨率,与 CRN 相同损失函数)、自动编解码器、只使用低级图像空间损失的CRN、以及 图到图转换GAN(论文中以Isola et al.指代)。

另一组对比

图中可以看到,基于 Cityscapes 和 NYU 两个数据集的测试中,论文中提出的 CRN 都取得了非常好的观感,与其它的相比,简直就像是真实的照片;所用到的训练样本数目也仅仅分别为 3000 张和 1200张而已。

作者们也通过 Amazon MTurk 众包平台平台进行了量化对比测试:每次给被试者提供两张图像,一张来自 CRN,一张来自其它网络,看看他们有多高的比例认为 CRN 的图像更真实。

结果非常有说服力,只有采用了相同的损失函数的全分辨率网络取得了与 CRN 接近的成绩。这首先说明了作者们选择的损失函数效果非常好,准确地训练出了网络构建重要特征的能力;而另一方面因为全分辨率网络的中间层特征太多,导致足够 CRN 训练 1024x2048 分辨率的显存只够全分辨率网络训练 256x512,这也体现了级联优化模块结构的优点。CRN 同时在分辨率和真实度上取胜。

泛化能力

我们可以看到,对于高质量的语义布局输入,CRN表现出了很高的水平。那么模型的泛化能力如何呢?在与论文作者陈启峰博士取得联系并表达了我们的疑问后,陈启峰博士介绍了两项模型泛化的结果。

粗粒度语义布局输入

可以看到,对于粗粒度的语义布局图像输入,模型也维持了相当的表现,并没有因此造成严重的细节损失;物体结构的完整和清晰程度有所下降的。

从GTA5游戏生成图像

作者们的另一个想法是把这项技术用来给游戏生成真实的画面,成为一种新的渲染逼真游戏画面的方式。他们尝试的游戏是 GTA5,用 Cityscapes 数据集训练模型以后,从 GTA5 抓取语义布局作为模型输入,得到的结果同样充实、逼真,单独看画面根本想不到和 GTA5 有任何联系。陈启峰博士表示,“语义布局图很容易在游戏里抓取,这对未来游戏或电影画面生产可能会有深刻影响”。

总结

作者们也剪辑了一个视频,集中展示了生成的画面效果。

这篇论文用精彩的方法生成了高分辨率、高真实度的图像,其中衡量真实度和提高生成图像丰富性的方法有很高的借鉴价值。所提的方法很好地完成了“从语义布局图像生成照片级图像”的任务,而且具有一定的泛化能力。我们期待论文中的技术在未来的研究中进一步得到发扬光大。

本文作者:杨晓凡

本文转自雷锋网禁止二次转载,原文链接

如此逼真的高清图像居然是端到端网络生成的?GANs 自叹不如 | ICCV 2017相关推荐

  1. python4k高清图片_第一次接触,尝试用python抓取国外4k高清图像数据,真方便

    计划了很久,终于还是利用在家的几个月时间,开始学习python编程. 作为一个学霸,我更愿意在实践中学习,实践出来的效果给我更多的信心和乐趣,于是,我花了大约一个月的时间,看了一本Python入门的相 ...

  2. Pyechart导出高清图像

    Pyechart交互图导出高清图像,so easy~~~ ^ _ ^ 1.安装pyecharts_snapshot(导出高清图像) 官网:https://pypi.org/project/pyecha ...

  3. 电气领域-输电线路巡检高清图像数据

    电气领域输电线路巡检高清图像数据集(共158张,可图像扩充用于目标检测学习,含json格式目标检测标签) 下载地址:输电线路巡检高清图像数据集

  4. Python爬虫——按照关键词爬取视觉中国高清图像

    当前对版权保护日益严格,因此在此说明爬取的图像仅做研究和个人使用,禁止用作商用目的. 该爬虫方法可应用到其它允许爬虫的网址 查看网页源代码寻找高清图像链接 以关键词明星为例,搜索后的网址为 https ...

  5. NVIDIA新作解读:用GAN生成前所未有的高清图像(附PyTorch复现) | PaperDaily #15

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  6. 阿里发布千亿参数规模AI模型,可设计30多种物品高清图像

    2021-03-02 14:20:52 3月2日,阿里巴巴与清华大学联合发布业界最大的中文多模态预训练AI模型M6,该模型参数规模超千亿,同时具备文本.图像的理解和生成能力,图像设计效率超越人类,可应 ...

  7. 问题解决29:微信获取高清图像

    现在获取的地址都是: http://thirdwx.qlogo.cn/mmopen/vi_32/r8sNAAcPhT4Ktr0Umv2mt2byZ018lVc2iaJ94TENbvFgLGO32qCr ...

  8. NIPS 2018 | 中科院自动化所两篇入选论文:高清真实图像生成领域及GAN研究在人脸识别领域的进展...

    [论文一]自动化所在高清真实图像生成领域获得新突破 IntroVAE: Introspective Variational Autoencoders for Photographic Image Sy ...

  9. PPT科研绘图:将PPT绘制的图像保存为高清图片

    目录 step1: 改变PPT的导出分辨率设置 step2: 打开PPT,设置"图片大小和质量" step3: 将PPT页面导出为图像 step4:图片裁剪 在论文写作中需要用到高 ...

  10. 杜克大学提出 AI 算法,拯救渣画质马赛克秒变高清

    来源:HyperAI超神经 本文约1900字,建议阅读7+分钟 高清无码不是梦. 场景描述:将"马赛克"像素级别的大头照转换成高清照片,是一种怎样的体验?杜克大学提出的 AI 算法 ...

最新文章

  1. win10配置java环境变量,解决javac不是内部或外部命令等问题
  2. 一步一步教你写带图片注释的淡入淡出插件(三)
  3. 大型网站系统架构系列:负载均衡详解(一)
  4. web前端数组塌陷的解决办法
  5. c语言error和,C语言ERROR精选.doc
  6. 程序员界大杯具:蜗居中的小贝是搞C++ 的 !
  7. android录音相关
  8. 重构-使代码更简洁优美:实际经验之谈(提供一技巧,让你省掉N多代码)
  9. 在MAC环境下之以太坊(ethereum)开发环境安装
  10. 数学建模计算机部分知识,数学建模计算机知识的应用
  11. python导入包总是失败
  12. php 模板 {{}},PHP模板技术
  13. lamp架构部署 httpd编译、mysql二进制、php编译 网页访问效果
  14. C++之单例(singleton)模式
  15. mysql leader/followers_Leader/Followers 模式
  16. 如何免费使用jrebel 和eclipse 项目配合完成热部署功能
  17. 成年人改名字要哪些步骤和手续?
  18. 电脑卡顿反应慢怎么办?这几招教给你!
  19. win10照片查看器_解决“Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足……”...
  20. 移动机器人传感器——GNSS

热门文章

  1. win10远程桌面配置
  2. 考勤系统之计算工作小时数
  3. RobotFramework自动化2-自定义关键字
  4. div居中和table居中,jQuery获取下拉列表值
  5. Struts标签 bean:write用法
  6. Spring使用java代码配置Web.xml进行访问service
  7. 手动解除浏览器跨域限制
  8. 学习 WebService 第三步:一个简单的实例(SoapUI测试REST项目)
  9. Tomcat中server.xml配置及Context的配置说明
  10. luogu P2765 魔术球问题 (最小路径覆盖)