反卷积的棋盘格效应

article/2025/9/19 21:32:34

本文译自来自谷歌大脑的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


http://chatgpt.dhexx.cn/article/rfF5rduR.shtml

相关文章

反卷积神经网络介绍

反卷积是指&#xff1a;通过测量输出和已经输入重构未知输入的过程。在神经网络中&#xff0c;反卷积过程并不具备学习的能力&#xff0c;仅仅是用于可视化一个已经训练好的卷积网络模型&#xff0c;没有学习训练的过程。 下图所示为VGG 16反卷积神经网络的结构&#xff0c;展示…

一文读懂什么是反卷积

反卷积&#xff08;Deconvolution&#xff09;的概念第一次出现是Zeiler在2010年发表的论文Deconvolutional networks中&#xff0c;但是并没有指定反卷积这个名字&#xff0c;反卷积这个术语正式的使用是在其之后的工作中(Adaptive deconvolutional networks for mid and high…

反卷积相关论文理解

关于反卷积原理&#xff0c;小编就不再赘述&#xff0c;在知乎中有详细的解释&#xff0c;很清晰&#xff0c;都是大佬。 链接如下&#xff1a;https://www.zhihu.com/question/43609045/answer/120266511 反卷积相对于卷积在神经网络结构的正向和反向传播中做相反的运算&…

反卷积理解和推导

参考 怎样通俗易懂地解释反卷积&#xff1f; - 知乎&#xff0c;【基础知识学习】卷积与反卷积学习笔记 - 知乎 1.概念 反卷积是一种特殊的正向卷积&#xff0c;先按照一定的比例通过补 0 来扩大输入图像的尺寸&#xff0c;接着旋转卷积核&#xff0c;再进行正向卷积。 图1 反…

生物信息学反卷积论文阅读

文章目录 反卷积的概念反卷积的具体方式反卷积预测RNA序列知识背景公式推导 亚硫酸氢盐测序知识背景公式推导 R包的使用RNA测序数据分析使用亚硫酸氢盐数据进行测序 反卷积的概念 由于许多组织样本不适合分解成单个细胞&#xff0c;因此不能利用单细胞RNA测序技术对它们的单个…

理解反卷积

先看看卷积&#xff0c;数字只是说明位置方便&#xff0c;不是具体数值&#xff0c;这里是valid卷积 &#xff0c;stride1 由CNN基础我们知道 17 这个点是由前面1 2 5 6 和卷积核运算得到的&#xff0c;那么反卷积就是要从17 反推1,2,5,6 &#xff0c;这是一个无穷解问题&#…

反卷积常用方法

反卷积 一个用于分类任务的深度神经网络通过卷积来不断抽象学习&#xff0c;实现分辨率的降低&#xff0c;最后得到一个较小的FeatureMap&#xff0c;即特征图&#xff0c;通常大小为 5 5 5\times5 55或者 7 7 7\times7 77。而图像分割任务需要恢复与原尺寸大小一样的图片&am…

声音反卷积matlab,用MATLAB做反卷积

关键词&#xff1a;反卷积 MATLAB fft 频移 分母中频谱零点 卷积核 % 代码如下&#xff1a; clear all;clc; h [1 1 1 1] % 要求 f [1 -2 3 -2] % 已知 g conv(h,f) % 已知 g h*f 这里卷积结果g知道&#xff0c;f知道&#xff0c;f视作卷积核&#xff0c;反卷积求h …

彻底搞懂CNN中的卷积和反卷积

前言 卷积和反卷积在CNN中经常被用到&#xff0c;想要彻底搞懂并不是那么容易。本文主要分三个部分来讲解卷积和反卷积&#xff0c;分别包括概念、工作过程、代码示例&#xff0c;其中代码实践部分主结合TensorFlow框架来进行实践。给大家介绍一个卷积过程的可视化工具&#x…

卷积与反卷积

1、卷积 上图展示了一个卷积的过程&#xff0c;其中蓝色的图片(4*4)表示的是进行卷积的图片&#xff0c;阴影的图片(3*3)表示的是卷积核&#xff0c;绿色的图片(2*2)表示是进行卷积计算之后的图片。在卷积操作中有几个比较重要的参数&#xff0c;输入图片的尺寸、步长、卷积核的…

反卷积原理

一 介绍 反卷积&#xff0c;可以理解为卷积操作的逆运算。这里千万不要当成反卷积操作可以复原卷积操作的输入值&#xff0c;反卷积并没有那个功能&#xff0c;它仅仅是将卷积变换过程中的步骤反向变换一次而已&#xff0c;通过将卷积核转置&#xff0c;与卷积后的结果再做一遍…

Tensorflow——反卷积

目标——主要用来进行上采样&#xff0c;使图像形状变大 函数&#xff1a;conv2d_transpose(value, filter, output_shape, strides, padding"SAME", data_format"NHWC", nameNone) Arg&#xff1a; value&#xff1a;指需要做反卷积的输入图像&#xff…

机器学习19:反卷积算法

机器学习19:反卷积算法&#xff08;转载和整理&#xff09; 在整理全卷积网络的过程中&#xff0c;被反卷积的概念困扰很久&#xff0c;于是将反卷积算法单独整理为一篇博客&#xff0c;本文主要转载和整理自知乎问题如何通俗易懂地解释反卷积&#xff1f;中的高票答案。 1.反…

卷积和反卷积详解

反卷积&#xff08;deconvolution&#xff09;&#xff0c;也叫转置卷积&#xff0c;分部卷积&#xff08;fractionally-strided convolution&#xff09;&#xff0c;在论文中也叫upconv。 1. Pytorch中2D卷积和反卷积的函数 class torch.nn.Conv2d(in_channels, out_channe…

什么是反卷积(快速理解)

什么是反卷积 参考博客 我们知道输入图像通过卷积神经网络&#xff08;CNN&#xff09;提取特征后&#xff0c;输出的尺寸往往会变小&#xff0c;而又是我们需要将图像恢复到原来的尺寸以便进行进一步的计算&#xff0c;整个扩大图像尺寸&#xff0c;实现图像由小分辨率到大分辨…

反卷积(Transposed Convolution, Fractionally Strided Convolution or Deconvolution)

反卷积&#xff08;Deconvolution&#xff09;的概念第一次出现是Zeiler在2010年发表的论文 Deconvolutional networks 中&#xff0c;但是并没有指定反卷积这个名字&#xff0c;反卷积这个术语正式的使用是在其之后的工作中( Adaptive deconvolutional networks for mid an…

反卷积详解

一.概述 反卷积又称转秩卷积(Transposed Convolution)&#xff0c;上采样(Upsampled )。 其作用举例如下&#xff1a; 1.当我们用神经网络生成图片的时候&#xff0c;经常需要将一些低分辨率的图片转换为高分辨率的图片。 2.在语义分割中&#xff0c;会使用卷积层在编码器中…

反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释

文章目录 反卷积的作用卷积中padding的几个概念No PaddingHalf(Same) PaddingFull Padding 反卷积反卷积中的Padding参数反卷积的stride参数反卷积的output_padding参数 反卷积总结参考资料 反卷积的作用 传统的卷积通常是将大图片卷积成一张小图片&#xff0c;而反卷积就是反…

反卷积(Transposed conv deconv)实现原理(通俗易懂)

什么是卷积 卷积就是把卷积核放在输入上进行滑窗&#xff0c;将当前卷积核覆盖范围内的输入与卷积核相乘&#xff0c;值进行累加&#xff0c;得到当前位置的输出&#xff0c;其本质在于融合多个像素值的信息输出一个像素值&#xff0c;本质上是下采样的&#xff0c;所以输出的…

Mysql的基本使用——Mysql教案(一)

文章目录 Mysql的基本使用1. Mysql的安装2. Mysql基本操作数据库操作表操作SQL操作练习资源课堂练习 查询(SELECT)去重(distinct)别名(AS)限制查询数(limit)排序(ORDER BY)条件查询(WHERE)普通查询多条件的查询语句模糊查询BETWEEN AND 内连接查询(inner join)外连接查询(outer…