卷积神经网络(CNN)中1×1卷积核详解
卷积神经网络(CNN)中1×1卷积核详解
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. 传统卷积的计算量
假设我们有一个输入特征图,尺寸为:
,如果使用标准的
卷积核(如 3×3),并且输出通道数为
,那么计算量如下:
3.2.1×1 卷积的计算量
相比之下,在其他参数相同的情况下,1×1 卷积的卷积核大小是1×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卷积层,用于先减少再恢复通道数,降低了参数量。(如图由
变成
)
示意图: