MobileNet概览

以下内容基于本人阅读理解

arXiv:1704.04861v1 [cs.CV] 17 Apr 2017

arXiv:1801.04381v3 [cs.CV] 2 Apr 2018

论文简介

谷歌对于目前网络结构为了追求准确率,而不断变深变大,牺牲运算速度的情况不爽。考虑到移动设备和嵌入式设备的运算能力,优化了网络结构,并提出两个超参数width multiplier和resolution multiplier以平衡调节准确率和运算速度的问题。

mobilenetV2中提出新的网络结构inverted residual block。

网络结构

通过优化网络结构,将mobile net的运算量减少到传统卷积网络的1/9,参数量减少到1/7。

下图为mobile net的“深度可分离卷积”:

image-20180912235700174

通过将传统的卷积,分解为 对单个通道的卷积后叠加(而非相加)再执行1x1卷积,减少参数量同时多增加一次batchnorm和relu运算,增加非线性。

并不是稀疏矩阵就一定会比稠密矩阵运算快,但MobileNet将大部分运算集中在1x1卷积中(95%),可以直接调用General Matrix Multiply Funciton(GEMM),反正就是很快。

新增两个超参数

Width multiplier

相当于压缩depthwise seperable Conv的kernel数,可以压缩计算过程中的通道数。

Resolution multiplier

压缩feature map的尺寸,可以减少每层的输入尺寸,计算量以平方级别减少。

MobileNetV2

文章引入了manifold的概念,认为高维度空间的信息是可以被映射(encode)到低维度空间的。

V1就是利用较少的通道数,让空间复杂度降低。width multiplier可以调整feature map的空间维度,让manifold充满(saturate?sapn?)feature map。但是这个方法有时候会失效:对一个1维直线使用ReLU,会输出一条2维的射线;对于n维空间,就会产生有n个结点的曲线。(不确定理解是否有误)

2个可以确定高维度activation space可以映射到低维度子空间的条件:

  1. activation space经过RuLU的非线性变换之后仍为非零,则这个变换存在一个对应的线性变换。
  2. 仅当activation space可以映射到低维度的时候,ReLU才可能保留input space的所有信息。

Inverted Residual Block

InvertedResidualBlock

residual connection是为了优化多层网络时的梯度

  • 中间层深度为0时,这个block就是identity function
  • 中间层深度为input深度时,这个block就是传统的resBlock
  • 中间层深度大于input深度是,效果最好(更高维度的特征表示,更稀疏,耦合更少,更好训练?)

V2的论文同样引入一个新的hyper parameter用于调节中间层深度与输入层深度的ratio,试验结果同样是非常快,非常准。

Conclusions

以上为个人理解总结,部分结论不一定正确。

欢迎指出我的错误。