目录

转置卷积(Transposed Convolution)

作用

转置卷积的输出

转置卷积过程

转置卷积运算过程

pytorch中转置卷积对应参数

膨胀卷积(空洞卷积,Atrous convolution)

作用

gridding effect问题

膨胀系数设置



转置卷积(Transposed Convolution)

作用

上采样(upsample)

下图左侧为传统的卷积,输入为4x4的特征图,卷积核大小为3x3,padding为0,stride为1,卷积后输出2x2的特征图。

右侧为转置卷积,输入为2x2的特征图,卷积核大小为3x3,padding为0,stride为1,卷积后输出4x4的特征图。

注意:

  • 转置卷积不是卷积的逆运算
  • 转置卷积也是卷积

转置卷积的输出

转置卷积的输出特征图的高度和宽度卷积公式

如下面的转置卷积所示,输入高度和宽度为3,stride为2,padding为1,卷积核尺寸为3x3,所以卷积后输出的特征图尺寸为5x5.


转置卷积过程

转置卷积的步骤:

  • 在输入特征图元素间填充s-1行、列0
  • 在输入特征图四周填充k-p-1行、列0
  • 将卷积核参数上下、左右翻转
  • 做正常卷积运算(填充0,步距1)

输入为2x2的特征图,首先将输入特征图进行0填充得到6x6的特征图,将卷积核进行上下和左右翻转得到转置卷积核,然后进行卷积操作输出4x4的特征图。


转置卷积运算过程

我们都知道普通卷积的计算过程都是以滑动窗口的形式进行卷积计算的,即卷积核在特征图上进行滑动卷积,但是实际中的操作并不是这样的,因为这样的计算效率很低。

实际的卷积计算过程是首先将卷积核转化成一个个等效矩阵,等效矩阵的构建时在卷积核中填充0,构建和输入相同大小的等效矩阵,如下图,将每个等效矩阵和输入特征图相乘再相加,得到输出特征图。

将输入展平成1*16的矩阵

同理将卷积核等效矩阵展成16*4的矩阵

最后将1*16的输入矩阵和16*4的卷积核等效矩阵相乘得到1*4的输出矩阵

上述过程其实就是一个简单的矩阵运算,运算公式为

面对上面卷积运算公式,我们可以思考,卷积的运算是否可逆?即已知O和C是否可以求得I呢?

有的人会觉得可以,在上式的两边同时乘以C的逆矩阵局可以得到I,但是我们要知道,一个矩阵是否可逆的必要条件是这个矩阵是否为方阵,而C并不是一个方阵,所以我们并不能根据C和O来还原I,即卷积的运算是不可逆的。

但是在这里我们可以不要求完全还原成矩阵I,而是还原为和输入矩阵I尺寸相同的矩阵是可以的,将等式两边同时乘以矩阵C的转置矩阵就可以了。

但是此时的P和I并不相同

综上,其实就是转置卷积的运算过程


pytorch中转置卷积对应参数

