-
2021-12-01 19:24:50
1*1卷积
1、不改变图像空间结构
全连接层会破坏图像的空间结构,例如把维度拼接成一个一维数组, 而1* 1卷积层不会破坏图像的空间结构,保留图像局部特征,卷积具有空间位置不变性。
2、输入可以是任意尺寸
全连接层的输入尺寸是固定的,因为全连接层的参数个数取决于图像大小,需要预先设定好,而卷积层的输入尺寸是任意的,因为卷积核的参数个数与图像大小无关。
3、卷积是作用在一个局部的区域,而全连接是对于整个输入而言,那么只要把卷积作用的区域扩大为整个输入,那就变成全连接了。所以我们只需要把卷积核变成跟输入的一个map的大小一样就相当于使得卷积跟全连接层的参数一样多。
4、升降维+信息交互
一张448* 448* 100 的图片在20个卷积核上做1* 1的卷积,那么结果的大小为448* 448* 20。1* 1 卷积的作用是让网络根据需要能够更灵活地控制数据的通道数(即实现不同通道之间的信息交互),通过1* 1卷积,可以将不同分支的feature map通道数调整到需要的大小,也可以升维。
5、引入非线性
卷积层之后经过激活函数,1* 1的卷积在前一层的学习表示上加了非线性激活,提升网络的非线性;
1*1卷积和全连接层的区别
全连接层:是把特征图拆开组成一个一维向量,再乘以一个权重向量,这两个向量中的元素一一对应,所以输出结果是一个值。
1*1卷积:1)卷积本质上也是1个权重,如果特征图大小是1* 1的话,那输出就是一个值,此时与全连接作用一样。但是如果特征图大小不是1* 1,而是w* h的话,那么1* 1的卷积输出就不是一个值而是w* h的一个矩阵。2)减少或增加特征图的维度。3)全连接没办法适应输入尺寸的变化只能固定,1* 1卷积无需固定输出尺寸,卷积是权值共享,所学参数只跟卷积核有关,跟特征图无关。(1* 1不需要输入map固定,但fc需要)4)1* 1加入了非线性激活。参数
全连接层参数计算公式:
权值参数 =输入神经元数*输出节点数
偏置参数b = 全连接层输出结点数更多相关内容 -
1*1卷积
2018-11-08 10:50:11左图是没有应用1*1卷积的情况,而右图是应用了1*1卷积的情况。 输入都是28x28x192大小; 对于左图的参数,卷积核大小以及卷积通道数分别为:包括三种卷积核,分别是1x1x64,3x3x128,5x5x32; 对于右图的参数,...卷积
以下简要的概述一下卷积之后的输出数据的尺寸的求法,至于卷积的具体概念这里不再涉及。
滤波器的超参数
我们约定以下参数:
1. 滤波器(即filter)的数量为 K
2. 滤波器的空间尺寸为 F
3. 步长为 S
4. 零填充数量为 P卷积之后
假设输入数据体的尺寸W1*H1*D1,输出数据体的尺寸是W2*H2*D2,那我们如何求得输出数据体的尺寸呢?在这里基于先前的约定,我们使用公式W2 = (W1-F+2P)/S+1;H2=(H2-F+2P)/S+1 ,D2 = K。我们会发现卷积之后的图像的深度其实是由filter的个数来决定的,而并不取决于原始数据的通道数。
一点注意
在上面求H2、W2的过程中,我们有时得到的W2、H2不是整数。如(W1-F+2P)/S+1 = (10-3+0)/2+1=4.5的结果不是整数,这就是说神经元不能整齐对称地滑过输入数据体。因此,这些超参数的设定就被认为是无效的。
解决的办法有:或者修改零填充(padding)值来让设置合理,或者修改输入数据体尺寸来让设置合理,或者用其他什么措施。贴出一张卷积过程的动态图帮助理解
1*1的卷积
1*1的卷积并不会改变图像的分辨率,而会改变图像的深度。
过滤器的深度
首先我们应当明确的是局部连接的深度(即filter的第3个维度)总是与输入数据一致。具体来说,在CNN中,一般我们处理的数据都是M*N*D这样形式的图像。其中M、N代表图像的长和宽,而D代表图像的深度。当我们给定输入数据的时候,例如输入是28*28*192,此时我们指定filter的大小F =3,P=0,S = 1,K=96。那么根据先前的叙述可以求得卷积之后的W2=(28-3)/1+1 =26;H2=(28-3)/1+1=26,D2 = 96 最终得到的输出数据为26*26*96。仔细追究一下,那到底filter是怎样形式的?这个一开始我是比较疑惑的,但是现在明白了。我们把上面的例子更具体的展开,其实这个卷积核具体的形式是3*3*192,而不是单单的3*3,虽然在描述卷积核时从不提卷积核的深度192。而这个192就是输入数据的深度,也就是印证了上面一开始说的【局部连接的深度总是与输入数据一致】。因为这句约定俗成的话,所以在说卷积核的时候都不提卷积核的深度。
1*1卷积的作用
为什么需要1*1的卷积呢?
单通道输入
简单地看,如果我们的输入是一个单通道的图像,而卷积核就是1*1*1的(最后那个1一般不给出),那么1*1卷积的过程就如下图所示。在数学意义上讲就是对输入进行了比例缩放。因为1*1卷积核只有一个参数,这个核在输入上滑动,就相当于给输入数据乘以一个系数。
多通道输入
当输入是多通道的时候,可以实现跨通道的交互和信息整合。具有线性修正特性,实现多个feature map的线性组合,这个线性组合的权重由1*1 的卷积核内的元素决定,也可以实现feature map在通道个数上的变化,也就是实现经过1*1卷积之后的输出数据的通道数的变化。我们都知道【卷积之后的输出数据的通道数是由卷积核的个数决定的】,例如有16个卷积核,那么不用管输入数据如何,经过卷积之后的输出数据就是16通道的。正是由于可以控制输出数据的通道数的变化,使得1*1的卷积具有降维或者升维功能。
形象地用下面的图片来形象化上面的叙述,我们假设有1个6通道的输入,为了简单其间,每一个通道都是W*H大小的图像,我并没有画出一个立方体(应该是W*H*6),但这并不影响理解。
我们可以想象在立方体的深度方向的某一个具体位置(x,y)穿插而过得到的就是一个1*1*6大小的纤维。将该纤维同1*1卷积核卷积,就会得到一个数。用数学式表示就是
sum = 权重1*通道1的(x,y)+权重2*通道2的(x,y)+……+权重6*通道6的(x,y)。点积求和使得全部6个通道的对应位置的信息(像素值)被整合在一起。注意该卷积核的结果只有一个通道。这就是1*1卷积在多通道输入中所作的事情。倘若我们有多个1*1的卷积核,那么我们的输出的通道数也就是1*1卷积核的数目一致。举个例子
举个例子,比如某次卷积之后的结果是W*H*6的特征,现在需要用1*1的卷积核将其降维成W*H*5,即6个通道变成5个通道。
那么我们应该怎样做?无需多言,自然能根据输出是5通道来决定使用5个1*1的卷积核即可。通过一次卷积操作,W*H*6将被1*1的卷积核变为W*H*1,这样的话,使用5个1*1的卷积核,显然可以卷积出5个W*H*1,再做通道的串接操作,就实现了W*H*5。实际应用
我们可以通过一个例子来直观地感受使用1*1卷积的好处。以googlenet[3]中的inception模块为例,来说明1x1的卷积如何来减少模型参数。
左图是没有应用1*1卷积的情况,而右图是应用了1*1卷积的情况。
输入都是28x28x192大小;
对于左图的参数,卷积核大小以及卷积通道数分别为:包括三种卷积核,分别是1x1x64,3x3x128,5x5x32;
对于右图的参数,我们在3x3,5x5 convolution前新加入的1x1的卷积核分别为96和16通道的,在max pooling后加入的1x1卷积为32通道。
那么左图的参数为:(1x1x192x64)+(3x3x192x128)+(5x5x192x32) =387072
右图的参数个数为:(1x1x192x64)+(1x1x192x96)+(1x1x192x16)+(3x3x96x128)+(5x5x16x32)+(1x1x192x32)=163328 -
1*1卷积详解
2020-06-30 17:16:33卷积核的大小一般有1x1,3x3和5x5的尺寸。卷积核的个数就对应输出的通道数,这里需要说明的是对于输入的每个通道,输出每个通道上的卷积核是不一样的。比如输入是28x28x192(WxDxK,K代表通道数),然后在3x3的卷积核,...卷积核作用:
可以看作对某个局部的加权求和;它是对应局部感知,它的原理是在观察某个物体时我们既不能观察每个像素也不能一次观察整体,而是先从局部开始认识,这就对应了卷积。卷积核的大小一般有1x1,3x3和5x5的尺寸。卷积核的个数就对应输出的通道数,这里需要说明的是对于输入的每个通道,输出每个通道上的卷积核是不一样的。比如输入是28x28x192(WxDxK,K代表通道数),然后在3x3的卷积核,卷积通道数为128,那么卷积的参数有3x3x192x128,其中前两个对应的每个卷积里面的参数,后两个对应的卷积总的个数。
1*1卷积的主要作用有以下几点:
1、降维( dimension reductionality )。比如,一张500 * 500且厚度depth为100 的图片在20个filter上做11的卷积,那么结果的大小为500500*20。
2、加入非线性。卷积层之后经过激励层,11的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力.33的卷积核考虑了局部信息,1*1没有考虑局部信息
depth解释
-
CNN中1*1卷积核与Pytorch实现
2021-05-14 16:33:41CNN中1*1卷积核的意义信道压缩 信道压缩 一个32* 6* 6的图片,32通道,6维矩阵图片 当用32* 1* 1的的卷积核提取特征时,得到的是一个6*6的图片 卷积运算中输出的通道数与卷积核的数量有关,但是计算过程中,图片的...CNN中1*1卷积核的意义
信道压缩
- 一个32* 6* 6的图片,32通道,6维矩阵图片
- 当用32* 1* 1的的卷积核提取特征时,得到的是一个6*6的图片
- 卷积运算中输出的通道数与卷积核的数量有关,但是计算过程中,图片的通道数要和卷积核的通道数相同
此时,通过1维卷积核将原来图片在通道维度上进行压缩,即将通道信息进行融合
1* 1也可以理解为一个全连接网络,分别作用所有通道上面
总结:
总结一下,1x1的卷积核可以进行降维或者升维,也就是通过控制卷积核(通道数)实现,这个可以帮助减少模型参数,也可以对不同特征进行尺寸的归一化;同时也可以用于不同channel上特征的融合。一个trick就是在降维的时候考虑结合传统的降维方式,如PCA的特征向量实现,这样效果也可以得到保证。
import torch a = torch.randn(1, 2, 32, 32) conv3x1 = torch.nn.Conv2d(2, 2, (3, 1), padding=(1, 0)) # 3x1卷积 conv1x3 = torch.nn.Conv2d(2, 2, (1, 3), padding=(0, 1)) # 1x3卷积 out = conv3x1(a) print(out.shape) out = conv1x3(out) print(out.shape)
-
什么是1*1卷积?1*1的卷积核和全连接层有什么异同?
2020-01-27 15:39:36而1*1卷积,我们知道卷积核实质上就是权重,1*1的卷积核那就是表明只由一个权重组成,如果特征图尺寸也是1*1的话,那输出就是一个值,此时与全连接完全一样。但是如果特征图尺寸不是1*1,而是w*h的话,那么1*1的卷积... -
1*1卷积核的作用
2020-08-13 13:40:55如果当前层和下一层都只有一个通道那么1×1卷积核确实没什么作用,但是如果它们分别为m层和n层的话,1×1卷积核可以起到一个跨通道聚合的作用,所以进一步可以起到降维(或者升维)的作用,起到减少参数的目的。... -
为什么要使用3×3卷积?& 1*1卷积的作用是什么?& 对ResNet结构的一些理解
2022-01-14 21:43:31& 1*1卷积的作用是什么?& 对ResNet结构的一些理解 在感受野相同的情况下,三个3×3卷积比一个7×7卷积所需参数要少很多,这无疑减少了模型的复杂度,加快了训练速度。 神经网络将像素空间的信息转化为语义信息。 ... -
深入理解1*1卷积作用
2020-12-27 12:05:47在实际操作中, 对于1*1的卷积操作, 我们可以通过改变输出的out channel 来使得输出维度的变化,也就是降维和升维, 例如 112 * 112 * 3 经过一个一维卷积 当我们的out channel 设置为32时候, 输出为112 * 112 * ... -
卷积神经网络中1*1卷积的作用
2021-11-23 19:32:49卷积核又称filter,过滤器。 每个卷积核有长宽深3个维度; 在某个卷积层中,可以有多个卷积核;下一层需要多少个feature map...1*1卷积是大小为1*1的滤波器做卷积操作,不同于2*2、3*3等filter,没有考虑在前一特... -
『Transformer』为什么1*1卷积可以替代全连接层?
2022-04-02 17:15:32在Transformer中,作者在论文中提了一句,可以用1*1卷积代替全连接,那么为什么1*1卷积操作可以等价于全连接操作呢?本文就是为了解决这一疑惑而诞生的。 -
3*3卷积+1*3卷积+3*1卷积=白给的精度提升
2019-12-02 08:45:27ICCV2019: 通过非对称卷积块增强CNN的核骨架 下面要介绍的论文发于ICCV2019,题为「ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric ConvolutionBlocks」,axriv地址为:http... -
详细学习1*1卷积核
2018-10-08 18:02:501*1卷积是大小为1*1的滤波器做卷积操作,不同于2*2、3*3等filter,没有考虑在前一特征层局部信息之间的关系。我们从1*1卷积的两个主要使用来理解其原理和作用。 卷积核:可以看作对某个局部的加权求和,它是对应... -
1*1卷积的理解与总结
2020-09-14 10:22:441*1卷积的主要作用 1、降维(减少参数)。比如,一张500×500且深度为100的图片在20个filter上做1×1的卷积,那么结果的大小为500×500×20; 2、升维(用最少的参数拓宽网络channal); 3、加入非线性。卷积层之后... -
深度学习中卷积计算以及1*1卷积核作用
2019-03-07 12:25:57深度学习中1*1卷积核作用 看图理解! 以上是用一个773的数组作为输入,然后神经元中卷积核大小为333,数量为2,输出的特征图大小为332 卷积:一组固定的权重和不同窗口内数据做内积 卷积的计算—> ... -
1*1卷积核的作用和原理
2020-09-08 12:09:571*1的卷积作用: 1. 常常用于降维(降通道数),其实也可以用于升高维度。 2.增加了跨通道的信息交互 3.增加了非线性。这个存疑 原理: 从图的下部可以看出,使用1*1*5的卷积,在4*4*5的特征图上遍历整个宽... -
【深度学习】1*1卷积
2019-01-29 00:16:10卷积核的作用在于特征的...1*1卷积的作用? / 如何理解卷积神经网络中的1*1卷积? 1x1 卷积可以压缩信道数(channel--厚度)即减少特征的维度。池化可以改变图片的宽和高。 1x1卷积给神经网络增加非线性,从而减少... -
卷积神经网络中的1*1卷积
2018-08-27 17:08:57我们都知道,卷积核的作用在于特征的抽取,越是大的卷积核...但是在学习卷积神经网络的过程中,我们常常会看到一股清流般的存在—1*1的卷积! 比如在残差网络的直连里: 残差网络的Bootleneck残差模块里: ... -
Conv1*1卷积,为什么能降维
2020-10-22 15:41:53就是H和W不变,而是channel这个维度上降维,如图对于channel与原三维矩阵相同的1*1卷积核,直接channel就给干到了1维,而原来是32维。 对应的,如果1*1卷积核的第三维度设置为31,那么就两个维度的了,也就是6*6*2... -
什么是1*1卷积
2018-10-22 09:23:391*1卷积的主要作用有以下几点:1、降维( dimension reductionality )。比如,一张500 * 500且厚度depth为100 的图片在20个filter上做1*1的卷积,那么结果的大小为500*500*20。2、加入非线性。卷积层之后经过激励层... -
关于一维和二维卷积,以及1*1卷积核的理解
2021-09-15 10:42:39最基本的卷积操作是把卷积核在输入中移动(扫一遍),获得输出。 维度: 一维卷积和二维卷积的维度是指,输入数据的维度,比如一维的只有长度(如文本,第一个单词第二个单词),二维的有长宽(如图像,横纵分布... -
1*1卷积核学习
2019-07-31 15:08:28最近在看Google的Inception、Resnet以及一些最新的CNN网络时发现其中常常用到1*1的...但是如果对于28*28*16中多通道图片,使用6个1*1卷积核之后可以将其压缩成28*28*6,也就是图片高和宽不变,改变了通道数。 好处1... -
如何理解卷积神经网络中的1*1卷积
2017-07-10 14:44:10我们都知道,卷积核的作用在于特征的抽取,越是大的卷积核...但是在学习卷积神经网络的过程中,我们常常会看到一股清流般的存在—1*1的卷积!比如在残差网络的直连里: 残差网络的Bootleneck残差模块里: 比如在Go -
【深度学习】1*1卷积核
2018-06-07 13:22:461×1的卷积核 卷积核在CNN中经常被用到,一般常见的是3×3的或者5×5的,见下图,这里不多赘述 ...1×1卷积核最初是在Network in Network这个网络结构中提出来的。它用了比AlexNet更少的参数,达... -
卷积神经网络CNN 中用1*1 卷积过滤器的作用及优势
2018-08-09 23:33:221*1卷积过滤器 和 正常的过滤器一样,唯一不同的是它的大小是1*1,没有考虑在前一层局部信息之间的关系。最早大神颜水成论文《Network In Network》 中使用1*1卷积 ,目的是想加深加宽网络结构 。后来谷歌GoogleNet... -
CNN多通道卷积与1*1卷积
2019-04-24 19:27:011*1卷积的特殊情况: 输入图片: 卷积核:个 输出图片: inputpicture:Rlayer,Glayer,Blayer purplelayer=α1×Rlayer+α2×Glayer+α3×Blayer yellowlayer=β1×Rlayer+β2×Glayer+β3×Blayer ... -
1*1卷积代替全连接层的含义
2020-04-10 22:12:38在某几篇博客(https://blog.csdn.net/qq_32172681/article/details/95971492)上看到了1*1卷积代替全连接层的解释,个人理解与其不同,参考了其他人的看法(https://www.zhihu.com/question/56824576、... -
深度学习系列 - 1*1卷积的作用
2020-02-17 22:43:481×11\times11×1卷积作用? NIN(Network in Network)是第一篇探索1×11\times11×1卷积核的论文,这篇论文通过在卷积层中使用MLP替代传统线性的卷积核,使单层卷积层内具有非线性映射(激活函数)的能力,也因其...