精华内容
下载资源
问答
  • 卷积核函数的选择

    千次阅读 2018-02-09 13:53:53
    而且看到很多成熟的卷积网络经常使用1*1的卷积核函数,它的作用又是什么了? 1*1卷积核函数作用 很多卷积神经网络中都会使用1*1的卷积核函数:resNet,GoogleNet。1×1卷积核只有一个参数,这个核在输入上...

    卷积核函数的选择

    卷积核函数的尺寸并没有一个严格的限制,
    那么选择核函数有什么标准了?? 而且看到很多成熟的卷积网络经常使用1*1的卷积核函数,它的作用又是什么了?

    1*1卷积核函数的作用

    很多卷积神经网络中都会使用1*1的卷积核函数:resNet,GoogleNet。1×1卷积核只有一个参数,这个核在输入上滑动,就相当于给输入数据乘以一个系数。(对于单通道和单个卷积核而言这样理解是可以的),看起来好像并没有什么意义,那它为什么还作用这么广泛了?可以从如下几个方向理解:
    1、实现跨通道的交互和信息整合。比如输入是多通道的,由卷积神经网络计算方式可知,对于单一卷积核函数:当前位置的输出值,是由多个通道上的卷积结果相加然后再取激活函数值得到的。所以卷积核函数的尺寸是1*1的话,他可以整合多个通道的信息,而不会改变输入的大小。
    2、卷积网络通道数目的升降,由于输出的通道数目是由卷积核函数的数目决定的,所以使用1*1的卷积核,在不改变输入大小的情况下,可以任意增减输出的通道数目
    其余的特性,其实都是由上面两个特性演变而来,不做过多的描述

    小的卷积核

    这里写图片描述
    上左图:假设卷积核函数的尺寸为3*3,第一层的卷积核函数可以看到原始输入的3*3区域,第二层卷积核可以看到原始输入的5*5区域。所以两层3*3的卷积核函数和使用一层5*5卷积核函数效果差不多,但是其使用参数的比直接使用5*5要少,而且两个非线性函数拟合程度比直接使用一个非线性函数丰富。也可以使用下图说明:
    这里写图片描述

    结论

    几个小的卷积核(例如3*3)叠加(stack)在一起,相比一个大的卷积核(例如7*7),与原图的连通性不变,但是却大大降低了参数的个数以及计算复杂度!!!
    例如:我们还可以搞个100*100的卷积核,它可以刻画几乎任何复杂的形状。但是,复杂度太太太高。或许搞20个3*3的叠加就可以复现上面的任何形状。
    这不仅可以减少参数的数目,减少计算的复杂度。而且刻画的线性方程更加丰富。

    神经网络喜欢小而深,厌恶大而短,这里指的是卷积核大小和深度学习层数。

    展开全文
  • 1×1 卷积核作用

    2019-02-12 15:42:35
    一、来源:[1312.4400] Network In Network (如果1×1卷积核接在普通的卷积层后面,配合激活函数,即可实现network in network的结构) 二、应用:GoogleNet中的Inception、ResNet中的残差模块 三、作用: 1、...

    一、来源:[1312.4400] Network In Network (如果1×1卷积核接在普通的卷积层后面,配合激活函数,即可实现network in network的结构)

    二、应用:GoogleNet中的Inception、ResNet中的残差模块

    三、作用:

    1、降维(减少参数)

    例子1 : GoogleNet中的3a模块

    输入的feature map是28×28×192

    1×1卷积通道为64

    3×3卷积通道为128

    5×5卷积通道为32

    左图卷积核参数:192 × (1×1×64) +192 × (3×3×128) + 192 × (5×5×32) = 387072

    右图对3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了: 

    192 × (1×1×64) +(192×1×1×96+ 96 × 3×3×128)+(192×1×1×16+16×5×5×32)= 157184

    同时在并行pooling层后面加入1×1卷积层后也可以降低输出的feature map数量(feature map尺寸指W、H是共享权值的sliding window,feature map 的数量就是channels)

    左图feature map数量:64 + 128 + 32 + 192(pooling后feature map不变) = 416 (如果每个模块都这样,网络的输出会越来越大)

    右图feature map数量:64 + 128 + 32 + 32(pooling后面加了通道为32的1×1卷积) = 256 

    GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层) 

     

    例子2:ResNet中的残差模块

    假设上一层的feature map是w*h*256,并且最后要输出的是256个feature map

    左侧操作数:w*h*256*3*3*256 =589824*w*h 

    右侧操作数:w*h*256*1*1*64 + w*h*64*3*3*64 +w*h*64*1*1*256 = 69632*w*h,,左侧参数大概是右侧的8.5倍。(实现降维,减少参数)

     

    2、升维(用最少的参数拓宽网络channal)

    例子:上一个例子中,不仅在输入处有一个1*1卷积核,在输出处也有一个卷积核,3*3,64的卷积核的channel是64,只需添加一个1*1,256的卷积核,只用64*256个参数就能把网络channel从64拓宽四倍到256。

     

    3、跨通道信息交互(channal 的变换)

    例子:使用1*1卷积核,实现降维和升维的操作其实就是channel间信息的线性组合变化,3*3,64channels的卷积核后面添加一个1*1,28channels的卷积核,就变成了3*3,28channels的卷积核,原来的64个channels就可以理解为跨通道线性组合变成了28channels,这就是通道间的信息交互。

    注意:只是在channel维度上做线性组合,W和H上是共享权值的sliding window

     

    4、增加非线性特性

    1*1卷积核,可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很deep。

     

    备注:一个filter对应卷积后得到一个feature map,不同的filter(不同的weight和bias),卷积以后得到不同的feature map,提取不同的特征,得到对应的specialized neuro。

     

    四、从fully-connected layers的角度来理解1*1卷积核

    将其看成全连接层

    左边6个神经元,分别是a1—a6,通过全连接之后变成5个,分别是b1—b5

    左边6个神经元相当于输入特征里面的channels:6

    右边5个神经元相当于1*1卷积之后的新的特征channels:5

    左边 W*H*6 经过 1*1*5的卷积核就能实现全连接

    In Convolutional Nets, there is no such thing as “fully-connected layers”. There are only convolution layers with 1x1 convolution kernels and a full connection table– Yann LeCun

     

    参考:

     1. One by One [ 1 x 1 ] Convolution - counter-intuitively useful /1X1卷积核到底有什么作用呢?关于1*1卷积核的理解如何理解卷积神经网络中的1*1卷积

     2. https://zhuanlan.zhihu.com/p/35814486

     

    展开全文
  • 【深度学习】CNN 中 1x1 卷积核作用

    万次阅读 多人点赞 2018-10-19 18:12:18
    最近研究 GoogLeNet 和 VGG 神经网络结构的时候,都看见了它们在某些层有采取 1x1 作为卷积核,起初的时候,对这个做法很是迷惑,这是因为之前接触过的教材的例子中最小的卷积核是 3x3 ,那么,1x1 的卷积核有什么...

    最近研究 GoogLeNet 和 VGG 神经网络结构的时候,都看见了它们在某些层有采取 1x1 作为卷积核,起初的时候,对这个做法很是迷惑,这是因为之前接触过的教材的例子中最小的卷积核是 3x3 ,那么,1x1 的卷积核有什么意义呢?

    最初应用 1x1 卷积核的神经网络是 Network In Network,然后 GoogLeNet 和 VGG 也不约而同的更正了。

    他们在论文中解释,大概有下面 2 个意义。

    1、增加网络的深度

    这个就比较好理解了,1x1 的卷积核虽小,但也是卷积核,加 1 层卷积,网络深度自然会增加。

    其实问题往下挖掘,应该是增加网络深度有什么好处?为什么非要用 1x1 来增加深度呢?其它的不可以吗?

    其实,这涉及到感受野的问题,我们知道卷积核越大,它生成的 featuremap 上单个节点的感受野就越大,随着网络深度的增加,越靠后的 featuremap 上的节点感受野也越大。因此特征也越来越抽象。

    但有的时候,我们想在不增加感受野的情况下,让网络加深,为的就是引入更多的非线性。

    而 1x1 卷积核,恰巧可以办到。

    我们知道,卷积后生成图片的尺寸受卷积核的大小和跨度影响,但如果卷积核是 1x1 ,跨度也是 1,那么生成后的图像大小就并没有变化。

    但通常一个卷积过程包括一个激活函数,比如 Sigmoid 和 Relu。

    所以,在输入不发生尺寸的变化下,却引入了更多的非线性,这将增强神经网络的表达能力。

    2、升维或者是降维

    大家可以看下面这张图:
    在这里插入图片描述

    我们可以直观地感受到卷积过程中:卷积后的的 featuremap 通道数是与卷积核的个数相同的

    所以,如果输入图片通道是 3,卷积核的数量是 6 ,那么生成的 feature map 通道就是 6,这就是升维,如果卷积核的数量是 1,那么生成的 feature map 只有 1 个通道,这就是降维度。

    值得注意的是,所有尺寸的卷积核都可以达到这样的目的。

    那为什么要用 1x1 呢

    原因就是数据量的大小,我们知道在训练的时候,卷积核里面的值就是要训练的权重,3x3 的尺寸是 1x1 所需要内存的 9 倍,其它的类似。所以,有时根据实际情况只想单纯的去提升或者降低 feature map 的通道,1x1 无疑是一个值得考虑的选项。

    展开全文
  • 1*1卷积核作用

    千次阅读 2020-08-13 13:40:55
    如果当前层和下一层都只有一个通道那么1×1卷积核确实没什么作用,但是如果它们分别为m层和n层的话,1×1卷积核可以起到一个跨通道聚合的作用,所以进一步可以起到降维(或者升维)的作用,起到减少参数的目的。...

    作用:

    1. 跨通道的特征整合
    2. 特征通道的升维和降维
    3. 减少卷积核参数(简化模型)

    1 跨通道的特征整合

    如果当前层和下一层都只有一个通道那么1×1卷积核确实没什么作用,但是如果它们分别为m层和n层的话,1×1卷积核可以起到一个跨通道聚合的作用,所以进一步可以起到降维(或者升维)的作用,起到减少参数的目的。 

    这里通过一个例子来直观地介绍1x1卷积。输入6x6x1的矩阵,这里的1x1卷积形式为1x1x1,即为元素2,输出也是6x6x1的矩阵。但输出矩阵中的每个元素值是输入矩阵中每个元素值x2的结果。

                             

    上述情况,并没有显示1x1卷积的特殊之处,那是因为上面输入的矩阵channel为1,所以1x1卷积的channel也为1。这时候只能起到升维的作用。这并不是1x1卷积的魅力所在。

    让我们看一下真正work的示例。当输入为6x6x32时,1x1卷积的形式是1x1x32,当只有一个1x1卷积核的时候,此时输出为6x6x1。此时便可以体会到1x1卷积的实质作用:降维。当1x1卷积核的个数小于输入channels数量时,即降维[3]。

    注意,下图中第二行左起第二幅图像中的黄色立方体即为1x1x32卷积核,而第二行左起第一幅图像中的黄色立方体即是要与1x1x32卷积核进行叠加运算的区域。

                             

    其实1x1卷积,可以看成一种全连接(full connection)。

    第一层有6个神经元,分别是a1—a6,通过全连接之后变成5个,分别是b1—b5,第一层的六个神经元要和后面五个实现全连接,本图中只画了a1—a6连接到b1的示意,可以看到,在全连接层b1其实是前面6个神经元的加权和,权对应的就是w1—w6,到这里就很清晰了:

    第一层的6个神经元其实就相当于输入特征里面那个通道数:6,而第二层的5个神经元相当于1*1卷积之后的新的特征通道数:5。w1—w6是一个卷积核的权系数,若要计算b2—b5,显然还需要4个同样尺寸的卷积核[4]。

    上述列举的全连接例子不是很严谨,因为图像的一层相比于神经元还是有区别的,图像是2D矩阵,而神经元就是一个数字,但是即便是一个2D矩阵(可以看成很多个神经元)的话也还是只需要一个参数(1*1的核),这就是因为参数的权值共享。

    注:1x1卷积一般只改变输出通道数(channels),而不改变输出的宽度和高度

    2 降维/升维

                       降维

    由于 1×1 并不会改变 height 和 width,改变通道的第一个最直观的结果,就是可以将原本的数据量进行增加或者减少。这里看其他文章或者博客中都称之为升维、降维。但我觉得维度并没有改变,改变的只是 height × width × channels 中的 channels 这一个维度的大小而已[5]。

                                       升维
    图像来自知乎ID: YJango[6]

    3 加非线性

    1*1卷积核,可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很deep。

    备注:一个filter对应卷积后得到一个feature map,不同的filter(不同的weight和bias),卷积以后得到不同的feature map,提取不同的特征,得到对应的specialized neuron[7]。

                                  

    4 跨通道信息交互(channal 的变换)

    例子:使用1x1卷积核,实现降维和升维的操作其实就是channel间信息的线性组合变化,3x3,64channels的卷积核后面添加一个1x1,28channels的卷积核,就变成了3x3,28channels的卷积核,原来的64个channels就可以理解为跨通道线性组合变成了28channels,这就是通道间的信息交互[7]。

    注意:只是在channel维度上做线性组合,W和H上是共享权值的sliding window

    5 减少计算量

    以下图为例,我们可以看到,计算量明显减少。

    image-20200611213427453

    6 1x1卷积核应用

    Inception

    1. 这一点孙琳钧童鞋讲的很清楚。1×1的卷积层(可能)引起人们的重视是在NIN的结构中,论文中林敏师兄的想法是利用MLP代替传统的线性卷积核,从而提高网络的表达能力。文中同时利用了跨通道pooling的角度解释,认为文中提出的MLP其实等价于在传统卷积核后面接cccp层,从而实现多个feature map的线性组合,实现跨通道的信息整合。而cccp层是等价于1×1卷积的,因此细看NIN的caffe实现,就是在每个传统卷积层后面接了两个cccp层(其实就是接了两个1×1的卷积层)。

    2. 进行降维和升维引起人们重视的(可能)是在GoogLeNet里。对于每一个Inception模块(如下图),原始模块是左图,右图中是加入了1×1卷积进行降维的。虽然左图的卷积核都比较小,但是当输入和输出的通道数很大时,乘起来也会使得卷积核参数变的很大,而右图加入1×1卷积后可以降低输入的通道数,卷积核参数、运算复杂度也就跟着降下来了。

    以GoogLeNet的3a模块为例,输入的feature map是28×28×192,3a模块中1×1卷积通道为64,3×3卷积通道为128,5×5卷积通道为32,如果是左图结构,那么卷积核参数为1×1×192×64+3×3×192×128+5×5×192×32,而右图对3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),参数大约减少到原来的三分之一。

    同时在并行pooling层后面加入1×1卷积层后也可以降低输出的feature map数量,左图pooling后feature map是不变的,再加卷积层得到的feature map,会使输出的feature map扩大到416,如果每个模块都这样,网络的输出会越来越大。

    而右图在pooling后面加了通道为32的1×1卷积,使得输出的feature map数降到了256。GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层)[8]。

    Inception

    ResNet

    ResNet同样也利用了1×1卷积,并且是在3×3卷积层的前后都使用了,不仅进行了降维,还进行了升维,使得卷积层的输入和输出的通道数都减小,参数数量进一步减少,如下图的结构[8]。

    ResNet

    参考

    [1] 1*1的卷积核与Inception:https://blog.csdn.net/a1154761720/article/details/53411365

    [2] 《Network in network》:https://arxiv.org/abs/1312.4400

    [3]吴恩达DeepLearning.ai视频教程
    Networks in Networks and 1x1 Convolutions》

    [4] 如何理解卷积神经网络中的1*1卷积

    [5]【CNN】卷积神经网络中的 1*1 卷积 的作用:https://blog.csdn.net/sscc_learning/article/details/79863922

    [6] https://www.zhihu.com/question/56024942/answer/194997553

    [7] 1×1 卷积核的作用?(附实例):https://zhuanlan.zhihu.com/p/35814486

    [8] 1X1卷积核到底有什么作用呢?:http://www.caffecn.cn/?/question/136

    扩展知乎话题:卷积神经网络中用1*1 卷积有什么作用或者好处呢?:https://www.zhihu.com/question/56024942

     

    展开全文
  • CNN 中, 1X1卷积核作用

    千次阅读 2019-04-24 15:57:58
    CNN 中, 1X1卷积核作用 从NIN 到Googlenet mrsa net 都是用了这个,为什么呢 发现很多网络使用了1X1卷积核,这能起到什么作用呢?另外我一直觉得,1X1卷积核就是对输入的一个比例缩放,因为1X1卷积核只有一个...
  • 1x1卷积核作用

    万次阅读 多人点赞 2018-12-10 19:42:09
    1x1 卷积 1. 前言 往往很多人喜欢把事情搞得复杂,显得高大上,却并不实用,殊不知有时候简单的想法才是最美的。就好像是一堆巧妙的数学公式推导,常常有某一个极简的数学公式在作支撑,奇技淫巧无处不在。此外...
  • CNN 中1X1卷积核作用

    千次阅读 2016-12-17 11:00:20
    转载自:  http://blog.csdn.net/u014696921/article/details/52950247 http://www.caffecn.cn/?/question/136 ...发现很多网络使用了1X1卷积核,这能起到什么作用呢?另外我一直觉得,1X1卷积核就是对输入的一
  • 1×1卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性,使得网络可以表达更加复杂的特征。 特征降维: 通过控制卷积核的数量达到通道数大小的放缩。特征降维带来的...
  • CNN中1×1的卷积核作用

    千次阅读 2017-10-31 12:04:02
    1×1卷积核最早引起人们的重视是在NIN《Min Lin, Qiang Chen, and Shuicheng Yan. Network in network. CoRR, abs/1312.4400, 2013》结构中,后来在GoogLeNet的Inception结构中用于降维。 1×1卷积核用于升维、降维...
  • 1x1卷积核作用

    千次阅读 2016-10-15 09:25:56
    1x1卷积核作用
  • 【6】1×1 卷积核作用?(附实例)

    千次阅读 2018-04-18 10:55:30
    应用part III :作用(降维、升维、跨通道交互、增加非线性)part IV :从fully-connected layers的角度理解一、来源:[1312.4400] Network In Network (如果1×1卷积核接在普通的卷积层后面,配合激活函数,就可以...
  • 文章目录一、1x1卷积核介绍二、举例说明实际作用例子1:线性变换例子2:降低通道数(归纳整理进行一次输入通道间的非线性映射)三、1x1卷积核作用降低/提升通道数增加非线性跨通道信息交互(channal 的变换)四、1x1...
  • tensorflow2创建卷积核Conv2D函数

    千次阅读 2020-04-14 10:31:54
    使用Conv2D可以创建一个卷积核来对输入数据进行卷积计算,然后输出结果,其创建的卷积核可以处理二维数据。依次类推,Conv1D可以用于处理一维数据,Conv3D可以用于处理三维数据。在进行神经层级集成时,如果使用该层...
  • 1X1卷积核到底有什么作用

    千次阅读 2018-08-02 10:17:11
    1X1卷积核到底有什么作用 1*1的卷积核在NIN、Googlenet中被广泛使用,但其到底有什么作用也是一直困扰的问题,这里总结和归纳下在网上查到的自认为很合理的一些答案,包括1)跨通道的特征整合2)特征通道的升维和...
  • 卷积核

    千次阅读 2018-05-26 22:14:54
    今天一个同学问 卷积过程好像是对 一个通道的图像进行卷积, 比如10个卷积核,得到10个feature map, 那么输入图像为RGB三个通道呢,输出就为 30个feature map 吗, 答案肯定不是的, 输出的个数依然是 卷积核的...
  • 文章目录为什么一个5x5的卷积核可以用两个3x3的卷积核来替代一个5*5卷积两个3*3卷积核为什么一个7x7的卷积核可以用三个个3x3的卷积核来替代一个7*7卷积三个3*3卷积核优点总结 为什么一个5x5的卷积核可以用两个3x3的...
  • 为什么一个55的卷积核可以由两个33的卷积核替代?(这个不要重要) 5x5卷积核可以用2个3x3卷积核替代的原因(这个不重要) 看图解决所有 这张图被用烂了。 在一个卷积层,因为权值共享,所以一个33只有9个w和一个b...
  •   卷积神经网络是深度学习中一种非常常见的神经网络,在图像识别中,有非常广泛的应用。本文脉络,先详细阐述基本概念,...如下卷积核表示局部区域的平均值,它会一定程度另细节有所损失,卷积核如下图所示:   另
  • 卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核。 二、卷积核概述 卷积核其实在图像处理中并不是新事物,...
  • 今天小编就为大家分享一篇pytorch 自定义卷积核进行卷积操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核。又称滤波器。 同样提取某个特征,经过不同卷积核卷积后...
  • 图像卷积运算函数filter2D()

    千次阅读 2018-04-17 21:55:38
    filter2D()函数是OpenCV中进行图像卷积运算的函数,能够自己设定卷积核。通常被用来在进行滤波时,自己设定滤波器,但是在其他很多时候,也可以使用这个函数进行卷积滤波,如亚像素边缘提取过程中,可以将算出的...
  • CNN 中, 1X1卷积核到底有什么作用呢?

    万次阅读 多人点赞 2016-02-29 19:55:50
    发现很多网络使用了1X1卷积核,这能起到什么作用呢?另外我一直觉得,1X1卷积核就是对输入的一个比例缩放,因为1X1卷积核只有一个参数,这个核在输入上滑动,就相当于给输入数据乘以一个系数。不知道我理解的是否...
  • 1X1卷积核的理解

    2019-10-08 16:20:15
    前言 1x1卷积核在近几年应用广泛。比如残差网络Resnet,Googlenet的Inception块,都有1x1卷积核的身影,下面...而1x1卷积核并没有这种作用 它的长宽度均为1,这也使他作用范围是在通道维数上面 实际上,它的作用跟...
  • 深度学习之3*3卷积核的优势

    千次阅读 2020-05-11 21:19:36
    多个3*3的卷积核比一个较大尺寸的卷积核有更多层的非线性函数,增加了非线性表达,使判决函数更具有判决性。 3×3卷积核 卷积核一定越大越好? 之前人们的观念是,卷积核越大,receptive field(感受野)越大,看到的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,585
精华内容 25,034
关键字:

卷积核函数的作用