【深度学习】1*1卷积

卷积核的作用在于特征的抽取,越是大的卷积核尺寸(kernal_size)就意味着更大的感受野,当然随之而来的是更多的参数。图像空域内具有局部相关性,卷积的过程是对局部相关性的一种抽取。 

  • 1*1卷积的作用? / 如何理解卷积神经网络中的1*1卷积? 

1x1 卷积可以压缩信道数(channel--厚度)即减少特征的维度。池化可以改变图片的宽和高。

1x1卷积给神经网络增加非线性,从而减少或保持channel不变,也可以增加channel个数。

1x1卷积可以加入非线性。 

1、降维

比如,一张500x500且厚度depth为100 (500x500x100)的图片在20个filter上做1x1的卷积,那么结果的大小为500x500x20。

2、加入非线性

卷积层之后经过激励层,1x1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力;

下图是Inception模块,为了消除尺寸对于识别结果的影响,一次性使用多个不同filter size来抓取多个范围不同的概念,让网络能够自己选择需要的特征。可以看到在Inception模块中,每个分支都加上一个1x1卷积的部分,这里1x1卷积的作用是让网络根据需要能够更灵活地控制数据的depth(即通道数),通过1x1卷积,可以将不同分支的feature map通道数调整到一直,便于后续操作(相加或concat)。这里的1x1卷积不止能降维,也可以升维,这完全取决与1x1卷积的通道数。

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

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

4、在保持feature map 尺寸不变(即不损失分辨率)的前提下大幅增加非线性特性,把网络做得很deep。

  • 1*1的卷积核与全连接的区别?

1*1卷积可以把它看成是一种全连接。

1x1的卷积核是输入特征图大小不固定的,而全连接的输入是固定的。

卷积跟全连接都是一个点乘的操作,区别在于卷积是作用在一个局部的区域,而全连接是对于整个输入而言,那么只要把卷积作用的区域扩大为整个输入,那就变成全连接了。所以我们只需要把卷积核变成和输入的feature map的大小一样就可以了,这样的话就相当于使得卷积跟全连接层的参数一样多。

比如VGG-16中, 第一个全连接层的输入是7x7x512,输出是4096。这可以用一个卷积核大小7x7。步长(stride)为1,没有填补(padding),输出通道数4096的卷积层等效表示,其输出为1x1x4096和全连接层等价。后续的全连接层可以用1x1卷积等效替代。

简而言之,全连接层转化为卷积层的规则是:将卷积核大小设置为输入的空间大小。

  • 全卷积代替全连接的好处是什么?/ 为什么卷积层可以“代替”全连接层?

使得网络可以接受任意大小的输入的方法就是把全连接层变成卷积层,这就是所谓的卷积化。 

由于卷积层可以处理任意大小输入, 非常适合检测, 分割等任务!!!

如果卷积核的kernel_size和输入feature maps的size一样,那么相当于该卷积核计算了全部feature maps的信息,则相当于是一个kernel_size∗1的全连接。

理解全连接层:
连接层实际就是卷积核大小为上层特征大小的卷积运算,卷积后的结果为一个节点,就对应全连接层的一个点。(理解)
假设最后一个卷积层的输出为7×7×512,连接此卷积层的全连接层为1×1×4096。
如果将这个全连接层转化为卷积层:
1.共有4096组滤波器
2.每组滤波器含有512个卷积核
3.每个卷积核的大小为7×7
4.则输出为1×1×4096
由于每个滤波核的大小和上一层的feature map大小一样,保证了转换后的卷积层的运算结果和全连接层是一样的
若后面再连接一个1×1×4096全连接层。则其对应的转换后的卷积层的参数为:
1.共有4096组滤波器
2.每组滤波器含有4096个卷积核
3.每个卷积核的大小为1×1
4.则输出为1×1×4096

  • 多通道卷积的计算是怎样的?/ 为什么颜色通道为 3 的图像,经过卷积后,它的通道数量可以变成 128 或者其它呢?

卷积过程中,输入层有多少个通道,滤波器就要有多少个通道,但是滤波器的数量是任意的,滤波器的数量决定了卷积后 featuremap 的通道数。

如果把输入当做一个立方体的话,那么 filter 也是一个立方体,它们卷积的结果也是一个立方体,并且上面中 input、filter、Result 的通道都是一致的。

但卷积过程的最后一步要包括生成 feature,很简单,将 Result 各个通道对应坐标的值相加就生成了 feature,相当于将多维的 Result 压缩成了 2 维的 feature。

  • 卷积过程,怎么改变输入层的通道数?

比如,输入层是一张彩色图片,它有 RGB 3 个通道,但经过卷积后的 featuremap 却有 128 个通道,那它是怎么实现的呢?

奥秘在于滤波器的数量

 上图,我们假定用 N 表示滤波器的数量,那么每一个滤波器会生成一个 2 维的 feature,N 个滤波器就生成 N 个 feature,N 个 feature 组成了卷积后的 featuremap,而 N 就是 featuremap 的通道数。

  • 多通道多个卷积核的参数计算?

下图展示了在四个通道上的卷积操作,有两个卷积核,生成两个通道。其中需要注意的是,四个通道上每个通道对应一个2*2的卷积核,这4个2*2的卷积核上的参数是不一样的,之所以说它是1个卷积核,是因为把它看成了一个4*2*2的卷积核,4代表一开始卷积的通道数,2*2是卷积核的尺寸,实际卷积的时候其实就是4个2*2的卷积核(这四个2*2的卷积核的参数是不同的)分别去卷积对应的4个通道,然后相加,再加上偏置b,注意b对于这四通道而言是共享的,所以b的个数是和最终的feature map的个数相同的,先将w2忽略,只看w1,那么在通道的某位置(i,j)处的值,是由四个通道上(i,j)处的卷积结果相加,再加上偏置b1,然后再取激活函数值得到的。所以最后得到两个feature map, 即输出层的卷积核个数为 feature map 的个数。也就是说卷积核的个数=最终的feature map的个数,卷积核的大小=开始进行卷积的通道数*每个通道上进行卷积的二维卷积核的尺寸(此处就是4*(2*2)),b(偏置)的个数=卷积核的个数=feature map的个数。

下图中k代表featuremap的个数,W的大小是(4*2*2)

?‍♀️

所以,在上图由4个通道卷积得到2个通道的过程中,参数的数目为4×(2×2)×2+2个,其中4表示4个通道,第一个2*2表示卷积核的大小,第三个2表示feature map个数,也就是生成的通道数,最后的2代表偏置b的个数。

  • 1*1的卷积核为什么是线性变换?

1*1的卷积核对于1个像素是不变的,但是对于一堆像素其实就是一个简单的线性变换。

前一句:对于单通道的feature map和单个卷积核之间的卷积来说;

后一句:CNN里的卷积大都是多通道的feature map和多通道的卷积核之间的操作(输入的多通道的feature map和一组卷积核做卷积求和得到一个输出的feature map),如果使用1x1的卷积核,这个操作实现的就是多个feature map的线性组合,可以实现feature map在通道个数上的变化。


比心:

深度学习面试

参考:

全连接层与1*1卷积的关系

1*1卷积的作用~~

卷积神经网络中用1*1 卷积有什么作用或者好处呢?(x)

VGG网络中测试时为什么全链接层改成卷积层

CNN 中, 1X1卷积核到底有什么作用呢?

【深度学习】多通道图像卷积过程及计算方式

CNN卷积中多通道卷积的参数问题

  • 15
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值