【干货】消除 Artifact,用缩放卷积神经网络生成高清图像(TensorFlow 代码)

【新智元导读】非常仔细地观察神经网络生成的图像时,经常会看到一些奇怪的棋盘格子状的伪影(棋盘效应,checkboard artifacts)。本文作者讨论了棋盘效应出现的原因以及反卷积难以避免棋盘效应的原因,最后作者提出了一种避免棋盘效应的替代方法(缩放卷积),并提供了在TensorFlow上实现的代码。

当我们非常仔细地观察神经网络生成的图像时,经常会看到一些奇怪的棋盘格子状的伪影(artifact)。这种现象有些情况下比其他情况更明显,但最近的模型很多都会出现这种现象。

不可思议的是,这些棋盘图案在颜色深的图像中最突出。这是怎么回事?神经网络讨厌明亮的颜色吗?这些伪影出现的实际原因其实非常简单。

反卷积&重叠

当我们用神经网络生成图像时,我们经常从低分辨率、高阶描述中构建图像。这会让网络先描绘粗糙的图像,再填充细节。

因此,我们需要能让图像从较低分辨率达到较高分辨率的方法。我们通常使用反卷积操作。大致来说,反卷积层允许模型使用小图像中的每个点来“绘制”更大的图像中的方块。

【译注:反卷积有许多解释和不同的术语,包括“转置卷积”(transposed convolution);为了简洁起见,本文使用“反卷积”(deconvolution),有关反卷积的更多讨论参见:Dumoulin & Visin, 2016 and Shi, et al., 2016a.】

但是,反卷积很容易“不均匀重叠”(uneven overlap),使图像中某个部位的颜色比其他部位更深(Gauthier, 2015)。尤其是当核(kernel)的大小(输出窗口的大小)不能被步长(stride)整除时,反卷积就会不均匀重叠。虽然原则上网络可以仔细地学习权重来避免这种情况,但在实践中神经网络很难完全避免不均匀重叠。

(注:在原文网站上可以调节图示的大小(size)和步长(stride)更直观地理解,下同)

重叠图案也在二维中形成。两个轴上的不均匀重叠相乘,产生不同亮度的棋盘状图案。

事实上,不均匀重叠往往在二维上更极端!因为两个模式相乘,所以它的不均匀性是原来的平方。例如,在一个维度中,一个步长为2,大小为3的反卷积的输出是其输入的两倍,但在二维中,输出是输入的4倍。

现在,生成图像时,神经网络通常使用多层反卷积,从一系列较低分辨率的描述中迭代建立更大的图像。虽然这些堆栈的反卷积可以消除棋盘效应,但它们经常混合,在更多尺度上产生棋盘效应。

步长为1的反卷积层——通常被认为是成功的模型中的最后一层(eg. Salimans et al., 2016)——在减轻棋盘效应方面非常有效。它们可以消除频率整除其大小的棋盘效应,也可以减少其他频率小于其大小的棋盘效应。但是,棋盘效应仍然会发生,就像最近的模型出现的。

除了我们在上文观察到的高频棋盘状伪影外,早期的反卷积可以产生较低频率的伪影,我们将在后文更详细地探讨。

重叠&学习

不均匀重叠虽然是有效的框架,也可以说它是一种简单化。无论好坏,模型要为它们的反卷积学习权重。

理论上,模型可以学习仔细地写入不均匀重叠的位置,以使输出均匀平衡。

这种平衡行为的实现相当棘手,尤其是当模型有多个交互通道时。避免棋盘效应会显著限制可能的过滤器,牺牲模型容量。在实践中,神经网络很难学习完全避免这些模式。

事实上,不仅具有不均匀重叠的模型不会学习避免这种情况,而且均匀重叠的模型也经常学习会导致类似的棋盘效应的核!虽然对它们来说这不是默认的行为,不像不均匀重叠模型。但均匀重叠反卷积仍然非常容易产生棋盘效应。

最好的情况下,反卷积非常脆弱,因为它非常容易呈现人工创造的功能。最坏的是,产生棋盘效应是反卷积的默认行为。

那么,是否有一种不同的上采样(upsample)方法能更好地阻止棋盘效应?

更好的上采样方法

为了避免棋盘效应,我们想要一个常规反卷积的代替方法。与反卷积不同,这种上采样方法默认不应发生棋盘效应。理想情况下,它会进一步对抗这些棋盘效应。

方法之一是确保反卷积核的大小可以被步长整除,从而避免重叠问题。这等价于最近成功用于图像超分辨率解析的技术“子像素卷积”(sub-pixel convolution) (Shi, et al., 2016b)。但是,尽管这种方法有效,但反卷积仍然容易产生棋盘效应。

另一种方法是将上采样分离为较高分辨率的卷积到计算特征。例如,您可以调整图像大小(使用最近邻居插值或双线性插值),然后进行卷积层。这似乎是一个自然的方法,大致类似的方法在图像超分辨率(例如,Dong,et al。,2015)中工作良好。

另一种方法是从卷积操作中分离出对卷积后更高分辨率的特征图上采样来计算特征。例如,可以先缩放图像(最近邻插值或双线性插值),再卷积。这似乎是自然的方法。

反卷积与缩放卷积(resize-convolution)方法都是线性操作,并可用矩阵去解释。对于每个输出窗口,反卷积操作的输入唯一,缩放卷积会以阻碍高频棋盘效应的方式来隐式地集中权重(weight-tying)。

代码:

在TensorFlow实现缩放卷积可以使用以下代码:tf.image.resize_images()

