关注上方“深度学习技术前沿”,选择“星标公众号”,
资源干货,第一时间送达!
【导读】前面我们已经详细介绍了卷积神经网络中的卷积层、池化层以及相应的参数计算,详细内容请见:干货|最全面的卷积神经网络入门教程。本篇文章我们就来一起讨论一下,1x1卷积核的作用到底有哪些?1x1卷积核最先是在Network In Network(NIN)中提出的,这个方法也在后面比较火的方法,如 googLeNet、ResNet、DenseNet ,中得到了非常广泛的应用。特别是在 googLeNet 的Inception中,发挥的淋漓尽致。
1x1卷积核如果卷积的输出输入都只是一个平面,那么1x1卷积核并没有什么意义,它是完全不考虑像素与周边其他像素关系。但卷积的输出输入是长方体,所以1x1卷积实际上是对每个像素点,在不同的channels上进行线性组合(信息整合),且保留了图片的原有平面结构,调控depth,从而完成升维或降维的功能。
1x1卷积核的作用
1x1卷积的作用可以总结为以下三点:
跨通道信息交互(channel)
例子:使用1x1卷积核,实现降维和升维的操作其实就是channel间信息的线性组合变化,3x3,64channels的卷积核后面添加一个1x1,28channels的卷积核,就变成了3x3,28channels的卷积核,原来的64个channels就可以理解为跨通道线性组合变成了28channels,这就是通道间的信息交互。
注意:只是在channel维度上做线性组合,W和H上是共享权值的sliding window
降维/升维
在卷积神经网络中,channels 的含义一般是指每个卷积层中卷积核的数量。
1×1卷积核并不会改变 height 和 width,改变通道的第一个最直观的结果,就是可以将原本的数据量进行增加或者减少。这里通常都称之为升维、降维。而且改变的只是 height × width × channels 中的 channels 这一个维度的大小而已。
这里我们以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数量,(feature map尺寸指W、H是共享权值的sliding window,feature map 的数量就是channels)
左图pooling后feature map是不变的,再加卷积层得到的feature map,会使输出的feature map扩大到416,如果每个模块都这样,网络的输出会越来越大。
而右图在pooling后面加了通道为32的1×1卷积,使得输出的feature map数降到了256。GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层)
增加非线性
在CNN里的卷积大都是多通道的feature map和多通道的卷积核之间的操作(输入的多通道的feature map和一组卷积核做卷积求和得到一个输出的feature map),如果使用1x1的卷积核,这个操作实现的就是多个feature map的线性组合,可以实现feature map在通道个数上的变化。
备注:一个filter对应卷积后得到一个feature map,不同的filter(不同的weight和bias),卷积以后得到不同的feature map,提取不同的特征,得到对应的specialized neuro。
参考链接:
https://blog.csdn.net/u014114990/article/details/50767786
http://www.caffecn.cn/?/question/136
https://www.zhihu.com/question/56024942
https://blog.csdn.net/sscc_learning/article/details/79863922
https://zhuanlan.zhihu.com/p/40050371
推荐阅读
(点击标题可跳转阅读)
- 干货|最全面的卷积神经网络入门教程
- 一文详解深度学习中的Normalization:BN/LN/WN
- 【卷积神经网络结构专题】一文详解LeNet(附代码实现)
- 【最新综述】轻量级神经网络架构综述
- 【汇总】一大波CVPR2020开源项目重磅来袭!
重磅!深度学习技术前沿-微信群已成立
扫码添加群助手,可申请加入 深度学习技术前沿 微信群,旨在交流深度学习方面的学习、科研、工程项目等内容,其中研究方向主要包括:图像识别、图像分类、目标检测、图像分割、人脸识别、模型剪枝与压缩、自然语言处理、知识图谱、强化学习、NAS、GAN等。并且还会第一时间在群中分享一线大厂求职内推资料。
一定要备注:研究方向+学校/公司+姓名(如图像分割+浙大+李四),按照格式备注,可更快被通过且邀请进群。(广告商、博主请绕道!)
? 长按识别,即可加群
? 长按识别,即可关注
原创不易,在看鼓励!比心哟!