一、来源
C o n v 1 × 1 Conv\ 1\times1 Conv 1×1 是 Network in Network 的简称。
- 对于单通道图像,其作用仅是进行线性运算;
- 对于多通道图像,
C
o
n
v
1
×
1
Conv\ 1\times1
Conv 1×1 会遍历图像的所有位置,将每个位置处所有通道的值作为其输入,与
1
×
1
1\times1
1×1 卷积核中对应通道的值进行线性运算。本质上可以视为一个全连接神经网络。
在2014谷歌提出的 Inception Network 与 2015年何神等提出的 Residual Network 中均应用了 C o n v 1 × 1 Conv\ 1\times1 Conv 1×1。
二、作用
1. 添加非线性特性
即保持特征图尺寸不发生变化且维持上一层的通道数,在增加网络的深度的同时令网络能够学习更为复杂的函数(特征信息)。
2. 对通道数实现升维/降维
设卷积核大小为 5 × 5 × 192 5\times5\times192 5×5×192,以 降维减少计算量 为例。
-
未使用 C o n v 1 × 1 Conv\ 1\times1 Conv 1×1 的情况下,
输出大小为 28 × 28 × 32 28\times28\times32 28×28×32,其中每个值均需要经过 5 × 5 × 192 5\times5\times192 5×5×192 次乘法,忽略加法的情况下,该层计算量为:
28 × 28 × 32 × 5 × 5 × 192 ≈ 120 m 28\times28\times32\times5\times5\times192\approx120m 28×28×32×5×5×192≈120m -
使用 C o n v 1 × 1 Conv\ 1\times1 Conv 1×1 构建瓶颈层(bottleneck)的情况下,
C o n v 1 × 1 Conv\ 1\times1 Conv 1×1 层: 28 × 28 × 16 × 192 ≈ 2.4 m 28\times28\times16\times192\approx2.4m 28×28×16×192≈2.4m;
C o n v 1 × 1 Conv\ 1\times1 Conv 1×1 层: 28 × 28 × 32 × 5 × 5 × 16 ≈ 10.0 m 28\times28\times32\times5\times5\times16\approx10.0m 28×28×32×5×5×16≈10.0m。总参数量为 12.4 m 12.4m 12.4m。与上一种方式相比,在保证输入和输出的维度相同的情况下,参数量大幅减少。
这就是 C o n v 1 × 1 Conv\ 1\times1 Conv 1×1 的降维作用。
C o n v 1 × 1 Conv\ 1\times1 Conv 1×1 一般只改变输出通道数,而不改变输出的宽度和高度;而 P o o l i n g Pooling Pooling 操作一般只改变输出的宽和高,而不改变通道数。
3. 实现跨通道的信息交互与整合
C o n v 1 × 1 Conv\ 1\times1 Conv 1×1 所实现的通道数增加/减少,本质上其实是通道之间信息的线性组合,这些组合能够使得网络提取更加丰富的高级特征,如上一部分中 28 × 28 × 192 28\times28\times192 28×28×192 的输入经过 1 × 1 × 192 × 16 1\times1\times192\times16 1×1×192×16 的卷积操作后输出为 28 × 28 × 16 28\times28\times16 28×28×16,即该层输入中的原 192 192 192 个特征经过 跨通道线性组合 变成了输出中的 16 16 16 个特征。这就是通道间的信息交互。