Mobilenet-v2

接上一篇Mobilenet-v1,这篇论文写的比较晦涩,直接读比较费劲。
这里链接一篇比较好的博客,本篇中也涉及篇幅比较多的引用。

Preliminaries, discussion and intuition

Depthwise Separable Convolutions

见Mobilenet-v1描述

Linear Bottlenecks

这里Relu用的Relu6,ReLU6 就是普通的ReLU但是限制最大输出值为 6,这是为了在移动端设备 float16/int8 的低精度的时候,也能有很好的数值分辨率,如果对 ReLU 的**范围不加限制,输出范围为0到正无穷,如果**值非常大,分布在一个很大的范围内,则低精度的float16/int8无法很好地精确描述如此大范围的数值,带来精度损失。
去掉了小维度输出层后面的非线性**层,目的是为了保证模型的表达能力。当输出维度降低时,采用非线性会破坏大量的信息,所以这里建议使用线性。如下图,增加的维度越低,保留的信息越少。
Mobilenet-v2

Inverted residuals

这里借鉴了Resnet,原始Residual Block长这样:Mobilenet-v2
先用11降低维度,再33卷积,再11升高维度,这样可以减少运算量,但是我们现在中间的部分变成了depthwise conv,计算量比较少了,我们反而可以在中间层层数可以多一点。所以通过11先提升维度,经由Depthwise,再用11降低维度。这也是为何11降低维度之后,要使用Linear Bottlenecks来保留它的信息。
它的基本结构如下:Mobilenet-v2
Mobilenet-v2

网络结构

Mobilenet-v2
t 是输入通道的倍增系数(即中间部分的通道数是输入通道数的多少倍)
n 是该模块重复次数
c 是输出通道数
s 是该模块第一次重复时的 stride(后面重复都是 stride 1)
Mobilenet-v2
Mobilenet-v2
Mobilenet-v2