以下内容基于本人阅读理解
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的“深度可分离卷积”:
通过将传统的卷积,分解为 对单个通道的卷积后叠加(而非相加)再执行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可以映射到低维度子空间的条件:
- activation space经过RuLU的非线性变换之后仍为非零,则这个变换存在一个对应的线性变换。
- 仅当activation space可以映射到低维度的时候,ReLU才可能保留input space的所有信息。
Inverted Residual Block
residual connection是为了优化多层网络时的梯度
- 中间层深度为0时,这个block就是identity function
- 中间层深度为input深度时,这个block就是传统的resBlock
- 中间层深度大于input深度是,效果最好(更高维度的特征表示,更稀疏,耦合更少,更好训练?)
V2的论文同样引入一个新的hyper parameter用于调节中间层深度与输入层深度的ratio,试验结果同样是非常快,非常准。
Conclusions
以上为个人理解总结,部分结论不一定正确。
欢迎指出我的错误。