目录

  • 举例1
  • 举例2
  • 解决方法

举例1

  • 当我们仔细观察由神经网络生成的图像时,我们经常会看到一种奇怪的棋盘图案。在某些情况下,它比其他情况更明显,但最近的大部分模型都表现出这种行为。如下图:
  • 造成棋盘效应的原因是转置卷积的「不均匀重叠」(uneven overlap)。这种重叠会造成图像中某个部位的颜色比其他部位更深。
    在下图中,顶部这层是输入层,底部这层则是操作转置卷积后的输出层。在转置卷积过程中,小的这层映射到大的那层。

    在案例(a)中,其卷积步长为 1,过滤器大小为 2。正红线所标出的,输入图像上的第一个像素映射为输出图像上的第一个和第二个像素。绿线标出的则是输入图像上的第二个像素映射为输出图像上的第二个和第三个像素。这样的话,输出图像上的第二个像素就收到了输入图像上的第一个和第二个像素的双重信息,而整个卷积过程中,输出图像中间部分的像素都从输入图像中接收到了同样多的信息,这样就导致了卷积核重叠的区域。而在案例(b)中,当过滤器的大小增加到 3 时,这个接收到最多信息的中间部分缩小了。但是这样的话问题不大,因为重叠部分依旧是均匀的。在输出图像中间部分的像素从输入图像中接收到同样多的信息。
  • 现在针对下面的案例,我们将卷积步长改为 2。在案例(a)中,过滤器的大小为 2,输出图像上的所有像素从输入图像中接收到同样多的信息,它们都从输入图像中接收到一个像素的信息,这里就不存在转置卷带来的重叠区域。

    而在案例(b)中,当我们将过滤器大小增至 4 时,均匀的重叠区域缩小了,但是研究者依旧可以将输出图像的中间部分用作有效的输出,其中每个像素从输入图像中接收到的信息是同样多的。
    然而,在案例(c)和(d)中,当过滤器大小变成 3 或 5 时,情况就变得非常有趣了。在这两个案例中,输出图像上的每个像素与其毗邻的像素所接收到的信息量都不相同。研究者在输出图像上无法找到一个连续并均匀的重叠区域。

当过滤器大小无法被卷积步长整除时,转置卷积就会出现「不均匀重叠」。这种「不均匀重叠」会造成图像中某个部位的颜色比其他部位更深,因而会带来「棋盘效应」。实际上,不均匀重叠区域会在二维上更加极端。因为二维上的两个模式会相乘,因而最终的不均匀性是原来的平方。

举例2

  • (1)卷积过程中只能用到一个像素(只有一个像素值不为0)

    (2)卷积过程中能用到两个像素(只有两个像素值不为0)

    (3)卷积过程中能用到四个像素(有四个像素值不为0)

    因为插入的值为0,使得卷积的input feature map本身就是棋盘状,所以得到的大分辨率feature map也会产生棋盘格
  • 反卷积产生的棋盘格,在stride和卷积核size是整数倍的时候能够有所缓解,但是依然不能完全消除
  • 为什么会有所缓解呢?
    因为二者整除关系使得卷积核每次滑动能用到的非零像素的个数是一样的(或者中间区域向两边逐渐减少(而不是随着滑动反复变化产生棋盘格形状))
    如:stride = 2, kernel size = 2

解决方法

  • 从上述两个例子中我们应该可以理解棋盘效应,但是单纯用整除的方法其实不能解决棋盘问题,只能使得颜色轻重不同的元素聚在一起,不会穿插出现,却不能使得颜色都一致。
  • 现在普遍使用双线性插值填充元素,而不是用0元素,然后再进行卷积。

转置卷积中的棋盘效应相关推荐

  1. 一文搞懂转置卷积(反卷积)

    ↑ 点击蓝字 关注极市平台 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/158933003 极市导读 转置卷积在一些文献中也被称为反卷积,人们如果希望网络学习到上 ...

  2. PyTorch 入坑八:卷积与转置卷积

    卷积 操作 略 输入输出尺寸变化 略 PyTorch实现 nn.Conv2d(in_channels,out_channels,kernel_size,stride=1.padding=0,dilat ...

  3. 彩色星球图片生成4:转置卷积+插值缩放+卷积收缩(pytorch版)

    彩色星球图片生成4:转置卷积层+插值缩放+卷积收缩(pytorch版) 1. 改进方面 1.1 优化器与优化步长 1.2 交叉熵损失函数 1.3 Patch判别器 1.4 输入分辨率 1.5 转置卷积 ...

  4. 棋盘效应(Checkerboard Artifacts)

    定义:棋盘效应是由于反卷积的"不均匀重叠"(Uneven overlap)的结果.使图像中某个部位的颜色比其他部位更深: 具体原因:在反卷积操作时,如果卷积核(Kernel)大小不 ...

  5. 深度学习中常见卷积(普通卷积、1×1卷积、转置卷积、可分离卷积、膨胀(空洞)卷积、3D卷积)

      总是在网络上看到各种名词的卷积,但是有搞不懂是什么含义,于是结合网上查阅的资料,总结一下.目前比较常用的卷积主要有常规的卷积.1×1卷积.转置卷积.可分离卷积.膨胀卷积.3D卷积.   以下是一些 ...

  6. tensorflow中转置卷积运算例子

    import tensorflow as tf import numpy as np import tensorflow as keras from tensorflow.keras import l ...

  7. 一文读懂 12种卷积方法(含1x1卷积、转置卷积和深度可分离卷积等)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 我们都知道卷积的重要性,但你知道深度学习领域的卷积究竟是什么,又有 ...

  8. 【机器学习】详解 转置卷积 (Transpose Convolution)

    目录 一.转置卷积的背景 二.转置卷积的应用 三.转置卷积的区别 四.转置卷积的推导 五.转置卷积的输出 5.1 stride = 1 5.2 stride > 1 ☆ 六.小结 一.转置卷积的 ...

  9. [十三]深度学习Pytorch-卷积层(1D/2D/3D卷积、卷积nn.Conv2d、转置卷积nn.ConvTranspose)

    0. 往期内容 [一]深度学习Pytorch-张量定义与张量创建 [二]深度学习Pytorch-张量的操作:拼接.切分.索引和变换 [三]深度学习Pytorch-张量数学运算 [四]深度学习Pytor ...

最新文章

  1. spring aop切面中获取代理bean的名字以及bean
  2. python3.5怎么安装pip-为python 3.5安装pip
  3. redhat 6.4 安装ftp
  4. 论“性能需求分析”系列专题(一)之 性能需求剖析
  5. 用什么技术实现前台页面设计_装饰+装配式,用什么样的方式去实现室内的装配工程施工技术?...
  6. linux io测试陈旭,陈旭方案论证及器件选择.doc
  7. 针对新手的Java EE7和Maven项目-第3部分-定义ejb服务和jpa实体模块
  8. 尚未提交线上版本_ABRSM 线上演奏考试报名指引(目前考试仅限英国 amp; 部分国家及地区)...
  9. Mac OS X 程序员利器 – Homebrew安装与使用
  10. 使用计算机教学的意义,信息技术在教学中的作用
  11. 解决U盘安装Win10报错:No bootbale devices found.
  12. Linux tty远程退出,screen 如果程序没结束就退出远程管理终端
  13. wordpress如何压缩HTML代码
  14. 【特效】UE4 Niagara 制作爆炸特效
  15. 解决局域网文件共享“****无法复制,指定的网络名不可用”
  16. 如何在PowerPoint中添加幻灯片编号
  17. CQHTTP 以HTTP形式制作你的QQ机器人
  18. python之if语句not in与in
  19. u盘坏了数据可以恢复吗?实用小方法
  20. 遥感影像识别-成像合成

热门文章

  1. UE4 利用Mixamo自动绑骨并导入虚幻4
  2. 计算机管理员账户默认密码,win10默认管理员密码,win10管理员初始密码
  3. U-Boot 之三 详解使用 eclipse + J-Link 进行编译及在线调试
  4. 网络互联及Internet
  5. IIR 数字滤波器三种结构形式的MATLAB实现
  6. 2018年阅读书物列表
  7. echarts做了一个气泡图
  8. win8 java download failed_VC2017无法安装 系统win8.1 错误代码0x80240017
  9. linux nano编译器_Nano 编辑器可以做些什么?
  10. YUV图片查看器以及测试文件(YUV420)