1×1卷积核在卷积神经网络(CNN)中扮演着关键角色,主要用于调整通道数、融合通道信息以及优化计算效率。下面将对它详细解析:

1. 调整通道数(升维或降维)

1×1卷积核可用于增加或减少特征图的通道数。​通过设置不同数量的1×1卷积核,可以实现对通道数的精确控制,从而达到升维或降维的目的(实际是改变通道数)。​

示例:

  • 左侧部分(红、绿、蓝):代表输入特征图,包含多个通道(如图3个通道)。
  • 中间部分:代表 1×1 卷积核,它对输入特征图的每个像素点进行通道间加权计算,而不改变空间维度(即长宽)。
  • 右侧部分(米黄色):代表输出特征图。

​如上图所示,使用1个 1×1卷积核,则卷积后由3个通道数降维成1个通道数。

​如上图所示,使用2个 1×1卷积核,则卷积后由3个通道数降维成2个通道数。

​如上图所示,使用4个 1×1卷积核,则卷积后由3个通道数升维成4个通道数。

2. 融合通道间信息

传统卷积主要关注空间特征,而1×1卷积核则侧重于通道间的信息融合。每次卷积均是由多个通道和卷积核进行线性组合,从而实现通道间的信息交互,提升特征表达能力。​

3. 降低计算量

在深度可分离卷积(Depthwise Separable Convolution)中,1×1卷积核用于降低计算量。​首先,对每个通道独立执行深度卷积(depthwise convolution),然后使用1×1卷积将通道信息进行线性组合。​这种方法显著减少了参数数量和计算复杂度。​

3.1. 传统卷积的计算量

假设我们有一个输入特征图,尺寸为:${H}\times{W}\times{C_{in} }$,如果使用 标准的 ${K}\times{K} $卷积核(如 3×3),并且输出通道数为 $C_{out} $,那么计算量如下:

${H}\times{W}\times{C_{in} \times{C_{out}}\times{K}\times{K} }$

3.2. 1×1 卷积的计算量

相比之下,在其他参数相同的情况下,1 卷积 的卷积核大小是 1×1,所以计算量变成:

${H}\times{W}\times{C_{in} \times{C_{out}}\times{1}\times{1} }$

比 3×3 卷积减少了 9 倍!

4. 增强非线性表达能力

虽然1×1卷积核本质上是线性变换,但是可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性,利用后接的非线性激活函数(如ReLU),可以增强模型的非线性表达能力。​

5. 应用案例

5.1 GoogLeNet中的Inception模块:

在GoogLeNet的Inception模块中,使用1×1卷积核来减少通道数,从而降低计算量。​在保持性能的同时,提高了计算效率。​

示意图:

5.2 ResNet中的Bottleneck Block结构:

ResNet采用了Bottleneck Block结构,其中包含两个1×1卷积层,用于先减少再恢复通道数,降低了参数量。​(如图由$18HWC^2$变成$17HWC^2$

示意图:

参考:

1x1卷积核的作用_哔哩哔哩_bilibili

斯坦福CS231n

【AI面试】卷积神经网络中的1x1卷积核是什么?作用是什么?

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