Kernel 1x1 卷积
1. 1x1卷积与3x3卷积的直观对比
- 使用Kernel大小为3x3的卷积
![Convolution with Kernel of size 3x3](https://raw.githubusercontent.com/iamaaditya/iamaaditya.github.io/master/images/conv_arithmetic/full_padding_no_strides_transposed.gif)
- 使用Kernel大小为1x1的卷积
![Convolution with Kernel of size 1x1](https://raw.githubusercontent.com/iamaaditya/iamaaditya.github.io/master/images/conv_arithmetic/full_padding_no_strides_transposed_small.gif)
2. 1x1卷积的功能
- 1×1卷积核本质:就是多个feature map对应像素的线性组合,可以实现feature map在通道个数上的变化。所以进一步可以起到降维(或者升维)的作用,起到减少参数的目的。
- 比如当前特征图为 w × h × m w \times h \times m w×h×m即图像大小为 w × h w \times h w×h,特征层数为 m m m,然后对其进行 1 × 1 1 \times 1 1×1的卷积运算,特征层数为 n n n,那么只要 n < m n<m n<m这样就能起到降维的目的,减少之后步骤的运算量。
- 可以控制特征层的数量:从而实现升维或降维
- 加入非线性:卷积层之后经过激励层,1*1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力
- 减少计算量:实例说明如下:
-
假如输入大小为28 x 28 x 192,输出大小为28 x 28 x 32
-
上图的计算量为:28 x 28 x 192 x 5 x 5 x 32 = 120,422,400次
-
上图的计算量为:28 x 28 x 192 x 1 x 1 x 16 + 28 x 28 x 16 x 5 x 5 x 32 = 12,443,648次
-由此可见,实现相同的目标,引入1x1 卷积的计算量是不引入的1/10.
-
3. 1x1卷积与全连接的比较
- 是否改变图像空间结构
- 全连接层会破坏图像的空间结构,而1*1卷积层不会破坏图像的空间结构,全连通就相当于每个像素点都一样对待,但是卷积是将一个区域单独对待,所以会保留图像局部特征
- 输入尺寸是否可以任意
- 全连接层的输入尺寸是固定的,因为全连接层的参数个数取决于图像大小。而卷积层的输入尺寸是任意的,因为卷积核的参数个数与图像大小无关