反卷积的棋盘格效应

本文译自来自谷歌大脑的AUGUSTUS ODENA等人的文章: Deconvolution and Checkerboard Artifacts[1], 虽然是16年的博客了, 但是其对解释反卷积的棋盘效应已经如何规避都给出了非常好和到位的意见. 下面让我们开始~

前言

当我们分析由神经网络生成的图片的时候, 常常会发觉有一种奇怪的人造物 (artifacts)棋盘格效应 (checkerboard pattern) 出现. 在某些任务中这种现象表现的尤为明显, 而且最近 (2016年啊, 不是现在…) 很多的模型都暴露出了这个问题.
在这里插入图片描述

奇怪的是, 棋盘格效应趋向于出现在图像中最显著的地方 (颜色最强烈) (most prominent in images with strong colors) 的地方. 这是怎么回事呢? 是不是神经网络讨厌亮色? 实际上, 导致这些棋盘效应出现的实际原因非常简单,就如同如何避免它们的方法一样简单。


反卷积 & 重叠区域 (Deconvolution & Overlap)

当我们使用神经网络来生成图片时, 我们常常根据低分辨率, 高层次描述来构建这些图片. 这使得神经网络可以描述图像的粗略结构, 然后再填充细节.

为了实现上面描述的方式, 我们需要找到一些方式来使得低分辨率的图片变为高分辨率的图片. 通常, 这关键的一步是由反卷积 (deconvolution) 运算来实现. 概略的说, 反卷积层可以使得模型利用小图片中的每个像素点来在更高分辨率的图像中"绘制"出一个正方形.

反卷积这个运算符或者说层结构, 有很多各种各样的解释和不同的名字, 包括转置卷积 (transposed convolution), 本文中为了简单起见, 统一称之为反卷积.

虽然反卷积很6, 不过它很容易遇到一种叫做 “uneven overlap”(不均匀重叠) 的现象[6]. 具体来说, 当kernel_size 无法被 stride整除时, 反卷积就会出现这种不均匀重叠的现象. 原则上,神经网络可以通过仔细学习权值来避免这种情况,但在实践中,神经网络很难完全避免这种情况.

在这里插入图片描述

上面这个图在原文[1]中是可以交互的, 有兴趣的朋友可以去尝试一下~. 图中上面的那行是指输入到反卷积的数据, 下面的那行则是经过反卷积后输出的结果.

这种重叠模式在2维结构中同样存在. 对2维结构(以图片威力), 两个轴(高, 宽)上的不均匀的重叠叠加在一起,就形成了一个不同大小的典型棋盘状图案, 如下图的深色部分所示。
在这里插入图片描述

实际上, 这种不均匀的重叠部分在2维结构中的效应比1维结构更加明显! 因为两张模式的相互耦合, <color=red>不均匀性 (unevenness) 得到进一步的强化了. 举个例子来说, 在1维的结构中, 步长为2, kernel size为3的反卷积的有些输出是2个输入的重叠(深灰色部分), 而在2维结构中, 有些输出甚至是4个输入的重叠(黑色部分).

在2016年, 典型的图像生成网络通常会使用不少的反卷积层, 以迭代的方式从一系列低分辨率的描述中构建更大的图像. 这种堆叠的反卷积结构经常混合起来, 创建各种尺寸和维度的人造物和棋盘效应.

在这里插入图片描述
步长为1的反卷积 — 我们常常会发现这种层被放置在成功的图像生成模型的最后的层中  — 对于抑制人造物效应是相当有效的. 他们可以有效的移除频率伪影 (artifacts of frequencies),并减少其他小于其大小的频率伪影。然而,正如在许多最近的模型中所看到的,这种棋盘人造物仍然可以泄漏出去, 被我们观察到。

除了在前言部分展示的高频棋盘格效应的人造物外, 早期的反卷积还可能会引起低通滤波人造物.

这种人造物在输出非常规颜色的时候会变为尤为显著. 由于神经网络层结构通常会使用偏置单元 (bias=True), 通常的输出是平均的颜色. 而像亮红色这种不是平均颜色的特殊颜色, 需要更多的反卷积来进行处理的过程也就越多.


重叠区域 & 学习 (Overlap & Learning)

不均匀重叠 (uneven overlap) 的角度考虑问题,虽然这是一个有用的框架,但有点过于简单。无论是好是坏,我们的模型都要为它们的反卷积学习权重。

理论上讲, 模型应该可以在仔细决定写入的不均匀重叠位置 (carefully write to unevenly overlapping positions), 以便于能够均衡输出结果.

