MobileNetv2:Inverted Residuals and Linear Bottlenecks
MobileNetv2在MobileNetv1的基础上,借鉴残差网络的思想,设计出“倒残差”瓶颈结构,使得网络更轻量高效
什么是MobileNetv2?
- MobileNetv1的基础上,引“倒残差”瓶颈,即通过先升维再降维,增强梯度的传播,显著减少推理期间所需的内存占用
- 在线性瓶颈上去掉高维向低维的卷积后Relu,保留特征多样性,增强网络的表达能力
MobileNetv2的网络结构?
- t、c、n、s分别是瓶颈层升维的倍数、特征的维数、重复的次数,第一个conv的步幅,s=2表示对featrue map进行降维处理
- MobileNetV2主要使用6的扩展因子应用于输入张量的大小。 例如对于采用64通道输入张量,中间扩展层为 64×6 = 384 通道
MobileNetv2的“倒残差”瓶颈( Inverted Residuals Bottlenecks)?
- 经典残差块 (residual block)=沙漏:1x1 (降维)–>3x3 (卷积)–>1x1 (升维),深度可分离卷积提取特征限制于输入特征维度,若采用残差块,先经过1x1的逐点卷积操作先将输入特征图压缩,再经过深度卷积后,提取的特征会更少
- mobileNetV2=纺锤:先经过1x1的逐点卷积操作将特征图的通道进行扩张,丰富特征数量,进而提高精度。这一过程刚好和残差块的顺序颠倒,这也就是倒残差的由来:1x1 (升维)–>3x3 (dw conv+relu)–>1x1 (降维+线性变换)
- stride=1的“倒残差”瓶颈使用跨连接,stride=2的“倒残差”瓶颈是下采样,两类结构在最后高维转换到低维时,均使线性瓶颈(Linear Bottlenecks),减少信息的丢失
MobileNetv2 的线性瓶颈 (Linear Bottlenecks)?
- 对于MobileNetv1的深度可分离卷积而言, 宽度乘数压缩后的M维空间后会通过一个非线性变换ReLU,根Relu的"死亡神经元"特点,一旦权重参数变为负值时,后续一直激活为0,这激活函数导致进一步的信息损失
- Mobilenetv2认为relu将信息从低纬度到高纬度不会存在信息丢失,但是从高纬度到低纬度转换时,会存在信息丢失,所以去掉Relu而使用Linear激活函数