雷锋网 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倍。
每个模块都由输入、中间、输出三个特征层组成,其中在输入层直接翻倍分辨率,并且没有使用升倍卷积,因为那样会带来特征的瑕疵。除了最后一个模块要输出最终结果外,每个模块的每个层后都跟着一个 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 有任何联系。陈启峰博士表示,“语义布局图很容易在游戏里抓取,这对未来游戏或电影画面生产可能会有深刻影响”。
作者们也剪辑了一个视频,集中展示了生成的画面效果。
这篇论文用精彩的方法生成了高分辨率、高真实度的图像,其中衡量真实度和提高生成图像丰富性的方法有很高的借鉴价值。所提的方法很好地完成了“从语义布局图像生成照片级图像”的任务,而且具有一定的泛化能力。我们期待论文中的技术在未来的研究中进一步得到发扬光大。
雷锋网 AI 科技评论编译。感谢陈启峰博士对本文的补充!
论文地址:https://arxiv.org/abs/1707.09405v1
陈启峰个人主页:https://web.stanford.edu/~cqf/