关于GoogleNet中1x1卷积核的一些理解
1x1卷积核相关作用
在深度神经网络中卷积的作用是对局部进行加权求和,提取特征图,卷积核的大小一般为奇数卷积核的个数为卷积后特征图的通道数。
1x1卷积(MLP卷积) 一种新的深度网络结构,又被称为网中网(Network In Network),增强接受域内局部贴片的模型判别能力
作用:1x1的卷积核可以实现卷积核通道数的降维和升维,实现参数减少化
从图中看到1x1的卷积过程,如果卷积核有32个,则最终结果为6x6x32,每一个卷积核看作是对原图像32个通道进行了线性组合。
通常在卷积之后加入非线性**函数,加入**函数后,可以初步理解为一个简单的MLP网络了
由于 1×1 并不会改变 height 和 width,改变通道的第一个最直观的结果,就是可以将原本的数据量进行增加或者减少。
增加非线性
1*1卷积核,可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性**函数),把网络做的很deep。
备注:一个filter对应卷积后得到一个feature map,不同的filter(不同的weight和bias),卷积以后得到不同的feature map,提取不同的特征,得到对应的specialized neuron。
跨通道信息交互(channal 的变换)
例子:使用1x1卷积核,实现降维和升维的操作其实就是channel间信息的线性组合变化,3x3,64channels的卷积核后面添加一个1x1,28channels的卷积核,就变成了3x3,28channels的卷积核,原来的64个channels就可以理解为跨通道线性组合变成了28channels,这就是通道间的信息交互[7]。
GoogleNet结构InceptionV1中的NIN
GoogleNet作者的初始想法是用多个不同类型的卷积核代替一个3x3的小卷积核(如左图),好处是可以使提取出来的特征具有多样化,并且特征之间的co-relationship不会很大,最后用把feature map都concatenate起来使网络做得很宽,然后堆叠Inception Module将网络变深。但仅仅简单这么做会使一层的计算量爆炸式增长,如下图,854M 操作:
计算量主要来自于输入前的feature map的维度256,和1x1卷积核的输出维度:192。那可否先使用1x1卷积核将输入图片的feature map维度先降低,进行信息压缩,在使用3x3卷积核进行特征提取运算?线图就只有358M操作