前两篇我们对卷积层的原理和实现做了一些介绍。这一节我们来深入了解两个常用的卷积——转置卷积空洞卷积

传送门:卷积核的基本概况

转置卷积

利用神经网络去生成图片,通察情况下是从低像素、粗糙的图片开始,到高像素的填充过程。这个过程就成为反卷积或者转置卷积。形象点说,反卷积是允许模型使用小图像的点“绘制”到大图像中的一个正方形。

很不幸的是,这个过程会出现“不均匀重叠”现象(uneven overlap),通常称为“棋盘格伪影”:

卷积核的边长不能被步长整除的时候出现的,下面是一个例子:

这里,下面是原始像素,上面是卷积后的像素,步长为1,卷积核为2。进行反卷积时,原图片某些位置就会被重叠。因为图片像素一般是二维的,所以有些位置重叠就会加倍,造成大小不同的棋盘式图案。

为了避免这些伪影,首先要保证卷积核大小能被步长整除,其次,最好使用步长为1的卷积核。除此之外,还有一种上采样方法可以很好避免棋盘效应——最近邻插值双线性插值。

最近邻插值,英文是nearest-neighbor interpolation,双线性插值,英文是bilinear interpolation,它们原理比较简单,利用pytorch展示一下:

from torch.nn import UpsamplingBilinear2d
from torch.nn import UpsamplingNearest2d
input = torch.arange(1, 5, dtype=torch.float32).view(1, 1, 2, 2)
m1 = UpsamplingNearest2d(scale_factor=2)
m2 = UpsamplingBilinear2d(scale_factor=2)m1(input)
m2(input)

上面是把2*2卷积结果反卷积为4*4规模的,利用参数scale_factor进行缩放,也可以指定size,我们看看结果:

可以看到,最近邻插值逻辑是:

双线性插值则为,只取四个顶点作为新矩阵的值,其他值按照行列进行插值,比如第一行,插值逻辑为:

首先插值首行末行、首列末列,其他按照新插值结果再插值补充即可。

以上功能可以通过Upsample直接实现:

from torch.nn import Upsample

并且还实现了其他插值逻辑,根据参数mode和align_corners实现:

比如实现上面的双线性插值:

m3 = Upsample(scale_factor=2,mode='bilinear',align_corners=True)

如果参数align_corners设置为False,则插值逻辑是间隔的分母为行的规模:

tensorflow也可以实现相同功能,这里不再展开了。

空洞卷积

在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图上每个像素点在原始图像上映射的区域大小。当层感受野的公式如下:

举个例子。下图是7*7的原始图片,第一层卷积层的卷积核大小3,步长2,第二层卷积层的卷积核大小为2,步长1.

原始图的每个像素就是一个感受野;图片经过第一层,输出特征图为3*3,图中深橘色的格子来自于蓝色区域,感受野为3;第二层输出特征图为2*2,绿色单元格来自于橘色区域,因此感受野为5.按照公式计算如下:

洞卷积从直观上是让卷积核膨胀的结果,下图是空洞率l=2的卷积效果:

那么空洞卷积的感受野是多少呢,很显然与普通卷积的区别在于有效卷积核大小改变了,而有效卷积核大小计算公式为:

与上面感受野公式结合起来,得到空洞卷积的感受野公式:

举个例子。

下面是三个卷积核,卷积核均为k=3,步长均为s=1,空洞卷积率分别为d=1,2,4

现在默认输入初始化感受野为1,将它们依次从左至右进行卷积,根据公式计算,每一层的感受野为:

可以看到,随着空洞率的增加,感受野会呈指数增长。但这些操作的参数数量本质上是相同的,因为卷积核大小一样,所以空洞卷积的优点是不需要增加参数运算成本就能覆盖更大的感受野。

空洞卷积针对语义分割的三个问题提出的,这里先不展开了,以后介绍到在进一步剖析,今天先理解到此。

参考链接:

https://distill.pub/2016/deconv-checkerboard/

理解转置卷积与空洞卷积相关推荐

  1. 卷积、转置卷积、可分离卷积、分组卷积、空洞卷积的理解

    文章目录 卷积.转置卷积.可分离卷积.分组卷积.空洞卷积的理解 转置卷积 深度可分离卷积 分组卷积 空洞卷积 卷积.转置卷积.可分离卷积.分组卷积.空洞卷积的理解 这里主要是汇总一些本人觉得比较好的文 ...

  2. 【扩张卷积or空洞卷积】如何理解Dilated Convolutions(空洞卷积)

    文章来源:https://blog.csdn.net/alxe_made/article/details/88594550 1. 扩张卷积的提出 Multi-Scale Context Aggrega ...

  3. 卷积,反卷积,空洞卷积

    卷积神经网络中卷积核的作用在于特征的抽取,越是大的卷积核尺寸就意味着更大的感受野,当然随之而来的是更多的参数.早在1998年,LeCun大神发布的LetNet-5模型中就会出,图像空域内具有局部相关性 ...

  4. 膨胀卷积(空洞卷积 dilated convolution)

    学习的B站大佬的视频大部分图片来自于课中,文章结尾有大佬视频链接,以及阅读<深度学习之pytorch物体检测实战>,刚开始学习可能有些错误,希望大佬指正 1.空洞卷积了解 空洞卷积最初是为 ...

  5. 卷积、空洞卷积、反卷积与空洞反卷积的计算公式(全)

    前言: 经常使用的卷积有卷积.空洞卷积.反卷积与空洞反卷积的,下面总结了他们的计算公式. 一.卷积计算公式 卷积神将网络的计算公式为: N=(W-F+2P)/S+1 其中 N:输出大小 W:输入大小 ...

  6. 卷积,特征图,转置卷积和空洞卷积的计算细节

    六月 北京 | 高性能计算之GPU CUDA培训 6月22-24日三天密集式学习  快速带你入门阅读全文> 正文共2029个字,13张图,预计阅读时间13分钟. 最近在做姿态估计的项目,在定制和 ...

  7. DW卷积、PW卷积、转置卷积、膨胀卷积(空洞卷积)、可变形卷积一次看个够

    Depthwise Separable Convolution也就是深度可分离卷积,应该见过吧,它其实是由depthwise卷积和pointwise卷积组合而成,同样可以用来提取图像特征,但是它的计算 ...

  8. 关于深度可分离卷积、空洞卷积、分组卷积的理解笔记

    深度可分离卷积(Depthwise separable convolution) 深度可分离卷积由逐通道卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolu ...

  9. 深度可分离卷积、空洞卷积、反卷积、感受野计算、上采样

    文章目录 输出特征图尺寸的计算 Depthwise卷积和Pointwise运算成本比较低 空洞卷积 反卷积 上采样 输出特征图尺寸的计算 Depthwise卷积和Pointwise运算成本比较低 如何 ...

  10. 语义分割|学习记录(4)膨胀卷积(空洞卷积 )

    文章目录 前言 一.膨胀卷积 二.gridding effect 三.使用多个膨胀卷积的时候,怎样设置膨胀系数? 四.膨胀系数设置建议 五.是否应用HDC设计准则的分割效果对比 六.总结 参考资料 前 ...

最新文章

  1. python处理流程-在python异步协程中处理流程分析(一)
  2. 公网开放的plc设备——一种新型的后门
  3. 介绍几个移动web app开发框架
  4. 表现层登录的处理逻辑及代码实现
  5. DWZ与百度编辑器的IE8以下上传图片兼容问题
  6. 程序开发,面试恐惧症_如何克服恐惧并停止讨厌的工作面试
  7. 不喜欢在北京的感觉,删掉几篇北京生活的随笔。以后能忘掉这个地方就好了。...
  8. P2525 Uim的情人节礼物·其之壱
  9. Python工具箱系列(十一)
  10. 2022 star*CTF-Writeup
  11. Office安装成功之后,.ppt的文档图标显示不正常,怎么解决?
  12. Windows10系统 无法更换锁屏图片一直转圈圈(含替换系统默认锁屏壁纸教程)异常处理
  13. 网络传输中的那些编码之-chr和hex(base16)
  14. 一文教你如何挑选深度学习GPU
  15. Java微信公众号开发之微信公众平台接入开发者
  16. java 编译器原理_作业5:Java编译原理
  17. 虚拟化技术 - 概览 [一]
  18. Python基础之Linux基础入门(Ubuntu)——其他命令
  19. 燕十八PHP高性能架构班教学视频教程
  20. 【网络】计算机网络重点知识总结

热门文章

  1. 软件开发模式之敏捷开发(scrum)
  2. 酒柜设计也可以很“特色”
  3. 分享收集软件教程的微信小程序
  4. mesh和wifi中继的区别_mesh和无线中继的区别
  5. Teclast X80h安装linux,安装android-x86教程。(没法再贴吧发表,只有百度网盘在线阅读...
  6. 一文搞懂DTFT,DFT,FFT
  7. 用python写一个地铁线路图_python制作一线城市地铁运行动态图
  8. layui修改头像功能
  9. python--弦图
  10. 【学习笔记】福州大学网络课程 网络空间安全概论(1,4)