MobileNet 系列详解
MobileNet V1
1.主要贡献
提出了深度可分离卷积结构,大大减小了计算量和模型的大小。
2.深度可分离卷积
标准卷积的作用是过滤特征并合并,而深度可分离卷积将标准卷积的过滤与组合分开做,分解为:深度卷积(Depthwise) 和 逐点卷积(Pointwise)。
- 深度卷积对每个输入通道应用单个过滤器
- 逐点卷积(1×1卷积)创建线性组合
上图右边是深度可分离卷积对Depthwise和Pointwise两层都使用Batchnorm和Relu非线性激活
3.深度可分离卷积与标准卷积的计算量对比
假设:
输入feature map F:
D
F
∗
D
F
∗
M
D_F*D_F*M
DF∗DF∗M
输出feature map G:
D
F
∗
D
F
∗
N
D_F*D_F*N
DF∗DF∗N
卷积核K:
D
K
∗
D
K
∗
M
∗
N
D_K*D_K*M*N
DK∗DK∗M∗N
那么:
标准卷积计算的开销:
D
K
∗
D
K
∗
m
∗
N
∗
D
F
∗
D
F
D_K*D_K*m*N*D_F*D_F
DK∗DK∗m∗N∗DF∗DF
深度可分离卷积的开销:
D
k
∗
D
k
∗
M
∗
D
F
∗
D
F
+
M
∗
N
∗
D
F
∗
D
F
D_k*D_k*M*D_F*D_F+M*N*D_F*D_F
Dk∗Dk∗M∗DF∗DF+M∗N∗DF∗DF
4. 两个超参数
- 宽度倍增系数
α
α
α:Thinner Models,对每一层均匀地细化网络
- 输入通道数 M α Mα Mα,输出通道数 N α Nα Nα
- 开销: D k ∗ D k ∗ α M ∗ D F ∗ D F + α M ∗ α N ∗ D F ∗ D F D_k*D_k*αM*D_F*D_F+αM*αN*D_F*D_F Dk∗Dk∗αM∗DF∗DF+αM∗αN∗DF∗DF
- α ∈ ( 0 , 1 ] α \in (0,1] α∈(0,1],一般用 ( 0.75 , 0.5 , 0.25 ) (0.75,0.5,0.25) (0.75,0.5,0.25),降低模型的宽度
- 分辨率系数
ρ
ρ
ρ:Reduced Representation
- 开销: D k ∗ D k ∗ α M ∗ ρ D F ∗ ρ D F + α M ∗ α N ∗ ρ D F ∗ ρ D F D_k*D_k*αM*ρD_F*ρD_F+αM*αN*ρD_F*ρD_F Dk∗Dk∗αM∗ρDF∗ρDF+αM∗αN∗ρDF∗ρDF
- ρ ∈ ( 0 , 1 ] ρ \in (0,1] ρ∈(0,1],使网络输入分辨率为224,192,160,128,降低输入图像的分辨率。
MobileNet V2
1.主要贡献
- 提出了一种倒置的线性瓶颈残差(inverted residual with linear bottleneck)
- 用 1 × 1 1×1 1×1卷积层代替Relu6(普通的ReLU但是限制最大输出值为 6)
2.网络结构
-
MobileNet V1的结构如下图,没有residual并且带了Relu:
-
MobileNet V2的结构如下图,带了residual并且去掉了Relu:
-
原始的residual block:压缩->卷积特征提取->扩张
-
Inversed residual :扩张(提升通道数,获取更多特征)->卷积提取特征->压缩
- 去掉了Relu6直接线性输出的原因在于本来特征就已经被压缩了,若再经过Relu,又会损失一部分特征
- 去掉了Relu6直接线性输出的原因在于本来特征就已经被压缩了,若再经过Relu,又会损失一部分特征
-