高效的 CNN 模型 MobileNets

CNN 已被广泛用在计算机视觉领域,但是近年来各种 CNN 模型复杂度越来越高,计算量越来越大,导致很多模型无法应用在移动端。本文介绍一种高效的 CNN 模型 MobileNets,MobileNets 使用 Depthwise Convolution 和 Pointwise Convolution 替代传统的卷积操作,可以大大减少参数量和计算量。

1.Group Convolution

Group Convolution 是分组卷积,MobileNets 中的 Depthwise Convolution 是 Group Convolution 的一种,因此首先介绍一下 Group Convolution。

首先回顾传统卷积是的具体过程,假设输入的 feature map 通道数 C=6,输出的 feature map 通道数 N=3,则传统卷积过程中需要 N 个 C×k×k 的卷积核,如下图所示。

高效的 CNN 模型 MobileNets

传统卷积

而 Group Convolution 卷积前先把 feature map 分为 G 组,然后对每组分别进行卷积。则每组的输入通道数为 C/G,每组的卷积核个数为 N/G,卷积核大小为 (C/G)×K×K。假设 G=3,则 Group Convolution 如下图所示。

高效的 CNN 模型 MobileNets

Group Convolution

输入通道数为 C,输出通道数为 N,则对于传统卷积,卷积核总参数量为 N×C×K×K,而 Group Convolution 的总参数量为 N×(C/G)×K×K,即减少为原来的 1/G。

Depthwise Convolution 是 Group Convolution 的特例,当 G=C 时,Group Convolution 就是 Depthwise Convolution,此时参数量为 N×K×K。MobileNets 通过 Depthwise Convolution 降低了模型的参数量。

2.MobileNets

2.1 MobileNets 卷积操作

MobileNets 是谷歌在 2017 年提出的模型,论文《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》。

MobileNets 的核心结构是 Depthwise Separable Convolution,这一结构可以分解为两个卷积操作:Depthwise Convolution 和 Pointwise Convolution。其中 Depthwise Convolution 就是上面提到的 Group Convolution,把输入的 feature map 分为 G=C 组,对每组分别进行卷积;而 Pointwise Convolution 就是传统的卷积操作,但是卷积核的大小为 1×1。

MobileNets 通过 Depthwise Convolution 层和 Pointwise Convolution 层替换传统的卷积,如下图所示,M 为输入 feature map 通道数,N 为输出 feature map 的通道数,DF 是输出 feature map 的尺寸,DK 是卷积核大小。

高效的 CNN 模型 MobileNets

MobileNets 卷积操作

上图 a 是传统的卷积,输入通道数为 M 的 feature map,传统卷积使用 N 个 DK×DK 的卷积核输出得到通道为 N×DF×DF 的 feature map,计算量=DK×DK×M×N×DF×DF。而图 b、c 分别对应 Depthwise 和 Pointwise Convolution,先经过 M 个 Depthwise 得到 M×DF×DF 的 feature map,再经过 N 个 Pointwise 得到 N×DF×DF 的 feature map,效果和传统卷积类似,但计算量大大减少。下面的公式显示了 MobileNets 卷积操作计算量和传统卷积计算量的比值:

高效的 CNN 模型 MobileNets

MobileNets 卷积操作计算量和传统卷积计算量的比值

2.2 MobileNets 结构

高效的 CNN 模型 MobileNets

MobileNets 卷积操作

上图左边是传统卷积的示意图,右边是 MobileNets 的 Depthwise Separable Convolution,在 Depthwise Convolution 和 Pointwise Convolution 之间加上 Batch Norm 和 Relu 激活函数。

MobileNets 的整体结构如下表所示:

高效的 CNN 模型 MobileNets

MobileNets 整体结构

下表显示了 MobileNets 计算量分布以及参数分布:

高效的 CNN 模型 MobileNets

MobileNets 计算量分布和参数分布

为了更好地对 MobileNets 进行瘦身,作者提供了两个超参数:width multiplier α 和resolution multiplier ραρ 的取值范围都是 (0, 1],其中 α 可以按比例减少通道数量,而 ρ 可以按比例减小 feature map 的尺寸 (即高和宽),加上这两个参数后 Depthwise Separable Convolution 的参数量可以用下面的公式计算:

高效的 CNN 模型 MobileNets

MobileNets 瘦身公式

3.实验效果

高效的 CNN 模型 MobileNets

MobileNets 识别准确率和参数量对比

上面是 MobileNets 和一些经典模型的准确性和参数量对比,MobileNets 可以大大减少模型的参数量,同时不会使模型准确性下降很多。

4.参考文献

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

内容来源:今日头条
角标
继续阅读(剩余50%
我要举报