【论文学习记录】MobileNetV2: Inverted Residuals and Linear Bottlenecks

版权声明:本文为博主原创文章,未经作者允许请勿转载。 https://blog.csdn.net/heiheiya https://blog.csdn.net/heiheiya/article/details/89023513

这篇文章是对MobileNetV1的改进,论文原文《MobileNetV2: Inverted Residuals and Linear Bottlenecks》。

MobileNetV2延续了MobileNetV1的depthwise separable convolution,不同的是V2引入了一个linear bottlenecks的概念。因为depthwise convolution没有改变通道数的能力,输入多少通道就输入多少通道。所以如果输入通道数很少的话,depthwise convolution就只能在低维空间提取特征了,得不到很好的效果。

为了解决这个问题,V2在depthwise convolution前面加了一个pointwise convolution用于升维,论文中t=6。

另外之所以称为linear bottleneck,是因为作者去掉了第二个pointwise convolution的激活函数ReLU,作者认为激活函数在高维空间能够有效增加非线性,但在低维空间则会破坏特征。

下图展示了ReLU会对channel数较低的manifolds造成较大的信息损耗,当输出维度增加到15以后再ReLU才基本不会丢失太多的信息。

MobileNetV1使用的是类似VGG的直筒结构,而V2则引入了residual connection。但是与ResNet的residual connection不同的是这里称之为inverted residual block,两边窄中间宽。

就是先升维(t=6),depthwise convolution,然后再降维。这么做是因为MobileNetV2将residual block的bottleneck替换成了depthwise convolution,因其参数少,提取的特征就相对少了,如果还是采用residual block的先降维的话,提取的特征就更少了。

表2的数据似乎有点问题。

  • t  是输入通道的倍增系数(即中间部分的通道数是输入通道数的多少倍)
  • 是该模块重复次数
  • 是输出通道数
  • s 是该模块第一次重复时的 stride

训练策略:

  • RMSPropOptimizer
  • decay 0.9
  • momentum 0.9
  • batch normalization
  • standard weight decay 0.00004
  • initial learning rate 0.045
  • learning rate decay 0.98 per epoch

下面是论文中一些实验结果。

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/89023513