文章目录
一、引言
为了在某些真实的应用场景如移动或者嵌入式设备有效使用深度学习神经网络模型,使得在保证模型性能前提下,减小模型网络大小,提高运行速度,提出了可应用于算力有限平台的轻量级神经网络。
二、MobileNet1主要创新点
1.深度可分离卷积(Depthwise separable convolutions)
标准卷积(CNN)的作用是对所有输入通道用相同的卷积核得到不同通道特征,将不同通道特征组合起来使得输出特征包含每个输入的特征。因此,我们可以将标准卷积分为以下两个步骤:
1) 深度卷积(Depthwise convolution)
- 深度卷积对每一个输入通道应用一个单独的卷积核(与标准卷积不同,标准卷积对每一个输入通道应用同一个卷积核)得到特征图,此时,每张特征图仅与一个输入通道和其对应卷积核相关,各个通道之间特征图不关联。
2.)点卷积(Pointwise concolution)
- 点卷积(1x1卷积)将深度卷积的输出特征图进行线性组合后再输出,使得最后的输出特征都包含每个输入特征,即将深度卷积输出的不关联的特征图关联起来。
下图为标准卷积与深度可分离卷积对应的计算量
其中, D F D_F DF为输入Feature Map的宽度和高度(我们假设输入特征图与使用的卷积核均为正方形), M M M为输入通道数(也可理解为输入Feature Map深度), N N N为输出通道数, D k D_k Dk为卷积核大小。
- 我们先引入计算量的定义:
参数数量(params):关系到模型大小,单位通常为M,通常参数用 float32 表示,所以模型大小是参数数量的 4 倍。
理论计算量(FLOPs):是 floating point operations 的缩写(注意 s 小写),可以用来衡量算法/模型的复杂度,这关系到算法速度,大模型的单位通常为 G,小模型单位通常为 M。
通常只考虑乘加操作(Multi-Adds)的数量,而且只考虑 CONV 和 FC 等参数层的计算量,忽略 BN 和ReLU 等等。一般情况,CONV 和 FC 层也会忽略仅纯加操作的计算量,如 bias 偏置加和 shotcut 残差加等,目前技术有 BN 的 CNN 可以不加 bias
- 不同神经网络层的参数数量和计算量估计方法:
Conv2d标准卷积层:
Input: H ∗ W ∗ N H * W * N H∗W∗N
Output: H ∗ W ∗ M H *W * M H∗W∗M
Filters: K ∗ K K * K K∗K
==>
Params: K ∗ K ∗ M ∗ N K * K * M * N K∗K∗M∗N<