图像分类移动端网络中最常用的几种卷积操作

Posted 行路南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像分类移动端网络中最常用的几种卷积操作相关的知识,希望对你有一定的参考价值。

随着AlexNet 在2012年ImageNet 竞赛中赢得冠军之后,卷积神经网络在计算机视觉领域已开始变得无处不在。一个大的研究趋势是研究更深、更复杂的网络,从而实现更高的准确率。但这些提升准确率的改进并不一定会使网络在大小和速度上更加高效。

然而在许多现实世界的应用中,比如智能手机、机器人、无人机、自动驾驶、增强现实等,图像识别任务需要在计算资源受限的平台上高效的执行。

为此,出现了很多研究针对移动端与嵌入式设备上应用的小型高效的网络,比如MobileNetV1、MobileNetV2、ShuffleNetV1、ShuffleNetV2等。

为了后续更加深入的理解这些高效而准确的网络,本文先做一个铺垫,介绍这些网络中最常使用的卷积操作。当我们将这些不同类型的卷积操作以及它们之间的关系、它们的计算量的对比了解清楚,我们在读这些论文时才更容易真正明白为什么这些网络是小型且高效的。

我们从卷积的一般到特例,下文分别逐一介绍

  • 普通的convolution
  • group convolution
  • depthwise convolution
  • pointwise convolution
  • pointwise group convolution

1. 普通convolution

假设输入的特征图大小为 D F ∗ D F ∗ M D_F * D_F *M DFDFM,其中 D F D_F DF表示输入特征图的空间宽度和高度, M M M表示输入特征图的通道数(深度);

假设卷积核大小为 D K ∗ D K ∗ M ∗ N D_K * D_K * M * N DKDKMN,其中 D K D_K DK表示卷积核的空间宽度和高度, M M M表示输入特征图的通道数,N表示卷积核的个数; 且卷积核的步距stride=1,采用same padding的填充方式。

那么得到的输出特征图大小为为 D F ∗ D F ∗ N D_F * D_F * N DFDFN。整个过程如下图所示。

根据以上的卷积过程,我们知道普通的convolution操作有两个特点:

  • 每一个卷积核的通道数量,与输入特征图的通道数一致;
  • 输出特征图的通道数量,与卷积核的个数一致。

我们计算得到一个普通的convolution的计算量是 D K ∗ D K ∗ M ∗ N ∗ D F ∗ D F D_K * D_K * M * N * D_F * D_F DKDKMNDFDF。其中$D_K * D_K * M $ 是计算得到输出特征图中的一个点的计算量,且输出特征图中一共有 N ∗ D F ∗ D F N * D_F * D_F NDFDF个点。

2. group convolution

假设输入的特征图大小为 D F ∗ D F ∗ M D_F * D_F *M DFDFM,其中 D F D_F DF表示输入特征图的空间宽度和高度, M M M表示输入特征图的通道数(深度);

假设我们要分的组 g r o u p = g group=g group=g, 且我们仍然使输出特征图的通道数为 N N N

那么我们就对输入特征图的通道分为 g g g组。对于每一组来说,

  • 输入的特征图大小为 D F ∗ D F ∗ ( M / g ) D_F * D_F * (M/g) DFDF(M/g)
  • 卷积核大小为 D k ∗ D k ∗ ( M / g ) ∗ ( N / g ) D_k * D_k * (M/g) * (N/g) DkDk(M/g)(N/g)

我们计算一下group convolution 的计算量。

首先我们先计算一个组的计算量,然后将得到的计算量乘以 g g g即得到总共的计算量。

那么一个组的计算量为 D K ∗ D K ∗ ( M / g ) ∗ ( N / g ) ∗ D F ∗ D F D_K * D_K * (M/g) * (N/g) * D_F * D_F DKDK(M/g)(N/g)DFDF

那么group convolution的计算量为 D K ∗ D K ∗ ( M / g ) ∗ ( N / g ) ∗ D F ∗ D F ∗ g = D K ∗ D K ∗ M ∗ N ∗ D F ∗ D F g D_K * D_K * (M/g) * (N/g) * D_F * D_F * g = \\fracD_K * D_K * M * N * D_F * D_Fg DKDK(M/g)(N/g)DFDFg=gDKDKMNDFDF

可见,group convolution 的计算量是普通的convolution的 1 g \\frac1g g1倍。

3. depthwise convolution

在上一节中,我们已经知道:

当我们对输入特征图的通道分为 g g g组,对于每一组来说,

  • 输入的特征图大小为 D F ∗ D F ∗ ( M / g ) D_F * D_F * (M/g) DFDF(M/g)
  • 卷积核大小为 D k ∗ D k ∗ ( M / g ) ∗ ( N / g ) D_k * D_k * (M/g) * (N/g) DkDk(M/g)(N/g)

当分组个数 g = M g = M g=M,且 M = N M= N M=N时,对于每一组来说,

  • 输入的特征图大小为 D F ∗ D F ∗ 1 D_F * D_F * 1 DFDF1
  • 卷积核大小为 D k ∗ D k ∗ 1 ∗ 1 D_k * D_k *1* 1 DkDk11

也即是说,一共有N=M个卷积核,每个卷积核只有一个通道,且与输入特征图的一个通道相对应。如下图所示。

图像分类移动端网络中最常用的几种卷积操作

图像分类ShuffleNet: 一个极端高效的移动端卷积神经网络

图像分类ShuffleNet: 一个极端高效的移动端卷积神经网络

图像分类ShuffleNet: 一个极端高效的移动端卷积神经网络

图像分类ShuffleNet: 一个极端高效的移动端卷积神经网络

深度学习中常用的几种卷积(上篇):标准二维卷积转置卷积1*1卷积(附Pytorch测试代码)