MobileNetV1主要创新点
1.深度可分离卷积(Depthwise separable convolutions)
标准卷积(CNN)的作用是对所有输入通道用相同的卷积核得到不同通道特征,将不同通道特征组合起来使得输出特征包含每个输入的特征。因此,我们可以将标准卷积分为以下两个步骤:
1) 深度卷积(Depthwise convolution)
深度卷积对每一个输入通道应用一个单独的卷积核(与标准卷积不同,标准卷积对每一个输入通道应用同一个卷积核)得到特征图,此时,每张特征图仅与一个输入通道和其对应卷积核相关,各个通道之间特征图不关联。
2.)点卷积(Pointwise concolution)
点卷积(1x1卷积)将深度卷积的输出特征图进行线性组合后再输出,使得最后的输出特征都包含每个输入特征,即将深度卷积输出的不关联的特征图关联起来。
下图为标准卷积与深度可分离卷积对应的计算量
为输入Feature Map的宽度和高度(我们假设输入特征图与使用的卷积核均为正方形),
M为输入通道数(也可理解为输入Feature Map深度),N为输出通道数,为卷积核大小。
计算模块
参数数量(params):关系到模型大小,单位通常为M,通常参数用 float32 表示,所以模型大小是参数数量的 4 倍。
FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。这关系到算法速度,大模型的单位通常为 G,小模型单位通常为 M。
注意在深度学习中,我们用的是FLOPs,也就是说计算量,即用来衡量算法/模型的复杂度。
不同神经网络层的参数数量和计算量估计方法:
Conv2d标准卷积层:
Input: H ∗ W ∗ N
Output:H ∗ W ∗ M
Filters: K ∗ K
==>
Params: K ∗ K ∗ M ∗ N
FLOPs: H ∗ W ∗ K ∗ K ∗ M ∗ N
FC全连接层:
Input: N
Output: M
==>
Params: M ∗ N
FLOPs: M ∗ N
Depthwise conv2d深度卷积:
Input: H ∗ W ∗ M
Output: H ∗ W ∗ M
Filters: K ∗ K
==>
Params: K ∗ K ∗ M
FLOPs: H ∗ W ∗ K ∗ K ∗ M
Pointwise conv2d点卷积:
将标准卷积层中卷积核大小换成1x1即可得到
Params: M ∗ N
FLOPs: H ∗ W ∗ M ∗ N
MobileNet V1 网络结构
1)核心层(深度可分离卷积层)
2)整体网络结构
整个MobileNetV1网络除了平均池化层和softmax输出层外,共28层。
第1层为完整卷积,接下来26层为核心层结构(深度可分离卷积层),最后是平均池化层,全连接层加softmax层输出。
除全连接层不使用激活函数,而使用softmax进行分类之外,其他所有层都使用BatchNorm和ReLU。
其中,s2为采用stride=2进行下采样操作。
宽度因子和分辨率因子
MobileNetV1还使用宽度因子和分辨率因子进一步减小模型参数数量和计算量,当然,在一定程度上会降低模型精确度。
1)宽度因子Width Multiplier(α):
α ∈ ( 0 , 1 ]作用于通道数量上,通常取1, 0.75, 0.5和0.25
2)分辨率因子Resolution Multiplier(ρ)
ρ ∈ ( 0 , 1 ] 作用于输入图像上,通常取为224,192,160和128(常隐式表示),作用后模型大小,参数量不变,计算量降低为
创新点
1. MobileNetV1提出了深度可分离卷积的概念,替代了标准卷积操作,大大减少了参数数量和计算量;
2. 提出两个超参数宽度因子和分辨率因子,可根据现实情况需求,调整输入输出通道数量和输入图像尺寸,可自由权衡精度与参数数量,计算量;
3. 使用BN加快模型收敛速度,提高模型精度和泛化能力。
论文地址:https://arxiv.org/abs/1704.04861
引用:从MobileNet看轻量级神经网络的发展_模型 (sohu.com)
(23条消息) 轻量级神经网络:MobileNetV1论文学习及理解_Jackkii Chen的博客-CSDN博客