Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何理解转置卷积(transposed convolution)

如何理解转置卷积(transposed convolution)

作者头像
chaibubble
发布于 2021-02-04 02:33:23
发布于 2021-02-04 02:33:23
1.8K0
举报

简介

转置卷积也被称为反卷积,常被用用于CNN中的上采样操作,比如分割任务,或GAN网络中。反卷积并不是常规卷积的完全逆操作,反卷积也起不到根据输出特征以及对应的卷积核,恢复原始输出的作用,它最多的作用就是有可学习参数的上采样操作,仅此而已。 同时,反卷积操作并没有把正向卷积输出,对应的卷积核拿过来做转置使用,而是多了几个卷积核而已。 此外,即便是把正向卷积输出对应的卷积核拿过做反卷积,它也恢复不出来原来的参数,恢复原来参数这种操作看起来并没有太大意义,因为只是想做上采样而已。 这里与常规卷积的区别主要体现在:

  • 特征图的宽高尺寸变化与常规卷积相反
  • 常规卷积核的转置

所以实际上,反卷积是先按照一定的比例差值 来扩大输入图像的尺寸,再进行正向卷积的过程。

反卷积计算

输入特征图尺寸: hi​=3, wi​=3 卷积核尺寸: hk​=3,wk​=3 步长: s=2 padding:单边p=1 期望输出特征尺寸: ho​=5, wo​=5 上面这些参数能完整的体现一个反卷积的过程,那么下面是具体的过程

输入特征图插值计算

对于一个输入为 hi​=3,wi​=3的特征图,反卷积首先需要对输入进行插值,这就涉及到三个问题:

  • 在哪里补?
  • 补多少?
  • 补什么?

插值一般都是插入0,因为特征图的输入为尺寸为hi​,wi​,那么就有 hi​−1,wi​−1位置可以插入0,每个位置插入0的个数为 s−1个,插值后特征图就变成了:

正向卷积

对新的特征图做正向卷积,正向卷积的实际步长不是2,而是1,之前设置的步长是体现在插值上,反卷积的卷积步长总是为1。 此外,同样需要对输入特征做padding,两边各padding1。 那么按照常规的卷积公式:

