论文地址:MobileNetV2: Inverted Residuals and Linear Bottlenecks
1.改进
MobileNet V2是Google继V1之后提出的下一代轻量化网络,主要解决了V1在训练过程中非常容易特征退化的问题,V2相比V1效果有一定提升。
2.核心
v2沿用v1的Depthwise Separable Convolutions Depthwise。核心主要由两部分:Inverted residuals与Linear Bottlenecks
2.1Inverted residuals
残差结构与反向残差结构Fig.3所示,简单来说通常的残差网络为先通过1*1卷积将通道数压缩,再经过3*3卷积,最后经过1*1卷积进行扩张;而反向残差网络channel为先扩张后压缩。
引入shortcut是为提高梯度在多层之间的传播能力,防止梯度消失。
采用反向残差是为了提高内存利用率。
2.2Linear Bottlenecks
经过反向残差模块,输出的feature map经过channel压缩,损失一部分特征,如果使用relu激活函数,会损失更多特征,因此采用线性变换,即Linear Bottlenecks。
3.网络结构
bottleneck单元结构如表1所示:
输入的feature map首先经过1*1的卷积进行升维,激活函数为Relu6,channel扩大为t倍,而后进行kernal为3*3的深度可分离卷积操作,激活函数为relu6,最后经过kernal为1*1的卷积进行降维,不接非线性激活函数,relu。
Relu6 = min(max(features, 0), 6),限制最大输出为6,这是为了在移动端设备float16的低精度的时候,也能有很好的数值分辨率。
Fig4对比各种网络的卷积block。注意图d中MobileNet v2的两种block形式,stride=1时,输出feature map大小不变,因此可以进行add操作,当stride=2时,输出feature map减半,因此不能进行add操作。
表2为整个MobileNet v2的网络结构
4.实验
在ImageNet数据集上,mobilenet v2与其他网络结构性能比较如表4所示:
表5是关于SSD和SSDLite在关于参数量和计算量上的对比。SSDLite是将SSD网络中的3*3卷积用depthwise separable convolution代替得到的。
表6是几个常见目标检测模型对比: