深度学习 1×1卷积核的作用

一、简述

Inception v1(又名GooLeNet)、VGG等神经网络结构中加入了 1×1卷积核操作,为什么要进行1×1卷积核呢?使用 1×1卷积核其实也可以看成是一种全连接。 接下来介绍一下使用 1×1卷积核 有哪些作用。

二、1×1卷积核的作用

1、降维/升维

1×1卷积核可以通过控制卷积核数量实现降维或升维。

深度学习 1x1卷积核的作用

卷积层流程图

从卷积层流程图中可以清楚的看到 卷积后的特征图通道数与卷积核的个数是相同的。所以,如果想要升维或降维,只需要通过修改卷积核的个数即可。

举例:如果input的通道个数是3,卷积核个数为4,那么特征图的通道数就为4,达到了升维效果。 如果input的通道个数是3,卷积核个数为1,那么特征图的通道数就为1,达到了降维效果。

而1×1卷积核 与 3×3 或 5×5 等尺寸更大的卷积核相比有什么优势呢?

优势就在于 1×1卷积核 会使用更少的权重参数数量。

举例:Inception v1(又名GooLeNet)的神经网络结构图:

深度学习 1x1卷积核的作用

左侧是未加入 1×1卷积核的 Inception,右侧是通过加入 1×1卷积核来实现降维的 Inception。接下来解释这张图:

  • 输入层特征维数: 28x28x192
  • 三种尺寸卷积核大小及卷积通道数分别为 1x1x64 、 3x3x128 、5x5x32
  • 右侧图(b)中,在 3×3 卷积之前增加了 1×1的卷积核,且卷积核个数为96 ; 5×5 卷积之前增加了 1×1的卷积核,且卷积核个数为16; 3×3 max pooling后增加了1×1的卷积核,且卷积核个数为32。

左侧图(a)中间层所需参数数量: (1x1x192x64)+ (3x3x192x128) + (5x5x192x32) = 387072

右侧图(b)中间层所需参数数量: (1x1x192x64) + (1x1x192x96) + (1x1x192x16) + (3x3x96x128) + (5x5x16x32) + (1x1x192x32) = 163328

由此可见,右侧图(b)中网络架构中间层所有参数量比左侧图(a)缩小了一大半。

; 2、增加网络深度(增加非线性)

每使用 1×1卷积核,及增加一层卷积层,所以网络深度得以增加。 而使用 1×1卷积核后,可以保持特征图大小与输入尺寸相同,卷积层卷积过程会包含一个激活函数,从而增加了非线性。

在输入尺寸不发生改变的情况下而增加了非线性,所以会增加整个网络的表达能力。

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

使用1×1卷积核,实现降维和升维的操作其实就是 channel 间信息的线性组合变化。

比如:在尺寸 3×3,64通道个数的卷积核后面添加一个尺寸1×1,28通道个数的卷积核,就变成了尺寸3×3,28尺寸的卷积核。 原来的64个通道就可以理解为跨通道线性组合变成了28通道,这就是通道间的信息交互。

注意:只是在通道维度上做线性组合,W和H上是共享权值的滑动窗口。

三、参考博文

https://zhuanlan.zhihu.com/p/40050371?ivk_sa=1024320u

https://blog.csdn.net/a1154761720/article/details/53411365

https://blog.csdn.net/briblue/article/details/83151475

Original: https://blog.csdn.net/qq_27278957/article/details/120209780
Author: 高祥xiang
Title: 深度学习 1×1卷积核的作用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/628221/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球