得到了想要的输出。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
转置卷积的应用
矩阵的转置在信息处理中起到了重要的作用。在计算机科学领域,矩阵常用于表示图像、音频和视频等多媒体数据。当我们需要对这些数据进行处理时,常常需要进行矩阵转置操作。例如,在图像处理中,我们往往需要将图像矩阵进行转置来实现旋转、镜像等效果。在音频处理中,矩阵转置可以用于音频信号的变换和滤波等操作。因此,矩阵的转置在信息处理中具有重要的现实意义 知阵的转置在数据分析中也非常常见。在统计学和机器学习领域,短阵常用于表示样本数据和特征向量。通过对短阵进行转置,我们可以改变数据的排列方式,使得不同的变量或属性可以更好地进行比较和分析。例如,在多元统计分析中,矩阵的转置可以用于求解特征值和特征向量,进而得到数据的主成分和相关性。此外,在数据挖掘和预测分析中,短阵的转置也可以用于特征选择和模型建立等关键步骤。因此,短阵的转置在数据分析中具有重要的现实意义。 矩阵的转置在计算机图形学中也有看广泛的应用。在三维图形的表示和变换中,短阵常用于描述物体的位置、旋转和缩放等变换。通过对矩阵进行转置,我们可以方便地实现不同坐标系之间的转换和变换。例如,在计算机动画中,矩阵的转置可以用于实现物体的运动和变形效果。
zhangjiqun
2024/12/14
2670
转置卷积的应用
转置卷积详解
  前面文章对卷积做了讲解,感觉既然重新整理,就将系列概念整体做个梳理,也算是将自己知道的所有东西拿来献丑把。   转置卷积(Transposed Convolution)是后来的叫法,一开始大家都是称逆卷积/反卷积(Deconvolution),这个概念是在图像分割任务中被提出来的,图像分割需要逐像素的操作,对每一个像素做一个分割,将其归类到不同的物体当中。   这个任务大家很自然的想要使用卷积神经网络来完成,那就得先使用卷积神经网络提取特征,但是卷积神经网络中的两大主要构件,卷积层和下采样层会使得图像的尺寸不断缩小。这个就与逐像素的分类不符,因为逐像素分割的话是需要输出和输入大小是一致的。   针对这个问题,有人提出了先使用卷积核下采样层逐层的提取特征,然后通过上采样再将特征图逐渐的恢复到原图的尺寸。而这个上采样一开始就是通过反卷积来实现的。如果说卷积核下采样的过程特征图是变小的,那么上采样之后特征图应该变大。   我们应该熟悉卷积的输出尺寸公式 o u t = ( F − K + 2 P ) / s + 1 out=(F-K+2P)/s+1 out=(F−K+2P)/s+1,其中F表示输入特征图的尺寸,K表示卷积核的尺寸,P表示padding,S表示卷积的步长。我们都通过这个公式来计算卷积的输出特征图尺寸。举例来说明,一个4×4的输入特征图,卷积核为3×3,如果不使用paddng,步长为1,则带入计算 o u t = ( 4 − 3 ) / 1 + 1 out=(4-3)/1+1 out=(4−3)/1+1为2。   我们已经在im2col算法的介绍中讲解了卷积的实现,实际上这个步骤是通过两个矩阵的乘法来完成的,我们不妨记为 y = C x y=Cx y=Cx,如果要上采样,我们希望给输出特征图乘一个参数矩阵,然后把尺寸还原回去,根据数学知识,我们给特征图矩阵 y y y左乘一个{C^T},就能得到 C T y = C T C x C^Ty=C^TCx CTy=CTCx, C C C的列数等于 x x x的行数, C T C C^TC CTC的行数和列数都等于x的行数,乘完之后,得到的结果与 x x x形状相同。这就是转置卷积名字的来源。有一些工作确实是这样实现的。   我们也能很自然的得出结论,我们不需要给输出特征图左乘 C T C^T CT,显然只要和这个矩阵形状相同,输出的结果就和原特征图尺寸相同,而且这个操作同样可以使用卷积来实现,那我们只要保证形状一致,然后参数我们可以自己训练,这样尺寸的问题解决了,而且特征的对应也有了,是可以训练的,一举两得。 im2col讲解的内容,卷积是 ( C o u t , C i n ∗ K h ∗ K w ) (C_{out},C_{in}*K_h*K_w) (Cout​,Cin​∗Kh​∗Kw​)的卷积核乘 ( C i n ∗ K h ∗ K w , H N ∗ W N ) (C_{in}*K_h*K_w,H_N*W_N) (Cin​∗Kh​∗Kw​,HN​∗WN​)的特征图,得到 ( C o u t , H N ∗ W N ) (C_{out},H_N*W_N) (Cout​,HN​∗WN​)的结果。现在对卷积核做一个转置 ( C i n ∗ K h ∗ K w , C o u t ) (C_{in}*K_h*K_w,C_{out}) (Cin​∗Kh​∗Kw​,Cout​)乘 ( C o u t , H N ∗ W N ) (C_{out},H_N*W_N) (Cout​,HN​∗WN​)得到一个 ( C i n ∗ K h ∗ K w , H N ∗ W N ) (C_{in}*K_h*K_w,H_N*W_N) (Cin​∗Kh​∗Kw​,HN​∗WN​)的特征图。   除了以上内容这里还有一点其他需要补充的东西,比如在caffe中除了im2col函数之外,还有一个函数是col2im,也就是im2col的逆运算。所以对于上面的结果caffe是通过col2im来转换成特征图的。但是col2im函数对于im2col只是形状上的逆函数,事实上,如果对于一个特征图先执行im2col再执行col2im得到的结果和原来是不相等的。   而在tensorflow和pytorch中,这一点是有差异的,两者是基于特征图膨胀实现的转置卷积操作,两者是是通过填充来进行特征图膨胀的,之后可能还会有一个crop操作。之所以需要填充,是因为想要直接通过卷积操作来实现转置卷积,干脆填充一些值,这样卷积出来的特征图尺寸自然就更大。   但是两者从运算上来讲都无法对原卷积进行复原,只是进行了形状复原而已。   到了最后就可以讨论形状的计算了,转置卷积是卷积的形状逆操作,所以形状计算就是原来计算方式的逆函数。 o u t = ( F − K + 2 P ) / s + 1 out
