在学习「卷积神经网络」(Convolution Neural Network)的过程中,不可避免的会遇到各种各样的「卷积核」。不理解「卷积核」就没办法很好的理解整个网络,不求甚解等于一无所知,特此总结分析各种卷积核由来和用途。
注:在此不探讨用于反卷积的卷积核。

卷积核

卷积核的形态、大小不一样,其带来的效果是有明显差别的。比如说,「尺寸大的」和「尺寸小的」卷积核,前者的参数量比后者的参数量大,其性质也会有所不同。

对于所有卷积核来说,一般都有以下四个参数:

卷积核大小(Kernel Size)
定义了卷积操作的感受野(Receptive Field)。在二维卷积中,通常设置为 3 ,即卷积核大小为 3×3。

步幅(Stride)
定义了卷积核遍历图像时的步幅大小。其默认值通常设置为 1 ,也可将步幅设置为 2 后对图像进行下采样,这种方式与最大池化类似。

边界扩充(Padding)
定义了网络层处理样本边界的方式。当卷积核大于1且不进行边界扩充,输出尺寸将相应缩小;当卷积核以标准方式进行边界扩充,则输出数据的空间尺寸将与输入相等。

输入与输出通道(Channels)
构建卷积层时需定义输入通道 I ,并由此确定输出通道 O。这样,可算出每个网络层的参数量为 I × O × K ,其中 K 为卷积核的参数个数。例如,某个网络层有 64 个大小为 3×3 的卷积核,则对应 K 值为 3×3=9 。

其中值得一说的是卷积核大小,一般都是 奇数x奇数 。直观的理解是,奇数形态的卷积核有中心点,对边沿、对线条更加敏感,可以更有效的提取边沿信息。如果是偶数的话,效率会相对较差,积累起来整体效率就会非常差。

常规卷积核


cs231n 常规

最常见的卷积核,就是四四方方、一个规则的长方形,这也是卷积神经网络最开始的卷积核样式。

以计算机视觉为例,对于图像的卷积,常见的卷积核尺寸有 1x1, 3x3, 5x5, 7x7, etc.

卷积核的大小越大,其感受野(Receptive Field)越大,看到的信息越多,提取的特征就会越优秀。
但是尺寸越大,其计算量就越大,对于有限算力而言,因其训练时间过长,不利于训练模型,也不利于加深网络。

除此之外,不同的卷积核大小还可以提取到不同尺度的特征,有利于提取远近不同大小有别的物体的特征、

因此,我们利用多个小卷积核替代一个大卷积核。比如说,在 Inception 网络中使用 2 个 3x3 卷积核代替 1 个 5x5 卷积核。

参数量从原来的 5x5x1=25 降低到 3x3x2=18 ,同量级的卷积核数,其参数量的差异是明显的。

除了常见的 3x35x5 之类的卷积核外,我们还会在网络结构上见到 1x1 这种特殊的卷积核。

1x1 卷积核

越大的卷积核效果越好,但是参数量越大,因此我们需要找到一个方法「在不影响性能的同时,减少参数量」。于是乎,Bottleneck 这种 trick 就应运而生了。

以一张 (width, height, depth) 的图片为例,我们可以通过调节 depth 来「增加」或「减少」维度从而「增加」或「减少」信息量。

Bottleneck 就是利用 1x1 卷积核,先对输入进行降维、激活处理,做第一次特征提取,减少参数量的同时,尽量不损失有效信息;其次经过激活层,还可以提升网络的表达能力。

我们计算一个例子,以便于直观的理解该卷积核的对参数量的影响。


1x1 卷积核

根据上图,我们来做个对比计算,假设输入 feature map 的维度为 256 维,要求输出维度也是 256 维。有以下两种操作:

  • 直接使用 3x3 的卷积核。256 维的输入直接经过一个 3×3×256 的卷积层,输出一个 256 维的 feature map ,那么参数量为:256×3×3×256 = 589,824 。

  • 先经过 1x1 的卷积核,再经过 3x3 卷积核,最后经过一个 1x1 卷积核。 256 维的输入先经过一个 1×1×64 的卷积层,再经过一个 3x3x64 的卷积层,最后经过 1x1x256 的卷积层,则总参数量为:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69,632 。

经过两种方式的对比,我们可以很明显的看到后者的参数量远小于前者的。Bottleneck 的核心思想还是利用多个小卷积核替代一个大卷积核,利用 1x1 卷积核替代大的卷积核的一部分工作。

Inception 中就用了这种 Bottleneck Trick,精简了网络结构却又不损失精度。

空洞卷积核


空洞卷积核

卷积核为 3x3 、扩张率为 2 和无边界扩充的二维空洞卷积

空洞卷积核,顾名思义就是带有洞的卷积核。对于这种卷积核,我们引入了一个 扩张率(dilation rate) 的概念,用于定义卷积核处理数据时各值的间距

一个扩张率为 23×3 卷积核,感受野与 5×5 的卷积核相同,而且仅需要 9 个参数。

空洞卷积核的好处在于大尺寸的卷积核,在扩大感受野的同时,参数量不会有明显的提升。在有限算力下,这算是一个福音——扩大感受野的同时,不大量增加参数量。

可变形卷积核


空洞卷积核

可变形卷积核 是 MSRA (微软亚洲研究院)提出的一个新概念。与传统卷积核(即本文的「常规卷积核」)相比,可变形卷积核的形状并不是固定的,不一定是标准的长方形。

其实 可变形卷积核 是一个很直观理解的概念,所有的物体的形状并不是四四方方的,比如说一只羊并不是一个规则物体。那么我们人在聚焦羊的时候,也并不是一个长方形的框去描绘这只羊,于是 MSRA 就把这一理解放入卷积核之中。

让卷积核自己形变,只关注自己感兴趣的图像区域。

这种自适应的可变形卷积核可以有效地提高特征提取的精度,从而提高整个模型的最后的准确度,对于精细化的语义分割是很有意义的。

小结

一个卷积核的尺寸越大,其感受野越大,所能提取的特征就越优异,但是其参数量也会几何倍数地增长,在现有算力的情况下,不利于网络训练及加深。

为了更快的训练网络并加深网络,我们要找一种「减少参数量,但不影响精度」的解决办法。于是产生了:

  • 利用多个小卷积核替代一个大的卷积核(减少参数量)
  • 先使用 1x1 卷积核将输入数据降维的 Bottleneck 技术(减少参数量)
  • 相当于 5x5 卷积核的 3x3 空洞卷积核 [扩张率为 1 ](减少参数量)
  • 单一尺寸卷积核用多尺寸卷积核代替(多尺度观察)
  • 参数量不变(3x3),但是提取有效信息更多的 可变形卷积核

我们可以看出,定义好一个问题,就可以从问题的不同角度进行优化和解决。未来的新卷积核也无出其右,一定是在这个大框架下,基于某个可以再优化、改进的方面提出来的。

参考资料

  1. Deformable Convolutional Networks - arXiv
  2. Rethinking the Inception Architecture for Computer Vision - arXiv
  3. 可变形卷积网络:计算机新“视”界 - MSRA
  4. 一文了解各种卷积结构原理及优劣 - 知乎专栏
  5. 卷积神经网络中用 1x1 卷积有什么作用或者好处呢? - 知乎
  6. 变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。 - 知乎专栏