torch.nn.ConvTranspose2d参数:

  • in_channels (int) - Number of channels in the input image
  • out_channels (int) - Number of channels produced by the convolution
  • kernel_size (int or tuple) - size of the convolving kernel
  • stride (int ortuple, optionaly - Stride of the convolution. Default: 1
  • padding (int or tuple, optional) - dilation * (kernel_size - 1) - padding zero-padding will be added toboth sides of each dimension in the input. Default: 0
  • output_padding (int ortuple, optional) - Additional size added to one side of each dimension in the outputshape.Default: 0
  • groups (int, optional) -Number of blocked connections from input channels to output channels. Default: 1bias(bool, optional) - lf True , adds a learnable bias to the output. Default: True
  • dilation (int or tuple, optional) - Spacing between kernel elements. Default: 1

膨胀卷积(空洞卷积,Atrous convolution)

作用

  • 增大感受野
  • 保持原输入特征图W、H

如图所示为膨胀卷积,膨胀卷积中的间隙为膨胀因子,下图中的膨胀因子为2

gridding effect问题

在如图左侧为将Layer1进行三次膨胀卷积操作,而右侧图为经过r=2的三次膨胀卷积后,Layer4中使用到了Layer1中的哪些像素,方格中的数字表示使用的次数,通过右侧图可知,其中还有好多像素没有被使用到,这就会导致很多细节特征丢失。

如果将三次膨胀卷积的膨胀因子分别设为r=1、r=2和r=3,则Layer4中使用到的Layer1中的像素如图,可以看到Layer1的像素基本都被用到,感受野是相通的都是13x13,但是中间没有出现0次数的像素。

那如果我们使用普通的卷积时,得到7x7的感受野,相比使用膨胀卷积感受野变小,由此也能说明膨胀卷积具有增大感受野的作用。

膨胀系数设置

两个非零元素之间的距离公式

其中r_i表示第i层膨胀系数,最后一层M_n=r_n。

最好是将膨胀系设置成锯齿状,例如[1,2,3,1,2,3],其次公约数不能大于1

转置卷积和膨胀卷积详细讲解相关推荐

  1. 因果卷积,膨胀卷积,混合膨胀卷积

    因果卷积: 常常用于CNN网络来处理序列问题,针对序列问题x1,...xt,和y1,...,yt-1来预测yt. 时间t的状态预测依赖于前t-1个状态,具有因果关系. 如果考虑很久之前的变量x,就会导 ...

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

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

  3. 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积

    介绍 关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional networ ...

  4. 膨胀卷积的缺点_卷积、反卷积与膨胀卷积

    卷积(多---->1 的映射) 本质:在对输入做9--->1的映射关系时,保持了输出相对于input中的位置性关系 对核矩阵做以下变形:卷积核的滑动步骤变成了卷积核矩阵的扩增 卷积的矩阵乘 ...

  5. 卷积神经网络膨胀卷积

    卷积神经网络中的卷积核 卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核,又称滤波器. 卷积核的大小一般 ...

  6. DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Dilated Con ...

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

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

  8. 【CV】膨胀卷积详解以及时间卷积网络TCN论文笔记和源码实现

    这篇博文分为两部分.第一部分详细讲解了TCN模型(Temporal Convolutional Network)中涉及的1D卷积,因果卷积,膨胀卷积中设计的计算,非常值得一看,有醍醐灌顶的作用.第二部 ...

  9. 膨胀卷积(空洞卷积)学习篇

    文章目录 提出背景 感受野 膨胀卷积是什么 膨胀卷积的设计原理 膨胀卷积的优缺点 膨胀卷积的改进 膨胀卷积基于Pytorch的代码实现 总结 原论文链接: 2016ICLR<Multi-Scal ...

最新文章

  1. python3基础知识点_入门Python3基础教程-知识点摘要
  2. 如何处理高并发情况下的DB插入
  3. 【安卓开发 】Android初级开发(八)WebView网页
  4. Leetcode--152. 乘积最大子序列
  5. mysql如何下载msi_2、Windows下MySQL数据库下载与安装详细教程 MSI方式
  6. 数组、链表、哈希……Qt中丰富的容器类
  7. Idea日常使用记录
  8. KlayGE 4.4中渲染的改进(五):OpenGL 4.4和OpenGLES 3
  9. 微型计算机一般只具有定点运算功能对吗,大学计算机基础模拟卷2及答案剖析.doc...
  10. 访问者模式(Visitor)
  11. 如何系统的自学python-如何系统地自学Python
  12. sparkstreaming消费receive
  13. C语言谭浩强第三版例题及课后题汇总
  14. IEEE802.5 令牌环网
  15. c语言随机数猜数游戏
  16. 北京市朝阳区 办理 驾驶证期满换证 自助体检 的流程
  17. TortoiseSVN不会弹出认证(账号密码)或 TortoiseSVN正在启动版本库浏览器
  18. SAP中汇率固定配置和应用分析测试
  19. linux 通过ssh上传文件
  20. 中国的数字化转型 China’s digital transformation

热门文章

  1. 基于微信小程序付费自习室系统(微信小程序毕业设计)
  2. 视觉SLAM开源方案汇总及设备选型建议
  3. 【3D】常见的3D模型格式介绍
  4. NetSuite Account Register报表详解
  5. 关于网络游戏的影响(腾讯游戏)
  6. Android生态系统分裂剖析 开放性系统带来的影响
  7. 场论:关于矢量场梯度=0的证明
  8. C#数据结构:两栈实现队列,两队列实现栈
  9. JGG | EVenn: 3分钟在线轻松绘制5种Venn图和Venn网络
  10. 有关于取证的笔记——包含详细例题解析