文章目录
MobileNet
论文名称:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
核心工作:深度可分离卷积,通过深度可分离卷积可以大大降低计算消耗
如图所示,使用普通卷积时的计算花费是
D
F
∗
D
F
∗
M
∗
D
K
∗
D
K
∗
N
D_F*D_F*M*D_K*D_K*N
DF∗DF∗M∗DK∗DK∗N,注意是计算花费(computational cost)而不是参数数量,两者是有区别的。
而使用深度可分离卷积的计算花费如下图所示:
包括两部分,分别是
D
F
∗
D
F
∗
M
∗
D
K
∗
D
K
∗
1
D_F*D_F*M*D_K*D_K*1
DF∗DF∗M∗DK∗DK∗1的depthwise convolutions(提取特征)与
D
F
∗
D
F
∗
M
∗
1
∗
1
∗
N
D_F*D_F*M*1*1*N
DF∗DF∗M∗1∗1∗N的pointwise convolutions(改变通道数).
相比之下,计算花费大大降低。
而为了使得作用更强大,MobileNet引入了两个全局参数,分别是Width Multiplier:
α
\alpha
α与Resolution Multiplier:
β
\beta
β,用于改变通道数与特征图大小,
最终计算花费如下:
(
β
∗
D
F
)
∗
(
β
∗
D
F
)
∗
(
α
∗
M
)
∗
D
K
∗
D
K
∗
1
+
D
F
∗
D
F
∗
(
α
∗
M
)
∗
1
∗
1
∗
(
β
∗
N
)
(\beta*D_F)*(\beta*D_F)*(\alpha*M)*D_K*D_K*1+D_F*D_F*(\alpha*M)*1*1*(\beta*N)
(β∗DF)∗(β∗DF)∗(α∗M)∗DK∗DK∗1+DF∗DF∗(α∗M)∗1∗1∗(β∗N)
MobileNetv2
论文名称:MobileNetV2: Inverted Residuals and Linear Bottlenecks
从MobileNetV2的论文名字就可以看出其核心工作就是Inverted Residuals 与Linear Bottlenecks。
什么是Inverted Residuals呢?其实名字也提示了我们
从上面两个结构可以看出其实二者是一个相似的架构,但关键就是Inverted,残差结构可以描述为胖-瘦-胖,而Inverted Residual则是瘦-胖-瘦的一个结构,中间就是MobileNet中的深度可分离卷积。为什么要这么设计呢?据论文所说这样可以使得网络能够提取到更多的信息。
而什么是Linear Bottlenecks呢?看着论文其实非常复杂,其实就是将最后一层的1×1卷积的卷积函数换为线性激活函数,为什么要这么设计呢?论文讲解了原理。(在我看来可能是做实验发现不加ReLu激活层而讲了这个故事,属于是为了这盘醋下了这锅饺子(bushi,其实简单来说就是在低维特征,考虑极限的一维特征,如果使用非线性的话会丢失许多信息,因此可能会降低效果。同时应用了残差结构。