在这里插入图片描述
这是一个技巧性的平衡方式, 特别是当有多个通道进行交互的情况下. 避免 人造物(artifacts) 极大地限制了可能的滤波器 (filters),牺牲了模型的容量. 从实际工程的角度而言, 神经网络很难完全避免包括棋盘格效应在内的这些模式。

实际上: 无论是存在不均匀重叠的模型还是具有均匀重叠的模型都无法完全避免棋盘格效应!

在这里插入图片描述

完全避免这种效应是反卷积的滤波器面临的一个很严重的挑战. 而且实际上, 这种效应仍存在在有着反卷积的模型当中, 几遍它们看起来没有那么明显 (如[4], 其使用了stride = 2, kernel_size = 4的反卷积为例进行了说明).

这里可能有很多因素在起作用。例如,在生成对抗网络 (GANs) 中,一个可能的问题是判别器 D 及其梯度导致的。但问题的很大一部分似乎是反卷积。在最好的情况下,反卷积仍是脆弱的,这是因为它非常容易表示人造的, 并不实际存在的功能,即使在仔细选择kernel_size, stride等参数大小时也是如此。在最坏的情况下,人造物或者说棋盘效应是反卷积的默认行为。

那么, 问题来了, "有没有一种能够有效的抑制棋盘格效应的上采样方法呢?"


更好的上采样方法 (Better Upsampling)

为了避免人造物, 作者使用了最近邻上采样来代替反卷积.

  • 一种方式是要确保你使用的kernel size 可以被 stride 整除, 这就避免了overlap的问题. 这个操作等效于 “sub-pixel convolution” [7] 这个技术在图像超分辨率上取得了不错的效果. 然而, 这个方式治标不治本~

  • 更一种方式是two-stage: 1) 用一般的upsample方法(最近邻, 双线性插值等)进行resize, 对特征图进行放大 2) 在第1)步得到的放大的特征图基础上进行卷积. 这看起来是更自然的方法, 而且这种思路在超分辨率任务中表现的非常不错.

在这里插入图片描述
无论是反卷积还是Resize的方式都可以以矩阵的形式来呈现, 这对于发现他们之间的不同很有帮助 (上图的例子是1维卷积). 当反卷积对每个输出窗口都有一个唯一的入口时,resize-convolution就隐含地限制了权重,从而抑制了高频伪影.

本文作者尝试的结果是: 最近邻上采样+卷积 > 双线性上采样+卷积.具体做法如下:

具体代码实现:
Resize-convolution layers can be easily implemented in TensorFlow using tf.image.resize_images(). For best results, use tf.pad() before doing convolution with tf.nn.conv2d() to avoid boundary artifacts.


图像生成结果

作者的经验是最近邻+卷积的效果是最好的.下面是在GAN中将反卷积替换为最近邻上采样+卷积的效果.可以发现,棋盘格这种人造物现象真的没有了~
在这里插入图片描述

实际上,由于反卷积导致人造物的出现在训练之前就可以察觉.如果我们以随机的权重来生成一张图片,我们能够观察到如下现象:

在这里插入图片描述

这显然表明:人造物是由于反卷积产生的, 而非对抗训练这种策略导致的.

参考资料

[1] Unsupervised representation learning with deep convolutional generative adversarial networks
PDF
Radford, A., Metz, L. and Chintala, S., 2015. arXiv preprint arXiv:1511.06434.

[2] Improved techniques for training gans
PDF
Salimans, T., Goodfellow, I., Zaremba, W., Cheung, V., Radford, A. and Chen, X., 2016. Advances in Neural Information Processing Systems, pp. 2226—2234.

[3] Adversarial Feature Learning
PDF
Donahue, J., Krahenbuhl, P. and Darrell, T., 2016. arXiv preprint arXiv:1605.09782.

[4] Adversarially Learned Inference
PDF
Dumoulin, V., Belghazi, I., Poole, B., Lamb, A., Arjovsky, M., Mastropietro, O. and Courville, A., 2016. arXiv preprint arXiv:1606.00704.

[5] Deconvolution and Checkerboard Artifacts

[6] Conditional generative adversarial nets for convolutional face generation
PDF
Gauthier, J., 2014. Class Project for Stanford CS231N: Convolutional Neural Networks for Visual Recognition, Winter semester, Vol 2014.

[7] Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network
PDF
Shi, W., Caballero, J., Huszar, F., Totz, J., Aitken, A.P., Bishop, R., Rueckert, D. and Wang, Z., 2016. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 1874—1883. DOI: 10.1109/cvpr.2016.207

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页