发现很多网络使用1×1的卷积核,实际就是对输入的一个比例缩放,因为1×1卷积核只有一个参数,这个核在输入上滑动,就相当于给输入数据乘以一个系数。(对于单通道和单个卷积核而言这样理解是可以的)
对于多通道和多个卷积核的理解,1×1卷积核大概有两方面的作用:
1.实现跨通道的交互和信息整合(具有线性修正特性,实现多个feature map的线性组合,可以实现feature map在通道个数上的变化,想象成跨通道的pooling,(输入的多通道的feature map和一组卷积核做卷积求和得到一个输出的feature map)
2.进行卷积核通道数的降维和升维(同时还具有降维或者升维功能)
3.在pooling层后面加入的1×1的卷积也是降维,使得最终得到更为紧凑的结构,虽然有22层,但是参数数量却只是alexnet的1/12.
4.最近大热的MSRA的resnet也利用了1×1的卷积,并且是在3×3卷积层的前后都使用了,不仅进行了降维,还进行了升维,使得卷积层的输入和输出的通道数都减小,数量进一步减少。如果1×1卷积核接在普通的卷积层后面,配合激活函数,就可以实现network in network的结构了。
5.还有一个很重要的功能,就是可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很deep。(平均池化是针对每个feature map的平均操作,没有通道间的交互,而1×1卷积是对通道的操作,在通道的维度上进行线性组合)
一个filter对应卷积后得到一个feature map
不同的filter(不同的weight和bias),卷积以后得到不同的feature map,提取不同的特征,得到对应的specialized neuro。