IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 转置卷积和膨胀卷积详细讲解 -> 正文阅读

[人工智能]转置卷积和膨胀卷积详细讲解

目录

转置卷积(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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:04:19  更:2022-06-29 19:06:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:41:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码