为了得到最好的结果,在用 tf.nn.conv2d() 做卷积前可以用 tf.pad() 避免边界效应。

图像生成结果

结论

用反卷积的常规方法生成图像(尽管这种方法非常成功 ),仍然存在一些概念上非常简单的问题,使得在生成的图像中出现棋盘效应。使用没有这些问题的替代方法可以消除棋盘效应。

我们提供了一个易用的解决方案,提高了用神经网络生成图像的质量。我们期待看到这种方法会被怎样使用,以及它是否能对音频之类的领域有所帮助,这类领域中的高频伪影是尤其棘手的问题。

【译注:原文标题是Deconvolution and Checkerboard Artifacts,本文中"Checkerboard Artifact "翻译成“棋盘效应”,“Artifact”视情况翻译成“棋盘效应”或“伪影”。】

参考文献:

  • Dong, C., Loy, C.C., He, K. and Tang, X., 2014. Image super-resolution using deep convolutional networks.arXiv preprint arXiv:1501.00092.
  • Dumoulin, V., Belghazi, I., Poole, B., Lamb, A., Arjovsky, M., Mastropietro, O. and Courville, A., 2016.Adversarially Learned Inference. arXiv preprint arXiv:1606.00704.
  • Dumoulin, V. and Visin, F., 2016. A guide to convolution arithmetic for deep learning. arXiv preprint arXiv:1603.07285.
  • Donahue, J., Krähenbühl, P. and Darrell, T., 2016. Adversarial Feature Learning. arXiv preprint arXiv:1605.09782.
  • Gauthier, J., 2015. Conditional generative adversarial networks for convolutional face generation. Technical report.
  • Hénaff, O. J., & Simoncelli, E. P. (2015). Geodesics of learned representations. arXiv preprint arXiv:1511.06394.
  • Johnson, J., Alahi, A. and Fei-Fei, L., 2016. Perceptual losses for real-time style transfer and super-resolution. arXiv preprint arXiv:1603.08155.
  • Mordvintsev, A., Olah, C., & Tyka, M. (2015). Inceptionism: Going deeper into neural networks. Google Research Blog.
  • Mordvintsev, A., 2016. DeepDreaming with TensorFlow. Github.
  • Radford, A., Metz, L. and Chintala, S., 2015. Unsupervised representation learning with deep convolutional generative adversarial networks. arXiv preprint arXiv:1511.06434.
  • Salimans, T., Goodfellow, I., Zaremba, W., Cheung, V., Radford, A. and Chen, X., 2016. Improved techniques for training GANs. arXiv preprint arXiv:1606.03498.
  • Shi, W., Caballero, J., Theis, L., Huszar, F., Aitken, A., Ledig, C. and Wang, Z., 2016. Is the deconvolution layer the same as a convolutional layer?. arXiv preprint arXiv:1609.07009.
  • Shi, W., Caballero, J., Huszár, F., Totz, J., Aitken, A.P., Bishop, R., Rueckert, D. and Wang, Z., 2016. Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 1874-1883).

原文地址:http://distill.pub/2016/deconv-checkerboard/

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2016-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

学界 | Ian Goodfellow发推讲2个机器学习黑魔法,教你如何推导公式

1796
来自专栏人工智能头条

Yoshua Bengio:在能量模型中使用提前推断近似反向传播

1712
来自专栏人工智能头条

搞懂深度学习到底需要哪些数学知识

1462
来自专栏AI研习社

视频 | 如何用 AI 预测股价?

我们能用机器学习准确地预测股价吗? 一种普遍的说法是股价是完全随机和不可预测的——让一只猴子蒙住眼睛在报纸的金融版面用飞镖选出来的投资组合,也能和投资专家精...

3435
来自专栏AI研习社

谷歌发布TensorFlow Lattice:得益于先验知识,提升模型泛化能力

AI研习社消息,近日,谷歌科学家发布TensorFlow Lattice,这是一套预建的TensorFlow Estimators,易于使用,它相当于是Tens...

4399
来自专栏人工智能

集成学习之随机森林通俗理解

scikit-learn官方general example第5个例子中涉及到了随机森林(RandomForest),随机森林是集成学习的一种,因此本文先通俗理解...

32610
来自专栏人工智能

深度学习如何在医学影像分割上大显神通?——分割网络的三个改进思路

一、医学影像分割有助于临床工作 图像分割在影像学诊断中大有用处。自动分割能帮助医生确认病变肿瘤的大小,定量评价治疗前后的效果。除此之外,脏器和病灶的识别和甄别也...

3.3K12
来自专栏新智元

Goodfellow回谷歌后首篇GAN论文:可迁移性对抗样本空间

【新智元导读】昨天 Ian Goodfellow 和他在斯坦福大学以及宾夕法尼亚州立大学的合作者在 arXiv 上传了 Ian Goodfellow 回到谷歌后...

58617
来自专栏AI科技大本营的专栏

神探Sherlock如何用AI破案?教你在Excel中搭建一个人脸识别CNN网络

【导读】人脸识别技术已经有了非常广泛的应用,国内大规模监控系统背后运用的技术就是人脸识别。

1581
来自专栏AI研习社

为什么ResNet和DenseNet可以这么深?一文详解残差块为何有助于解决梯度弥散问题

传统的“提拉米苏”式卷积神经网络模型,都以层叠卷积层的方式提高网络深度,从而提高识别精度。但层叠过多的卷积层会出现一个问题,就是梯度弥散(Vanishing),...

3555

扫码关注云+社区

领取腾讯云代金券