全栈程序员站长
2022/06/24
8930
转置卷积详解
深度学习中的反卷积(Transposed Convolution)
反卷积(Transposed Convolution)是一种图像上采样(UpSample)的方法,在DCGAN中用它来将随机采样的值转换为一张完整的图像。
YoungTimes
2022/04/28
2.2K0
深度学习中的反卷积(Transposed Convolution)
一文搞懂反卷积,转置卷积
本文翻译自《Up-sampling with Transposed Convolution》,这篇文章对转置卷积和反卷积有着很好的解释,这里将其翻译为中文,以飨国人。如有谬误,请联系指正。转载请注明出处。
全栈程序员站长
2022/06/24
9350
一文搞懂反卷积,转置卷积
pytorch卷积层基础七问
普通卷积的操作分成3个维度,在空间维度(H和W维度)是共享卷积核权重,滑窗相乘求和(融合空间信息),在输入通道维度是每一个通道使用不同的卷积核参数并对输入通道维度求和(融合通道信息),在输出通道维度操作方式是并行堆叠(多种),有多少个卷积核就有多少个输出通道。
lyhue1991
2023/02/23
6100
pytorch卷积层基础七问
深入理解神经网络中的反(转置)卷积
本文主要是把之前在知乎上的回答[1,2]重新整理了一下并且加了一些新的内容。对于像素级的任务,在decoder部分都会用一些常规操作去逐步恢复feature map的空间大小,而常用的模块有反卷积[3,5]、上采样+卷积和subpixel[4]操作等等。
BBuf
2020/04/15
1.8K0
深入理解神经网络中的反(转置)卷积
如何理解扩张卷积(dilated convolution)
扩张卷积(Dilated Convolution)也被称为空洞卷积或者膨胀卷积,是在标准的卷积核中注入空洞,以此来增加模型的感受野(reception field)。相比原来的正常卷积操作,扩张卷积多了一个参数: dilation rate,指的是卷积核的点的间隔数量,比如常规的卷积操作dilatation rate为1。它的论文是:《MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS》
chaibubble
2019/08/29
2.9K0
如何理解扩张卷积(dilated convolution)
轻松理解转置卷积(transposed convolution)或反卷积(deconvolution)「建议收藏」
在CNN中,转置卷积是一种上采样(up-sampling)的常见方法.如果你不清楚转置卷积是怎么操作的,那么就来读读这篇文章吧.
全栈程序员站长
2022/06/24
2.4K0
轻松理解转置卷积(transposed convolution)或反卷积(deconvolution)「建议收藏」
卷积,特征图,转置卷积和空洞卷积的计算细节
最近在做姿态估计的项目,在定制和实现卷积网络的时候发现自己对里面的一些计算细节还不够了解,所以整理了该文章,内容如下:
用户1332428
2018/07/26
2.2K0
卷积,特征图,转置卷积和空洞卷积的计算细节
不同卷积操作详解
我们知道CNN在深度学习中占有举足轻重的地位,而CNN的核心就在于卷积操作。本文提供了对不同卷积操作的感性理解,这其中包含有卷积层(Convolutional),池化层(Pooling)和转置卷积层(Transposed convolutional)里面的输入形状(Input shape),核形状(Kernel shape),零填充(Zero padding),滑动步长(Stride)和输出形状(Output shape)之间的关系。 另外,本文还解释了卷积层和转置卷积层之间的关系。
全栈程序员站长
2022/09/01
5120
不同卷积操作详解
Pytorch 转置卷积
卷积不会增大输入的高和宽,通常要么不变,要么减半。而转置卷积则可以用来增大输入高宽。
全栈程序员站长
2022/06/24
2.3K0
Pytorch 转置卷积
fcn全卷积神经网络搭建_区域卷积神经网络
全卷积网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之作。FCN将传统CNN后面的全连接层换成了卷积层,这样网络的输出将是热力图而非类别;同时,为解决卷积和池化导致图像尺寸的变小,使用上采样方式对图像尺寸进行恢复。
全栈程序员站长
2022/11/09
9480
fcn全卷积神经网络搭建_区域卷积神经网络
计算机视觉中的细节问题(六)
batch字面上是批量的意思,在深度学习中指的是计算一次cost需要的输入数据个数。
狼啸风云
2022/06/08
7790
计算机视觉中的细节问题(六)
『深度概念』极简图解卷积与反卷积操作
正向卷积操作:步长 strides = 1, 填充 padding = 0,输出形状为 2x2,该过程如下图所示:
小宋是呢
2020/07/22
1.2K0
全卷积网络fcn详解_全卷积神经网络原理
FCN是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法, 让网络做像素级别的预测直接得出label map, 下面我们来看看FCN是如何做到像素级别的分类的
全栈程序员站长
2022/11/02
2.4K0
全卷积网络fcn详解_全卷积神经网络原理
相关推荐
转置卷积的应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档