这篇文章是对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。

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

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

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

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

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

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

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

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

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

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

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

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

训练策略:

  • 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

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

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

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

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

相关文章:

  • 2021-09-05
  • 2022-01-12
  • 2021-04-10
  • 2021-11-04
  • 2022-01-06
  • 2021-10-21
  • 2022-01-07
  • 2021-05-30
猜你喜欢
  • 2022-01-20
  • 2021-06-29
  • 2021-07-28
相关资源
相似解决方案