0.摘要
针对残差结构提出来倒残差结构(Inverted Residuals),由于使用的是1x1卷积在resnet中也叫瓶颈层,所以这个模块最终叫做具有线性瓶颈的倒残差结构(the inverted residual with linear bottleneck)。
0.1深度分离卷积(Depthwise Separable Convolutions)
本文依旧使用深度分离卷积,简单复习一下。将标准卷积拆分为深度分离卷积在MobileNetv1中详细讲解过了,其基本思想:将标准卷积拆分为两个分卷积:第一层称为深度卷积(depthwise convolution),对每个输入通道应用单通道的轻量级滤波器;第二层称为逐点卷积(pointwise convolution),负责计算输入通道的线性组合构建新的特征。
1.线性瓶颈Linear Bottlenecks
1.1新的激活策略
1.1.1线性激活函数
作者做了一个实验,得结论是在低维状态下,使用relu激活函数再还原原矩阵的化效果是很差的,数据都往中心塌陷了,但是在高维状态下恢复的信息是很多的:
由于倒残差瓶颈侧的特殊结构就导致了他在反向传播的的时候,有很多信息会丢失,所以要使用一个线性激活函数linear bottleneck,即不使用ReLU激活,做了线性变换(虽然会提高弥散、爆炸的风险,但是在他升维之后,他又使用了非线性激活函数rleu6)
1.1.2 relu6
这里使用ReLU6(即
f(x)=min{max(0,x),6})作为非线性激活函数,这样在低精度计算下具有更强的鲁棒性
2.倒残差Inverted Residuals
2.1倒残差模块
在mobilenetv2下也添加了残差模块,不过是倒残差模块,要求是步长是1,而且输入特征矩阵和输出特征矩阵的shape是一样的。
首先是1×1 conv2d变换通道,后接ReLU6激活(ReLU6即最高输出为6,超过了会clip下来)
中间是深度卷积,后接ReLU
最后的1×1 conv2d后面不接ReLU了,而是论文提出的linear bottleneck
只有特殊情况(stride=1,input和output大小一致)才加short cut捷径
2.2 网络结构
3.实验结果
MobileNetv2在极少的参数量下有着不错的性能