用缩放CNN消除反卷积带来的棋盘伪影

2018 年 10 月 30 日 论智
来源:distill
编译:Bing

当我们仔细观察神经网络生成的图像时,会经常看到棋盘样式的瑕疵。在一些特殊场景下这种现象更明显,尤其最近的模型。

更重要的是,这种棋盘伪影在颜色越鲜艳的区域越明显,这是为什么呢?难道神经网络不喜欢明亮的颜色吗?其实,造成这些伪影的原因很简单,不过想解决也很简单。

反卷积与重叠

当我们用神经网络生成图像时,通常会从低分辨率、高水平的描述中对其进行创造。网络可以表现粗略的图像并填充其中的细节。

为了做到这一点,我们需要将低分辨率的图像转换成高分辨率图像,这一过程通过反卷积操作进行。简单地说,反卷积图层可以让模型使用小图中的每个点来“绘制”一个更大的正方形。

但是,反卷积会很容易生成“不均匀的重叠”,使得某些区域比其他地方有更多抽象的结果。尤其是当核的尺寸(输出窗口的大小)不能被步长(顶部各点之间的距离)整除时,反卷积就会有不均匀的重叠。虽然理论上,网络可以通过权重避免这一现象,但实际上,神经网络想要完全消除这种现象是非常困难的。

重叠图案同样是二维的。两个轴上不均匀的重叠相乘,就能创造出不同程度的棋盘状伪影。

事实上,这种不均匀的重叠在两个维度上更明显,因为两个图案相乘,不均匀性是原来的平方。例如,在一维中,一个步长为2,尺寸为3的反卷积的输出是输入的两倍,但是在二维中就变成了四倍。

现在,神经网络在创造图像时通常使用多层的反卷积,经过迭代从低分辨率中创建更大尺寸的图像。虽然这些堆栈的反卷积可以消除伪影,但它们通常是混合的,会在多个尺度上产生棋盘伪影。

这些伪影在输出特殊颜色时会更加显眼,由于神经网络图层通常存在偏差(一种添加到输出中经过学习的值),很容易就输出平均色。如果一种颜色越偏离平均色,反卷积的作用就越大。

重叠和学习

理论上来说,我们的模型可以学习仔细写入不均匀重叠位置,从而让输出达到平衡。

但是要达到平衡有些难度,尤其是有多个通道的时候。想要避免伪影,就要严格限制可能用到的过滤器,牺牲模型部分性能。在实际中,神经网络要经过很长的学习才能完全避免这些伪影。

事实上,不仅仅是有着不均匀重叠的模型不会学习避免这种情况,那些有着均匀重叠的模型会经常学习核,也会造成相似的伪影。虽然对于不平均重叠来说这不是默认的情况,但对平均重叠卷积来说是很容易造成伪影的。

对过滤器来说,完全避免伪影仍然是非常重要的限制,实际上,伪影仍然会出现在这些模型中,虽然并不明显。

造成这一情况的可能有多种因素。例如,在生成对抗网络的情况下,一个关键要素可能是判别器和他的梯度,但是问题的主要还是反卷积。在最好的情况下,反卷积非常脆弱,因为它们很容易就表现出人工伪影,即使尺寸很小。最坏情况下,伪影的生成是反卷积的默认行为。

所以,还有其他上采样方法能避免伪影的出现吗?

更好的采样方法

为了避免这些瑕疵,我们想用另一种方法对反卷积进行规范。和反卷积不同,这种上采样方法不会将伪影的生成变为默认行为,理想情况下,它会进一步对抗这些伪影。

有一种方法可以确保你使用的核尺寸可以被步长整除,避免重叠。和“次像素卷积”相同,这种技术是最近提出的,在超分辨率图像上产生了巨大成功。但是,虽然这一方法有用,反卷积仍然会很容易地生成伪影。

另一种方法是将上采样分离后在更高分辨率的卷积上计算特征。例如,你可能会对图像尺寸进行改变,然后建立一个卷积层。这似乎是自然的做法,类似的方法在超分辨率图像上效果也很好。

反卷积和各种对卷积调整尺寸的方法都是线性操作,可以用矩阵解释,这也有助于我们了解它们之间的不同。

调整卷积层的尺寸可以用TensorFlow上的tf.image,resize_images( )实现,想得到最佳结果,在用tf.nn.conv2d( )进行卷积之前先使用tf.pad( )来避免边界上出现伪影。

图像生成结果

经过研究我们发现,用最近邻尺寸调整和一个卷积能在大部分语境下得出较好的结果。其中表现较好的是GAN,简单的对反卷积层进行调整,就能生成不同程度的伪影:

实际上,伪影的不同可以在训练之前就看到。如果我们看一张生成器输出的图像,初始权重是随机的,就能看到伪影。这说明伪影与生成图片的方法有关,与对抗训练无关。

另一种能够解释伪影并不是GAN独有的现象的原因是,我们将其放在另一种模型中时,调整卷积尺寸的上采样,仍然能发现这一现象。

结语

虽然用反卷积可以生成图像,但它也会导致伪影的出现。使用其他自然的替代方法可以消除这些棋盘伪影。同时,我们还提出了可以提高图像生成质量的神经网络方法,我们希望能帮助到多领域的研究者们。

地址:distill.pub/2016/deconv-checkerboard/

登录查看更多
19

相关内容

在数学(特别是功能分析)中,卷积是对两个函数(f和g)的数学运算,产生三个函数,表示第一个函数的形状如何被另一个函数修改。 卷积一词既指结果函数,又指计算结果的过程。 它定义为两个函数的乘积在一个函数反转和移位后的积分。 并针对所有shift值评估积分,从而生成卷积函数。
【ICLR 2019】双曲注意力网络,Hyperbolic  Attention Network
专知会员服务
82+阅读 · 2020年6月21日
【CMU】深度学习模型中集成优化、约束和控制,33页ppt
专知会员服务
44+阅读 · 2020年5月23日
自回归模型:PixelCNN
专知会员服务
25+阅读 · 2020年3月21日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
37+阅读 · 2020年2月21日
基于深度学习的超分辨率图像技术一览
极市平台
17+阅读 · 2019年8月24日
卷积神经网络四种卷积类型
炼数成金订阅号
18+阅读 · 2019年4月16日
DeOldify:用GAN为黑白照片重新着色
论智
33+阅读 · 2018年11月2日
特征金字塔网络FPN的直觉与架构
论智
11+阅读 · 2018年8月6日
语义分割和转置卷积
AI研习社
10+阅读 · 2018年6月22日
如何利用深度学习识别千万张图片?
InfoQ
4+阅读 · 2017年12月30日
深度学习中的「卷积层」如何深入理解?
深度学习世界
6+阅读 · 2017年11月30日
【选介】基于全卷积网络的迭代非盲反卷积
机器学习研究会
7+阅读 · 2017年9月12日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
Physical Primitive Decomposition
Arxiv
4+阅读 · 2018年9月13日
Arxiv
4+阅读 · 2018年4月17日
Arxiv
28+阅读 · 2018年4月6日
Arxiv
12+阅读 · 2018年1月12日
VIP会员
相关资讯
基于深度学习的超分辨率图像技术一览
极市平台
17+阅读 · 2019年8月24日
卷积神经网络四种卷积类型
炼数成金订阅号
18+阅读 · 2019年4月16日
DeOldify:用GAN为黑白照片重新着色
论智
33+阅读 · 2018年11月2日
特征金字塔网络FPN的直觉与架构
论智
11+阅读 · 2018年8月6日
语义分割和转置卷积
AI研习社
10+阅读 · 2018年6月22日
如何利用深度学习识别千万张图片?
InfoQ
4+阅读 · 2017年12月30日
深度学习中的「卷积层」如何深入理解?
深度学习世界
6+阅读 · 2017年11月30日
【选介】基于全卷积网络的迭代非盲反卷积
机器学习研究会
7+阅读 · 2017年9月12日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
相关论文
Top
微信扫码咨询专知VIP会员